Fixed daemonize issue

master
Nicolas Favre-Felix 13 years ago
parent eedff7af47
commit 2eba190a0d

@ -126,18 +126,18 @@ server_can_accept(int fd, short event, void *ptr) {
*/ */
static void static void
server_daemonize(void) { server_daemonize(void) {
int fd; int fd;
if (fork() != 0) exit(0); /* parent exits */ if (fork() != 0) exit(0); /* parent exits */
setsid(); /* create a new session */ setsid(); /* create a new session */
/* Every output goes to /dev/null. */ /* Every output goes to /dev/null. */
if ((fd = open("/dev/null", O_RDWR, 0)) != -1) { if ((fd = open("/dev/null", O_RDWR, 0)) != -1) {
dup2(fd, STDIN_FILENO); dup2(fd, STDIN_FILENO);
dup2(fd, STDOUT_FILENO); dup2(fd, STDOUT_FILENO);
dup2(fd, STDERR_FILENO); dup2(fd, STDERR_FILENO);
if (fd > STDERR_FILENO) close(fd); if (fd > STDERR_FILENO) close(fd);
} }
} }
@ -145,6 +145,10 @@ int
server_start(struct server *s) { server_start(struct server *s) {
int i; int i;
/* initialize libevent */
s->base = event_base_new();
if(s->cfg->daemonize) { if(s->cfg->daemonize) {
server_daemonize(); server_daemonize();
@ -172,9 +176,6 @@ server_start(struct server *s) {
return -1; return -1;
} }
/* initialize libevent */
s->base = event_base_new();
/* start http server */ /* start http server */
event_set(&s->ev, s->fd, EV_READ | EV_PERSIST, server_can_accept, s); event_set(&s->ev, s->fd, EV_READ | EV_PERSIST, server_can_accept, s);
event_base_set(s->base, &s->ev); event_base_set(s->base, &s->ev);

Loading…
Cancel
Save