]> granicus.if.org Git - python/commitdiff
remove __del__ because it's evil and also prevents the ResourceWarning on the socket...
authorBenjamin Peterson <benjamin@python.org>
Thu, 10 Jan 2013 20:16:20 +0000 (14:16 -0600)
committerBenjamin Peterson <benjamin@python.org>
Thu, 10 Jan 2013 20:16:20 +0000 (14:16 -0600)
Lib/ssl.py
Lib/test/test_ssl.py
Misc/NEWS

index 5e5a5ce091d5eab836bb9a9a1fc00c5967f037bb..6ff5c5388420f149c8c9d9f8015c042654c883e6 100644 (file)
@@ -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,
index 0a6af5e0cb51ce33efe8a3090ba11cc92804ea34..2f63eaa110069f294a2308bf8dfeae44a52cca28 100644 (file)
@@ -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
index f0b569c19533b156643fbfdc5bed50c0f6f77996..1ed665a803ebad74e0dcadc8059b6a40fd8d5f8a 100644 (file)
--- 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).