servers: drop re-registering the signal handler on modern systems

Before this patch modern systems used `sigaction()` and `SA_RESTART` to
install signal handlers, but the signal handler function itself still
made a call to the legacy `signal()` function to re-register itself
before returning.

Re-registering the handler is not necessary with `sigaction()`. It's
also undesired to use the legacy API when the modern one is available.

Fix by guarding off this call in builds that support the modern API.

Follow-up to 3fb6e5a010 #6529
Follow-up to 18cbb4d7d6

Closes #22497
This commit is contained in:
Viktor Szakats 2026-08-05 19:10:52 +02:00
parent b11e0026f7
commit 133785b159
No known key found for this signature in database

View file

@ -415,7 +415,9 @@ static void exit_signal_handler(int signum)
(void)SetEvent(exit_event);
#endif
}
#if !(defined(HAVE_SIGACTION) && defined(SA_RESTART))
(void)signal(signum, exit_signal_handler);
#endif
errno = old_errno;
}
#if defined(CURL_HAVE_DIAG) && !defined(__clang__)