]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: test-smtp-submit - Use lib-signals API.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 13 Apr 2020 15:52:09 +0000 (17:52 +0200)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 25 May 2020 15:29:02 +0000 (17:29 +0200)
Using signal() is not portable for installing a signal handler.

src/lib-smtp/test-smtp-submit.c

index 09ef4f37beb53d65c506c83c38dd5ceeaa8b63d3..61f41b7c3c920cae40da1221d3209ab158ec6a18 100644 (file)
@@ -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':