aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-30 20:16:43 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-30 20:16:43 +0000
commit4a85704c09d94a57b5b0949952865911ca232a1f (patch)
tree202280d6cbc914493bb8ff775fff4a02ec8a7d43 /channels
parent1ddf125073fc2fcee3919822ef85ee660fe56560 (diff)
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. :) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@77794 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_iax2.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 8b4df85a5..7aed23fac 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -8337,7 +8337,7 @@ static void *network_thread(void *ignore)
if (f->retries < 0) {
/* This is not supposed to be retransmitted */
- AST_LIST_REMOVE(&iaxq.queue, f, list);
+ AST_LIST_REMOVE_CURRENT(&iaxq.queue, list);
iaxq.count--;
/* Free the iax frame */
iax_frame_free(f);