Mercurial > public > mercurial-scm > hg-stable
diff mercurial/wireprotoserver.py @ 36642:6e585bca962e
wireproto: add transport specific capabilities in the transport
We add a method to the protocol handler interface that allows
specific implementations to add their own capabilities.
The SSH implementation is a no-op.
The HTTP implementation adds the HTTP-specific capabilities.
The end result is transport specific capabilities now live in the
transport code instead of in some generic function in the wireproto
module.
Differential Revision: https://phab.mercurial-scm.org/D2512
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 27 Feb 2018 16:24:02 -0800 |
parents | af0d38f015bb |
children | 2442927cdd96 |
line wrap: on
line diff
--- a/mercurial/wireprotoserver.py Tue Feb 27 15:23:04 2018 -0800 +++ b/mercurial/wireprotoserver.py Tue Feb 27 16:24:02 2018 -0800 @@ -121,6 +121,24 @@ urlreq.quote(self._req.env.get('REMOTE_HOST', '')), urlreq.quote(self._req.env.get('REMOTE_USER', ''))) + def addcapabilities(self, repo, caps): + caps.append('httpheader=%d' % + repo.ui.configint('server', 'maxhttpheaderlen')) + if repo.ui.configbool('experimental', 'httppostargs'): + caps.append('httppostargs') + + # FUTURE advertise 0.2rx once support is implemented + # FUTURE advertise minrx and mintx after consulting config option + caps.append('httpmediatype=0.1rx,0.1tx,0.2tx') + + compengines = wireproto.supportedcompengines(repo.ui, util.SERVERROLE) + if compengines: + comptypes = ','.join(urlreq.quote(e.wireprotosupport().name) + for e in compengines) + caps.append('compression=%s' % comptypes) + + return caps + # This method exists mostly so that extensions like remotefilelog can # disable a kludgey legacy method only over http. As of early 2018, # there are no other known users, so with any luck we can discard this @@ -368,6 +386,9 @@ client = encoding.environ.get('SSH_CLIENT', '').split(' ', 1)[0] return 'remote:ssh:' + client + def addcapabilities(self, repo, caps): + return caps + class sshv2protocolhandler(sshv1protocolhandler): """Protocol handler for version 2 of the SSH protocol."""