avoid issues when socket.close is called from a __del__ method.
if self._closed:
self.close()
- def _real_close(self):
- _socket.socket.close(self)
+ def _real_close(self, _ss=_socket.socket):
+ # This function should not reference any globals. See Issue808164
+ _ss.close(self)
def close(self):
+ # This function should not reference any globals. See Issue808164
self._closed = True
if self._io_refs <= 0:
self._real_close()
Library
-------
+- Issue #808164: Fixed socket.close to avoid references to globals, to
+ avoid issues when socket.close is called from a __del__ method.
+
- Issue #9706: ssl module provides a better error handling in various
circumstances.