[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |