summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS30
-rw-r--r--demos/forward.py4
-rw-r--r--paramiko/__init__.py2
-rw-r--r--paramiko/packet.py12
4 files changed, 19 insertions, 29 deletions
diff --git a/NEWS b/NEWS
index ef85effe..07ab7994 100644
--- a/NEWS
+++ b/NEWS
@@ -12,28 +12,20 @@ Issues noted as "Fabric #NN" can be found at https://github.com/fabric/fabric/.
Releases
========
-v1.11.0 (DD MM YYYY)
---------------------
+v1.10.3 (20th Sep 2013)
+-----------------------
-* #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.
-v1.10.2 (DD MM 2013)
---------------------
+v1.10.2 (26th Jul 2013)
+-----------------------
-* #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 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/__init__.py b/paramiko/__init__.py
index 099314ea..6094c407 100644
--- a/paramiko/__init__.py
+++ b/paramiko/__init__.py
@@ -55,7 +55,7 @@ if sys.version_info < (2, 5):
__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 38a6d4b5..be502e9b 100644
--- a/paramiko/packet.py
+++ b/paramiko/packet.py
@@ -33,17 +33,13 @@ from paramiko.ssh_exception import SSHException, ProxyCommandFailure
from paramiko.message import Message
-got_r_hmac = False
try:
- import r_hmac
- got_r_hmac = True
+ from r_hmac import HMAC
except ImportError:
- pass
+ from Crypto.Hash.HMAC import HMAC
+
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):