Logger: Reset defaults before processing config.
authorCorey Farrell <git@cfware.com>
Thu, 21 May 2015 01:53:46 +0000 (21:53 -0400)
committerCorey Farrell <git@cfware.com>
Thu, 21 May 2015 02:22:39 +0000 (21:22 -0500)
Reset options to default values before reloading config.  This ensures
that if a setting is removed or commented out of the configuration file
it is unset on reload.

ASTERISK-25112 #close
Reported by: Corey Farrell

Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd

main/logger.c

index 41f26e8..bdcd6c4 100644 (file)
@@ -375,16 +375,25 @@ static int init_logger_chain(int locked, const char *altconf)
        const char *s;
        struct ast_flags config_flags = { 0 };
 
-       display_callids = 1;
-
        if (!(cfg = ast_config_load2(S_OR(altconf, "logger.conf"), "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) {
                cfg = NULL;
        }
 
-       /* delete our list of log channels */
        if (!locked) {
                AST_RWLIST_WRLOCK(&logchannels);
        }
+
+       /* Set defaults */
+       hostname[0] = '\0';
+       display_callids = 1;
+       memset(&logfiles, 0, sizeof(logfiles));
+       logfiles.queue_log = 1;
+       ast_copy_string(dateformat, "%b %e %T", sizeof(dateformat));
+       ast_copy_string(queue_log_name, QUEUELOG, sizeof(queue_log_name));
+       exec_after_rotate[0] = '\0';
+       rotatestrategy = SEQUENTIAL;
+
+       /* delete our list of log channels */
        while ((chan = AST_RWLIST_REMOVE_HEAD(&logchannels, list))) {
                ast_free(chan);
        }
@@ -424,17 +433,14 @@ static int init_logger_chain(int locked, const char *altconf)
                                ast_copy_string(hostname, "unknown", sizeof(hostname));
                                fprintf(stderr, "What box has no hostname???\n");
                        }
-               } else
-                       hostname[0] = '\0';
-       } else
-               hostname[0] = '\0';
+               }
+       }
        if ((s = ast_variable_retrieve(cfg, "general", "display_callids"))) {
                display_callids = ast_true(s);
        }
-       if ((s = ast_variable_retrieve(cfg, "general", "dateformat")))
+       if ((s = ast_variable_retrieve(cfg, "general", "dateformat"))) {
                ast_copy_string(dateformat, s, sizeof(dateformat));
-       else
-               ast_copy_string(dateformat, "%b %e %T", sizeof(dateformat));
+       }
        if ((s = ast_variable_retrieve(cfg, "general", "queue_log"))) {
                logfiles.queue_log = ast_true(s);
        }