From: Stephan Bosch Date: Mon, 13 Apr 2020 15:52:09 +0000 (+0200) Subject: lib-smtp: test-smtp-submit - Use lib-signals API. X-Git-Tag: 2.3.13~618 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=96f1ef150429ac4869deebb281abb0af8ae4f76c;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: test-smtp-submit - Use lib-signals API. Using signal() is not portable for installing a signal handler. --- diff --git a/src/lib-smtp/test-smtp-submit.c b/src/lib-smtp/test-smtp-submit.c index 09ef4f37be..61f41b7c3c 100644 --- a/src/lib-smtp/test-smtp-submit.c +++ b/src/lib-smtp/test-smtp-submit.c @@ -2163,8 +2163,10 @@ test_run_client_server(const struct smtp_submit_settings *submit_set, volatile sig_atomic_t terminating = 0; -static void test_signal_handler(int signo) +static void test_signal_handler(const siginfo_t *si, void *context ATTR_UNUSED) { + int signo = si->si_signo; + if (terminating != 0) raise(signo); terminating = 1; @@ -2189,17 +2191,17 @@ int main(int argc, char *argv[]) int c; int ret; - atexit(test_atexit); - (void)signal(SIGPIPE, SIG_IGN); - (void)signal(SIGTERM, test_signal_handler); - (void)signal(SIGQUIT, test_signal_handler); - (void)signal(SIGINT, test_signal_handler); - (void)signal(SIGSEGV, test_signal_handler); - (void)signal(SIGABRT, test_signal_handler); - master_service = master_service_init("test-smtp-submit", service_flags, &argc, &argv, "D"); + atexit(test_atexit); + lib_signals_ignore(SIGPIPE, TRUE); + lib_signals_set_handler(SIGTERM, 0, test_signal_handler, NULL); + lib_signals_set_handler(SIGQUIT, 0, test_signal_handler, NULL); + lib_signals_set_handler(SIGINT, 0, test_signal_handler, NULL); + lib_signals_set_handler(SIGSEGV, 0, test_signal_handler, NULL); + lib_signals_set_handler(SIGABRT, 0, test_signal_handler, NULL); + while ((c = master_getopt(master_service)) > 0) { switch (c) { case 'D':