# HG changeset patch
# User Kyle Lippincott <spectral@google.com>
# Date 2017-09-01 21:00:13
# Node ID 6c6169f71b8da98bb75f7ccfdffa8a0ba5111c8e
# Parent  11499bad035999f0bc83bfb86fb117da20775b80

wireproto: do not abort after successful lookup

As far as I can tell, this interface originally used 'return' here, so the
"fallthrough" to self._abort made sense. When it was switched to 'yield' this
didn't make sense, but doesn't impact most uses because the 'plain' wrapper in
peer.py's 'batchable' decorator only attempts to yield two items (args and
value).

When using iterbatch, however, it attempts to verify that the @batchable
generators only emit 2 results, by expecting a StopIteration when attempting to
access a third.

Differential Revision: https://phab.mercurial-scm.org/D608

diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
--- a/mercurial/wireproto.py
+++ b/mercurial/wireproto.py
@@ -235,7 +235,8 @@ class wirepeer(repository.legacypeer):
         success, data = d[:-1].split(" ", 1)
         if int(success):
             yield bin(data)
-        self._abort(error.RepoError(data))
+        else:
+            self._abort(error.RepoError(data))
 
     @batchable
     def heads(self):