cdr_radius,cel_radius: Fix old memleak in unload
authorBadalyan Vyacheslav <v.badalyan@open-bs.ru>
Mon, 10 Oct 2016 16:49:08 +0000 (12:49 -0400)
committerJoshua Colp <jcolp@digium.com>
Tue, 25 Oct 2016 11:45:37 +0000 (11:45 +0000)
- Call "rc_openlog" optional. If you do not call,
you will simply NULL instead of a name.

- On the one PID can be only one syslog channel.
And it can already be run in logger.c

- Calling rc_openlog we assigns a new name for
the channel syslog. This unexpected behavior for logger.c.

Most lesser evil, is to agree on a NULL name syslog
if the channel was not launched in logger.c.

It also solves the problem of memory leaks.

ASTERISK-26455 #close

Change-Id: Ic17c38de67583e971d78fe18807d1a9faf8f0afd

CHANGES
cdr/cdr_radius.c
cel/cel_radius.c

diff --git a/CHANGES b/CHANGES
index 622973c..5948360 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -34,6 +34,16 @@ res_pjsip
    preferred codec rather than advertising all joint codec capabilities.
    This limits the other side's codec choice to exactly what we prefer.
 
+cdr_radius
+------------------
+ * To fix a memory leak the syslog channel is now empty if it has not been set
+   and used by a syslog channel in the logger.
+
+cel_radius
+------------------
+ * To fix a memory leak the syslog channel is now empty if it has not been set
+   and used by a syslog channel in the logger.
+
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ----------
 ------------------------------------------------------------------------------
index e1a639c..ddde5b8 100644 (file)
@@ -265,18 +265,6 @@ static int load_module(void)
        } else
                return AST_MODULE_LOAD_DECLINE;
 
-       /*
-        * start logging
-        *
-        * NOTE: Yes this causes a slight memory leak if the module is
-        * unloaded.  However, it is better than a crash if cdr_radius
-        * and cel_radius are both loaded.
-        */
-       tmp = ast_strdup("asterisk");
-       if (tmp) {
-               rc_openlog((char *) tmp);
-       }
-
        /* read radiusclient-ng config file */
        if (!(rh = rc_read_config(radiuscfg))) {
                ast_log(LOG_NOTICE, "Cannot load radiusclient-ng configuration file %s.\n", radiuscfg);
index 3c20e97..f6ab892 100644 (file)
@@ -237,18 +237,6 @@ static int load_module(void)
                return AST_MODULE_LOAD_DECLINE;
        }
 
-       /*
-        * start logging
-        *
-        * NOTE: Yes this causes a slight memory leak if the module is
-        * unloaded.  However, it is better than a crash if cdr_radius
-        * and cel_radius are both loaded.
-        */
-       tmp = ast_strdup("asterisk");
-       if (tmp) {
-               rc_openlog((char *) tmp);
-       }
-
        /* read radiusclient-ng config file */
        if (!(rh = rc_read_config(radiuscfg))) {
                ast_log(LOG_NOTICE, "Cannot load radiusclient-ng configuration file %s.\n", radiuscfg);