diff --git a/NEWS b/NEWS index e6147bff908342b158988f30ebcc1011b38b2463_TkVXUw==..7353eec3a4a7e804d215c4f3a277a25c80ff13bb_TkVXUw== 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,6 @@ Releases ======== -v1.11.0 (DD MM YYYY) --------------------- +v1.10.3 (20th Sep 2013) +----------------------- @@ -17,15 +17,7 @@ -* #98: On Windows, when interacting with the PuTTY PAgeant, Paramiko now - creates the shared memory map with explicit Security Attributes of the user, - which is the same technique employed by the canonical PuTTY library to avoid - permissions issues when Paramiko is running under a different UAC context - than the PuTTY Ageant process. Thanks to Jason R. Coombs for the patch. -* #100: Remove use of PyWin32 in `win_pageant` module. Module was already - dependent on ctypes for constructing appropriate structures and had ctypes - implementations of all functionality. Thanks to Jason R. Coombs for the - patch. -* #87: Ensure updates to `known_hosts` files account for any updates to said - files after Paramiko initially read them. (Includes related fix to guard - against duplicate entries during subsequent `known_hosts` loads.) Thanks to - `@sunweaver` for the contribution. +* #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. @@ -31,4 +23,4 @@ -v1.10.2 (DD MM 2013) --------------------- +v1.10.2 (26th Jul 2013) +----------------------- @@ -34,6 +26,6 @@ -* #153, #67: Warn on parse failure when reading known_hosts - file. Thanks to `@glasserc` for patch. +* #153, #67: Warn on parse failure when reading known_hosts file. Thanks to + `@glasserc` for patch. * #146: Indentation fixes for readability. Thanks to Abhinav Upadhyay for catch & patch. diff --git a/demos/forward.py b/demos/forward.py index e6147bff908342b158988f30ebcc1011b38b2463_ZGVtb3MvZm9yd2FyZC5weQ==..7353eec3a4a7e804d215c4f3a277a25c80ff13bb_ZGVtb3MvZm9yd2FyZC5weQ== 100644 --- a/demos/forward.py +++ b/demos/forward.py @@ -78,5 +78,7 @@ if len(data) == 0: break self.request.send(data) + + peername = self.request.getpeername() chan.close() self.request.close() @@ -81,6 +83,6 @@ 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/__init__.py b/paramiko/__init__.py index e6147bff908342b158988f30ebcc1011b38b2463_cGFyYW1pa28vX19pbml0X18ucHk=..7353eec3a4a7e804d215c4f3a277a25c80ff13bb_cGFyYW1pa28vX19pbml0X18ucHk= 100644 --- a/paramiko/__init__.py +++ b/paramiko/__init__.py @@ -55,7 +55,7 @@ __author__ = "Jeff Forcier <jeff@bitprophet.org>" -__version__ = "1.10.1" +__version__ = "1.10.2" __license__ = "GNU Lesser General Public License (LGPL)" diff --git a/paramiko/packet.py b/paramiko/packet.py index e6147bff908342b158988f30ebcc1011b38b2463_cGFyYW1pa28vcGFja2V0LnB5..7353eec3a4a7e804d215c4f3a277a25c80ff13bb_cGFyYW1pa28vcGFja2V0LnB5 100644 --- a/paramiko/packet.py +++ b/paramiko/packet.py @@ -33,5 +33,4 @@ from paramiko.message import Message -got_r_hmac = False try: @@ -37,4 +36,3 @@ try: - import r_hmac - got_r_hmac = True + from r_hmac import HMAC except ImportError: @@ -40,3 +38,4 @@ except ImportError: - pass + from Crypto.Hash.HMAC import HMAC + def compute_hmac(key, message, digest_class): @@ -42,8 +41,5 @@ def compute_hmac(key, message, digest_class): - if got_r_hmac: - return r_hmac.HMAC(key, message, digest_class).digest() - from Crypto.Hash import HMAC - return HMAC.HMAC(key, message, digest_class).digest() + return HMAC(key, message, digest_class).digest() class NeedRekeyException (Exception):