summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-02-08 09:22:46 +0000
committerBenny Prijono <bennylp@teluu.com>2006-02-08 09:22:46 +0000
commitc00a805879c4ec9724bc798caf8b402e397b13c4 (patch)
tree2812626cfd492b68816e756f48368dc0c2693f91
parentfe5841e71cad24f1533ccd930140a3b03771de4e (diff)
Fixed bug in INVITE server transaction for 2xx response
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@152 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsip/sip_transaction.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c
index a219f5d7..a84e096b 100644
--- a/pjsip/src/pjsip/sip_transaction.c
+++ b/pjsip/src/pjsip/sip_transaction.c
@@ -2019,12 +2019,27 @@ static pj_status_t tsx_on_state_proceeding_uas( pjsip_transaction *tsx,
pjsip_tx_data_add_ref(tdata);
}
- /* Start timer J at 64*T1 for unreliable transport or zero for
- * reliable transport.
- */
- if (!tsx->is_reliable) {
+ /* Setup timeout timer: */
+
+ if (tsx->method.id == PJSIP_INVITE_METHOD) {
+
+ /* Start Timer H at 64*T1 for INVITE server transaction,
+ * regardless of transport.
+ */
+ timeout = timeout_timer_val;
+
+ } else if (PJSIP_TRANSPORT_IS_RELIABLE(tsx->transport)==0) {
+
+ /* For non-INVITE, start timer J at 64*T1 for unreliable
+ * transport.
+ */
timeout = timeout_timer_val;
+
} else {
+
+ /* Transaction terminates immediately for non-INVITE when
+ * reliable transport is used.
+ */
timeout.sec = timeout.msec = 0;
}