From 4a18f03960dac88717d01b59b919a28bbd48ffea Mon Sep 17 00:00:00 2001
From: Matt Hazinski <matt@matthazinski.com>
Date: Mon, 29 Dec 2014 20:21:24 -0500
Subject: [PATCH] Move UDP listen inside try block

---
 src/allmydata/util/iputil.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/allmydata/util/iputil.py b/src/allmydata/util/iputil.py
index 4ea6aa6f..af44d186 100644
--- a/src/allmydata/util/iputil.py
+++ b/src/allmydata/util/iputil.py
@@ -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
 
 
-- 
2.45.2