issue #406: unix: don't leak already-closed socket object

if Side.close() closes the socket (which it does), and it gets reused,
GC will cause socketobject.__del__ to later delete some random FD.
This commit is contained in:
David Wilson 2018-11-04 11:25:22 +00:00
parent dc3db49c5a
commit 411af6c167
1 changed files with 5 additions and 0 deletions

View File

@ -78,6 +78,11 @@ class Listener(mitogen.core.BasicStream):
self.receive_side = mitogen.core.Side(self, self._sock.fileno())
router.broker.start_receive(self)
def on_shutdown(self, broker):
self._sock.close()
self.receive_side.closed = True
broker.stop_receive(self)
def _accept_client(self, sock):
sock.setblocking(True)
try: