[Python-checkins] r74092 - in python/branches/release31-maint/Lib: test/test_urllib2.py urllib/request.py

senthil.kumaran python-checkins at python.org
Sun Jul 19 06:20:12 CEST 2009


Author: senthil.kumaran
Date: Sun Jul 19 06:20:12 2009
New Revision: 74092
Log:
Fix for issue5102, timeout value propages between redirects, proxy, digest and
auth handlers. Fixed tests to reflect the same.
Modified:
 python/branches/release31-maint/Lib/test/test_urllib2.py
 python/branches/release31-maint/Lib/urllib/request.py
Modified: python/branches/release31-maint/Lib/test/test_urllib2.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_urllib2.py	(original)
+++ python/branches/release31-maint/Lib/test/test_urllib2.py	Sun Jul 19 06:20:12 2009
@@ -222,8 +222,8 @@
 
 class MockOpener:
 addheaders = []
- def open(self, req, data=None):
- self.req, self.data = req, data
+ def open(self, req, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
+ self.req, self.data, self.timeout = req, data, timeout
 def error(self, proto, *args):
 self.proto, self.args = proto, args
 
@@ -854,6 +854,7 @@
 for data in None, "blah\nblah\n":
 method = getattr(h, "http_error_%s" % code)
 req = Request(from_url, data)
+ req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
 req.add_header("Nonsense", "viking=withhold")
 if data is not None:
 req.add_header("Content-Length", str(len(data)))
@@ -883,6 +884,7 @@
 
 # loop detection
 req = Request(from_url)
+ req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
 def redirect(h, req, url=to_url):
 h.http_error_302(req, MockFile(), 302, "Blah",
 MockHeaders({"location": url}))
@@ -892,6 +894,7 @@
 # detect infinite loop redirect of a URL to itself
 req = Request(from_url, origin_req_host="example.com")
 count = 0
+ req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
 try:
 while 1:
 redirect(h, req, "http://example.com/")
@@ -903,6 +906,7 @@
 # detect endless non-repeating chain of redirects
 req = Request(from_url, origin_req_host="example.com")
 count = 0
+ req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
 try:
 while 1:
 redirect(h, req, "http://example.com/%d" % count)
Modified: python/branches/release31-maint/Lib/urllib/request.py
==============================================================================
--- python/branches/release31-maint/Lib/urllib/request.py	(original)
+++ python/branches/release31-maint/Lib/urllib/request.py	Sun Jul 19 06:20:12 2009
@@ -552,7 +552,7 @@
 fp.read()
 fp.close()
 
- return self.parent.open(new)
+ return self.parent.open(new, timeout=req.timeout)
 
 http_error_301 = http_error_303 = http_error_307 = http_error_302
 
@@ -669,7 +669,7 @@
 # {'http': 'ftp://proxy.example.com'}, we may end up turning
 # a request for http://acme.example.com/a into one for
 # ftp://proxy.example.com/a
- return self.parent.open(req)
+ return self.parent.open(req, timeout=req.timeout)
 
 class HTTPPasswordMgr:
 
@@ -785,7 +785,7 @@
 if req.headers.get(self.auth_header, None) == auth:
 return None
 req.add_header(self.auth_header, auth)
- return self.parent.open(req)
+ return self.parent.open(req, timeout=req.timeout)
 else:
 return None
 
@@ -866,7 +866,7 @@
 if req.headers.get(self.auth_header, None) == auth_val:
 return None
 req.add_unredirected_header(self.auth_header, auth_val)
- resp = self.parent.open(req)
+ resp = self.parent.open(req, timeout=req.timeout)
 return resp
 
 def get_cnonce(self, nonce):


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /