summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2011-09-19 06:43:49 +0000
committerBenny Prijono <bennylp@teluu.com>2011-09-19 06:43:49 +0000
commit5759f019b6e1fde8201506d4e57248e15ca3ed31 (patch)
treefd493754bcf8f11b5fcb0858cba1902c4118d03e
parent95ba3fa4501e8e7a6769d29f54025dc614455b9b (diff)
Fixed #1374: Assertion when CANCEL and INVITE final response "crosses the wire"
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@3755 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsip/sip_transaction.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c
index 9618d241..93f5d813 100644
--- a/pjsip/src/pjsip/sip_transaction.c
+++ b/pjsip/src/pjsip/sip_transaction.c
@@ -2960,6 +2960,12 @@ static pj_status_t tsx_on_state_proceeding_uac(pjsip_transaction *tsx,
timeout.sec = timeout.msec = 0;
}
lock_timer(tsx);
+ /* In the short period above timer may have been inserted
+ * by set_timeout() (by CANCEL). Cancel it if necessary. See:
+ * https://trac.pjsip.org/repos/ticket/1374
+ */
+ if (tsx->timeout_timer.id)
+ pjsip_endpt_cancel_timer( tsx->endpt, &tsx->timeout_timer );
tsx->timeout_timer.id = TIMER_ACTIVE;
pjsip_endpt_schedule_timer( tsx->endpt, &tsx->timeout_timer, &timeout);
unlock_timer(tsx);