Blame SOURCES/jabberpy-ipv6.patch

42adf4
--- jabber/xmlstream.py	2011-04-07 11:13:18.000000000 +0200
42adf4
+++ jabber/xmlstream.py	2011-06-22 14:37:49.369669567 +0200
42adf4
@@ -458,13 +458,34 @@ 
42adf4
             self._setupComms()
42adf4
             return
42adf4
 
42adf4
-        self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
42adf4
-        try:
42adf4
-            if self._proxy: self._sock.connect((self._proxy['host'], self._proxy['port']))
42adf4
-            else: self._sock.connect((self._hostIP, self._port))
42adf4
-        except socket.error, e:
42adf4
-            self.DEBUG("socket error: "+str(e),DBG_CONN_ERROR)
42adf4
-            raise
42adf4
+        if self._proxy:
42adf4
+            results = socket.getaddrinfo(self._proxy['host'],
42adf4
+                self._proxy['port'], socket.AF_UNSPEC, socket.SOCK_STREAM)
42adf4
+        else:
42adf4
+            results = socket.getaddrinfo(self._hostIP, self._port,
42adf4
+                socket.AF_UNSPEC, socket.SOCK_STREAM)
42adf4
+
42adf4
+        for r in results:
42adf4
+            af, socktype, proto, canonname, sa = r
42adf4
+            try:
42adf4
+                self._sock = socket.socket(af, socktype, proto)
42adf4
+            except socket.error, msg:
42adf4
+                self._sock = None
42adf4
+                continue
42adf4
+            try:
42adf4
+                if self._proxy:
42adf4
+                    self._sock.connect((self._proxy['host'], self._proxy['port']))
42adf4
+                else:
42adf4
+                    self._sock.connect((self._hostIP, self._port))
42adf4
+            except socket.error, e:
42adf4
+                self._sock.close()
42adf4
+                self._sock = None
42adf4
+                self.DEBUG("socket error: "+str(e),DBG_CONN_ERROR)
42adf4
+                continue
42adf4
+            break
42adf4
+
42adf4
+        if self._sock is None:
42adf4
+            raise socket.error("Unable to connect to the host and port specified")
42adf4
 
42adf4
         if self._connection == TCP_SSL:
42adf4
             try:
42adf4