diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-02-08 09:22:46 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-02-08 09:22:46 +0000 |
commit | c00a805879c4ec9724bc798caf8b402e397b13c4 (patch) | |
tree | 2812626cfd492b68816e756f48368dc0c2693f91 /pjsip | |
parent | fe5841e71cad24f1533ccd930140a3b03771de4e (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
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip/sip_transaction.c | 23 |
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; } |