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) \
#ifdef USE_SIGNALS
int sig = 0;
const char *siga = NULL;
+ size_t si;
#endif
/* Test for --help and --version */
}
#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,
#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 *);
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;