From 5432c6e0c8c2672062e04a614fd2fd23b8e3a277 Mon Sep 17 00:00:00 2001 From: mailchuck Date: Sat, 21 Nov 2015 10:15:20 +0100 Subject: [PATCH] UPnP logging improvlement --- src/upnp.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/upnp.py b/src/upnp.py index f1cc4635..8dd2a9d3 100644 --- a/src/upnp.py +++ b/src/upnp.py @@ -23,8 +23,18 @@ def searchRouter(): routers = [] sock.settimeout(0.5) try: - resp,(ip,port) = sock.recvfrom(1000) - while resp: + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2) + sock.settimeout(2) + logger.debug("Sending UPnP query") + sock.sendto(ssdpRequest, (SSDP_ADDR, SSDP_PORT)) + except: + logger.exception("UPnP sock failed") + try: + while True: + resp,(ip,port) = sock.recvfrom(1000) + if resp is None: + continue routers.append(Router(resp, ip)) resp,(ip,port) = sock.recvfrom(1000) except:pass @@ -146,10 +156,12 @@ class Router: return resp def DeletePortMapping(self, externalPort, protocol): + from debug import logger resp = self.soapRequest('WANIPConnection:1', 'DeletePortMapping', [ ('NewExternalPort', str(externalPort)), ('NewProtocol', protocol), ]) + logger.info("Removed UPnP mapping on external port %i", extPort) return resp def GetExternalIPAddress(self):