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

index cad225005826016c284596a344fda13fc2399683..32afcddf12147aa9e192fb27e6ea3a1022d96ab0 100644 (file)
@@ -1353,8 +1353,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;
@@ -1382,17 +1384,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':