diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-07-19 15:14:46 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2010-07-19 15:14:46 +0400 |
commit | c0b7a87e6aaa8dd90604d470ea6558ff53691e85 (patch) | |
tree | 10e5cfcb7160e48c595b11daa999d976e86e56e6 /src/main.c | |
parent | dec1abd6e4582b74b658db72a7071ce098d1c9e5 (diff) | |
download | rspamd-c0b7a87e6aaa8dd90604d470ea6558ff53691e85.tar.gz rspamd-c0b7a87e6aaa8dd90604d470ea6558ff53691e85.zip |
* Reopen log file by USR1 signal
* Add reopenlog method to FreeBSD rc script
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c index 3c292f2b4..cbbfea268 100644 --- a/src/main.c +++ b/src/main.c @@ -116,7 +116,6 @@ sig_handler (int signo, siginfo_t *info, void *unused) switch (signo) { case SIGHUP: do_restart = 1; - do_reopen_log = 1; break; case SIGINT: case SIGTERM: @@ -125,6 +124,9 @@ sig_handler (int signo, siginfo_t *info, void *unused) case SIGCHLD: child_dead = 1; break; + case SIGUSR1: + do_reopen_log = 1; + break; case SIGUSR2: /* Do nothing */ break; @@ -605,6 +607,16 @@ wait_for_workers (gpointer key, gpointer value, gpointer unused) return TRUE; } +static void +reopen_log_handler (gpointer key, gpointer value, gpointer unused) +{ + struct rspamd_worker *w = value; + + if (kill (w->pid, SIGUSR1) == -1) { + msg_err ("kill failed for pid %P: %s", w->pid, strerror (errno)); + } +} + #if 0 /* XXX: remove this as it is unused now */ static gboolean @@ -958,14 +970,17 @@ main (int argc, char **argv, char **env) } if (do_restart) { do_restart = 0; - do_reopen_log = 1; - + reopen_log (); msg_info ("rspamd " RVERSION " is restarting"); g_hash_table_foreach (rspamd->workers, kill_old_workers, NULL); remove_all_maps (); reread_config (rspamd); spawn_workers (rspamd); - + } + if (do_reopen_log) { + do_reopen_log = 0; + reopen_log (); + g_hash_table_foreach (rspamd->workers, reopen_log_handler, NULL); } if (got_alarm) { got_alarm = 0; |