From: Tamas Cseke Date: Wed, 24 Feb 2016 13:20:56 +0000 (+0100) Subject: Fix memory leaks X-Git-Tag: v1.6.7~2^2~16^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0914a501cd315fc2b397cf7dd4a296e36eb7a051;p=thirdparty%2Ffreeswitch.git Fix memory leaks Destroy session event hash and events in queue FS-8866 --resolve --- diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index f3e8e7cd87..2196cadfc7 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -382,6 +382,7 @@ static void remove_session_elem_from_listener(listener_t *listener, session_elem static void destroy_session_elem(session_elem_t *session_element) { switch_core_session_t *session; + void *pop; /* wait for readers */ switch_thread_rwlock_wrlock(session_element->rwlock); @@ -395,6 +396,13 @@ static void destroy_session_elem(session_elem_t *session_element) switch_core_session_soft_unlock(session); switch_core_session_rwunlock(session); } + + while (switch_queue_trypop(session_element->event_queue, &pop) == SWITCH_STATUS_SUCCESS) { + switch_event_t *event = (switch_event_t *) pop; + switch_event_destroy(&event); + } + + switch_core_hash_destroy(&session_element->event_hash); switch_core_destroy_memory_pool(&session_element->pool); }