[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Cleanup timeout code for when socket is already in use.



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.