summaryrefslogtreecommitdiff
path: root/scripts/NetworkProxy.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/NetworkProxy.py')
-rw-r--r--scripts/NetworkProxy.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/scripts/NetworkProxy.py b/scripts/NetworkProxy.py
index d161f775f9e..e33bc19414a 100644
--- a/scripts/NetworkProxy.py
+++ b/scripts/NetworkProxy.py
@@ -79,26 +79,34 @@ class BaseProxy(threading.Thread):
self.closed = False
self.cond = threading.Condition()
self.socket = None
+ self.failed = None
self.connections = []
atexit.register(self.terminate)
self.setDaemon(True)
self.start()
with self.cond:
- while not self.socket:
- self.cond.wait()
+ while not self.socket and not self.failed:
+ self.cond.wait(60)
+ if self.failed:
+ raise self.failed
def createConnection(self):
return None
def run(self):
- with self.cond:
- self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- if hasattr(socket, "SO_REUSEPORT"):
- self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
- self.socket.bind(("127.0.0.1", self.port))
- self.socket.listen(1)
+ try:
+ with self.cond:
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ if hasattr(socket, "SO_REUSEPORT"):
+ self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
+ self.socket.bind(("127.0.0.1", self.port))
+ self.socket.listen(1)
+ self.cond.notify()
+ except Exception as ex:
+ self.failed = ex
self.cond.notify()
+ return
try:
while not self.closed: