changeset 49304:48f1b314056b

py3: catch BrokenPipeError instead of checking errno == EPIPE
author Manuel Jacob <me@manueljacob.de>
date Tue, 31 May 2022 16:54:58 +0200
parents dfdf85f37215
children 53e9422a9b45
files hgext/patchbomb.py mercurial/commandserver.py mercurial/dispatch.py mercurial/hgweb/server.py mercurial/keepalive.py
diffstat 5 files changed, 18 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/patchbomb.py	Tue May 31 04:18:22 2022 +0200
+++ b/hgext/patchbomb.py	Tue May 31 16:54:58 2022 +0200
@@ -76,7 +76,6 @@
 import email.mime.base as emimebase
 import email.mime.multipart as emimemultipart
 import email.utils as eutil
-import errno
 import os
 import socket
 
@@ -984,9 +983,8 @@
             try:
                 generator.flatten(m, False)
                 ui.write(b'\n')
-            except IOError as inst:
-                if inst.errno != errno.EPIPE:
-                    raise
+            except BrokenPipeError:
+                pass
         else:
             if not sendmail:
                 sendmail = mail.connect(ui, mbox=mbox)
--- a/mercurial/commandserver.py	Tue May 31 04:18:22 2022 +0200
+++ b/mercurial/commandserver.py	Tue May 31 16:54:58 2022 +0200
@@ -6,7 +6,6 @@
 # GNU General Public License version 2 or any later version.
 
 
-import errno
 import gc
 import os
 import random
@@ -494,9 +493,8 @@
         # known exceptions are caught by dispatch.
         except error.Abort as inst:
             ui.error(_(b'abort: %s\n') % inst.message)
-        except IOError as inst:
-            if inst.errno != errno.EPIPE:
-                raise
+        except BrokenPipeError:
+            pass
         except KeyboardInterrupt:
             pass
         finally:
@@ -514,9 +512,8 @@
         fin.close()
         try:
             fout.close()  # implicit flush() may cause another EPIPE
-        except IOError as inst:
-            if inst.errno != errno.EPIPE:
-                raise
+        except BrokenPipeError:
+            pass
 
 
 class unixservicehandler:
--- a/mercurial/dispatch.py	Tue May 31 04:18:22 2022 +0200
+++ b/mercurial/dispatch.py	Tue May 31 16:54:58 2022 +0200
@@ -290,9 +290,8 @@
                 # maybe pager would quit without consuming all the output, and
                 # SIGPIPE was raised. we cannot print anything in this case.
                 pass
-            except IOError as inst:
-                if inst.errno != errno.EPIPE:
-                    raise
+            except BrokenPipeError:
+                pass
             ret = -1
         finally:
             duration = util.timer() - starttime
--- a/mercurial/hgweb/server.py	Tue May 31 04:18:22 2022 +0200
+++ b/mercurial/hgweb/server.py	Tue May 31 16:54:58 2022 +0200
@@ -115,9 +115,8 @@
     def do_write(self):
         try:
             self.do_hgweb()
-        except socket.error as inst:
-            if inst.errno != errno.EPIPE:
-                raise
+        except BrokenPipeError:
+            pass
 
     def do_POST(self):
         try:
--- a/mercurial/keepalive.py	Tue May 31 04:18:22 2022 +0200
+++ b/mercurial/keepalive.py	Tue May 31 16:54:58 2022 +0200
@@ -84,7 +84,6 @@
 
 
 import collections
-import errno
 import hashlib
 import socket
 import sys
@@ -657,14 +656,14 @@
         else:
             self.sock.sendall(str)
             self.sentbytescount += len(str)
-    except socket.error as v:
-        reraise = True
-        if v.args[0] == errno.EPIPE:  # Broken pipe
-            if self._HTTPConnection__state == httplib._CS_REQ_SENT:
-                self._broken_pipe_resp = None
-                self._broken_pipe_resp = self.getresponse()
-                reraise = False
-            self.close()
+    except BrokenPipeError:
+        if self._HTTPConnection__state == httplib._CS_REQ_SENT:
+            self._broken_pipe_resp = None
+            self._broken_pipe_resp = self.getresponse()
+            reraise = False
+        else:
+            reraise = True
+        self.close()
         if reraise:
             raise