summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2013-01-10 20:16:20 (GMT)
committerBenjamin Peterson <benjamin@python.org>2013-01-10 20:16:20 (GMT)
commit36f7b97787f3428037ffa007bf93dadb738eef03 (patch)
tree784e50cbf1821bf57970fa6b9b1e0bb28f70c278
parent7bd04867e53d78ddb0f5e8f78b9256298d41fadd (diff)
downloadcpython-36f7b97787f3428037ffa007bf93dadb738eef03.zip
cpython-36f7b97787f3428037ffa007bf93dadb738eef03.tar.gz
cpython-36f7b97787f3428037ffa007bf93dadb738eef03.tar.bz2
remove __del__ because it's evil and also prevents the ResourceWarning on the socket from happening (closes #16900)
-rw-r--r--Lib/ssl.py4
-rw-r--r--Lib/test/test_ssl.py8
-rw-r--r--Misc/NEWS2
3 files changed, 10 insertions, 4 deletions
diff --git a/Lib/ssl.py b/Lib/ssl.py
index 5e5a5ce..6ff5c53 100644
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -574,10 +574,6 @@ class SSLSocket(socket):
return None
return self._sslobj.tls_unique_cb()
- def __del__(self):
- # sys.stderr.write("__del__ on %s\n" % repr(self))
- self._real_close()
-
def wrap_socket(sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=CERT_NONE,
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 0a6af5e..2f63eaa 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -374,6 +374,14 @@ class BasicSocketTests(unittest.TestCase):
ss = ssl.wrap_socket(s, server_side=True, certfile=CERTFILE)
self.assertIsNone(ss.get_channel_binding("tls-unique"))
+ def test_dealloc_warn(self):
+ ss = ssl.wrap_socket(socket.socket(socket.AF_INET))
+ r = repr(ss)
+ with self.assertWarns(ResourceWarning) as cm:
+ ss = None
+ support.gc_collect()
+ self.assertIn(r, str(cm.warning.args[0]))
+
class ContextTests(unittest.TestCase):
@skip_if_broken_ubuntu_ssl
diff --git a/Misc/NEWS b/Misc/NEWS
index f0b569c..1ed665a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -142,6 +142,8 @@ Core and Builtins
Library
-------
+- Issue #16900: Issue a ResourceWarning when an ssl socket is left unclosed.
+
- Issue #15545: Fix regression in sqlite3's iterdump method where it was
failing if the connection used a row factory (such as sqlite3.Row) that
produced unsortable objects. (Regression was introduced by fix for 9750).