diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py --- a/mercurial/bundle2.py +++ b/mercurial/bundle2.py @@ -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): diff --git a/tests/test-clone-uncompressed.t b/tests/test-clone-uncompressed.t --- a/tests/test-clone-uncompressed.t +++ b/tests/test-clone-uncompressed.t @@ -102,7 +102,7 @@ Main capabilities: batch branchmap - $USUAL_BUNDLE2_CAPS$%0Astream%3Dv2 + $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=zstd,zlib getbundle @@ -136,8 +136,6 @@ remote-changegroup http https - stream - v2 $ hg clone --stream -U http://localhost:$HGPORT server-disabled warning: stream clone requested but server has them disabled