mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-06-19 17:39:08 +02:00
Fix a socket leak: delete object after close on both direction.
(Note by apenwarr: seems to still work for me. The reason the problem occurred is that reassigning 'handlers' doesn't change it in its parent; it creates a whole new list, and the caller still owns the old one with all the dead sockets in it. The problem seems to have been introduced in commit 84376284db6199d4928797e5e8be4182449120f2 when I factored the runonce() functionality out of the client and server but didn't notice this reassignment.)
This commit is contained in:
parent
918725c485
commit
7354600849
5
ssnet.py
5
ssnet.py
@ -468,7 +468,10 @@ def runonce(handlers, mux):
|
||||
r = []
|
||||
w = []
|
||||
x = []
|
||||
handlers = filter(lambda s: s.ok, handlers)
|
||||
to_remove = filter(lambda s: not s.ok, handlers)
|
||||
for h in to_remove:
|
||||
handlers.remove(h)
|
||||
|
||||
for s in handlers:
|
||||
s.pre_select(r,w,x)
|
||||
debug2('Waiting: %d r=%r w=%r x=%r (fullness=%d/%d)\n'
|
||||
|
Loading…
x
Reference in New Issue
Block a user