]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: test-auth-client - Use lib-signals API.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 13 Apr 2020 16:37:55 +0000 (18:37 +0200)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 25 May 2020 17:38:24 +0000 (19:38 +0200)
Using signal() is not portable for installing a signal handler.

src/master/test-auth-client.c

index ce012af2c722408383cb666be884f6f0001fefea..ec778c7dfd5e53ddd9b63d5f1ff559411af54446 100644 (file)
@@ -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':