From ff52b79cf2b89aa55591c448a0174a494e203eae Mon Sep 17 00:00:00 2001 From: Topher Cawlfield Date: Wed, 5 Oct 2016 09:29:53 -0600 Subject: [PATCH] Closing connections on EngineIO._close() A socketIO connection can hold two connections open: its transport and its requests.Session instance. These should be closed in __del__ and __exit__. --- socketIO_client/__init__.py | 3 +++ socketIO_client/transports.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/socketIO_client/__init__.py b/socketIO_client/__init__.py index a5197e4..e6a465b 100644 --- a/socketIO_client/__init__.py +++ b/socketIO_client/__init__.py @@ -197,12 +197,15 @@ def _close(self): except AttributeError: pass if not hasattr(self, '_opened') or not self._opened: + self._http_session.close() return engineIO_packet_type = 1 try: self._transport_instance.send_packet(engineIO_packet_type) except (TimeoutError, ConnectionError): pass + self._http_session.close() + self._transport_instance.close() self._opened = False def _ping(self, engineIO_packet_data=''): diff --git a/socketIO_client/transports.py b/socketIO_client/transports.py index 822c87c..1efd852 100644 --- a/socketIO_client/transports.py +++ b/socketIO_client/transports.py @@ -45,6 +45,9 @@ def send_packet(self, engineIO_packet_type, engineIO_packet_data=''): def set_timeout(self, seconds=None): pass + def close(self): + pass + class XHR_PollingTransport(AbstractTransport): @@ -168,6 +171,9 @@ def send_packet(self, engineIO_packet_type, engineIO_packet_data=''): def set_timeout(self, seconds=None): self._connection.settimeout(seconds or self._timeout) + def close(self): + self._connection.close() + def get_response(request, *args, **kw): try: