From: Stephan Bosch Date: Mon, 13 Apr 2020 16:37:55 +0000 (+0200) Subject: master: test-auth-client - Use lib-signals API. X-Git-Tag: 2.3.13~606 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f1c60f48e710c6dcd4fc1ecc8a542815c8728c66;p=thirdparty%2Fdovecot%2Fcore.git master: test-auth-client - Use lib-signals API. Using signal() is not portable for installing a signal handler. --- diff --git a/src/master/test-auth-client.c b/src/master/test-auth-client.c index ce012af2c7..ec778c7dfd 100644 --- a/src/master/test-auth-client.c +++ b/src/master/test-auth-client.c @@ -1244,8 +1244,10 @@ test_run_client_server(test_client_init_t *client_test, 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; @@ -1273,17 +1275,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-auth-master", 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':