summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjsip/src/pjsip/sip_transaction.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c
index a025d870..dfb0751b 100644
--- a/pjsip/src/pjsip/sip_transaction.c
+++ b/pjsip/src/pjsip/sip_transaction.c
@@ -3242,16 +3242,22 @@ static pj_status_t tsx_on_state_confirmed( pjsip_transaction *tsx,
msg->line.req.method.id == PJSIP_INVITE_METHOD);
} else if (event->type == PJSIP_EVENT_TIMER) {
- /* Must be from timeout_timer_. */
- pj_assert(event->body.timer.entry == &tsx->timeout_timer);
-
- /* Move to Terminated state. */
- tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED,
- PJSIP_EVENT_TIMER, &tsx->timeout_timer );
+ /* Ignore overlapped retransmit timer.
+ * https://trac.pjsip.org/repos/ticket/1746
+ */
+ if (event->body.timer.entry == &tsx->retransmit_timer) {
+ /* Ignore */
+ } else {
+ /* Must be from timeout_timer_. */
+ pj_assert(event->body.timer.entry == &tsx->timeout_timer);
- /* Transaction has been destroyed. */
- //return PJSIP_ETSXDESTROYED;
+ /* Move to Terminated state. */
+ tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED,
+ PJSIP_EVENT_TIMER, &tsx->timeout_timer );
+ /* Transaction has been destroyed. */
+ //return PJSIP_ETSXDESTROYED;
+ }
} else {
pj_assert(!"Unexpected event");
return PJ_EBUG;