diff --git a/ChangeLog b/ChangeLog index 96cf04df1..9ce914f4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,9 @@ -Gajim 0.11 (XX October 2006) +Gajim 0.11 (XX December 2006) * New build system, using GNU autotools. See README.html * Support for link-local messaging via Zeroconf using Avahi (XEP-0174) * Automatically connect and disconnect to accounts according to network availability (if Network Manager is present) - * GNOME Keyring Support (if GNOME keyring is available, manage passwords and save them in an encrypted file). + * IPV6 support to connect to server + * GNOME Keyring Support (if GNOME keyring is available, manage passwords and save them in an encrypted file) * Introducing View Menu (GNOME HIG) * Ability to now hide the Transports group * Support for notify-python. So if notification-daemon is not available, we still can show cool popups @@ -33,8 +34,8 @@ Gajim 0.11 (XX October 2006) * Fixed bugs when removing or renaming an account with tabs open (#2369 and #2370) * New translations: Croatian, Esperanto - * FIXME : Ad-Hoc for 0.11 ? - * FIXME : does that work ? not tested : Metacontacts across accounts (#1596) + * Ad-Hoc commands + * Metacontacts across accounts (#1596) * Gajim now requires Python 2.4 to run Gajim 0.10.1 (06 June 2006) diff --git a/src/common/xmpp/transports.py b/src/common/xmpp/transports.py index d8781743f..86c3850fa 100644 --- a/src/common/xmpp/transports.py +++ b/src/common/xmpp/transports.py @@ -95,13 +95,17 @@ class TCPsocket(PlugIn): def connect(self,server=None): """ Try to connect. Returns non-empty string on success. """ try: - if not server: server=self._server - self._sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self._sock.connect(server) - self._send=self._sock.sendall - self._recv=self._sock.recv - self.DEBUG("Successfully connected to remote host %s"%`server`,'start') - return 'ok' + if not server: + server=self._server + for ai in socket.getaddrinfo(server[0],server[1],socket.AF_UNSPEC,socket.SOCK_STREAM): + try: + self._sock=socket.socket(*ai[:3]) + self._sock.connect(ai[4]) + self._send=self._sock.sendall + self._recv=self._sock.recv + self.DEBUG("Successfully connected to remote host %s"%`server`,'start') + return 'ok' + except: continue except: pass def plugout(self): diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py index 528b9e08f..4c656b4c0 100644 --- a/src/common/xmpp/transports_nb.py +++ b/src/common/xmpp/transports_nb.py @@ -106,8 +106,17 @@ class NonBlockingTcp(PlugIn, IdleObject): self._server = server self.state = 0 try: - self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self._sock.setblocking(False) + for ai in socket.getaddrinfo(server[0],server[1],socket.AF_UNSPEC,socket.SOCK_STREAM): + try: + self._sock=socket.socket(*ai[:3]) + self._sock.setblocking(False) + self._server=ai[4] + break + except: + if sys.exc_value[0] == errno.EINPROGRESS: + break + #for all errors, we try other addresses + continue except: sys.exc_clear() if self.on_connect_failure: