# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 7ce64f021a2c6bb092d8c940dadfa17ad18ac56f
# Parent 6da7a6d8b575f999315bd81c7acd9f9c9538c9d1
Cleanup timeout code for when socket is already in use.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>
diff -r 6da7a6d8b575 -r 7ce64f021a2c tools/python/xen/web/tcp.py
--- a/tools/python/xen/web/tcp.py Thu Sep 15 08:56:13 2005
+++ b/tools/python/xen/web/tcp.py Thu Sep 15 08:59:35 2005
@@ -19,6 +19,7 @@
import socket
import types
import time
+import errno
from connection import *
from protocol import *
@@ -40,22 +41,16 @@
# SO_REUSEADDR does not always ensure that we do not get an address
# in use error when restarted quickly
# we implement a timeout to try and avoid failing unnecessarily
-
timeout = time.time() + 30
- again = True
- while again and time.time() < timeout:
- again = False
+ while True:
try:
sock.bind((self.interface, self.port))
- except socket.error, (errno, strerrno):
- if errno == 98:
- again = True
+ return sock
+ except socket.error, (_errno, strerrno):
+ if _errno == errno.EADDRINUSE and time.time() < timeout:
+ time.sleep(0.5)
else:
- raise socket.error(errno, strerrno)
- if again:
- raise socket.error(98, "address in use")
-
- return sock
+ raise
def acceptConnection(self, sock, protocol, addr):
return TCPServerConnection(sock, protocol, addr, self)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|