Replace the connection_tree with a connection_list.
[tinc] / src / logger.c
index cc47a4a..5de88bd 100644 (file)
@@ -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,7 +140,8 @@ 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) {
+               for(list_node_t *node = connection_list->head, *next; node; node = next) {
+                       next = node->next;
                        connection_t *c = node->data;
                        if(!c->status.log)
                                continue;