]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix for Issue4683 - urllib2.HTTPDigestAuthHandler fails on third hostname?.
authorSenthil Kumaran <orsenthil@gmail.com>
Sun, 15 Nov 2009 08:36:20 +0000 (08:36 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Sun, 15 Nov 2009 08:36:20 +0000 (08:36 +0000)
Resolution: Reset the nonce value for each unique nonce (as per RFC 2617)

Lib/urllib2.py

index 2d73475a8eb73c7e332643eb1b614be4c753cc5f..8dcf8dad5889822ff57a4c6f480ce69703066a6e 100644 (file)
@@ -901,6 +901,7 @@ class AbstractDigestAuthHandler:
         self.add_password = self.passwd.add_password
         self.retried = 0
         self.nonce_count = 0
+        self.last_nonce = None
 
     def reset_retry_count(self):
         self.retried = 0
@@ -975,7 +976,12 @@ class AbstractDigestAuthHandler:
                         # XXX selector: what about proxies and full urls
                         req.get_selector())
         if qop == 'auth':
-            self.nonce_count += 1
+            if nonce == self.last_nonce:
+                self.nonce_count += 1
+            else:
+                self.nonce_count = 1
+                self.last_nonce = nonce
+
             ncvalue = '%08x' % self.nonce_count
             cnonce = self.get_cnonce(nonce)
             noncebit = "%s:%s:%s:%s:%s" % (nonce, ncvalue, cnonce, qop, H(A2))