diff options
author | Jeff Forcier <jeff@bitprophet.org> | 2013-09-20 14:47:09 -0700 |
---|---|---|
committer | Jeff Forcier <jeff@bitprophet.org> | 2013-09-20 14:47:09 -0700 |
commit | e2aa7c17b0d7938dbff1eb35cd09af25a92e5ab3 (patch) | |
tree | 7e7d8162cc79b24375c1b0578e4b7842058bce97 | |
parent | 081b04116be29072695a54e52e74ca9879bf03f9 (diff) | |
parent | db9dfebca801efbfd3743d85d4f7916f3996f4f5 (diff) |
Merge branch '1.10' into 1.11
Conflicts:
NEWS
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | demos/forward.py | 4 | ||||
-rw-r--r-- | paramiko/config.py | 9 |
3 files changed, 12 insertions, 5 deletions
@@ -25,6 +25,10 @@ v1.10.3 (20th Sep 2013) * #162: Clean up HMAC module import to avoid deadlocks in certain uses of SSHClient. Thanks to Gernot Hillier for the catch & suggested fix. +* #36: Fix the port-forwarding demo to avoid file descriptor errors. Thanks to + Jonathan Halcrow for catch & patch. +* #168: Update config handling to properly handle multiple 'localforward' and + 'remoteforward' keys. Thanks to Emre Yılmaz for the patch. v1.11.0 (26th Jul 2013) ----------------------- diff --git a/demos/forward.py b/demos/forward.py index 4e107855..2a4c4248 100644 --- a/demos/forward.py +++ b/demos/forward.py @@ -78,9 +78,11 @@ class Handler (SocketServer.BaseRequestHandler): if len(data) == 0: break self.request.send(data) + + peername = self.request.getpeername() chan.close() self.request.close() - verbose('Tunnel closed from %r' % (self.request.getpeername(),)) + verbose('Tunnel closed from %r' % (peername,)) def forward_tunnel(local_port, remote_host, remote_port, transport): diff --git a/paramiko/config.py b/paramiko/config.py index 31caf29e..b0be1a8e 100644 --- a/paramiko/config.py +++ b/paramiko/config.py @@ -126,14 +126,15 @@ class SSHConfig (object): self._config.append(host) value = value.split() host = {key: value, 'config': {}} - #identityfile is a special case, since it is allowed to be + #identityfile, localforward, remoteforward keys are special cases, since they are allowed to be # specified multiple times and they should be tried in order # of specification. - elif key == 'identityfile': + + elif key in ['identityfile', 'localforward', 'remoteforward']: if key in host['config']: - host['config']['identityfile'].append(value) + host['config'][key].append(value) else: - host['config']['identityfile'] = [value] + host['config'][key] = [value] elif key not in host['config']: host['config'].update({key: value}) self._config.append(host) |