diff --git a/src/client.c b/src/client.c index 2953f95..f634286 100644 --- a/src/client.c +++ b/src/client.c @@ -29,7 +29,7 @@ #include -int server_keep_alive = 1; +volatile sig_atomic_t server_keep_alive = 1; struct timeval client_timeout = {.tv_sec = CLIENT_TIMEOUT, .tv_usec = 0}; char *log_client_prefix, *log_conn_prefix, *log_req_prefix, *client_geoip; diff --git a/src/server.c b/src/server.c index 667c2f4..43d43c9 100644 --- a/src/server.c +++ b/src/server.c @@ -35,7 +35,7 @@ #include -int active = 1; +volatile sig_atomic_t active = 1; const char *config_file; int sockets[NUM_SOCKETS]; pid_t children[MAX_CHILDREN]; diff --git a/src/server.h b/src/server.h index 2253a86..3672420 100644 --- a/src/server.h +++ b/src/server.h @@ -10,6 +10,7 @@ #include #include +#include #define NUM_SOCKETS 2 #define MAX_CHILDREN 1024 @@ -25,7 +26,7 @@ extern int sockets[NUM_SOCKETS]; extern pid_t children[MAX_CHILDREN]; extern MMDB_s mmdbs[MAX_MMDB]; -extern int server_keep_alive; +extern volatile sig_atomic_t server_keep_alive; extern char *log_client_prefix, *log_conn_prefix, *log_req_prefix, *client_geoip; extern char *client_addr_str, *client_addr_str_ptr, *server_addr_str, *server_addr_str_ptr, *client_host_str; extern struct timeval client_timeout;