Issue #7943: Fix circular reference created when instantiating an SSL
socket.  Initial patch by Péter Szabó.
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 458db26..5917b51 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -11,6 +11,7 @@
 import pprint
 import urllib, urlparse
 import traceback
+import weakref
 
 from BaseHTTPServer import HTTPServer
 from SimpleHTTPServer import SimpleHTTPRequestHandler
@@ -154,6 +155,16 @@
         with self.assertRaisesRegexp(ssl.SSLError, "No cipher can be selected"):
             s.connect(remote)
 
+    @test_support.cpython_only
+    def test_refcycle(self):
+        # Issue #7943: an SSL object doesn't create reference cycles with
+        # itself.
+        s = socket.socket(socket.AF_INET)
+        ss = ssl.wrap_socket(s)
+        wr = weakref.ref(ss)
+        del ss
+        self.assertEqual(wr(), None)
+
 
 class NetworkedTests(unittest.TestCase):