Merge branch '1.10' into 1.11

Conflicts:
	NEWS
This commit is contained in:
Jeff Forcier 2013-09-20 14:47:09 -07:00
commit e2aa7c17b0
3 changed files with 12 additions and 5 deletions

4
NEWS
View File

@ -25,6 +25,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)
----------------------- -----------------------

View File

@ -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):

View File

@ -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)