Merge branch '1.11'
This commit is contained in:
commit
6eea2b5ce7
8
NEWS
8
NEWS
|
@ -18,6 +18,10 @@ v1.11.1 (20th Sep 2013)
|
||||||
* #162: Clean up HMAC module import to avoid deadlocks in certain uses of
|
* #162: Clean up HMAC module import to avoid deadlocks in certain uses of
|
||||||
SSHClient. Thanks to Gernot Hillier for the catch & suggested
|
SSHClient. Thanks to Gernot Hillier for the catch & suggested
|
||||||
fix.
|
fix.
|
||||||
|
* #168: Update config handling to properly handle multiple 'localforward' and
|
||||||
|
'remoteforward' keys. Thanks to Emre Yılmaz for the patch.
|
||||||
|
* #36: Fix the port-forwarding demo to avoid file descriptor errors. Thanks to
|
||||||
|
Jonathan Halcrow for catch & patch.
|
||||||
|
|
||||||
v1.10.3 (20th Sep 2013)
|
v1.10.3 (20th Sep 2013)
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@ -25,6 +29,10 @@ v1.10.3 (20th Sep 2013)
|
||||||
* #162: Clean up HMAC module import to avoid deadlocks in certain uses of
|
* #162: Clean up HMAC module import to avoid deadlocks in certain uses of
|
||||||
SSHClient. Thanks to Gernot Hillier for the catch & suggested
|
SSHClient. Thanks to Gernot Hillier for the catch & suggested
|
||||||
fix.
|
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)
|
v1.11.0 (26th Jul 2013)
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
|
@ -78,9 +78,11 @@ class Handler (SocketServer.BaseRequestHandler):
|
||||||
if len(data) == 0:
|
if len(data) == 0:
|
||||||
break
|
break
|
||||||
self.request.send(data)
|
self.request.send(data)
|
||||||
|
|
||||||
|
peername = self.request.getpeername()
|
||||||
chan.close()
|
chan.close()
|
||||||
self.request.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):
|
def forward_tunnel(local_port, remote_host, remote_port, transport):
|
||||||
|
|
|
@ -126,14 +126,15 @@ class SSHConfig (object):
|
||||||
self._config.append(host)
|
self._config.append(host)
|
||||||
value = value.split()
|
value = value.split()
|
||||||
host = {key: value, 'config': {}}
|
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
|
# specified multiple times and they should be tried in order
|
||||||
# of specification.
|
# of specification.
|
||||||
elif key == 'identityfile':
|
|
||||||
|
elif key in ['identityfile', 'localforward', 'remoteforward']:
|
||||||
if key in host['config']:
|
if key in host['config']:
|
||||||
host['config']['identityfile'].append(value)
|
host['config'][key].append(value)
|
||||||
else:
|
else:
|
||||||
host['config']['identityfile'] = [value]
|
host['config'][key] = [value]
|
||||||
elif key not in host['config']:
|
elif key not in host['config']:
|
||||||
host['config'].update({key: value})
|
host['config'].update({key: value})
|
||||||
self._config.append(host)
|
self._config.append(host)
|
||||||
|
|
Loading…
Reference in New Issue