diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py index 4e2fa1d1b95ece4bd3ea9c70faceada4db97e023..5f2a9f528edcb5a17a0e8ea021d095de1f0b3689 100644 --- a/src/common/proxy65_manager.py +++ b/src/common/proxy65_manager.py @@ -15,6 +15,7 @@ ## import socket import struct +import errno import common.xmpp from common import gajim @@ -246,16 +247,18 @@ class HostTester(Socks5, IdleObject): self._recv=self._sock.recv except Exception, ee: (errnum, errstr) = ee - if errnum == 111: - self.on_failure() - return None + if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): + # still trying to connect + return # win32 needs this - elif errnum != 10056 or self.state != 0: - return None - else: # socket is already connected - self._sock.setblocking(False) - self._send=self._sock.send - self._recv=self._sock.recv + if errnum not in (0, 10056, errno.EISCONN): + # connection failed + self.on_failure() + return + # socket is already connected + self._sock.setblocking(False) + self._send=self._sock.send + self._recv=self._sock.recv self.buff = '' self.state = 1 # connected self.idlequeue.plug_idle(self, True, False)