[PATCH] dispatch: treat SIGPIPE as a termination signal (BC)
Simon Farnsworth
simonfar at fb.com
Wed Feb 8 10:28:40 EST 2017
Please scrub this - it breaks `hg serve`. I'll send a v2 shortly, that
moves the SIGPIPE handling into pager and thus has no BC implications.
On 07/02/2017 20:08, Simon Farnsworth wrote:
> # HG changeset patch
> # User Simon Farnsworth <simonfar at fb.com>
> # Date 1486498104 28800
> # Tue Feb 07 12:08:24 2017 -0800
> # Node ID e1150763706818fffa62c81a72a88574d20caea1
> # Parent 1f51b4658f21bbb797e922d155c1046eddccf91d
> dispatch: treat SIGPIPE as a termination signal (BC)
>
> pager previously set SIGPIPE to immediately exit the process, ignoring any
> Python @atexit handlers, exception handling etc - just instant termination.
>
> Simply removing this as per changeset aaa751585325 meant that when you
> aborted a long running pager command, Mercurial would not quit; instead, we
> should add SIGPIPE to the list of termination signals in dispatch.py.
>
> This is a slight BC break, as previously, a process that was piping data
> into or out of Mercurial would not kill Mercurial if it died before closing
> its end of the pipe, whereas it will now cause Mercurial to exit.
>
> diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
> --- a/mercurial/dispatch.py
> +++ b/mercurial/dispatch.py
> @@ -147,7 +147,7 @@
>
> ui = req.ui
> try:
> - for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM':
> + for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM', 'SIGPIPE':
> num = getattr(signal, name, None)
> if num:
> signal.signal(num, catchterm)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mercurial-2Dscm.org_mailman_listinfo_mercurial-2Ddevel&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=mEgSWILcY4c4W3zjApBQLA&m=I0DTIf8TaBNbZo11b6eM-M9WIaAj0Va9TR_a9fvAsvk&s=629TWBre1WtsIXDvJQh3UKr9baaDbd6LlVXnmQeyP5E&e=
>
--
Simon Farnsworth
More information about the Mercurial-devel
mailing list