]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix an issue that Simon pointed out to me on IRC. There were cases in the
authorRussell Bryant <russell@russellbryant.com>
Thu, 2 Aug 2007 17:09:42 +0000 (17:09 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 2 Aug 2007 17:09:42 +0000 (17:09 +0000)
trunk version of find_idle_thread() where the old full frame processing
information was not cleared out.  This would have caused full frames to get
deferred for processing by threads that weren't actually processing frames for
that call.  Nice catch!!

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

channels/chan_iax2.c

index a93ccb69d7611ffb197e2dae53e6f8c4f961d1c6..e4be160babb3982f8ddc552336e0e1ed174fadd5 100644 (file)
@@ -1014,8 +1014,10 @@ static struct iax2_thread *find_idle_thread(void)
        AST_LIST_UNLOCK(&idle_list);
 
        /* If we popped a thread off the idle list, just return it */
-       if (thread)
+       if (thread) {
+               memset(&thread->ffinfo, 0, sizeof(thread->ffinfo));
                return thread;
+       }
 
        /* Pop the head of the dynamic list off */
        AST_LIST_LOCK(&dynamic_list);
@@ -1023,8 +1025,10 @@ static struct iax2_thread *find_idle_thread(void)
        AST_LIST_UNLOCK(&dynamic_list);
 
        /* If we popped a thread off the dynamic list, just return it */
-       if (thread)
+       if (thread) {
+               memset(&thread->ffinfo, 0, sizeof(thread->ffinfo));
                return thread;
+       }
 
        /* If we can't create a new dynamic thread for any reason, return no thread at all */
        if (iaxdynamicthreadcount >= iaxmaxthreadcount || !(thread = ast_calloc(1, sizeof(*thread))))