From 66c981b48b7337a385a0a23b2e36cc95d9339445 Mon Sep 17 00:00:00 2001 From: Daniel Stutzbach Date: Tue, 31 Aug 2010 20:29:39 +0000 Subject: Issue #808164: Fixed socket.close to avoid references to globals, to avoid issues when socket.close is called from a __del__ method. --- Lib/socket.py | 4 +++- Misc/NEWS | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Lib/socket.py b/Lib/socket.py index 9b4beda..9ed2de9 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -189,7 +189,9 @@ class _socketobject(object): for method in _delegate_methods: setattr(self, method, getattr(_sock, method)) - def close(self): + def close(self, _closedsocket=_closedsocket, + _delegate_methods=_delegate_methods, setattr=setattr): + # This function should not reference any globals. See issue #808164. self._sock = _closedsocket() dummy = self._sock._dummy for method in _delegate_methods: diff --git a/Misc/NEWS b/Misc/NEWS index 1fa1522..31669cf 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -33,6 +33,9 @@ Core and Builtins Library ------- +- Issue #808164: Fixed socket.close to avoid references to globals, to + avoid issues when socket.close is called from a __del__ method. + - Issue #8797: urllib2 does a retry for Basic Authentication failure instead of falling into recursion. -- cgit v0.12