]> granicus.if.org Git - python/commitdiff
GvR provided solution to the socket rebinding timeout problem.
authorKurt B. Kaiser <kbk@shore.net>
Mon, 5 Aug 2002 03:52:10 +0000 (03:52 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Mon, 5 Aug 2002 03:52:10 +0000 (03:52 +0000)
M PyShell.py
M rpc.py
M run.py

Lib/idlelib/PyShell.py
Lib/idlelib/rpc.py
Lib/idlelib/run.py

index a0a641ba329292b71d2bfa5d2f0ace76d4fedc78..b483ea84e69bfd4926f9b5feff25874a2396f1c3 100644 (file)
@@ -198,16 +198,14 @@ class ModifiedInterpreter(InteractiveInterpreter):
         args = [sys.executable] + w + ["-c", "__import__('run').main()",
                                        str(port)]
         self.rpcpid = os.spawnv(os.P_NOWAIT, args[0], args)
-        # Idle starts listening for connection on localhost, retry since
-        # Idle may be restarted before port is available for rebinding
-        # XXX 25 July 2002 KBK Find out what is causing the delayed release!
-        for i in range(12):
+        # Idle starts listening for connection on localhost
+        for i in range(6):
             time.sleep(i)
             try:
                 self.rpcclt = rpc.RPCClient(addr)
                 break
             except socket.error, err:
-                if i < 5:
+                if i < 3:
                     print>>sys.__stderr__, ". ",
                 else:
                     print>>sys.__stderr__,"\nIdle socket error: " + err[1]\
index 267dd60564bd3b8cc939996ba96f4d7fad669bc5..5bb0e646f19215a7cbf52872842beaf1fbcce5a2 100644 (file)
@@ -403,6 +403,7 @@ class RPCClient(SocketIO):
 
     def __init__(self, address, family=socket.AF_INET, type=socket.SOCK_STREAM):
         self.sock = socket.socket(family, type)
+        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         self.sock.bind(address)
         self.sock.listen(1)
 
index cc3edf1beaa774a21f64a318795d5aa868b0f53c..9ede2ff48eca51e1b303346f3fc7a1fe6abe5d57 100644 (file)
@@ -26,13 +26,13 @@ def main():
         port = int(sys.argv[1])
     sys.argv[:] = [""]
     addr = ("localhost", port)
-    for i in range(12):
+    for i in range(6):
         time.sleep(i)
         try:
             svr = rpc.RPCServer(addr, MyHandler)
             break
         except socket.error, err:
-            if i < 5:
+            if i < 3:
                 print>>sys.__stderr__, ".. ",
             else:
                 print>>sys.__stderr__,"\nPython subprocess socket error: "\