diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-04-23 23:07:37 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-04-23 23:07:37 (GMT) |
commit | 3df58d11be781c6842d64bb5e8d591659e1f5c0b (patch) | |
tree | c1bfbbd0af6756dfec3aaa88d1016889e5415116 /Lib/ssl.py | |
parent | 07072168fb939e594e47d90a4af938cc46eb6217 (diff) | |
download | cpython-3df58d11be781c6842d64bb5e8d591659e1f5c0b.zip cpython-3df58d11be781c6842d64bb5e8d591659e1f5c0b.tar.gz cpython-3df58d11be781c6842d64bb5e8d591659e1f5c0b.tar.bz2 |
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ó.
........
Diffstat (limited to 'Lib/ssl.py')
-rw-r--r-- | Lib/ssl.py | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -74,7 +74,7 @@ from _ssl import \ 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 @@ class SSLSocket(socket): 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 |