Re: [RFC] Don't immediately SIGTERM the child of "target remote |".

Jan Kratochvil
2011-11-27T20:40:29Z

On Thu, 24 Nov 2011 01:00:51 +0100, Doug Evans wrote:
[...]
> - int status;
> - kill (state->pid, SIGTERM);
> + int rc, status;
> + void (*ofunc) (); /* Previous SIGALRM handler. */
^int (or void)
> +
> + /* Don't kill the task right away, give it a chance to shut down cleanly.
> + But don't wait forever though. */
> +#if defined (HAVE_SIGACTION) && defined (SA_RESTART)
> + {
> + struct sigaction sa, osa;
> + sa.sa_handler = sigalrm_handler;
> + sigemptyset (&sa.sa_mask);
> + sa.sa_flags = 0;
> + sigaction (SIGALRM, &sa, &osa);
> + ofunc = osa.sa_handler;
> + }
> +#else
> + ofunc = (void (*)()) signal (SIGALRM, sigalrm_handler);
> +#endif
[...]
> + alarm (0);
> + signal (SIGALRM, ofunc);

You should restore OSA, not just OFUNC.

Thanks,
Jan