From 19ee5917bf41da6272de46b6298868f3b29a8286 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sat, 11 Feb 2006 21:30:04 +0000 Subject: [PATCH] try to reconnect when socket error is raised during data receiving --- src/common/xmpp/transports_nb.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py index ead581729..38a8f1d93 100644 --- a/src/common/xmpp/transports_nb.py +++ b/src/common/xmpp/transports_nb.py @@ -203,16 +203,23 @@ class NonBlockingTcp(PlugIn, IdleObject): except Exception, e: if len(e.args) > 0 and isinstance(e.args[0], int): errnum = e[0] + print 'errnum:',errnum, e # "received" will be empty anyhow - - if not received and errnum != 2: - if errnum != 8: # EOF occurred in violation of protocol + if errnum == socket.SSL_ERROR_WANT_READ: + pass + elif errnum in [errno.ECONNRESET, errno.ENOTCONN, errno.ESHUTDOWN]: + self.disconnect() + if self.on_connect_failure: + self.on_connect_failure() + elif not received : + if errnum != socket.SSL_ERROR_EOF: # 8 EOF occurred in violation of protocol self.DEBUG('Socket error while receiving data', 'error') if self.state >= 0: self.disconnect() return False if self.state < 0: return + # we have received some bites, stop the timeout! self.renew_send_timeout() if self.on_receive: