Try connecting to each available address family until one succeeds.
This commit is contained in:
parent
e2add90981
commit
213ab2c204
|
@ -285,15 +285,21 @@ class Transport (threading.Thread):
|
||||||
if type(sock) is tuple:
|
if type(sock) is tuple:
|
||||||
# connect to the given (host, port)
|
# connect to the given (host, port)
|
||||||
hostname, port = sock
|
hostname, port = sock
|
||||||
|
reason = 'No suitable address family'
|
||||||
for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM):
|
for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM):
|
||||||
if socktype == socket.SOCK_STREAM:
|
if socktype == socket.SOCK_STREAM:
|
||||||
af = family
|
af = family
|
||||||
addr = sockaddr
|
addr = sockaddr
|
||||||
break
|
sock = socket.socket(af, socket.SOCK_STREAM)
|
||||||
|
try:
|
||||||
|
sock.connect((hostname, port))
|
||||||
|
except socket.error, e:
|
||||||
|
reason = str(e)
|
||||||
|
else:
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
raise SSHException('No suitable address family for %s' % hostname)
|
raise SSHException(
|
||||||
sock = socket.socket(af, socket.SOCK_STREAM)
|
'Unable to connect to %s: %s' % (hostname, reason))
|
||||||
sock.connect((hostname, port))
|
|
||||||
# okay, normal socket-ish flow here...
|
# okay, normal socket-ish flow here...
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.setDaemon(True)
|
self.setDaemon(True)
|
||||||
|
|
Loading…
Reference in New Issue