diff -r 566cb89050b7 -r 806f9a883b4f mercurial/url.py --- a/mercurial/url.py Thu Mar 09 22:35:10 2017 -0800 +++ b/mercurial/url.py Thu Mar 09 22:40:52 2017 -0800 @@ -417,6 +417,35 @@ else: return None +class cookiehandler(urlreq.basehandler): + def __init__(self, ui): + self.cookiejar = None + + cookiefile = ui.config('auth', 'cookiefile') + if not cookiefile: + return + + cookiefile = util.expandpath(cookiefile) + try: + cookiejar = util.cookielib.MozillaCookieJar(cookiefile) + cookiejar.load() + self.cookiejar = cookiejar + except util.cookielib.LoadError as e: + ui.warn(_('(error loading cookie file %s: %s; continuing without ' + 'cookies)\n') % (cookiefile, str(e))) + + def http_request(self, request): + if self.cookiejar: + self.cookiejar.add_cookie_header(request) + + return request + + def https_request(self, request): + if self.cookiejar: + self.cookiejar.add_cookie_header(request) + + return request + handlerfuncs = [] def opener(ui, authinfo=None): @@ -450,6 +479,7 @@ handlers.extend((httpbasicauthhandler(passmgr), httpdigestauthhandler(passmgr))) handlers.extend([h(ui, passmgr) for h in handlerfuncs]) + handlers.append(cookiehandler(ui)) opener = urlreq.buildopener(*handlers) # The user agent should should *NOT* be used by servers for e.g.