fixes for linux

This commit is contained in:
z3APA3A 2020-10-30 11:53:33 +03:00
parent 48b330da7c
commit fa52a1ae92

View File

@ -87,7 +87,7 @@ static void syslogclose(struct LOGGER *logger);
#endif #endif
static int stdloginit(struct LOGGER *logger); static int stdloginit(struct LOGGER *logger);
int stddobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s); static int stddobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s);
static void stdlog(const char * buf, int len, struct LOGGER *logger); static void stdlog(const char * buf, int len, struct LOGGER *logger);
static void stdlogrotate(struct LOGGER *logger); static void stdlogrotate(struct LOGGER *logger);
static void stdlogclose(struct LOGGER *logger); static void stdlogclose(struct LOGGER *logger);
@ -360,7 +360,7 @@ fflush(stdout);
pthread_attr_setdetachstate(&pa,PTHREAD_CREATE_DETACHED); pthread_attr_setdetachstate(&pa,PTHREAD_CREATE_DETACHED);
if(sem_init(&log_sem, 0, 0)) exit(11); if(sem_init(&log_sem, 0, 0)) exit(11);
if(pthread_create(&thread, &pa, logthreadfunc, (void *)newparam)) exit(10); if(pthread_create(&thread, &pa, logthreadfunc, NULL)) exit(10);
} }
#endif #endif
} }
@ -398,37 +398,38 @@ fflush(stdout);
struct logevent *evt; struct logevent *evt;
if(!param->srv->log->logfunc) { if(!param->srv->log->logfunc) {
int inbuf=0, len =0; int slen =0, hlen=0, ulen=0;
if(!(evt = malloc(sizeof(struct logevent) + param->hostname?strlen(param->hostname)+1:0 + s? strlen(s)+1:0 + param->username?strlen(param->username):0))) return; printf("no log functions, sending param\n");
fflush(stdout);
slen = s?strlen(s)+1 : 0;
hlen = param->hostname? strlen(param->hostname)+1 : 0;
ulen = param->username? strlen(param->username)+1 : 0;
if(!(evt = malloc(sizeof(struct logevent) + slen + ulen + hlen))) return;
evt->inbuf = 0; evt->inbuf = 0;
evt->param=param; evt->param=param;
evt->logstring = NULL; evt->logstring = NULL;
if(s){ if(slen){
len = strlen(s); memcpy(evt->buf,s, slen);
memcpy(evt->buf,s, len);
inbuf+=len;
evt->logstring = evt->buf; evt->logstring = evt->buf;
} }
if(param->hostname){ if(hlen){
len = strlen(param->hostname); memcpy(evt->buf+slen,param->hostname, hlen);
memcpy(evt->buf+inbuf,param->hostname, len); param->hostname = evt->buf + slen;
param->hostname = evt->buf + inbuf;
inbuf+=len;
} }
if(param->username){ if(ulen){
len = strlen(param->username); memcpy(evt->buf+slen+hlen,param->username, ulen);
memcpy(evt->buf+inbuf,param->username, len); param->username = evt->buf + slen + hlen;
param->username = evt->buf + inbuf;
inbuf+=len;
} }
evt->event = LOG; evt->event = LOG;
evt->log = param->srv->log; evt->log = param->srv->log;
printf("pushing event\n");
fflush(stdout);
logpush(evt); logpush(evt);
} }
else if (param->srv->log->logfunc->log){ else if (param->srv->log->logfunc->log){
printf("havelog\n"); printf("have log functions\n");
fflush(stdout); fflush(stdout);
if(!(evt = malloc(param->srv->log->logfunc->dobuf?EVENTSIZE:sizeof(struct logevent)))) return; if(!(evt = malloc(param->srv->log->logfunc->dobuf?EVENTSIZE:sizeof(struct logevent)))) return;
evt->inbuf = 0; evt->inbuf = 0;
@ -445,6 +446,10 @@ fflush(stdout);
logpush(evt); logpush(evt);
} }
} }
else {
printf("nolog\n");
fflush(stdout);
}
if(param->trafcountfunc)(*param->trafcountfunc)(param); if(param->trafcountfunc)(*param->trafcountfunc)(param);
clearstat(param); clearstat(param);
} }
@ -969,8 +974,7 @@ static int sysloginit(struct LOGGER *logger){
} }
static void logsyslog(const char * buf, int len, struct LOGGER *logger) { static void logsyslog(const char * buf, int len, struct LOGGER *logger) {
syslog(LOG_INFO, "%s", buf);
syslog((param->res >= 90 && param->res<=99)?LOG_NOTICE:(param->res?LOG_WARNING:LOG_INFO), "%s", buf);
} }
static void syslogrotate(struct LOGGER *logger){ static void syslogrotate(struct LOGGER *logger){