]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Fix memory leaks
authorTamas Cseke <tamas.cseke@virtual-call-center.eu>
Wed, 24 Feb 2016 13:20:56 +0000 (14:20 +0100)
committerTamas Cseke <tamas.cseke@virtual-call-center.eu>
Mon, 7 Mar 2016 12:20:37 +0000 (13:20 +0100)
Destroy session event hash and events in queue
FS-8866 --resolve

src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c

index f3e8e7cd87a2c4f80c36418d404d144f25fb071b..2196cadfc77b6a350303ef7960d6f9d5ca251872 100644 (file)
@@ -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);
 }