mercurial/wireprotov2peer.py
changeset 39485 42bc1c70a6b8
parent 39450 9f51fd22ed50
child 39486 43d92d68ac88
--- a/mercurial/wireprotov2peer.py	Sat Sep 08 21:58:51 2018 +0800
+++ b/mercurial/wireprotov2peer.py	Thu Aug 23 13:50:47 2018 -0700
@@ -133,7 +133,12 @@
         response = self._responses[frame.requestid]
 
         if action == 'responsedata':
-            self._processresponsedata(frame, meta, response)
+            # Any failures processing this frame should bubble up to the
+            # future tracking the request.
+            try:
+                self._processresponsedata(frame, meta, response)
+            except BaseException as e:
+                self._futures[frame.requestid].set_exception(e)
         else:
             raise error.ProgrammingError(
                 'unhandled action from clientreactor: %s' % action)