Mercurial > public > mercurial-scm > hg
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 = [] |