comparison mercurial/url.py @ 15027:1e45b92f4fb2

merge with stable
author Matt Mackall <mpm@selenic.com>
date Fri, 05 Aug 2011 16:07:51 -0500
parents d0424f39984c 0593e8f81c71
children d30ec2d16c5a
comparison
equal deleted inserted replaced
15023:157a294444b2 15027:1e45b92f4fb2
24 if user and passwd: 24 if user and passwd:
25 self._writedebug(user, passwd) 25 self._writedebug(user, passwd)
26 return (user, passwd) 26 return (user, passwd)
27 27
28 if not user or not passwd: 28 if not user or not passwd:
29 res = httpconnectionmod.readauthforuri(self.ui, authuri) 29 res = httpconnectionmod.readauthforuri(self.ui, authuri, user)
30 if res: 30 if res:
31 group, auth = res 31 group, auth = res
32 user, passwd = auth.get('username'), auth.get('password') 32 user, passwd = auth.get('username'), auth.get('password')
33 self.ui.debug("using auth.%s.* for authentication\n" % group) 33 self.ui.debug("using auth.%s.* for authentication\n" % group)
34 if not user or not passwd: 34 if not user or not passwd:
50 return (user, passwd) 50 return (user, passwd)
51 51
52 def _writedebug(self, user, passwd): 52 def _writedebug(self, user, passwd):
53 msg = _('http auth: user %s, password %s\n') 53 msg = _('http auth: user %s, password %s\n')
54 self.ui.debug(msg % (user, passwd and '*' * len(passwd) or 'not set')) 54 self.ui.debug(msg % (user, passwd and '*' * len(passwd) or 'not set'))
55
56 def find_stored_password(self, authuri):
57 return urllib2.HTTPPasswordMgrWithDefaultRealm.find_user_password(
58 self, None, authuri)
55 59
56 class proxyhandler(urllib2.ProxyHandler): 60 class proxyhandler(urllib2.ProxyHandler):
57 def __init__(self, ui): 61 def __init__(self, ui):
58 proxyurl = ui.config("http_proxy", "host") or os.getenv('http_proxy') 62 proxyurl = ui.config("http_proxy", "host") or os.getenv('http_proxy')
59 # XXX proxyauthinfo = None 63 # XXX proxyauthinfo = None
340 def _start_transaction(self, h, req): 344 def _start_transaction(self, h, req):
341 _generic_start_transaction(self, h, req) 345 _generic_start_transaction(self, h, req)
342 return keepalive.KeepAliveHandler._start_transaction(self, h, req) 346 return keepalive.KeepAliveHandler._start_transaction(self, h, req)
343 347
344 def https_open(self, req): 348 def https_open(self, req):
345 res = httpconnectionmod.readauthforuri(self.ui, req.get_full_url()) 349 # req.get_full_url() does not contain credentials and we may
350 # need them to match the certificates.
351 url = req.get_full_url()
352 user, password = self.pwmgr.find_stored_password(url)
353 res = httpconnectionmod.readauthforuri(self.ui, url, user)
346 if res: 354 if res:
347 group, auth = res 355 group, auth = res
348 self.auth = auth 356 self.auth = auth
349 self.ui.debug("using auth.%s.* for authentication\n" % group) 357 self.ui.debug("using auth.%s.* for authentication\n" % group)
350 else: 358 else: