# HG changeset patch # User Jun Wu # Date 1466784401 -3600 # Node ID 247ea0dfdb94c81ad1698c0f2bd80e099ada3218 # Parent 33a6b750b5b9e0cc193ae0103420dc80af074352 chgserver: do not ignore SIGPIPE if pager is used We rely on SIGPIPE to exit when the pager exits. And Python ignores SIGPIPE by default. Explicitly set SIGPIPE handler to SIG_DFL (terminate) just like pager.py. diff -r 33a6b750b5b9 -r 247ea0dfdb94 hgext/chgserver.py --- a/hgext/chgserver.py Fri Jun 24 11:12:41 2016 -0700 +++ b/hgext/chgserver.py Fri Jun 24 17:06:41 2016 +0100 @@ -48,6 +48,7 @@ import os import random import re +import signal import struct import sys import threading @@ -498,6 +499,11 @@ pagercmd = _setuppagercmd(self.ui, options, cmd) if pagercmd: + # Python's SIGPIPE is SIG_IGN by default. change to SIG_DFL so + # we can exit if the pipe to the pager is closed + if util.safehasattr(signal, 'SIGPIPE') and \ + signal.getsignal(signal.SIGPIPE) == signal.SIG_IGN: + signal.signal(signal.SIGPIPE, signal.SIG_DFL) self.cresult.write(pagercmd) else: self.cresult.write('\0')