[asterisk-commits] branch 1.2 r12195 -
/branches/1.2/channels/chan_sip.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Mon Mar 6 17:05:29 MST 2006
Author: tilghman
Date: Mon Mar 6 18:05:27 2006
New Revision: 12195
URL: http://svn.digium.com/view/asterisk?rev=12195&view=rev
Log:
Bug 6020 - Race condition where packet could be lost if first packet on list is acked
Modified:
branches/1.2/channels/chan_sip.c
Modified: branches/1.2/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/channels/chan_sip.c?rev=12195&r1=12194&r2=12195&view=diff
==============================================================================
--- branches/1.2/channels/chan_sip.c (original)
+++ branches/1.2/channels/chan_sip.c Mon Mar 6 18:05:27 2006
@@ -1362,12 +1362,12 @@
msg = sip_methods[sipmethod].text;
+ ast_mutex_lock(&p->lock);
cur = p->packets;
while(cur) {
if ((cur->seqno == seqno) && ((ast_test_flag(cur, FLAG_RESPONSE)) == resp) &&
((ast_test_flag(cur, FLAG_RESPONSE)) ||
(!strncasecmp(msg, cur->data, strlen(msg)) && (cur->data[strlen(msg)] < 33)))) {
- ast_mutex_lock(&p->lock);
if (!resp && (seqno == p->pendinginvite)) {
ast_log(LOG_DEBUG, "Acked pending invite %d\n", p->pendinginvite);
p->pendinginvite = 0;
@@ -1384,13 +1384,13 @@
ast_sched_del(sched, cur->retransid);
}
free(cur);
- ast_mutex_unlock(&p->lock);
res = 0;
break;
}
prev = cur;
cur = cur->next;
}
+ ast_mutex_unlock(&p->lock);
ast_log(LOG_DEBUG, "Stopping retransmission on '%s' of %s %d: Match %s\n", p->callid, resp ? "Response" : "Request", seqno, res ? "Not Found" : "Found");
return res;
}
More information about the asterisk-commits
mailing list