diff --git a/cdr/cdr_custom.c b/cdr/cdr_custom.c index 24cb834f69966ea3e3bf5d200483cf086117dff6..bb63ea0c646b5569805603d50194ed35dc0826a0 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 85860ececdcbbede4e4bc53bc2b3a6c84293953b..39f115920dc4a485b8b52330944c4c4f454d57b6 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 f6377fcd71b81ddc27e74a7991c4d65b2d0ea920..f75efdd4be46303af9362ef17f6642b6401dc047 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 ae1e0bd8d1829e5c20a17671e82c9765566afe6d..9a16dcf13bcc7c9c93134c7175cbab54d3c4249f 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); }