From 19d6a4fd4974a0536a02c93a0dc878194a1d4691 Mon Sep 17 00:00:00 2001 From: Daniel Stutzbach Date: Tue, 31 Aug 2010 20:08:07 +0000 Subject: [PATCH] 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 | 6 ++++-- Misc/NEWS | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Lib/socket.py b/Lib/socket.py index 781887583cf..30a01aa1986 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -172,10 +172,12 @@ class socket(_socket.socket): 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() diff --git a/Misc/NEWS b/Misc/NEWS index e32d61e802f..372b0b3c420 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -142,6 +142,9 @@ Extensions 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.