diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index a0a641ba3292..b483ea84e69b 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -198,16 +198,14 @@ def spawn_subprocess(self): 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]\ diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py index 267dd60564bd..5bb0e646f192 100644 --- a/Lib/idlelib/rpc.py +++ b/Lib/idlelib/rpc.py @@ -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) diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py index cc3edf1beaa7..9ede2ff48eca 100644 --- a/Lib/idlelib/run.py +++ b/Lib/idlelib/run.py @@ -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: "\