[asterisk-commits] russell: trunk r77797 - in /trunk: ./ channels/chan_iax2.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jul 30 15:21:06 CDT 2007


Author: russell
Date: Mon Jul 30 15:21:05 2007
New Revision: 77797

URL: http://svn.digium.com/view/asterisk?view=rev&rev=77797
Log:
Merged revisions 77794 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77794 | russell | 2007-07-30 15:16:43 -0500 (Mon, 30 Jul 2007) | 8 lines

Fix an issue that could potentially cause corruption of the global iax frame
queue.  In the network_thread() loop, it traverses the list using the
AST_LIST_TRAVERSE_SAFE macro.  However, to remove an element of the list within
this loop, it used AST_LIST_REMOVE, instead of AST_LIST_REMOVE_CURRENT, which I
believe could leave some of the internal variables of the SAFE macro invalid.
Mihai says that he already made this change in his local copy and it didn't help
his VNAK storm issues, but I still think it's wrong.  :)

........

Modified:
    trunk/   (props changed)
    trunk/channels/chan_iax2.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_iax2.c?view=diff&rev=77797&r1=77796&r2=77797
==============================================================================
--- trunk/channels/chan_iax2.c (original)
+++ trunk/channels/chan_iax2.c Mon Jul 30 15:21:05 2007
@@ -8850,7 +8850,7 @@
 
 			if (f->retries < 0) {
 				/* This is not supposed to be retransmitted */
-				AST_LIST_REMOVE(&frame_queue, f, list);
+				AST_LIST_REMOVE_CURRENT(&frame_queue, list);
 				/* Free the iax frame */
 				iax_frame_free(f);
 			} else {




More information about the asterisk-commits mailing list