mirror of
https://github.com/python/cpython.git
synced 2025-11-01 14:11:41 +00:00
Bug #978833: Close https sockets by releasing the _ssl object.
This commit is contained in:
parent
ec2ce9bbae
commit
f25e35b9ec
4 changed files with 28 additions and 0 deletions
|
|
@ -1117,6 +1117,9 @@ def recv(self, len = 1024, flags = 0):
|
|||
def __getattr__(self, attr):
|
||||
return getattr(self._sock, attr)
|
||||
|
||||
def close(self):
|
||||
SharedSocketClient.close(self)
|
||||
self._ssl = None
|
||||
|
||||
class HTTPSConnection(HTTPConnection):
|
||||
"This class allows communication via SSL."
|
||||
|
|
|
|||
|
|
@ -144,6 +144,10 @@ def _dummy(*args):
|
|||
send = recv = recv_into = sendto = recvfrom = recvfrom_into = _dummy
|
||||
__getattr__ = _dummy
|
||||
|
||||
# Wrapper around platform socket objects. This implements
|
||||
# a platform-independent dup() functionality. The
|
||||
# implementation currently relies on reference counting
|
||||
# to close the underlying socket object.
|
||||
class _socketobject(object):
|
||||
|
||||
__doc__ = _realsocket.__doc__
|
||||
|
|
|
|||
|
|
@ -106,6 +106,25 @@ def connector():
|
|||
connector()
|
||||
t.join()
|
||||
|
||||
def test_978833(self):
|
||||
if test_support.verbose:
|
||||
print "test_978833 ..."
|
||||
|
||||
import os, httplib
|
||||
with test_support.transient_internet():
|
||||
s = socket.socket(socket.AF_INET)
|
||||
s.connect(("www.sf.net", 443))
|
||||
fd = s._sock.fileno()
|
||||
sock = httplib.FakeSocket(s, socket.ssl(s))
|
||||
s = None
|
||||
sock.close()
|
||||
try:
|
||||
os.fstat(fd)
|
||||
except OSError:
|
||||
pass
|
||||
else:
|
||||
raise test_support.TestFailed("Failed to close socket")
|
||||
|
||||
class OpenSSLTests(unittest.TestCase):
|
||||
|
||||
def testBasic(self):
|
||||
|
|
|
|||
|
|
@ -238,6 +238,8 @@ Core and builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Bug #978833: Close https sockets by releasing the _ssl object.
|
||||
|
||||
- Change location of the package index to pypi.python.org/pypi
|
||||
|
||||
- Bug #1701409: Fix a segfault in printing ctypes.c_char_p and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue