From fee5868196a35d9cd929c86363a87ddc4956aae5 Mon Sep 17 00:00:00 2001 From: Jason Woods Date: Thu, 27 Oct 2016 09:11:22 +0100 Subject: [PATCH] Fix warning: closed channel got=STOP_SENDING --- sshuttle/ssnet.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/sshuttle/ssnet.py b/sshuttle/ssnet.py index 9d319d2..5c3639c 100644 --- a/sshuttle/ssnet.py +++ b/sshuttle/ssnet.py @@ -503,17 +503,25 @@ class MuxWrapper(SockWrapper): return 'SW%r:Mux#%d' % (self.peername, self.channel) def noread(self): + if not self.shut_read: + self.mux.send(self.channel, CMD_TCP_STOP_SENDING, b('')) + self.setnoread() + + def setnoread(self): if not self.shut_read: debug2('%r: done reading\n' % self) self.shut_read = True - self.mux.send(self.channel, CMD_TCP_STOP_SENDING, b('')) self.maybe_close() def nowrite(self): + if not self.shut_write: + self.mux.send(self.channel, CMD_TCP_EOF, b('')) + self.setnowrite() + + def setnowrite(self): if not self.shut_write: debug2('%r: done writing\n' % self) self.shut_write = True - self.mux.send(self.channel, CMD_TCP_EOF, b('')) self.maybe_close() def maybe_close(self): @@ -542,9 +550,11 @@ class MuxWrapper(SockWrapper): def got_packet(self, cmd, data): if cmd == CMD_TCP_EOF: - self.noread() + # Remote side already knows the status - set flag but don't notify + self.setnoread() elif cmd == CMD_TCP_STOP_SENDING: - self.nowrite() + # Remote side already knows the status - set flag but don't notify + self.setnowrite() elif cmd == CMD_TCP_DATA: self.buf.append(data) else: