From d9020738dfae7dc0c75c3cbdec15d0a1b7090fc6 Mon Sep 17 00:00:00 2001 From: Naveen Albert Date: Tue, 22 Nov 2022 23:39:30 +0000 Subject: [PATCH] res_pjsip_logger: Preserve logging state on reloads. Currently, reloading res_pjsip will cause logging to be disabled. This is because logging can also be controlled via the debug option in pjsip.conf and this defaults to "no". To improve this, logging is no longer disabled on reloads if logging had not been previously enabled using the debug option from the config. This ensures that logging enabled from the CLI will persist through a reload. ASTERISK-29912 #close Change-Id: I0be7d90e7007f5a6bc4a1cb75019fbaeb18428da --- doc/CHANGES-staging/res_pjsip_logger_debug.txt | 5 +++++ res/res_pjsip_logger.c | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 doc/CHANGES-staging/res_pjsip_logger_debug.txt diff --git a/doc/CHANGES-staging/res_pjsip_logger_debug.txt b/doc/CHANGES-staging/res_pjsip_logger_debug.txt new file mode 100644 index 0000000000..1365aab826 --- /dev/null +++ b/doc/CHANGES-staging/res_pjsip_logger_debug.txt @@ -0,0 +1,5 @@ +Subject: res_pjsip_logger + +Issuing "pjsip reload" will no longer +disabling logging if it was previously +enabled from the CLI. diff --git a/res/res_pjsip_logger.c b/res/res_pjsip_logger.c index 456bb224a9..97994d87d1 100644 --- a/res/res_pjsip_logger.c +++ b/res/res_pjsip_logger.c @@ -129,6 +129,9 @@ struct pjsip_logger_session { /*! \brief The default logger session */ static struct pjsip_logger_session *default_logger; +/*! \brief Whether or not the logger was enabled via the debug option in pjsip.conf (as opposed to via CLI) */ +static int logger_enabled_via_config = 0; + /*! \brief Destructor for logger session */ static void pjsip_logger_session_destroy(void *obj) { @@ -665,15 +668,27 @@ static void check_debug(void) RAII_VAR(char *, debug, ast_sip_get_debug(), ast_free); if (ast_false(debug)) { - pjsip_disable_logger(-1); + /* If the logger was enabled via the CLI instead of + * through the config file, then we shouldn't + * disable it on a reload. + * Only disable logging if the logger was previously + * enabled via the config file. */ + if (logger_enabled_via_config) { + pjsip_disable_logger(-1); + } + logger_enabled_via_config = 0; return; } if (ast_true(debug)) { + if (logger_enabled_via_config) { + return; + } pjsip_enable_logger_all(-1); return; } + logger_enabled_via_config = 1; if (pjsip_enable_logger_host(-1, debug, 0) != CLI_SUCCESS) { ast_log(LOG_WARNING, "Could not resolve host %s for debug " "logging\n", debug);