summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2011-06-16 13:15:04 +0000
committerNanang Izzuddin <nanang@teluu.com>2011-06-16 13:15:04 +0000
commit30a674ea7ca83e616455d21dfc71a15594dd5bfe (patch)
treea23e6a420422bb5772c441acf0a4b50793431e22
parentd1fc1193fc57517f5adc32bc2e0b9077fd367304 (diff)
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
-rw-r--r--pjsip/include/pjsip/sip_config.h10
-rw-r--r--pjsip/src/pjsip/sip_transaction.c22
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);
+ }
}
/*