summaryrefslogtreecommitdiffstats
path: root/src/util.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-01-11 12:39:37 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-01-11 12:39:37 +0300
commitf7639eb2dc2373dd4a47eb93efed0646c4a41fb5 (patch)
tree74ebedee200446c7caec1dbf4c0092129016f895 /src/util.c
parent5f0da61541dd368961694b26766b12d051227844 (diff)
downloadrspamd-f7639eb2dc2373dd4a47eb93efed0646c4a41fb5.tar.gz
rspamd-f7639eb2dc2373dd4a47eb93efed0646c4a41fb5.zip
* Implement delayed fork of dead workers (to avoid fork bombs)
* Implement refork of controller * Log time to console in normal view
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/util.c b/src/util.c
index 6794d7bb7..b217800ad 100644
--- a/src/util.c
+++ b/src/util.c
@@ -157,13 +157,14 @@ init_signals (struct sigaction *signals, sig_t sig_handler)
/* Setting up signal handlers */
/* SIGUSR1 - reopen config file */
/* SIGUSR2 - worker is ready for accept */
- sigemptyset(&signals->sa_mask);
- sigaddset(&signals->sa_mask, SIGTERM);
- sigaddset(&signals->sa_mask, SIGINT);
- sigaddset(&signals->sa_mask, SIGHUP);
- sigaddset(&signals->sa_mask, SIGCHLD);
- sigaddset(&signals->sa_mask, SIGUSR1);
- sigaddset(&signals->sa_mask, SIGUSR2);
+ sigemptyset (&signals->sa_mask);
+ sigaddset (&signals->sa_mask, SIGTERM);
+ sigaddset (&signals->sa_mask, SIGINT);
+ sigaddset (&signals->sa_mask, SIGHUP);
+ sigaddset (&signals->sa_mask, SIGCHLD);
+ sigaddset (&signals->sa_mask, SIGUSR1);
+ sigaddset (&signals->sa_mask, SIGUSR2);
+ sigaddset (&signals->sa_mask, SIGALRM);
signals->sa_handler = sig_handler;
@@ -173,6 +174,7 @@ init_signals (struct sigaction *signals, sig_t sig_handler)
sigaction (SIGCHLD, signals, NULL);
sigaction (SIGUSR1, signals, NULL);
sigaction (SIGUSR2, signals, NULL);
+ sigaction (SIGALRM, signals, NULL);
}
void
@@ -790,9 +792,11 @@ void
file_log_function (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer arg)
{
struct config_file *cfg = (struct config_file *)arg;
- char tmpbuf[128];
+ char tmpbuf[128], timebuf[32];
int r;
struct iovec out[3];
+ time_t now;
+ struct tm *tms;
if (cfg->log_fd == -1) {
return;
@@ -803,7 +807,10 @@ file_log_function (const gchar *log_domain, GLogLevelFlags log_level, const gcha
}
if (log_level <= cfg->log_level) {
- r = snprintf (tmpbuf, sizeof (tmpbuf), "#%d: %d rspamd ", (int)getpid (), (int)time (NULL));
+ now = time (NULL);
+ tms = localtime (&now);
+ strftime (timebuf, sizeof (timebuf), "%b %d %H:%M:%S", tms);
+ r = snprintf (tmpbuf, sizeof (tmpbuf), "#%d: %s rspamd ", (int)getpid (), timebuf);
out[0].iov_base = tmpbuf;
out[0].iov_len = r;
out[1].iov_base = (char *)message;