From c16642c838d3f3fa4dea416d53f5598414848fee Mon Sep 17 00:00:00 2001 From: junglecow Date: Wed, 27 Dec 2006 22:45:23 +0000 Subject: [PATCH] Catch socket.gaierror. Fixes #2840. --- src/common/xmpp/transports_nb.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py index c13e44c49..143a8b3bc 100644 --- a/src/common/xmpp/transports_nb.py +++ b/src/common/xmpp/transports_nb.py @@ -300,24 +300,31 @@ class NonBlockingTcp(PlugIn, IdleObject): self._server = server self.printed_error = False self.state = 0 + success = False try: for ai in socket.getaddrinfo(server[0],server[1],socket.AF_UNSPEC,socket.SOCK_STREAM): try: self._sock=socket.socket(*ai[:3]) self._sock.setblocking(False) self._server=ai[4] + success = True break except: if sys.exc_value[0] == errno.EINPROGRESS: + success = True break #for all errors, we try other addresses continue + except socket.gaierror, e: + log.info("Lookup failure for %s: %s[%s]", self.getName(), e[1], repr(e[0]), exc_info=True) except: log.error("Exception trying to connect to %s:", self.getName(), exc_info=True) - #traceback.print_exc() + + if not success: if self.on_connect_failure: self.on_connect_failure() return False + self.fd = self._sock.fileno() self.idlequeue.plug_idle(self, True, False) self.set_timeout(CONNECT_TIMEOUT_SECONDS)