This commit is contained in:
parent
3ec76834ac
commit
6fc5ffe276
|
@ -307,7 +307,6 @@ class NonBlockingTcp(PlugIn, IdleObject):
|
||||||
self.printed_error = False
|
self.printed_error = False
|
||||||
self.state = 0
|
self.state = 0
|
||||||
try:
|
try:
|
||||||
self.set_timeout(CONNECT_TIMEOUT_SECONDS)
|
|
||||||
if len(server) == 2 and type(server[0]) in (str, unicode) and not \
|
if len(server) == 2 and type(server[0]) in (str, unicode) and not \
|
||||||
self.ais:
|
self.ais:
|
||||||
# FIXME: blocks here
|
# FIXME: blocks here
|
||||||
|
@ -336,7 +335,7 @@ class NonBlockingTcp(PlugIn, IdleObject):
|
||||||
|
|
||||||
def pollout(self):
|
def pollout(self):
|
||||||
if self.state == 0:
|
if self.state == 0:
|
||||||
self.connect_to_next_ip()
|
self._do_connect()
|
||||||
return
|
return
|
||||||
self._do_send()
|
self._do_send()
|
||||||
|
|
||||||
|
@ -545,6 +544,7 @@ class NonBlockingTcp(PlugIn, IdleObject):
|
||||||
log.info('Trying to connect to %s:%s', ai[4][0], ai[4][1])
|
log.info('Trying to connect to %s:%s', ai[4][0], ai[4][1])
|
||||||
try:
|
try:
|
||||||
self._sock = socket.socket(*ai[:3])
|
self._sock = socket.socket(*ai[:3])
|
||||||
|
self._sock.setblocking(False)
|
||||||
self._server=ai[4]
|
self._server=ai[4]
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
errnum, errstr = e
|
errnum, errstr = e
|
||||||
|
@ -565,21 +565,20 @@ class NonBlockingTcp(PlugIn, IdleObject):
|
||||||
return
|
return
|
||||||
self.fd = self._sock.fileno()
|
self.fd = self._sock.fileno()
|
||||||
self.idlequeue.plug_idle(self, True, False)
|
self.idlequeue.plug_idle(self, True, False)
|
||||||
self._send = self._sock.send
|
self.set_timeout(CONNECT_TIMEOUT_SECONDS)
|
||||||
self._recv = self._sock.recv
|
|
||||||
self._do_connect()
|
self._do_connect()
|
||||||
|
|
||||||
def _do_connect(self):
|
def _do_connect(self):
|
||||||
errnum = 0
|
errnum = 0
|
||||||
|
if self.state != 0:
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._sock.connect(self._server)
|
self._sock.connect(self._server)
|
||||||
self._sock.setblocking(False)
|
|
||||||
except Exception, ee:
|
except Exception, ee:
|
||||||
(errnum, errstr) = ee
|
(errnum, errstr) = ee
|
||||||
# in progress, or would block
|
# in progress, or would block
|
||||||
if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK):
|
if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK):
|
||||||
self.state = 1
|
|
||||||
return
|
return
|
||||||
# 10056 - already connected, only on win32
|
# 10056 - already connected, only on win32
|
||||||
# code 'WS*' is not available on GNU, so we use its numeric value
|
# code 'WS*' is not available on GNU, so we use its numeric value
|
||||||
|
@ -592,7 +591,8 @@ class NonBlockingTcp(PlugIn, IdleObject):
|
||||||
self._owner.Connection=self
|
self._owner.Connection=self
|
||||||
self.state = 1
|
self.state = 1
|
||||||
|
|
||||||
self._sock.setblocking(False)
|
self._send = self._sock.send
|
||||||
|
self._recv = self._sock.recv
|
||||||
self._plug_idle()
|
self._plug_idle()
|
||||||
if self.on_connect:
|
if self.on_connect:
|
||||||
self.on_connect()
|
self.on_connect()
|
||||||
|
|
Loading…
Reference in New Issue