about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--[-rwxr-xr-x]broadlink/__init__.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/broadlink/__init__.py b/broadlink/__init__.py
index f4bb1069caa1..ffbfd3ad2b1e 100755..100644
--- a/broadlink/__init__.py
+++ b/broadlink/__init__.py
@@ -48,15 +48,16 @@ def gendevice(devtype, host, mac):
   else:
     return device(host=host, mac=mac)
 
-def discover(timeout=None):
-  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-  s.connect(('8.8.8.8', 53))  # connecting to a UDP address doesn't send packets
-  local_ip_address = s.getsockname()[0]
+def discover(timeout=None, local_ip_address=None):
+  if local_ip_address is None:
+      s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+      s.connect(('8.8.8.8', 53))  # connecting to a UDP address doesn't send packets
+      local_ip_address = s.getsockname()[0]
   address = local_ip_address.split('.')
   cs = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
   cs.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
   cs.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
-  cs.bind(('',0))
+  cs.bind((local_ip_address,0))
   port = cs.getsockname()[1]
   starttime = time.time()