From ab8ffe256d0c4d44a977fb5a1b9e1be86a116afc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= <sybren@stuvel.eu>
Date: Wed, 6 Sep 2017 15:46:29 +0200
Subject: [PATCH] SSDP discovery: only do Windows-specific fix on Windows

Also changed from getting the local IP address to just using 0.0.0.0, which
seems to work too.
---
 flamenco_worker/ssdp_discover.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/flamenco_worker/ssdp_discover.py b/flamenco_worker/ssdp_discover.py
index 28c6c549..f2e611e8 100644
--- a/flamenco_worker/ssdp_discover.py
+++ b/flamenco_worker/ssdp_discover.py
@@ -1,4 +1,5 @@
 import logging
+import platform
 import socket
 from http.client import HTTPResponse
 
@@ -44,6 +45,7 @@ def find_flamenco_manager(timeout=1, retries=5):
     log.info('Finding Flamenco Manager through UPnP/SSDP discovery.')
 
     families_and_addresses = set(interface_addresses())
+    is_windows = platform.system() == 'Windows'
 
     for _ in range(retries):
         failed_families = 0
@@ -71,9 +73,8 @@ def find_flamenco_manager(timeout=1, retries=5):
             sock.bind(('', 1901))
 
             # Required on Windows, otherwise the message won't go out.
-            if family == socket.AF_INET:
-                host = socket.gethostbyname(socket.gethostname())
-                sock.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(host))
+            if is_windows and family == socket.AF_INET:
+                sock.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton('0.0.0.0'))
 
             try:
                 for _ in range(2):
-- 
GitLab