Resolve races on log buffer without mutex

This commit is contained in:
z3APA3A 2016-04-05 19:12:18 +03:00
parent 1d162abec3
commit d3f9d80b65
2 changed files with 4 additions and 3 deletions

View File

@ -192,6 +192,7 @@ void doschedule(void){
void dumpcounters(struct trafcount *tlin, int counterd){
unsigned char tmpbuf[8192];
struct trafcount *tl;
if(counterd >= 0 && tlin) {
@ -234,6 +235,7 @@ void dumpcounters(struct trafcount *tlin, int counterd){
void cyclestep(void){
struct tm *tm;
time_t minutecounter;
unsigned char tmpbuf[8192];
minutecounter = time(0);
for(;;){
@ -362,6 +364,7 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int
#ifdef _WIN32
unsigned char * arg;
WSADATA wd;
unsigned char tmpbuf[8192];
WSAStartup(MAKEWORD( 1, 1 ), &wd);
osv.dwOSVersionInfoSize = sizeof(osv);

View File

@ -285,6 +285,7 @@ static int h_external(int argc, unsigned char ** argv){
}
static int h_log(int argc, unsigned char ** argv){
unsigned char tmpbuf[8192];
conf.logfunc = logstdout;
if(conf.logtarget){
myfree(conf.logtarget);
@ -314,12 +315,10 @@ static int h_log(int argc, unsigned char ** argv){
}
conf.logtime = time(0);
if(conf.logname)myfree(conf.logname);
pthread_mutex_lock(&log_mutex);
conf.logname = (unsigned char *)mystrdup((char *)argv[1]);
fp = fopen((char *)dologname (tmpbuf, conf.logname, NULL, conf.logtype, conf.logtime), "a");
if(!fp){
perror(tmpbuf);
pthread_mutex_unlock(&log_mutex);
return 1;
}
else {
@ -330,7 +329,6 @@ static int h_log(int argc, unsigned char ** argv){
freopen(tmpbuf, "w", stderr);
#endif
}
pthread_mutex_unlock(&log_mutex);
}
}
return 0;