summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFacundo Batista <facundobatista@gmail.com>2007-05-21 17:32:32 (GMT)
committerFacundo Batista <facundobatista@gmail.com>2007-05-21 17:32:32 (GMT)
commit70f996be24dd00c11500cd99d92e8b2a1dfaa501 (patch)
treeb60861e73678368f2690057584e42faf1eaa41ef
parent767debb6aa5729e919da309ecc770f8b2d94beba (diff)
downloadcpython-70f996be24dd00c11500cd99d92e8b2a1dfaa501.zip
cpython-70f996be24dd00c11500cd99d92e8b2a1dfaa501.tar.gz
cpython-70f996be24dd00c11500cd99d92e8b2a1dfaa501.tar.bz2
Added timeout support to HTTPSConnection, through the
socket.create_connection function. Also added a small test for this, and updated NEWS file.
-rw-r--r--Lib/httplib.py7
-rw-r--r--Lib/test/test_httplib.py10
-rw-r--r--Misc/NEWS2
3 files changed, 13 insertions, 6 deletions
diff --git a/Lib/httplib.py b/Lib/httplib.py
index d420f46..badaf1a 100644
--- a/Lib/httplib.py
+++ b/Lib/httplib.py
@@ -1124,16 +1124,15 @@ class HTTPSConnection(HTTPConnection):
default_port = HTTPS_PORT
def __init__(self, host, port=None, key_file=None, cert_file=None,
- strict=None):
- HTTPConnection.__init__(self, host, port, strict)
+ strict=None, timeout=None):
+ HTTPConnection.__init__(self, host, port, strict, timeout)
self.key_file = key_file
self.cert_file = cert_file
def connect(self):
"Connect to a host on a given (SSL) port."
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sock.connect((self.host, self.port))
+ sock = socket.create_connection((self.host, self.port), self.timeout)
ssl = socket.ssl(sock, self.key_file, self.cert_file)
self.sock = FakeSocket(sock, ssl)
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 035f0b9..9238eea 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -194,8 +194,16 @@ class TimeoutTest(TestCase):
httpConn.close()
+class HTTPSTimeoutTest(TestCase):
+# XXX Here should be tests for HTTPS, there isn't any right now!
+
+ def test_attributes(self):
+ # simple test to check it's storing it
+ h = httplib.HTTPSConnection(HOST, PORT, timeout=30)
+ self.assertEqual(h.timeout, 30)
+
def test_main(verbose=None):
- test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest)
+ test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, HTTPSTimeoutTest)
if __name__ == '__main__':
test_main()
diff --git a/Misc/NEWS b/Misc/NEWS
index 264e5e7..a0692c4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -259,7 +259,7 @@ Library
- Patch #1676823: Added create_connection() to socket.py, which may be
called with a timeout, and use it from httplib (whose HTTPConnection
- now accepts an optional timeout).
+ and HTTPSConnection now accept an optional timeout).
- Bug #978833: Revert r50844, as it broke _socketobject.dup.