From 6b18f4241216eee3ea96ac807509bbd246a534f5 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 15 Apr 2013 10:57:05 +0000 Subject: - Forward-port -r1741 [Fixed logfiles not getting reopened on /rehash] git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/trunk@1831 82007160-df01-0410-b94d-b575c5fd34c7 --- src/conf.c | 9 ++++----- src/conf_parser.c | 2 +- src/conf_parser.y | 2 +- src/ircd.c | 2 +- src/log.c | 37 ++++++++++++++++++++++++------------- 5 files changed, 31 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/conf.c b/src/conf.c index af5c662..ff564f6 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1287,11 +1287,8 @@ rehash(int sig) load_conf_modules(); rehashed_klines = 1; -/* XXX */ - if (ConfigLoggingEntry.use_logging) - log_close_all(); - return(0); + return 0; } /* set_default_conf() @@ -1338,7 +1335,7 @@ set_default_conf(void) AdminInfo.email = NULL; AdminInfo.description = NULL; - log_close_all(); + log_del_all(); ConfigLoggingEntry.use_logging = 1; @@ -1774,6 +1771,8 @@ read_conf_files(int cold) read_conf(conf_parser_ctx.conf_file); fclose(conf_parser_ctx.conf_file); + log_reopen_all(); + add_isupport("NICKLEN", NULL, ServerInfo.max_nick_length); add_isupport("NETWORK", ServerInfo.network_name, -1); diff --git a/src/conf_parser.c b/src/conf_parser.c index 07c3b10..3a7ca94 100644 --- a/src/conf_parser.c +++ b/src/conf_parser.c @@ -3777,7 +3777,7 @@ yyreduce: break; if (block_state.type.value && block_state.file.buf[0]) - log_add_file(block_state.type.value, block_state.size.value, + log_set_file(block_state.type.value, block_state.size.value, block_state.file.buf); } break; diff --git a/src/conf_parser.y b/src/conf_parser.y index 4f1a4db..3112e24 100644 --- a/src/conf_parser.y +++ b/src/conf_parser.y @@ -896,7 +896,7 @@ logging_file_entry: break; if (block_state.type.value && block_state.file.buf[0]) - log_add_file(block_state.type.value, block_state.size.value, + log_set_file(block_state.type.value, block_state.size.value, block_state.file.buf); }; diff --git a/src/ircd.c b/src/ircd.c index 7581747..65033f3 100644 --- a/src/ircd.c +++ b/src/ircd.c @@ -534,7 +534,7 @@ main(int argc, char *argv[]) eventInit(); /* We need this to initialise the fd array before anything else */ fdlist_init(); - log_add_file(LOG_TYPE_IRCD, 0, logFileName); + log_set_file(LOG_TYPE_IRCD, 0, logFileName); check_can_use_v6(); init_comm(); /* This needs to be setup early ! -- adrian */ /* Check if there is pidfile and daemon already running */ diff --git a/src/log.c b/src/log.c index 6f75350..a7a9de3 100644 --- a/src/log.c +++ b/src/log.c @@ -38,30 +38,40 @@ static struct { } log_type_table[LOG_TYPE_LAST]; -int -log_add_file(enum log_type type, size_t size, const char *path) +void +log_set_file(enum log_type type, size_t size, const char *path) { - if (log_type_table[type].file) - fclose(log_type_table[type].file); - strlcpy(log_type_table[type].path, path, sizeof(log_type_table[type].path)); log_type_table[type].size = size; - return (log_type_table[type].file = fopen(path, "a")) != NULL; + if (type == LOG_TYPE_IRCD) + log_type_table[type].file = fopen(log_type_table[type].path, "a"); } void -log_close_all(void) +log_del_all(void) { unsigned int type = 0; while (++type < LOG_TYPE_LAST) - { - if (log_type_table[type].file == NULL) - continue; + log_type_table[type].path[0] = '\0'; +} + +void +log_reopen_all(void) +{ + unsigned int type = 0; - fclose(log_type_table[type].file); - log_type_table[type].file = NULL; + while (++type < LOG_TYPE_LAST) + { + if (log_type_table[type].file) + { + fclose(log_type_table[type].file); + log_type_table[type].file = NULL; + } + + if (log_type_table[type].path[0]) + log_type_table[type].file = fopen(log_type_table[type].path, "a"); } } @@ -119,5 +129,6 @@ ilog(enum log_type type, const char *fmt, ...) unlink(buf); rename(log_type_table[type].path, buf); - log_add_file(type, log_type_table[type].size, log_type_table[type].path); + log_set_file(type, log_type_table[type].size, log_type_table[type].path); + log_type_table[type].file = fopen(log_type_table[type].path, "a"); } -- cgit