From 02d52e89e99288df32900fc9d35db0c15eb9d07d Mon Sep 17 00:00:00 2001 From: z3APA3A <3APA3A@3proxy.ru> Date: Tue, 15 Jan 2019 11:51:10 +0300 Subject: [PATCH] Fix: config change may stop log rotation --- src/conf.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/conf.c b/src/conf.c index 64ad1e0..aef48af 100644 --- a/src/conf.c +++ b/src/conf.c @@ -282,14 +282,14 @@ static int h_external(int argc, unsigned char ** argv){ static int h_log(int argc, unsigned char ** argv){ unsigned char tmpbuf[8192]; + int notchanged = 0; havelog = 1; - if(argc > 1 && conf.logtarget && *argv[1]!= '&' && *argv[1]!= '@' && !strcmp((char *)conf.logtarget, (char *)argv[1])) { - conf.logfunc = logstdout; - return 0; + if(argc > 1 && conf.logtarget && !strcmp((char *)conf.logtarget, (char *)argv[1])) { + notchanged = 1; } - if(conf.logtarget){ + if(!notchanged && conf.logtarget){ myfree(conf.logtarget); conf.logtarget = NULL; } @@ -298,20 +298,22 @@ static int h_log(int argc, unsigned char ** argv){ conf.logfunc = lognone; return 0; } - conf.logtarget = (unsigned char *)mystrdup((char *)argv[1]); + if(!notchanged) conf.logtarget = (unsigned char *)mystrdup((char *)argv[1]); if(*argv[1]=='@'){ #ifndef _WIN32 - openlog((char *)conf.logtarget+1, LOG_PID, LOG_DAEMON); conf.logfunc = logsyslog; + if(notchanged) return 0; + openlog((char *)conf.logtarget+1, LOG_PID, LOG_DAEMON); #endif } #ifndef NOODBC else if(*argv[1]=='&'){ + if(notchanged) return 0; + conf.logfunc = logsql; pthread_mutex_lock(&log_mutex); close_sql(); init_sql((char *)argv[1]+1); pthread_mutex_unlock(&log_mutex); - conf.logfunc = logsql; } #endif #ifndef NORADIUS @@ -323,6 +325,8 @@ static int h_log(int argc, unsigned char ** argv){ if(argc > 2) { conf.logtype = getrotate(*argv[2]); } + conf.logfunc = logstdout; + if(notchanged) return 0; conf.logtime = time(0); if(conf.logname)myfree(conf.logname); conf.logname = (unsigned char *)mystrdup((char *)argv[1]); @@ -332,7 +336,6 @@ static int h_log(int argc, unsigned char ** argv){ perror((char *)tmpbuf); return 1; } - conf.logfunc = logstdout; } }