Ticket #1969: gajim-ipv6-20060727.patch
| File gajim-ipv6-20060727.patch, 6.1 kB (added by didier@…, 2 years ago) |
|---|
-
src/common/xmpp/transports_nb.py
diff -Nru gajim-20060727/src/common/xmpp/transports_nb.py gajim-20060727-ipv6/src/common/xmpp/transports_nb.py
old new 60 60 # -2 - disconnected 61 61 self.state = 0 62 62 63 # server information (IPv6 or IPv4 addresses to try connect to) 64 self._addrinfo = None 65 # socket address information used to connect to server 66 self._serveraddr = None 67 63 68 # queue with messages to be send 64 69 self.sendqueue = [] 65 70 … … 90 95 91 96 def read_timeout(self): 92 97 if self.state == 0: 93 self.idlequeue.unplug_idle(self.fd) 94 if self.on_connect_failure: 95 self.on_connect_failure() 98 # connect with this server address failed 99 self.DEBUG("Failed to connect to %s:%d with address [%s]:%d (timeout)"%(self._server[0],self._server[1],self._serveraddr[0],self._serveraddr[1]),'info') 100 self._addrinfo.pop(0) 101 # try another server address if possible, otherwise failure 102 if len(self._addrinfo) > 0: 103 self.connect() 104 else: 105 self.idlequeue.unplug_idle(self.fd) 106 if self.on_connect_failure: 107 self.on_connect_failure() 96 108 else: 97 109 if self.on_timeout: 98 110 self.on_timeout() … … 105 117 else: 106 118 self._server = server 107 119 self.state = 0 108 try: 109 self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 110 self._sock.setblocking(False) 111 except: 120 121 # get server addresses (either IPv6 or IPv4) if not already done 122 if self._addrinfo is None: 123 self._addrinfo = socket.getaddrinfo(server[0], server[1], socket.AF_UNSPEC, socket.SOCK_STREAM) 124 125 # try to connect to server with one of its addresses 126 self._sock = None 127 for res in self._addrinfo: 128 af, socktype, proto, canonname, sa = res 129 130 self.DEBUG("Connect to %s:%d with address [%s]:%d"%(server[0],server[1],sa[0],sa[1]),'info') 131 try: 132 self._sock = socket.socket(af, socktype, proto) 133 self._sock.setblocking(False) 134 except socket.error, msg: 135 self._sock = None 136 self._addrinfo.pop(0) 137 self.DEBUG("Failed to connect to %s:%d with address [%s]:%d (socket() failed)"%(server[0],server[1],sa[0],sa[1]),'info') 138 continue 139 140 self._serveraddr = sa 141 break 142 143 # if socket creation failed and no more addresses are available, 144 # failure 145 if self._sock is None: 112 146 sys.exc_clear() 113 147 if self.on_connect_failure: 114 148 self.on_connect_failure() 115 149 return False 150 151 # if socket creation with one server address is successful, 152 # try to connect 116 153 self.fd = self._sock.fileno() 117 154 self.idlequeue.plug_idle(self, True, False) 118 155 self.set_timeout(CONNECT_TIMEOUT_SECONDS) … … 285 322 self._sock.setblocking(False) 286 323 errnum = 0 287 324 try: 288 self._sock.connect(self._server )325 self._sock.connect(self._serveraddr) 289 326 except socket.error, e: 290 327 errnum = e[0] 291 328 sys.exc_clear() … … 295 332 # 10056 - already connected, only on win32 296 333 # code 'WS*' is not available on GNU, so we use its numeric value 297 334 elif errnum not in (0, 10056, errno.EISCONN): 335 self.DEBUG("Failed to connect to %s:%d with address [%s]:%d (connect() failed with error %d)"%(self._server[0],self._server[1],self._serveraddr[0],self._serveraddr[1],errnum),'info') 298 336 self.remove_timeout() 299 if self.on_connect_failure: 300 self.on_connect_failure() 337 self._sock.close() 338 self._addrinfo.pop(0) 339 # try another server address if possible, otherwise failure 340 if len(self._addrinfo) > 0: 341 self.connect() 342 else: 343 if self.on_connect_failure: 344 self.on_connect_failure() 301 345 return 346 302 347 self.remove_timeout() 303 348 self._owner.Connection=self 304 349 self.state = 1 -
src/common/xmpp/transports.py
diff -Nru gajim-20060727/src/common/xmpp/transports.py gajim-20060727-ipv6/src/common/xmpp/transports.py
old new 94 94 95 95 def connect(self,server=None): 96 96 """ Try to connect. Returns non-empty string on success. """ 97 try: 98 if not server: server=self._server 99 self._sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 100 self._sock.connect(server) 101 self._send=self._sock.sendall 102 self._recv=self._sock.recv 103 self.DEBUG("Successfully connected to remote host %s"%`server`,'start') 104 return 'ok' 105 except: pass 97 if not server: server=self._server 98 s = None 99 for res in socket.getaddrinfo(server[0], server[1], socket.AF_UNSPEC, socket.SOCK_STREAM): 100 af, socktype, proto, canonname, sa = res 101 self.DEBUG("Connect to %s:%d with address [%s]:%d"%(server[0],server[1],sa[0],sa[1]),'info') 102 try: 103 s = socket.socket(af, socktype, proto) 104 except socket.error, msg: 105 self.DEBUG("Failed to connect to %s:%d with address [%s]:%d (socket() failed)"%(server[0],server[1],sa[0],sa[1]),'info') 106 s = None 107 continue 108 try: 109 s.connect(sa) 110 except socket.error, msg: 111 self.DEBUG("Failed to connect to %s:%d with address [%s]:%d (connect() failed)"%(server[0],server[1],sa[0],sa[1]),'info') 112 s.close() 113 s = None 114 continue 115 self.DEBUG("Successfully connected to remote host %s:%d with address [%s]:%d"%(server[0],server[1],sa[0],sa[1]),'info') 116 break 117 if s is None: 118 self.DEBUG("Failed to connect to remote host %s:%s"%(server[0],server[1]),'info') 119 pass 120 return 'ok' 106 121 107 122 def plugout(self): 108 123 """ Disconnect from the remote server and unregister self.disconnected method from -
THANKS
diff -Nru gajim-20060727/THANKS gajim-20060727-ipv6/THANKS
old new 10 10 Christoph Neuroth 11 11 David Campey 12 12 Dennis Craven 13 Didier Barvaux (IPv6 support) 13 14 Fabian Neumann 14 15 Filippos Papadopoulos 15 16 Francisco Alburquerque Parra (Membris Khan)
