diff options
author | Richard Mudgett <rmudgett@digium.com> | 2016-06-01 13:57:53 -0500 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2016-06-01 14:09:36 -0500 |
commit | 40d19f2e5531fd3455e21a51e39a7244580609bb (patch) | |
tree | ab5979f47992da392141afa2e527a95cc22bf386 | |
parent | 608e0267e8512e16e186cbdc874cd7902e287ff7 (diff) |
logging,cdr,cel: Fix stringfield memory leak.
The stringfields refactor to allow adding stringfields to the end of a
structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some
incomplete cleanup code by some stringfield users.
The most noticeable leaker is the logging system where there is a leak for
every log message generated.
ASTERISK-26078 #close
Reported by: Etienne Lessard
Patches:
jira_asterisk_26078_v13.patch (license #5621) patch uploaded
by Richard Mudgett
Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782
-rw-r--r-- | cdr/cdr_custom.c | 2 | ||||
-rw-r--r-- | cdr/cdr_syslog.c | 2 | ||||
-rw-r--r-- | cel/cel_custom.c | 2 | ||||
-rw-r--r-- | main/logger.c | 1 |
4 files changed, 7 insertions, 0 deletions
diff --git a/cdr/cdr_custom.c b/cdr/cdr_custom.c index 24cb834f6..bb63ea0c6 100644 --- a/cdr/cdr_custom.c +++ b/cdr/cdr_custom.c @@ -81,8 +81,10 @@ static AST_RWLIST_HEAD_STATIC(sinks, cdr_custom_config); static void free_config(void) { struct cdr_custom_config *sink; + while ((sink = AST_RWLIST_REMOVE_HEAD(&sinks, list))) { ast_mutex_destroy(&sink->lock); + ast_string_field_free_memory(sink); ast_free(sink); } } diff --git a/cdr/cdr_syslog.c b/cdr/cdr_syslog.c index 85860ecec..39f115920 100644 --- a/cdr/cdr_syslog.c +++ b/cdr/cdr_syslog.c @@ -76,8 +76,10 @@ static AST_RWLIST_HEAD_STATIC(sinks, cdr_syslog_config); static void free_config(void) { struct cdr_syslog_config *sink; + while ((sink = AST_RWLIST_REMOVE_HEAD(&sinks, list))) { ast_mutex_destroy(&sink->lock); + ast_string_field_free_memory(sink); ast_free(sink); } } diff --git a/cel/cel_custom.c b/cel/cel_custom.c index f6377fcd7..f75efdd4b 100644 --- a/cel/cel_custom.c +++ b/cel/cel_custom.c @@ -71,8 +71,10 @@ static AST_RWLIST_HEAD_STATIC(sinks, cel_config); static void free_config(void) { struct cel_config *sink; + while ((sink = AST_RWLIST_REMOVE_HEAD(&sinks, list))) { ast_mutex_destroy(&sink->lock); + ast_string_field_free_memory(sink); ast_free(sink); } } diff --git a/main/logger.c b/main/logger.c index ae1e0bd8d..9a16dcf13 100644 --- a/main/logger.c +++ b/main/logger.c @@ -174,6 +174,7 @@ struct logmsg { static void logmsg_free(struct logmsg *msg) { + ast_string_field_free_memory(msg); ast_free(msg); } |