mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
Merged revisions 80456 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r80456 | antoine.pitrou | 2010-04-25 00:04:40 +0200 (dim., 25 avril 2010) | 5 lines Issue #8524: When creating an SSL socket, the timeout value of the original socket wasn't retained (instead, a socket with a positive timeout would be turned into a non-blocking SSL socket). ........
This commit is contained in:
parent
ec146185c4
commit
c2203f92ff
3 changed files with 23 additions and 11 deletions
|
@ -101,6 +101,7 @@ class SSLSocket(socket):
|
|||
type=sock.type,
|
||||
proto=sock.proto,
|
||||
fileno=_dup(sock.fileno()))
|
||||
self.settimeout(sock.gettimeout())
|
||||
sock.close()
|
||||
elif fileno is not None:
|
||||
socket.__init__(self, fileno=fileno)
|
||||
|
|
|
@ -110,6 +110,15 @@ class BasicTests(unittest.TestCase):
|
|||
del ss
|
||||
self.assertEqual(wr(), None)
|
||||
|
||||
def test_timeout(self):
|
||||
# Issue #8524: when creating an SSL socket, the timeout of the
|
||||
# original socket should be retained.
|
||||
for timeout in (None, 0.0, 5.0):
|
||||
s = socket.socket(socket.AF_INET)
|
||||
s.settimeout(timeout)
|
||||
ss = ssl.wrap_socket(s)
|
||||
self.assertEqual(timeout, ss.gettimeout())
|
||||
|
||||
|
||||
class NetworkedTests(unittest.TestCase):
|
||||
|
||||
|
@ -1262,17 +1271,15 @@ else:
|
|||
started.wait()
|
||||
|
||||
try:
|
||||
if 0:
|
||||
# Disabled until #8524 finds a solution
|
||||
try:
|
||||
c = socket.socket(socket.AF_INET)
|
||||
c.settimeout(1.0)
|
||||
c.connect((host, port))
|
||||
# Will attempt handshake and time out
|
||||
self.assertRaisesRegexp(ssl.SSLError, "timed out",
|
||||
ssl.wrap_socket, c)
|
||||
finally:
|
||||
c.close()
|
||||
try:
|
||||
c = socket.socket(socket.AF_INET)
|
||||
c.settimeout(0.2)
|
||||
c.connect((host, port))
|
||||
# Will attempt handshake and time out
|
||||
self.assertRaisesRegexp(ssl.SSLError, "timed out",
|
||||
ssl.wrap_socket, c)
|
||||
finally:
|
||||
c.close()
|
||||
try:
|
||||
c = socket.socket(socket.AF_INET)
|
||||
c = ssl.wrap_socket(c)
|
||||
|
|
|
@ -40,6 +40,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #8524: When creating an SSL socket, the timeout value of the
|
||||
original socket wasn't retained (instead, a socket with a positive timeout
|
||||
would be turned into a non-blocking SSL socket).
|
||||
|
||||
- Issue #5103: SSL handshake would ignore the socket timeout and block
|
||||
indefinitely if the other end didn't respond.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue