Mercurial > bitten > bitten-test
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)