mercurial/commandserver.py
branchstable
changeset 40450 41f0529b5112
parent 40361 b7de186efd82
child 40838 cb372d09d30a
--- a/mercurial/commandserver.py	Mon Dec 03 21:31:19 2018 +0900
+++ b/mercurial/commandserver.py	Mon Dec 03 21:45:15 2018 +0900
@@ -472,7 +472,15 @@
                 # waiting for recv() will receive ECONNRESET.
                 self._unlinksocket()
                 exiting = True
-            ready = selector.select(timeout=h.pollinterval)
+            try:
+                ready = selector.select(timeout=h.pollinterval)
+            except OSError as inst:
+                # selectors2 raises ETIMEDOUT if timeout exceeded while
+                # handling signal interrupt. That's probably wrong, but
+                # we can easily get around it.
+                if inst.errno != errno.ETIMEDOUT:
+                    raise
+                ready = []
             if not ready:
                 # only exit if we completed all queued requests
                 if exiting: