Commit f25e35b9 authored by Martin v. Löwis's avatar Martin v. Löwis

Bug #978833: Close https sockets by releasing the _ssl object.

parent ec2ce9bb
......@@ -1117,6 +1117,9 @@ class FakeSocket(SharedSocketClient):
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 @@ class _closedsocket(object):
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 @@ class BasicTests(unittest.TestCase):
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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment