X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Flogger.c;h=e0a42d5b826098153753576fbf9b8afa7d43002c;hb=d917c8cb6b69475d568ccbe82389b9f2b3eb5e80;hp=cc47a4a1cbfdedeb05e30b29e9a6dcc5d1cd2ee5;hpb=1d9dacb1f26971e19463b5501c2410c57f780ecb;p=tinc diff --git a/src/logger.c b/src/logger.c index cc47a4a1..e0a42d5b 100644 --- a/src/logger.c +++ b/src/logger.c @@ -40,7 +40,7 @@ bool logcontrol = false; void openlogger(const char *ident, logmode_t mode) { logident = ident; logmode = mode; - + switch(mode) { case LOGMODE_STDERR: logpid = getpid(); @@ -88,6 +88,7 @@ void reopenlogger() { void logger(int level, int priority, const char *format, ...) { va_list ap; + int len; char timestr[32] = ""; char message[1024] = ""; time_t now; @@ -101,9 +102,12 @@ void logger(int level, int priority, const char *format, ...) { return; va_start(ap, format); - vsnprintf(message, sizeof message, format, ap); + len = vsnprintf(message, sizeof message, format, ap); va_end(ap); + if(len > 0 && len < sizeof message && message[len - 1] == '\n') + message[len - 1] = 0; + if(level <= debug_level) { switch(logmode) { case LOGMODE_STDERR: @@ -136,8 +140,7 @@ void logger(int level, int priority, const char *format, ...) { if(logcontrol) { suppress = true; logcontrol = false; - for(splay_node_t *node = connection_tree->head; node; node = node->next) { - connection_t *c = node->data; + for list_each(connection_t, c, connection_list) { if(!c->status.log) continue; logcontrol = true;