exchange: properly wrap wireprotocol capabilities
Just wrapping the module function only works for ssh. Ssh gets capability
through the `hello` command. We also need to wrap the function stored in the
command dict. This fix discovery for http peer.
--- a/hgext/evolve.py Mon Mar 10 17:40:38 2014 -0700
+++ b/hgext/evolve.py Mon Mar 10 21:34:36 2014 -0700
@@ -2455,4 +2455,9 @@
hgweb_mod.perms['evoext_obshash'] = 'pull'
wireproto.commands['evoext_pushobsmarkers_0'] = (srv_pushobsmarkers, '')
wireproto.commands['evoext_pullobsmarkers_0'] = (srv_pullobsmarkers, '*')
+ # wrap command content
+ oldcap, args = wireproto.commands['capabilities']
+ def newcap(repo, proto):
+ return capabilities(oldcap, repo, proto)
+ wireproto.commands['capabilities'] = (newcap, args)
wireproto.commands['evoext_obshash'] = (srv_obshash, 'nodes')
--- a/hgext/simple4server.py Mon Mar 10 17:40:38 2014 -0700
+++ b/hgext/simple4server.py Mon Mar 10 21:34:36 2014 -0700
@@ -223,5 +223,11 @@
hgweb_mod.perms['evoext_obshash'] = 'pull'
wireproto.commands['evoext_pushobsmarkers_0'] = (srv_pushobsmarkers, '')
wireproto.commands['evoext_pullobsmarkers_0'] = (srv_pullobsmarkers, '*')
+ # wrap module content
extensions.wrapfunction(wireproto, 'capabilities', capabilities)
+ # wrap command content
+ oldcap, args = wireproto.commands['capabilities']
+ def newcap(repo, proto):
+ return capabilities(oldcap, repo, proto)
+ wireproto.commands['capabilities'] = (newcap, args)
wireproto.commands['evoext_obshash'] = (srv_obshash, 'nodes')