Move UDP listen inside try block 133/head
authorMatt Hazinski <matt@matthazinski.com>
Tue, 30 Dec 2014 01:21:24 +0000 (20:21 -0500)
committerMatt Hazinski <matt@matthazinski.com>
Tue, 30 Dec 2014 01:21:24 +0000 (20:21 -0500)
src/allmydata/util/iputil.py

index 4ea6aa6f9722bf4c11240e4dac7f6f141b168645..af44d186c134e3e4ba1bfed959863934b7e97a71 100644 (file)
@@ -6,6 +6,7 @@ from sys import platform
 # from Twisted
 from twisted.internet import defer, threads, reactor
 from twisted.internet.protocol import DatagramProtocol
+from twisted.internet.error import CannotListenError
 from twisted.python.procutils import which
 from twisted.python import log
 
@@ -125,16 +126,17 @@ def get_local_ip_for(target):
         # avoid this DNS lookup. This also makes node startup fractionally
         # faster.
         return None
-    udpprot = DatagramProtocol()
-    port = reactor.listenUDP(0, udpprot)
+    
     try:
+        udpprot = DatagramProtocol()
+        port = reactor.listenUDP(0, udpprot)
         udpprot.transport.connect(target_ipaddr, 7)
         localip = udpprot.transport.getHost().host
-    except socket.error:
+        d = port.stopListening()
+        d.addErrback(log.err)
+    except (socket.error, CannotListenError):
         # no route to that host
         localip = None
-    d = port.stopListening()
-    d.addErrback(log.err)
     return localip