Mercurial > public > mercurial-scm > hg-stable
diff mercurial/bundle2.py @ 35790:c1b9eb15a51c
bundle2: don't advertise stream bundle2 capability when feature disabled
The server.uncompressed config option can be used to disable streaming
clones. While the top-level capability to advertise streaming clone
support isn't advertised when this option is set, we were still sending
the bundle2-level capabilities advertising support for stream parts.
It makes sense to not advertise that support when streaming clones
are globally disabled.
If the structure of the new code seems a bit odd, it is because we'll
have to further tweak the behavior in commit(s) ahead.
Differential Revision: https://phab.mercurial-scm.org/D1929
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 22 Jan 2018 12:21:15 -0800 |
parents | b116a66bcc44 |
children | 1d118f9f4f57 |
line wrap: on
line diff
--- a/mercurial/bundle2.py Mon Jan 22 12:19:45 2018 -0800 +++ b/mercurial/bundle2.py Mon Jan 22 12:21:15 2018 -0800 @@ -1519,8 +1519,20 @@ caps['checkheads'] = ('related',) if 'phases' in repo.ui.configlist('devel', 'legacy.exchange'): caps.pop('phases') - if not repo.ui.configbool('experimental', 'bundle2.stream'): - caps.pop('stream') + + # Don't advertise stream clone support in server mode if not configured. + if role == 'server': + streamsupported = repo.ui.configbool('server', 'uncompressed', + untrusted=True) + featuresupported = repo.ui.configbool('experimental', 'bundle2.stream') + + if not streamsupported or not featuresupported: + caps.pop('stream') + # role == 'client' + else: + if not repo.ui.configbool('experimental', 'bundle2.stream'): + caps.pop('stream') + return caps def bundle2caps(remote):