From 25b955a2b88645c3a080e74eecdea4d09ff28357 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 6 Feb 2009 08:44:23 +0000 Subject: Ticket #718: Crash when handling incoming request without rport (thanks Norma Steveley and Seth Hinze for the report) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2442 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsip/sip_transaction.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'pjsip/src') diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c index f99a1a44..5a6f7dc6 100644 --- a/pjsip/src/pjsip/sip_transaction.c +++ b/pjsip/src/pjsip/sip_transaction.c @@ -1376,6 +1376,9 @@ PJ_DEF(pj_status_t) pjsip_tsx_create_uas( pjsip_module *tsx_user, pj_memcpy(&tsx->addr, &tsx->res_addr.addr, tsx->res_addr.addr_len); tsx->addr_len = tsx->res_addr.addr_len; tsx->is_reliable = PJSIP_TRANSPORT_IS_RELIABLE(tsx->transport); + } else { + tsx->is_reliable = + (tsx->res_addr.dst_host.flag & PJSIP_TRANSPORT_RELIABLE); } @@ -2315,7 +2318,7 @@ static pj_status_t tsx_on_state_proceeding_uas( pjsip_transaction *tsx, */ timeout = timeout_timer_val; - } else if (PJSIP_TRANSPORT_IS_RELIABLE(tsx->transport)==0) { + } else if (!tsx->is_reliable) { /* For non-INVITE, start timer J at 64*T1 for unreliable * transport. @@ -2655,9 +2658,7 @@ static pj_status_t tsx_on_state_proceeding_uac(pjsip_transaction *tsx, /* Start Timer D with TD/T4 timer if unreliable transport is used. */ /* Note: tsx->transport may be NULL! */ - if ((tsx->transport && PJSIP_TRANSPORT_IS_RELIABLE(tsx->transport)==0) - || ((tsx->transport_flag & PJSIP_TRANSPORT_RELIABLE) == 0)) - { + if (!tsx->is_reliable) { if (tsx->method.id == PJSIP_INVITE_METHOD) { timeout = td_timer_val; } else { @@ -2722,7 +2723,7 @@ static pj_status_t tsx_on_state_completed_uas( pjsip_transaction *tsx, /* Timer I is T4 timer for unreliable transports, and * zero seconds for reliable transports. */ - if (PJSIP_TRANSPORT_IS_RELIABLE(tsx->transport)==0) { + if (!tsx->is_reliable) { timeout.sec = 0; timeout.msec = 0; } else { -- cgit v1.2.3