|
7 | 7 | #define FMT_HEADER_ONLY
|
8 | 8 |
|
9 | 9 | #include <boost/interprocess/ipc/message_queue.hpp>
|
10 |
| -#include <event2/event.h> |
| 10 | +#include <event2/event-config.h> |
| 11 | +#include <event2/util.h> |
| 12 | +#include <event2/visibility.h> |
11 | 13 | #include <fmt/format.h>
|
12 | 14 | #include <fmt/printf.h>
|
13 | 15 | #include <fstream>
|
@@ -50,8 +52,10 @@ message_queue *pfctl_mq;
|
50 | 52 | pid_t parent_pid;
|
51 | 53 | pid_t worker_pid;
|
52 | 54 |
|
53 |
| -void signal_handler(int signum) { |
54 |
| - switch (signum) { |
| 55 | +static void signal_handler(evutil_socket_t fd, short event, void *arg) { |
| 56 | + int signal = event_get_signal((struct event *)arg); |
| 57 | + |
| 58 | + switch (signal) { |
55 | 59 | case SIGPIPE:
|
56 | 60 | // This will happen on failed SSL checks.
|
57 | 61 | break;
|
@@ -391,18 +395,32 @@ int main(int argc, char *argv[]) {
|
391 | 395 | setproctitle("%s", "main process");
|
392 | 396 | #endif
|
393 | 397 |
|
394 |
| - signal(SIGINT, signal_handler); |
395 |
| - signal(SIGTERM, signal_handler); |
396 |
| - signal(SIGHUP, signal_handler); |
397 |
| - signal(SIGPIPE, signal_handler); |
398 |
| - signal(SIGUSR1, signal_handler); |
399 |
| - |
400 | 398 | if (!init_libssl()) {
|
401 | 399 | log(MessageType::MSG_CRIT, "Unable to initialise OpenSSL, terminating!");
|
402 | 400 | exit(EXIT_FAILURE);
|
403 | 401 | }
|
404 | 402 | init_libevent();
|
405 | 403 |
|
| 404 | + struct event *ev_sigint = |
| 405 | + evsignal_new(eventBase, SIGINT, signal_handler, event_self_cbarg()); |
| 406 | + evsignal_add(ev_sigint, NULL); |
| 407 | + |
| 408 | + struct event *ev_sigterm = |
| 409 | + evsignal_new(eventBase, SIGTERM, signal_handler, event_self_cbarg()); |
| 410 | + evsignal_add(ev_sigterm, NULL); |
| 411 | + |
| 412 | + struct event *ev_sighup = |
| 413 | + evsignal_new(eventBase, SIGHUP, signal_handler, event_self_cbarg()); |
| 414 | + evsignal_add(ev_sighup, NULL); |
| 415 | + |
| 416 | + struct event *ev_sigpipe = |
| 417 | + evsignal_new(eventBase, SIGPIPE, signal_handler, event_self_cbarg()); |
| 418 | + evsignal_add(ev_sigpipe, NULL); |
| 419 | + |
| 420 | + struct event *ev_sigusr1 = |
| 421 | + evsignal_new(eventBase, SIGUSR1, signal_handler, event_self_cbarg()); |
| 422 | + evsignal_add(ev_sigusr1, NULL); |
| 423 | + |
406 | 424 | if (!Healthcheck_ping::initialize()) {
|
407 | 425 | log(MessageType::MSG_CRIT,
|
408 | 426 | "Unable to initialize Healthcheck_ping, terminating!");
|
|
0 commit comments