summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKurt B. Kaiser <kbk@shore.net>2002-08-05 03:52:10 (GMT)
committerKurt B. Kaiser <kbk@shore.net>2002-08-05 03:52:10 (GMT)
commit8dcdb77132563c734c228e815498c47e487f95cf (patch)
tree37388a14ba67dc380e90edbf37d006ec820095a6
parent725bb233b9492eb4b5532d84b60db5daa1e6b195 (diff)
downloadcpython-8dcdb77132563c734c228e815498c47e487f95cf.zip
cpython-8dcdb77132563c734c228e815498c47e487f95cf.tar.gz
cpython-8dcdb77132563c734c228e815498c47e487f95cf.tar.bz2
GvR provided solution to the socket rebinding timeout problem.
M PyShell.py M rpc.py M run.py
-rw-r--r--Lib/idlelib/PyShell.py8
-rw-r--r--Lib/idlelib/rpc.py1
-rw-r--r--Lib/idlelib/run.py4
3 files changed, 6 insertions, 7 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index a0a641b..b483ea8 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -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]\
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 267dd60..5bb0e64 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 cc3edf1..9ede2ff 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: "\