diff options
author | Robey Pointer <robey@lag.net> | 2006-11-11 22:30:54 -0800 |
---|---|---|
committer | Robey Pointer <robey@lag.net> | 2006-11-11 22:30:54 -0800 |
commit | 48afc3082a841ca5416fbf7ba8db94f190221638 (patch) | |
tree | 0f6d4e173022664f70fa7798ab8d08aec897444c | |
parent | e2d83576224825d6a727d7675da6f712d354ad50 (diff) |
[project @ robey@lag.net-20061112063054-bf71926ff8c98c68]
a bit of cleanup in close() to try harder to avoid having lingering threads
-rw-r--r-- | paramiko/channel.py | 5 | ||||
-rw-r--r-- | paramiko/packet.py | 1 | ||||
-rw-r--r-- | paramiko/transport.py | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/paramiko/channel.py b/paramiko/channel.py index b700a1b9..5c4d5e86 100644 --- a/paramiko/channel.py +++ b/paramiko/channel.py @@ -92,7 +92,10 @@ class Channel (object): self.exit_status = -1 def __del__(self): - self.close() + try: + self.close() + except: + pass def __repr__(self): """ diff --git a/paramiko/packet.py b/paramiko/packet.py index d43150d9..11ccac7a 100644 --- a/paramiko/packet.py +++ b/paramiko/packet.py @@ -149,6 +149,7 @@ class Packetizer (object): def close(self): self.__closed = True + self.__socket.close() def set_hexdump(self, hexdump): self.__dump_packets = hexdump diff --git a/paramiko/transport.py b/paramiko/transport.py index 3a0b3a87..a5d342aa 100644 --- a/paramiko/transport.py +++ b/paramiko/transport.py @@ -543,10 +543,13 @@ class Transport (threading.Thread): """ Close this session, and any open channels that are tied to it. """ + if not self.active: + return self.active = False self.packetizer.close() for chan in self.channels.values(): chan._unlink() + self.join() def get_remote_server_key(self): """ |