From d62d755ec45903d3c913b950238d32c3d0f342bd Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Wed, 14 May 2008 05:51:53 +0000 Subject: [PATCH] - this should fix INVITE transaction timeout whereby a provisional reply has been received. git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@940 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- core/plug-in/sipctrl/trans_layer.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/plug-in/sipctrl/trans_layer.cpp b/core/plug-in/sipctrl/trans_layer.cpp index d305feab..4198cd21 100644 --- a/core/plug-in/sipctrl/trans_layer.cpp +++ b/core/plug-in/sipctrl/trans_layer.cpp @@ -839,6 +839,7 @@ int trans_layer::update_uac_trans(trans_bucket* bucket, sip_trans* t, sip_msg* m case TS_CALLING: t->clear_timer(STIMER_A); + t->clear_timer(STIMER_B); // fall through trap case TS_TRYING: @@ -1219,13 +1220,20 @@ void trans_layer::timer_expired(timer* t, trans_bucket* bucket, sip_trans* tr) break; case STIMER_B: // Calling: -> Terminated + + tr->clear_timer(STIMER_B); + if(tr->state == TS_CALLING) { + DBG("Transaction timeout!\n"); + timeout(bucket,tr); + } + break; + case STIMER_F: // Trying/Proceeding: terminate transaction - tr->clear_timer(type); + tr->clear_timer(STIMER_F); switch(tr->state) { - case TS_CALLING: case TS_TRYING: case TS_PROCEEDING: DBG("Transaction timeout!\n");