diff -r 5382d8f8530b -r 29569f2db929 mercurial/bundle2.py --- a/mercurial/bundle2.py Wed Dec 27 22:05:20 2017 -0800 +++ b/mercurial/bundle2.py Tue Apr 02 19:48:31 2019 +0200 @@ -834,12 +834,21 @@ if paramssize < 0: raise error.BundleValueError('negative bundle param size: %i' % paramssize) - yield _pack(_fstreamparamsize, paramssize) if paramssize: params = self._readexact(paramssize) self._processallparams(params) - yield params - assert self._compengine.bundletype()[1] == 'UN' + # The payload itself is decompressed below, so drop + # the compression parameter passed down to compensate. + outparams = [] + for p in params.split(' '): + k, v = p.split('=', 1) + if k.lower() != 'compression': + outparams.append(p) + outparams = ' '.join(outparams) + yield _pack(_fstreamparamsize, len(outparams)) + yield outparams + else: + yield _pack(_fstreamparamsize, paramssize) # From there, payload might need to be decompressed self._fp = self._compengine.decompressorreader(self._fp) emptycount = 0