updated connect error checks

This commit is contained in:
Dimitur Kirov 2006-05-10 11:22:47 +00:00
parent 0291b50fec
commit d008b51b64
1 changed files with 12 additions and 9 deletions

View File

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