[Python-checkins] r80425 - in python/branches/release26-maint: Lib/ssl.py Lib/test/test_ssl.py Misc/ACKS Misc/NEWS
antoine.pitrou
python-checkins at python.org
Sat Apr 24 01:07:37 CEST 2010
Author: antoine.pitrou
Date: Sat Apr 24 01:07:37 2010
New Revision: 80425
Log:
Merged revisions 80423 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80423 | antoine.pitrou | 2010-04-24 00:54:59 +0200 (sam., 24 avril 2010) | 4 lines
Issue #7943: Fix circular reference created when instantiating an SSL
socket. Initial patch by Péter Szabó.
........
Modified:
python/branches/release26-maint/ (props changed)
python/branches/release26-maint/Lib/ssl.py
python/branches/release26-maint/Lib/test/test_ssl.py
python/branches/release26-maint/Misc/ACKS
python/branches/release26-maint/Misc/NEWS
Modified: python/branches/release26-maint/Lib/ssl.py
==============================================================================
--- python/branches/release26-maint/Lib/ssl.py (original)
+++ python/branches/release26-maint/Lib/ssl.py Sat Apr 24 01:07:37 2010
@@ -74,7 +74,7 @@
SSL_ERROR_EOF, \
SSL_ERROR_INVALID_ERROR_CODE
-from socket import socket, _fileobject
+from socket import socket, _fileobject, _delegate_methods
from socket import getnameinfo as _getnameinfo
import base64 # for DER-to-PEM translation
@@ -90,13 +90,14 @@
do_handshake_on_connect=True,
suppress_ragged_eofs=True):
socket.__init__(self, _sock=sock._sock)
- # the initializer for socket trashes the methods (tsk, tsk), so...
- self.send = lambda data, flags=0: SSLSocket.send(self, data, flags)
- self.sendto = lambda data, addr, flags=0: SSLSocket.sendto(self, data, addr, flags)
- self.recv = lambda buflen=1024, flags=0: SSLSocket.recv(self, buflen, flags)
- self.recvfrom = lambda addr, buflen=1024, flags=0: SSLSocket.recvfrom(self, addr, buflen, flags)
- self.recv_into = lambda buffer, nbytes=None, flags=0: SSLSocket.recv_into(self, buffer, nbytes, flags)
- self.recvfrom_into = lambda buffer, nbytes=None, flags=0: SSLSocket.recvfrom_into(self, buffer, nbytes, flags)
+ # The initializer for socket overrides the methods send(), recv(), etc.
+ # in the instancce, which we don't need -- but we want to provide the
+ # methods defined in SSLSocket.
+ for attr in _delegate_methods:
+ try:
+ delattr(self, attr)
+ except AttributeError:
+ pass
if certfile and not keyfile:
keyfile = certfile
Modified: python/branches/release26-maint/Lib/test/test_ssl.py
==============================================================================
--- python/branches/release26-maint/Lib/test/test_ssl.py (original)
+++ python/branches/release26-maint/Lib/test/test_ssl.py Sat Apr 24 01:07:37 2010
@@ -14,6 +14,7 @@
import urllib, urlparse
import shutil
import traceback
+import weakref
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
@@ -113,6 +114,15 @@
if (d1 != d2):
raise test_support.TestFailed("PEM-to-DER or DER-to-PEM translation failed")
+ 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):
def testConnect(self):
Modified: python/branches/release26-maint/Misc/ACKS
==============================================================================
--- python/branches/release26-maint/Misc/ACKS (original)
+++ python/branches/release26-maint/Misc/ACKS Sat Apr 24 01:07:37 2010
@@ -701,6 +701,7 @@
Kalle Svensson
Paul Swartz
Thenault Sylvain
+Péter Szabó
Arfrever Frehtes Taifersar Arahesis
Geoff Talvola
William Tanksley
Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS (original)
+++ python/branches/release26-maint/Misc/NEWS Sat Apr 24 01:07:37 2010
@@ -33,6 +33,9 @@
Library
-------
+- Issue #7943: Fix circular reference created when instantiating an SSL
+ socket. Initial patch by Péter Szabó.
+
- Issue #8108: Fix the unwrap() method of SSL objects when the socket has
a non-infinite timeout. Also make that method friendlier with applications
wanting to continue using the socket in clear-text mode, by disabling
More information about the Python-checkins
mailing list