D2485: wireproto: don't expose legacy commands to version 2 of wire protocol

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Fri Mar 2 14:51:00 UTC 2018


indygreg updated this revision to Diff 6336.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2485?vs=6184&id=6336

REVISION DETAIL
  https://phab.mercurial-scm.org/D2485

AFFECTED FILES
  mercurial/wireproto.py
  tests/test-ssh-proto.t

CHANGE DETAILS

diff --git a/tests/test-ssh-proto.t b/tests/test-ssh-proto.t
--- a/tests/test-ssh-proto.t
+++ b/tests/test-ssh-proto.t
@@ -1273,6 +1273,33 @@
   e>     malformed handshake protocol: missing pairs 81\n
   e>     -\n
 
+Legacy commands are not exposed to version 2 of protocol
+
+  $ hg --config experimental.sshpeer.advertise-v2=true debugwireproto --localssh << EOF
+  > command branches
+  >     nodes 0000000000000000000000000000000000000000
+  > EOF
+  creating ssh peer from handshake results
+  sending branches command
+  response: 
+
+  $ hg --config experimental.sshpeer.advertise-v2=true debugwireproto --localssh << EOF
+  > command changegroup
+  >     roots 0000000000000000000000000000000000000000
+  > EOF
+  creating ssh peer from handshake results
+  sending changegroup command
+  response: 
+
+  $ hg --config experimental.sshpeer.advertise-v2=true debugwireproto --localssh << EOF
+  > command changegroupsubset
+  >     bases 0000000000000000000000000000000000000000
+  >     heads 0000000000000000000000000000000000000000
+  > EOF
+  creating ssh peer from handshake results
+  sending changegroupsubset command
+  response: 
+
   $ cd ..
 
 Test listkeys for listing namespaces
diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
--- a/mercurial/wireproto.py
+++ b/mercurial/wireproto.py
@@ -740,6 +740,8 @@
 
     return bytesresponse(';'.join(res))
 
+# TODO mark as version 1 transport only once interaction with
+# SSH handshake mechanism is figured out.
 @wireprotocommand('between', 'pairs')
 def between(repo, proto, pairs):
     pairs = [decodelist(p, '-') for p in pairs.split(" ")]
@@ -760,7 +762,7 @@
 
     return bytesresponse('\n'.join(heads))
 
- at wireprotocommand('branches', 'nodes')
+ at wireprotocommand('branches', 'nodes', transportpolicy=POLICY_V1_ONLY)
 def branches(repo, proto, nodes):
     nodes = decodelist(nodes)
     r = []
@@ -835,16 +837,17 @@
 def capabilities(repo, proto):
     return bytesresponse(' '.join(_capabilities(repo, proto)))
 
- at wireprotocommand('changegroup', 'roots')
+ at wireprotocommand('changegroup', 'roots', transportpolicy=POLICY_V1_ONLY)
 def changegroup(repo, proto, roots):
     nodes = decodelist(roots)
     outgoing = discovery.outgoing(repo, missingroots=nodes,
                                   missingheads=repo.heads())
     cg = changegroupmod.makechangegroup(repo, outgoing, '01', 'serve')
     gen = iter(lambda: cg.read(32768), '')
     return streamres(gen=gen)
 
- at wireprotocommand('changegroupsubset', 'bases heads')
+ at wireprotocommand('changegroupsubset', 'bases heads',
+                  transportpolicy=POLICY_V1_ONLY)
 def changegroupsubset(repo, proto, bases, heads):
     bases = decodelist(bases)
     heads = decodelist(heads)



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list