From 9b6e228419d821a5384e3b6b056c8d5e4f30b4f4 Mon Sep 17 00:00:00 2001
From: Corey Farrell <git@cfware.com>
Date: Wed, 20 May 2015 21:53:46 -0400
Subject: [PATCH] Logger: Reset defaults before processing config.

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 | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/main/logger.c b/main/logger.c
index 183e75d085..f84221f642 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -383,16 +383,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);
 	}
@@ -432,17 +441,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);
 	}
-- 
GitLab