diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -2915,12 +2915,7 @@ raise error.Abort(_('--peer %s not supported with HTTP peers') % opts['peer']) else: - url, caps = httppeer.performhandshake(ui, url, opener, - httppeer.urlreq.request) - - peer = httppeer.httppeer(ui, path, url, opener, - httppeer.urlreq.request, - caps) + peer = httppeer.makepeer(ui, path, opener=opener) # We /could/ populate stdin/stdout with sock.makefile()... else: diff --git a/mercurial/httppeer.py b/mercurial/httppeer.py --- a/mercurial/httppeer.py +++ b/mercurial/httppeer.py @@ -620,9 +620,12 @@ return respurl, set(rawcaps.split()) -def makepeer(ui, path, requestbuilder=urlreq.request): +def makepeer(ui, path, opener=None, requestbuilder=urlreq.request): """Construct an appropriate HTTP peer instance. + ``opener`` is an ``url.opener`` that should be used to establish + connections, perform HTTP requests. + ``requestbuilder`` is the type used for constructing HTTP requests. It exists as an argument so extensions can override the default. """ @@ -635,7 +638,7 @@ url, authinfo = u.authinfo() ui.debug('using %s\n' % url) - opener = urlmod.opener(ui, authinfo) + opener = opener or urlmod.opener(ui, authinfo) respurl, caps = performhandshake(ui, url, opener, requestbuilder)