diff -r 14f70c44af6c -r ed0456fde625 mercurial/wireprotoserver.py --- a/mercurial/wireprotoserver.py Thu Mar 08 16:38:01 2018 -0800 +++ b/mercurial/wireprotoserver.py Sat Mar 10 10:45:12 2018 -0800 @@ -91,10 +91,9 @@ return args def forwardpayload(self, fp): - if b'Content-Length' in self._req.headers: - length = int(self._req.headers[b'Content-Length']) - else: - length = int(self._wsgireq.env[r'CONTENT_LENGTH']) + # Existing clients *always* send Content-Length. + length = int(self._req.headers[b'Content-Length']) + # If httppostargs is used, we need to read Content-Length # minus the amount that was consumed by args. length -= int(self._req.headers.get(b'X-HgArgs-Post', 0))