diff -r 6e0368b6e0bb -r ad6c5497cd15 mercurial/sshpeer.py --- a/mercurial/sshpeer.py Thu Apr 20 22:51:28 2017 +0900 +++ b/mercurial/sshpeer.py Thu Apr 13 16:09:40 2017 -0400 @@ -91,7 +91,15 @@ return self._call('write', data) def read(self, size): - return self._call('read', size) + r = self._call('read', size) + if size != 0 and not r: + # We've observed a condition that indicates the + # stdout closed unexpectedly. Check stderr one + # more time and snag anything that's there before + # letting anyone know the main part of the pipe + # closed prematurely. + _forwardoutput(self._ui, self._side) + return r def readline(self): return self._call('readline')