Handle SIGTERM & SIGINT (issue #10)

master
Nicolas Favre-Felix 11 years ago
parent 290656409f
commit e978ff2f33

@ -155,6 +155,35 @@ server_daemonize(const char *pidfile) {
} }
} }
/* global pointer to the server object, used in signal handlers */
static struct server *__server;
static void
server_handle_signal(int id) {
switch(id) {
case SIGHUP:
slog_init(__server);
break;
case SIGTERM:
case SIGINT:
slog(__server, WEBDIS_INFO, "Webdis terminating", 0);
exit(0);
break;
default:
break;
}
}
static void
server_install_signal_handlers(struct server *s) {
__server = s;
signal(SIGHUP, server_handle_signal);
signal(SIGTERM, server_handle_signal);
signal(SIGINT, server_handle_signal);
}
int int
server_start(struct server *s) { server_start(struct server *s) {
@ -179,8 +208,8 @@ server_start(struct server *s) {
slog_init(s); slog_init(s);
/* install signal handler to reload logs */ /* install signal handlers */
signal(SIGHUP, slog_reload); server_install_signal_handlers(s);
/* start worker threads */ /* start worker threads */
for(i = 0; i < s->cfg->http_threads; ++i) { for(i = 0; i < s->cfg->http_threads; ++i) {
@ -203,6 +232,7 @@ server_start(struct server *s) {
return -1; return -1;
} }
slog(s, WEBDIS_INFO, "Webdis up and running", 0);
event_base_dispatch(s->base); event_base_dispatch(s->base);
return 0; return 0;

@ -14,16 +14,12 @@
#include "server.h" #include "server.h"
#include "conf.h" #include "conf.h"
/* global pointer to the server objects, used to reload logs */
static struct server *__server;
/** /**
* Initialize log writer. * Initialize log writer.
*/ */
void void
slog_init(struct server *s) { slog_init(struct server *s) {
__server = s;
s->log.self = getpid(); s->log.self = getpid();
if(s->cfg->logfile) { if(s->cfg->logfile) {
@ -47,14 +43,6 @@ slog_init(struct server *s) {
s->log.fd = 2; /* stderr */ s->log.fd = 2; /* stderr */
} }
/**
* Reload log file on SIGHUP
*/
void
slog_reload() {
slog_init(__server);
}
/** /**
* Write log message to disk, or stderr. * Write log message to disk, or stderr.
*/ */

@ -26,6 +26,6 @@
} }
], ],
"verbosity": 3, "verbosity": 6,
"logfile": "webdis.log" "logfile": "webdis.log"
} }

Loading…
Cancel
Save