diff --git a/NEWS b/NEWS index 05d31b3..2bb5341 100644 --- a/NEWS +++ b/NEWS @@ -25,11 +25,15 @@ v1.11.0 (DD MM YYYY) implementations of all functionality. Thanks to Jason R. Coombs for the patch. -v1.10.1 (DD MM YYYY) --------------------- +v1.10.1 (5th Apr 2013) +---------------------- * #142: (Fabric #811) SFTP put of empty file will still return the attributes of the put file. Thanks to Jason R. Coombs for the patch. +* #154: (Fabric #876) Forwarded SSH agent connections left stale local pipes + lying around, which could cause local (and sometimes remote or network) + resource starvation when running many agent-using remote commands. Thanks to + Kevin Tegtmeier for catch & patch. v1.10.0 (1st Mar 2013) -------------------- diff --git a/paramiko/__init__.py b/paramiko/__init__.py index e2b359f..099314e 100644 --- a/paramiko/__init__.py +++ b/paramiko/__init__.py @@ -55,7 +55,7 @@ if sys.version_info < (2, 5): __author__ = "Jeff Forcier " -__version__ = "1.10.0" +__version__ = "1.10.1" __license__ = "GNU Lesser General Public License (LGPL)" diff --git a/paramiko/agent.py b/paramiko/agent.py index 5d04dce..1dd3063 100644 --- a/paramiko/agent.py +++ b/paramiko/agent.py @@ -130,15 +130,22 @@ class AgentProxyThread(threading.Thread): if len(data) != 0: self.__inr.send(data) else: + self._close() break elif self.__inr == fd: data = self.__inr.recv(512) if len(data) != 0: self._agent._conn.send(data) else: + self._close() break time.sleep(io_sleep) + def _close(self): + self._exit = True + self.__inr.close() + self._agent._conn.close() + class AgentLocalProxy(AgentProxyThread): """ Class to be used when wanting to ask a local SSH Agent being diff --git a/setup.py b/setup.py index 9812a4f..d6caccf 100644 --- a/setup.py +++ b/setup.py @@ -52,7 +52,7 @@ if sys.platform == 'darwin': setup(name = "paramiko", - version = "1.10.0", + version = "1.10.1", description = "SSH2 protocol library", author = "Jeff Forcier", author_email = "jeff@bitprophet.org",