On 2015-01-26 11:25, Rafał Miłecki wrote:
> Most app don't want to crash because of unhandled SIGPIPE. It could
> happen is such trivial situations like writing to socket.
> 
> Signed-off-by: Rafał Miłecki <[email protected]>
> ---
>  uloop.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/uloop.c b/uloop.c
> index 9a77ce4..7d11bbc 100644
> --- a/uloop.c
> +++ b/uloop.c
> @@ -582,6 +582,21 @@ static void uloop_install_handler(int signum, void 
> (*handler)(int), struct sigac
>               sigaction(signum, act, NULL);
>  }
>  
> +static void uloop_ignore_signal(int signum, bool ignore)
> +{
> +     struct sigaction s;
> +
> +     sigaction(signum, NULL, &s);
> +
> +     if (ignore) {
> +             if (s.sa_handler == SIG_DFL) /* Ignore only if there isn't any 
> custom handler */
> +                     signal(signum, SIG_IGN);
> +     } else {
> +             if (s.sa_handler == SIG_IGN) /* Restore only if noone modified 
> our SIG_IGN */
> +                     signal(signum, SIG_DFL);
> +     }
How about setting sa.handler inside the if block, and using sigaction to
change the signal. This API mix looks a bit quirky to me.

- Felix
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to