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ó. ........
This commit is contained in:
parent
07072168fb
commit
3df58d11be
17
Lib/ssl.py
17
Lib/ssl.py
|
@ -74,7 +74,7 @@ from _ssl import \
|
||||||
SSL_ERROR_EOF, \
|
SSL_ERROR_EOF, \
|
||||||
SSL_ERROR_INVALID_ERROR_CODE
|
SSL_ERROR_INVALID_ERROR_CODE
|
||||||
|
|
||||||
from socket import socket, _fileobject
|
from socket import socket, _fileobject, _delegate_methods
|
||||||
from socket import getnameinfo as _getnameinfo
|
from socket import getnameinfo as _getnameinfo
|
||||||
import base64 # for DER-to-PEM translation
|
import base64 # for DER-to-PEM translation
|
||||||
|
|
||||||
|
@ -90,13 +90,14 @@ class SSLSocket(socket):
|
||||||
do_handshake_on_connect=True,
|
do_handshake_on_connect=True,
|
||||||
suppress_ragged_eofs=True):
|
suppress_ragged_eofs=True):
|
||||||
socket.__init__(self, _sock=sock._sock)
|
socket.__init__(self, _sock=sock._sock)
|
||||||
# the initializer for socket trashes the methods (tsk, tsk), so...
|
# The initializer for socket overrides the methods send(), recv(), etc.
|
||||||
self.send = lambda data, flags=0: SSLSocket.send(self, data, flags)
|
# in the instancce, which we don't need -- but we want to provide the
|
||||||
self.sendto = lambda data, addr, flags=0: SSLSocket.sendto(self, data, addr, flags)
|
# methods defined in SSLSocket.
|
||||||
self.recv = lambda buflen=1024, flags=0: SSLSocket.recv(self, buflen, flags)
|
for attr in _delegate_methods:
|
||||||
self.recvfrom = lambda addr, buflen=1024, flags=0: SSLSocket.recvfrom(self, addr, buflen, flags)
|
try:
|
||||||
self.recv_into = lambda buffer, nbytes=None, flags=0: SSLSocket.recv_into(self, buffer, nbytes, flags)
|
delattr(self, attr)
|
||||||
self.recvfrom_into = lambda buffer, nbytes=None, flags=0: SSLSocket.recvfrom_into(self, buffer, nbytes, flags)
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
if certfile and not keyfile:
|
if certfile and not keyfile:
|
||||||
keyfile = certfile
|
keyfile = certfile
|
||||||
|
|
|
@ -14,6 +14,7 @@ import pprint
|
||||||
import urllib, urlparse
|
import urllib, urlparse
|
||||||
import shutil
|
import shutil
|
||||||
import traceback
|
import traceback
|
||||||
|
import weakref
|
||||||
|
|
||||||
from BaseHTTPServer import HTTPServer
|
from BaseHTTPServer import HTTPServer
|
||||||
from SimpleHTTPServer import SimpleHTTPRequestHandler
|
from SimpleHTTPServer import SimpleHTTPRequestHandler
|
||||||
|
@ -113,6 +114,15 @@ class BasicTests(unittest.TestCase):
|
||||||
if (d1 != d2):
|
if (d1 != d2):
|
||||||
raise test_support.TestFailed("PEM-to-DER or DER-to-PEM translation failed")
|
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):
|
class NetworkedTests(unittest.TestCase):
|
||||||
|
|
||||||
def testConnect(self):
|
def testConnect(self):
|
||||||
|
|
|
@ -701,6 +701,7 @@ Andrew Svetlov
|
||||||
Kalle Svensson
|
Kalle Svensson
|
||||||
Paul Swartz
|
Paul Swartz
|
||||||
Thenault Sylvain
|
Thenault Sylvain
|
||||||
|
Péter Szabó
|
||||||
Arfrever Frehtes Taifersar Arahesis
|
Arfrever Frehtes Taifersar Arahesis
|
||||||
Geoff Talvola
|
Geoff Talvola
|
||||||
William Tanksley
|
William Tanksley
|
||||||
|
|
|
@ -33,6 +33,9 @@ Core and Builtins
|
||||||
Library
|
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
|
- Issue #8108: Fix the unwrap() method of SSL objects when the socket has
|
||||||
a non-infinite timeout. Also make that method friendlier with applications
|
a non-infinite timeout. Also make that method friendlier with applications
|
||||||
wanting to continue using the socket in clear-text mode, by disabling
|
wanting to continue using the socket in clear-text mode, by disabling
|
||||||
|
|
Loading…
Reference in New Issue