New submission from Luci Stanescu <luci.stane...@gmail.com>: Hi,
The HTTPDigestAuthHandler's code looks like this: def http_error_401(self, req, fp, code, msg, headers): host = urlparse(req.full_url)[1] retry = self.http_error_auth_reqed('www-authenticate', host, req, headers) self.reset_retry_count() return retry After successful authentication, the HTTP server might still return an error code, such as 404 or 304. In that case, self.http_error_auth_reqed raises the appropriate HTTPError and self.reset_retry_count is not called. I think that the code should be something along the lines of: try: retry = self.http_error_auth_reqed('www-authenticate', host, req, headers) except HTTPError, e: if e.code != 401: self.reset_retry_counter() raise else: self.reset_retry_counter() return retry Ways to reproduce the problem: try to access a resource for which an HTTP server requires authentication but for which after successful authentication returns a negative reply. I've attached an example script to demonstrate it (for python 2.X; bug also resent in 3.X, just replace import urllib2 with from urllib import request as urllib2 ;-) ). The same problem applies to ProxyDigestAuthHandler. ---------- components: Library (Lib) files: test_urllib2.py messages: 115054 nosy: Luci.Stanescu priority: normal severity: normal status: open title: When reusing an handler, urllib(2)'s digest authentication fails after multiple regative replies type: behavior versions: Python 2.5, Python 2.6, Python 2.7, Python 3.1, Python 3.2, Python 3.3 Added file: http://bugs.python.org/file18656/test_urllib2.py _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue9698> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com