mercurial/debugcommands.py
changeset 37645 72b0982cd509
parent 37644 77c9ee77687c
child 37647 516b5a5edae3
--- a/mercurial/debugcommands.py	Wed Apr 11 18:15:51 2018 -0700
+++ b/mercurial/debugcommands.py	Thu Apr 12 12:33:07 2018 -0700
@@ -83,7 +83,6 @@
     vfs as vfsmod,
     wireprotoframing,
     wireprotoserver,
-    wireprototypes,
 )
 from .utils import (
     dateutil,
@@ -2911,9 +2910,19 @@
 
         if opts['peer'] == 'http2':
             ui.write(_('creating http peer for wire protocol version 2\n'))
-            peer = httppeer.httpv2peer(
-                ui, path, 'api/%s' % wireprototypes.HTTP_WIREPROTO_V2,
-                opener, httppeer.urlreq.request, {})
+            # We go through makepeer() because we need an API descriptor for
+            # the peer instance to be useful.
+            with ui.configoverride({
+                ('experimental', 'httppeer.advertise-v2'): True}):
+                peer = httppeer.makepeer(ui, path, opener=opener)
+
+            if not isinstance(peer, httppeer.httpv2peer):
+                raise error.Abort(_('could not instantiate HTTP peer for '
+                                    'wire protocol version 2'),
+                                  hint=_('the server may not have the feature '
+                                         'enabled or is not allowing this '
+                                         'client version'))
+
         elif opts['peer'] == 'raw':
             ui.write(_('using raw connection to peer\n'))
             peer = None