From 8bb98ad3fa667a4f202a8576d1dd38983c65408b Mon Sep 17 00:00:00 2001 From: Vilnis Termanis Date: Fri, 22 Jul 2016 11:36:11 +0100 Subject: [PATCH] Fix unclosed socket on constructor (connection) failure --- lib/mysql/connector/connection.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 0aaa78c..ccf0678 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -92,7 +92,12 @@ def __init__(self, *args, **kwargs): self._pool_config_version = None if len(kwargs) > 0: - self.connect(**kwargs) + try: + self.connect(**kwargs) + except: + # Tidy-up underlying socket on failure + self.close() + raise def _do_handshake(self): """Get the handshake from the MySQL server""" @@ -223,6 +228,7 @@ def shutdown(self): self._socket.shutdown() except (AttributeError, errors.Error): pass # Getting an exception would mean we are disconnected. + self._socket = None def close(self): """Disconnect from the MySQL server""" @@ -234,6 +240,8 @@ def close(self): self._socket.close_connection() except (AttributeError, errors.Error): pass # Getting an exception would mean we are disconnected. + self._socket = None + disconnect = close def _send_cmd(self, command, argument=None, packet_number=0, packet=None,