res_timing_pthread: Fix leaky pipes.
authorJoshua Colp <jcolp@digium.com>
Sun, 15 Feb 2015 12:41:06 +0000 (12:41 +0000)
committerJoshua Colp <jcolp@digium.com>
Sun, 15 Feb 2015 12:41:06 +0000 (12:41 +0000)
During some refactoring the way private information for timers
was stored was changed. As a result of this the action which normally
removed the timer upon closure in res_timing_pthread was also removed
causing the timer to remain after it should using up resources.
This change ensures that the timer is removed upon closure.

ASTERISK-24768 #close
Reported by: Matthias Urlichs
patches:
 timer.patch submitted by Matthias Urlichs (license 5508)
........

Merged revisions 431807 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431808 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_timing_pthread.c

index 81efbf8..1e76720 100644 (file)
@@ -143,7 +143,7 @@ static void *pthread_timer_open(void)
                ast_cond_signal(&timing_thread.cond);
                ast_mutex_unlock(&timing_thread.lock);
        }
-       ao2_link(pthread_timers, timer);
+       ao2_link_flags(pthread_timers, timer, OBJ_NOLOCK);
        ao2_unlock(pthread_timers);
 
        return timer;
@@ -153,6 +153,7 @@ static void pthread_timer_close(void *data)
 {
        struct pthread_timer *timer = data;
 
+       ao2_unlink(pthread_timers, timer);
        ao2_ref(timer, -1);
 }