]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: test-master-login-auth - Use lib-signals API.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 13 Apr 2020 16:41:37 +0000 (18:41 +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-master-login-auth.c

index cd671e280c13398470a360ad94748c613e57e19b..81ed99470793693a94af98edb92215e4b94e3446 100644 (file)
@@ -957,8 +957,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;
@@ -986,17 +988,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':