Kaydet (Commit) 3b9b9bab authored tarafından Antoine Pitrou's avatar Antoine Pitrou

Merged revisions 80429 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r80429 | antoine.pitrou | 2010-04-24 01:31:47 +0200 (sam., 24 avril 2010) | 13 lines

  Note: I'm just merging in the additional test.


  Merged revisions 80428 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r80428 | antoine.pitrou | 2010-04-24 01:25:45 +0200 (sam., 24 avril 2010) | 4 lines

    Issue #5238: Calling makefile() on an SSL object would prevent the
    underlying socket from being closed until all objects get truely destroyed.
  ........
................
üst 78f4a9a1
...@@ -8,7 +8,9 @@ import select ...@@ -8,7 +8,9 @@ import select
import errno import errno
import subprocess import subprocess
import time import time
import gc
import os import os
import errno
import pprint import pprint
import urllib.parse, urllib.request import urllib.parse, urllib.request
import shutil import shutil
...@@ -108,6 +110,25 @@ class BasicTests(unittest.TestCase): ...@@ -108,6 +110,25 @@ class BasicTests(unittest.TestCase):
del ss del ss
self.assertEqual(wr(), None) self.assertEqual(wr(), None)
def test_makefile_close(self):
# Issue #5238: creating a file-like object with makefile() shouldn't
# leak the underlying file descriptor.
ss = ssl.wrap_socket(socket.socket(socket.AF_INET))
fd = ss.fileno()
f = ss.makefile()
f.close()
# The fd is still open
os.read(fd, 0)
# Closing the SSL socket should close the fd too
ss.close()
gc.collect()
try:
os.read(fd, 0)
except OSError as e:
self.assertEqual(e.errno, errno.EBADF)
else:
self.fail("OSError wasn't raised")
class NetworkedTests(unittest.TestCase): class NetworkedTests(unittest.TestCase):
def testConnect(self): def testConnect(self):
......
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