changeset 569:74bc339ce7d5

0.6dev: Fixing digest authentication in #330. Instead of having a single `urllib2` opener for the life of the slave, a new opener object is created for each request.
author osimons
date Sun, 05 Jul 2009 11:33:09 +0000
parents 84a45f7c9833
children 65dcf1d70c5b
files bitten/slave.py
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/slave.py
+++ b/bitten/slave.py
@@ -132,8 +132,7 @@
         self.dump_reports = dump_reports
 
         if not self.local:
-            self.opener = urllib2.build_opener(SaneHTTPErrorProcessor)
-            password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
+            self.password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
             if not username:
                 username = self.config['authentication.username']
             if not password:
@@ -141,9 +140,14 @@
             self.config.packages.pop('authentication', None)
             if username and password:
                 log.debug('Enabling authentication with username %r', username)
-                password_mgr.add_password(None, urls, username, password)
-            self.opener.add_handler(urllib2.HTTPBasicAuthHandler(password_mgr))
-            self.opener.add_handler(urllib2.HTTPDigestAuthHandler(password_mgr))
+                self.password_mgr.add_password(None, urls, username, password)
+
+    def _get_opener(self):
+        opener = urllib2.build_opener(SaneHTTPErrorProcessor)
+        opener.add_handler(urllib2.HTTPBasicAuthHandler(self.password_mgr))
+        opener.add_handler(urllib2.HTTPDigestAuthHandler(self.password_mgr))
+        return opener
+    opener = property(_get_opener)
 
     def request(self, method, url, body=None, headers=None):
         log.debug('Sending %s request to %r', method, url)
Copyright (C) 2012-2017 Edgewall Software