git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@298 77e5149b-7576-45b1-b177-96237e5ba77b
Trog authored on 2004/02/18 02:07:50... | ... |
@@ -1,3 +1,7 @@ |
1 |
+Tue Feb 17 17:09:24 GMT 2004 (trog) |
|
2 |
+----------------------------------- |
|
3 |
+ * clamd: SIGHUP re-open log file support |
|
4 |
+ |
|
1 | 5 |
Tue Feb 17 09:59:03 GMT 2004 (njh) |
2 | 6 |
---------------------------------- |
3 | 7 |
* libclamav: Added a new bounce delimeter |
... | ... |
@@ -29,7 +33,7 @@ Sun Feb 15 14:10:19 CET 2004 (tk) |
29 | 29 |
|
30 | 30 |
Sun Feb 15 12:06:12 GMT 2004 (trog) |
31 | 31 |
----------------------------------- |
32 |
- * libclamav/vba_extract.c: Fix memory leak |
|
32 |
+ * libclamav/vba_extract.c: Fix memory leak |
|
33 | 33 |
|
34 | 34 |
Sun Feb 15 12:52:25 CET 2004 (tk) |
35 | 35 |
--------------------------------- |
... | ... |
@@ -60,6 +60,7 @@ void logg_close(void) { |
60 | 60 |
pthread_mutex_lock(&logg_mutex); |
61 | 61 |
if (log_fd) { |
62 | 62 |
fclose(log_fd); |
63 |
+ log_fd = NULL; |
|
63 | 64 |
} |
64 | 65 |
pthread_mutex_unlock(&logg_mutex); |
65 | 66 |
#if defined(CLAMD_USE_SYSLOG) && !defined(C_AIX) |
... | ... |
@@ -122,6 +123,7 @@ int logg(const char *str, ...) |
122 | 122 |
fprintf(log_fd, "Log size = %d, maximal = %d\n", (int) sb.st_size, logsize); |
123 | 123 |
fprintf(log_fd, "LOGGING DISABLED (Maximal log file size exceeded).\n"); |
124 | 124 |
fclose(log_fd); |
125 |
+ log_fd = NULL; |
|
125 | 126 |
pthread_mutex_unlock(&logg_mutex); |
126 | 127 |
return 0; |
127 | 128 |
} |
... | ... |
@@ -28,7 +28,7 @@ void *mmalloc(size_t size); |
28 | 28 |
void *mcalloc(size_t nmemb, size_t size); |
29 | 29 |
void chomp(char *string); |
30 | 30 |
|
31 |
-short int logverbose, logcompressed, loglock, logtime, sighup, logok, debug_mode; |
|
31 |
+short int logverbose, logcompressed, loglock, logtime, logok, debug_mode; |
|
32 | 32 |
int logsize; |
33 | 33 |
const char *logfile; |
34 | 34 |
int logg(const char *str, ...); |
... | ... |
@@ -38,6 +38,7 @@ int progexit = 0; |
38 | 38 |
pthread_mutex_t exit_mutex; |
39 | 39 |
int reload = 0; |
40 | 40 |
pthread_mutex_t reload_mutex; |
41 |
+int sighup = 0; |
|
41 | 42 |
|
42 | 43 |
typedef struct client_conn_tag { |
43 | 44 |
int sd; |
... | ... |
@@ -101,8 +102,8 @@ void sighandler_th(int sig) |
101 | 101 |
break; /* not reached */ |
102 | 102 |
|
103 | 103 |
case SIGHUP: |
104 |
- /* sighup = 1; |
|
105 |
- logg("SIGHUP catched: log file re-opened.\n"); */ |
|
104 |
+ sighup = 1; |
|
105 |
+ //logg("SIGHUP caught: log file re-opened.\n"); |
|
106 | 106 |
break; |
107 | 107 |
} |
108 | 108 |
} |
... | ... |
@@ -384,13 +385,21 @@ int acceptloop_th(int socketd, struct cl_node *root, const struct cfgstruct *cop |
384 | 384 |
continue; |
385 | 385 |
} |
386 | 386 |
|
387 |
- client_conn = (client_conn_t *) mmalloc(sizeof(struct client_conn_tag)); |
|
388 |
- client_conn->sd = new_sd; |
|
389 |
- client_conn->options = options; |
|
390 |
- client_conn->copt = copt; |
|
391 |
- client_conn->root = root; |
|
392 |
- client_conn->limits = &limits; |
|
393 |
- thrmgr_add(&thrmgr, client_conn); |
|
387 |
+ if (sighup) { |
|
388 |
+ logg("SIGHUP caught: re-opening log file.\n"); |
|
389 |
+ logg_close(); |
|
390 |
+ sighup = 0; |
|
391 |
+ } |
|
392 |
+ |
|
393 |
+ if (new_sd >= 0) { |
|
394 |
+ client_conn = (client_conn_t *) mmalloc(sizeof(struct client_conn_tag)); |
|
395 |
+ client_conn->sd = new_sd; |
|
396 |
+ client_conn->options = options; |
|
397 |
+ client_conn->copt = copt; |
|
398 |
+ client_conn->root = root; |
|
399 |
+ client_conn->limits = &limits; |
|
400 |
+ thrmgr_add(&thrmgr, client_conn); |
|
401 |
+ } |
|
394 | 402 |
|
395 | 403 |
pthread_mutex_lock(&exit_mutex); |
396 | 404 |
if(progexit) { |