[OpenWrt-Devel] [PATCH V2 libubox] uloop: ignore SIGPIPE by default
Felix Fietkau
nbd at openwrt.org
Mon Jan 26 18:05:35 EST 2015
On 2015-01-26 21:12, 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 <zajec5 at gmail.com>
> ---
> V2: Replace signal call with sigaction
> ---
> uloop.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/uloop.c b/uloop.c
> index 9a77ce4..baaef8d 100644
> --- a/uloop.c
> +++ b/uloop.c
> @@ -582,6 +582,27 @@ 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 */
> + s.sa_handler = SIG_IGN;
> + s.sa_flags = 0;
> + sigaction(signum, &s, NULL);
> + }
> + } else {
> + if (s.sa_handler == SIG_IGN) { /* Restore only if noone modified our SIG_IGN */
> + s.sa_handler = SIG_DFL;
> + s.sa_flags = 0;
> + sigaction(signum, &s, NULL);
> + }
> + }
> +}
Please reduce code duplication as well (setting sa_flags and calling
sigaction)
- Felix
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list