Mercurial > hg > dhcpcd
changeset 5227:7406014c9120 draft
dhcpcd: allow sigpipe in scripts.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Fri, 15 May 2020 15:56:47 +0100 |
| parents | 06575a46bbdd |
| children | 82c7e8204e9b |
| files | src/dhcpcd.c src/dhcpcd.h src/script.c |
| diffstat | 3 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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,
--- 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 *);
--- 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;
