Skip to content

Commit 864a47f

Browse files
gebnernormanr
authored andcommitted
Support connections to IPv6 servers.
1 parent 046a036 commit 864a47f

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

xmpp/transports.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,17 +130,22 @@ def getPort(self):
130130
def connect(self,server=None):
131131
""" Try to connect to the given host/port. Does not lookup for SRV record.
132132
Returns non-empty string on success. """
133+
if not server: server=self._server
133134
try:
134-
if not server: server=self._server
135-
self._sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
136-
self._sock.connect((server[0], int(server[1])))
137-
self._send=self._sock.sendall
138-
self._recv=self._sock.recv
139-
self.DEBUG("Successfully connected to remote host %s"%`server`,'start')
140-
return 'ok'
141-
except socket.error, (errno, strerror):
135+
for res in socket.getaddrinfo(server[0], int(server[1]), 0, socket.SOCK_STREAM):
136+
af, socktype, proto, canonname, sa = res
137+
try:
138+
self._sock = socket.socket(af, socktype, proto)
139+
self._sock.connect(sa)
140+
self._send=self._sock.sendall
141+
self._recv=self._sock.recv
142+
self.DEBUG("Successfully connected to remote host %s"%`server`,'start')
143+
return 'ok'
144+
except socket.error, (errno, strerror):
145+
if self._sock is not None: self._sock.close()
142146
self.DEBUG("Failed to connect to remote host %s: %s (%s)"%(`server`, strerror, errno),'error')
143-
except: pass
147+
except socket.gaierror, (errno, strerror):
148+
self.DEBUG("Failed to lookup remote host %s: %s (%s)"%(`server`, strerror, errno),'error')
144149

145150
def plugout(self):
146151
""" Disconnect from the remote server and unregister self.disconnected method from

0 commit comments

Comments
 (0)