Browse Source

Fix forking and epoll/kqueue

tags/1.1.0
Vsevolod Stakhov 8 years ago
parent
commit
306d01b6fc
2 changed files with 10 additions and 0 deletions
  1. 7
    0
      src/libserver/rspamd_control.c
  2. 3
    0
      src/libserver/worker_util.c

+ 7
- 0
src/libserver/rspamd_control.c View File

@@ -516,6 +516,13 @@ rspamd_srv_handler (gint fd, short what, gpointer ud)
msg_err ("cannot read from worker's srv pipe: %s",
strerror (errno));
}
else if (r == 0) {
/*
* Usually this means that a worker is dead, so do not try to read
* anything
*/
event_del (&worker->srv_ev);
}
else if (r != sizeof (cmd)) {
msg_err ("cannot read from worker's srv pipe incomplete command: %d",
(gint) r);

+ 3
- 0
src/libserver/worker_util.c View File

@@ -469,6 +469,9 @@ rspamd_fork_worker (struct rspamd_main *rspamd_main,
case 0:
/* Update pid for logging */
rspamd_log_update_pid (cf->type, rspamd_main->logger);
/* Remove the inherited event base */
event_reinit (rspamd_main->ev_base);
event_base_free (rspamd_main->ev_base);
/* Lock statfile pool if possible XXX */
/* Init PRNG after fork */
rc = ottery_init (NULL);

Loading…
Cancel
Save