# HG changeset patch # User Roy Marples # Date 1589554607 -3600 # Node ID 7406014c9120dc07701c2f73656ca33444e7615a # Parent 06575a46bbdd8f44155b880da48d05f6758737a4 dhcpcd: allow sigpipe in scripts. diff -r 06575a46bbdd -r 7406014c9120 src/dhcpcd.c --- a/src/dhcpcd.c Fri May 15 15:34:16 2020 +0100 +++ b/src/dhcpcd.c Fri May 15 15:56:47 2020 +0100 @@ -85,6 +85,11 @@ SIGUSR2, }; const size_t dhcpcd_signals_len = __arraycount(dhcpcd_signals); + +const int dhcpcd_signals_ignore[] = { + SIGPIPE, +}; +const size_t dhcpcd_signals_ignore_len = __arraycount(dhcpcd_signals_ignore); #endif #define IF_UPANDRUNNING(a) \ @@ -1784,6 +1789,7 @@ #ifdef USE_SIGNALS int sig = 0; const char *siga = NULL; + size_t si; #endif /* Test for --help and --version */ @@ -2040,8 +2046,8 @@ } #ifdef USE_SIGNALS - /* Ignore SIGPIPE, prefer EPIPE. */ - signal(SIGPIPE, SIG_IGN); + for (si = 0; si < dhcpcd_signals_ignore_len; si++) + signal(dhcpcd_signals_ignore[i], SIG_IGN); /* Save signal mask, block and redirect signals to our handler */ if (eloop_signal_set_cb(ctx.eloop, diff -r 06575a46bbdd -r 7406014c9120 src/dhcpcd.h --- a/src/dhcpcd.h Fri May 15 15:34:16 2020 +0100 +++ b/src/dhcpcd.h Fri May 15 15:56:47 2020 +0100 @@ -248,6 +248,8 @@ #ifdef USE_SIGNALS extern const int dhcpcd_signals[]; extern const size_t dhcpcd_signals_len; +extern const int dhcpcd_signals_ignore[]; +extern const size_t dhcpcd_signals_ignore_len; #endif int dhcpcd_ifafwaiting(const struct interface *); diff -r 06575a46bbdd -r 7406014c9120 src/script.c --- a/src/script.c Fri May 15 15:34:16 2020 +0100 +++ b/src/script.c Fri May 15 15:56:47 2020 +0100 @@ -108,6 +108,8 @@ posix_spawnattr_setsigmask(&attr, &defsigs); for (i = 0; i < dhcpcd_signals_len; i++) sigaddset(&defsigs, dhcpcd_signals[i]); + for (i = 0; i < dhcpcd_signals_ignore_len; i++) + sigaddset(&defsigs, dhcpcd_signals_ignore[i]); posix_spawnattr_setsigdefault(&attr, &defsigs); #endif errno = 0;