From 30a674ea7ca83e616455d21dfc71a15594dd5bfe Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Thu, 16 Jun 2011 13:15:04 +0000 Subject: Re #1306: - Moved PJSIP_TSX_1XX_RETRANS_DELAY definition to sip_config.h. - Updated retransmission mechanism to skip retransmission rescheduling when the interval is zero. git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@3586 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/include/pjsip/sip_config.h | 10 ++++++++++ pjsip/src/pjsip/sip_transaction.c | 22 +++++++++------------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/pjsip/include/pjsip/sip_config.h b/pjsip/include/pjsip/sip_config.h index 78c324b8..6398e774 100644 --- a/pjsip/include/pjsip/sip_config.h +++ b/pjsip/include/pjsip/sip_config.h @@ -668,6 +668,16 @@ PJ_INLINE(pjsip_cfg_t*) pjsip_cfg(void) # define PJSIP_POOL_TSX_INC 256 #endif +/** + * Delay for non-100 1xx retransmission, in seconds. + * Set to 0 to disable this feature. + * + * Default: 60 seconds + */ +#ifndef PJSIP_TSX_1XX_RETRANS_DELAY +# define PJSIP_TSX_1XX_RETRANS_DELAY 60 +#endif + #define PJSIP_MAX_TSX_KEY_LEN (PJSIP_MAX_URL_SIZE*2) /* User agent. */ diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c index 5db17224..9618d241 100644 --- a/pjsip/src/pjsip/sip_transaction.c +++ b/pjsip/src/pjsip/sip_transaction.c @@ -146,13 +146,6 @@ static pj_time_val timeout_timer_val = { (64*PJSIP_T1_TIMEOUT)/1000, #define TIMER_INACTIVE 0 #define TIMER_ACTIVE 1 -/* Delay for 1xx retransmission (should be 60 seconds). - * Specify 0 to disable this feature - */ -#ifndef PJSIP_TSX_1XX_RETRANS_DELAY -# define PJSIP_TSX_1XX_RETRANS_DELAY 60 -#endif - /* Prototypes. */ static void lock_tsx(pjsip_transaction *tsx, struct tsx_lock_data *lck); @@ -2095,7 +2088,6 @@ PJ_DEF(pj_status_t) pjsip_tsx_retransmit_no_state(pjsip_transaction *tsx, */ static void tsx_resched_retransmission( pjsip_transaction *tsx ) { - pj_time_val timeout; pj_uint32_t msec_time; pj_assert((tsx->transport_flag & TSX_HAS_PENDING_TRANSPORT) == 0); @@ -2128,11 +2120,15 @@ static void tsx_resched_retransmission( pjsip_transaction *tsx ) } } - timeout.sec = msec_time / 1000; - timeout.msec = msec_time % 1000; - tsx->retransmit_timer.id = TIMER_ACTIVE; - pjsip_endpt_schedule_timer( tsx->endpt, &tsx->retransmit_timer, - &timeout); + if (msec_time != 0) { + pj_time_val timeout; + + timeout.sec = msec_time / 1000; + timeout.msec = msec_time % 1000; + tsx->retransmit_timer.id = TIMER_ACTIVE; + pjsip_endpt_schedule_timer( tsx->endpt, &tsx->retransmit_timer, + &timeout); + } } /* -- cgit v1.2.3