mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-23 18:45:40 +08:00
Resolve races on log buffer without mutex
This commit is contained in:
parent
1d162abec3
commit
d3f9d80b65
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user