Index: src/common/xmpp/transports_nb.py
===================================================================
--- src/common/xmpp/transports_nb.py	(revision 6700)
+++ src/common/xmpp/transports_nb.py	(working copy)
@@ -106,8 +106,19 @@
 			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._sock.connect(ai[4])
+                                        self._send=self._sock.sendall
+                                        self._recv=self._sock.recv
+                                        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:
Index: src/common/xmpp/transports.py
===================================================================
--- src/common/xmpp/transports.py	(revision 6700)
+++ src/common/xmpp/transports.py	(working copy)
@@ -96,12 +96,15 @@
         """ 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'
+            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):
