comparison mercurial/sshpeer.py @ 21073:83ce71ef7804

sshpeer: add implementation of _calltwowaystream This implements the call needed by bundle2. The error handling is a bit flaky right now, but bundle2 error handling in general is still flaky anyway. Bundle2 is still disabled by default, I do not expect this to be a problem.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 15 Apr 2014 17:18:35 -0400
parents 167047ba3cfa
children 234e4c24b980
comparison
equal deleted inserted replaced
21072:0879352d67d8 21073:83ce71ef7804
177 r = self._recv() 177 r = self._recv()
178 if r: 178 if r:
179 return '', r 179 return '', r
180 return self._recv(), '' 180 return self._recv(), ''
181 181
182 def _calltwowaystream(self, cmd, fp, **args):
183 r = self._call(cmd, **args)
184 if r:
185 # XXX needs to be made better
186 raise util.Abort('unexpected remote reply: %s' % r)
187 while True:
188 d = fp.read(4096)
189 if not d:
190 break
191 self._send(d)
192 self._send("", flush=True)
193 return self.pipei
182 194
183 def _recv(self): 195 def _recv(self):
184 l = self.pipei.readline() 196 l = self.pipei.readline()
185 if l == '\n': 197 if l == '\n':
186 err = [] 198 err = []