summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobey Pointer <robey@twitter.com>2009-05-10 21:12:41 -0700
committerRobey Pointer <robey@twitter.com>2009-05-10 21:12:41 -0700
commit62d49255d5711163bc7a51b8f09097ea3dac7451 (patch)
treed1f8768edd44e5fdf4fac5b06b58e7313a08b125
parent4e2b250ace1c782708cb294cfc418b423cc5e55d (diff)
parent044814ba16467264173b9c6573e410d6cbceb6e0 (diff)
downloadparamiko-62d49255d5711163bc7a51b8f09097ea3dac7451.tar.gz
Merge commit 'shikhar/master'
-rw-r--r--paramiko/client.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/paramiko/client.py b/paramiko/client.py
index 52038bc3..1644d466 100644
--- a/paramiko/client.py
+++ b/paramiko/client.py
@@ -273,17 +273,21 @@ class SSHClient (object):
establishing an SSH session
@raise socket.error: if a socket error occurred while connecting
"""
- if len(hostname.split(':')) > 1:
- sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
+ for (family, socktype, proto, canonname, sockaddr) in \
+ socket.getaddrinfo(hostname, port):
+ if socktype==socket.SOCK_STREAM:
+ af = family
+ addr = sockaddr
+ break
else:
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ raise SSHException('No suitable address family for %s' % hostname)
+ sock = socket.socket(af, socket.SOCK_STREAM)
if timeout is not None:
try:
sock.settimeout(timeout)
except:
pass
-
- sock.connect((hostname, port))
+ sock.connect(addr)
t = self._transport = Transport(sock)
if self._log_channel is not None:
@@ -316,6 +320,8 @@ class SSHClient (object):
else:
key_filenames = key_filename
self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
+ if agent_forwarding:
+ self._forward_agent()
def close(self):
"""
@@ -474,4 +480,4 @@ class SSHClient (object):
def _log(self, level, msg):
self._transport._log(level, msg)
-
+