From 6cc476aca3b49f9ae1fd31d013d3230c61253d9f 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 14:38:10 +0200
Subject: [PATCH] SSDP discovery: fixed Windows compatibility

---
 CHANGELOG.md                     | 1 +
 flamenco_worker/ssdp_discover.py | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e433250..ebe22a3c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ changed functionality, fixed bugs).
   to edit `flamenco-worker.cfg`.
 - Only fail UPnP/SSDP discovery when it fails to send on both IPv4 and IPv6.
 - Creating distribution files using [PyInstaller](http://www.pyinstaller.org/).
+- Fixed UPnP/SSDP discovery issues on Windows.
 
 
 ## Version 2.0.7 (released 2017-07-04)
diff --git a/flamenco_worker/ssdp_discover.py b/flamenco_worker/ssdp_discover.py
index 1cb29456..28c6c549 100644
--- a/flamenco_worker/ssdp_discover.py
+++ b/flamenco_worker/ssdp_discover.py
@@ -67,8 +67,14 @@ def find_flamenco_manager(timeout=1, retries=5):
             except OSError:
                 # Not supported on Windows and AF_INET6.
                 pass
+
             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))
+
             try:
                 for _ in range(2):
                     # sending it more than once will
-- 
GitLab