summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2014-01-29 06:58:21 +0000
committerNanang Izzuddin <nanang@teluu.com>2014-01-29 06:58:21 +0000
commit3822a45298ad88af2a85e0df4747d364bd84a12a (patch)
tree864360c15c87dfc0fb2266c0c34d9773338aa022
parentda29133b4c0957ccae25eacb2308974a839e02aa (diff)
Fix #1727:
- Start timer TIMER_TYPE_UAS_TIMEOUT when incoming subscription request is accepted (via pjsip_evsub_accept()). - Kill any timer when subscription state is shifting into TERMINATED. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4718 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsip-simple/evsub.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/pjsip/src/pjsip-simple/evsub.c b/pjsip/src/pjsip-simple/evsub.c
index aa2498c4..55bcda12 100644
--- a/pjsip/src/pjsip-simple/evsub.c
+++ b/pjsip/src/pjsip-simple/evsub.c
@@ -593,6 +593,9 @@ static void set_state( pjsip_evsub *sub, pjsip_evsub_state state,
if (state == PJSIP_EVSUB_STATE_TERMINATED &&
prev_state != PJSIP_EVSUB_STATE_TERMINATED)
{
+ /* Kill any timer. */
+ set_timer(sub, TIMER_TYPE_NONE, 0);
+
if (sub->pending_tsx == 0) {
evsub_destroy(sub);
}
@@ -1147,6 +1150,14 @@ PJ_DEF(pj_status_t) pjsip_evsub_accept( pjsip_evsub *sub,
if (status != PJ_SUCCESS)
goto on_return;
+ /* Set UAS timeout timer, when status code is 2xx and state is not
+ * terminated.
+ */
+ if (st_code/100 == 2 && sub->state != PJSIP_EVSUB_STATE_TERMINATED) {
+ PJ_LOG(5,(sub->obj_name, "UAS timeout in %d seconds",
+ sub->expires->ivalue));
+ set_timer(sub, TIMER_TYPE_UAS_TIMEOUT, sub->expires->ivalue);
+ }
on_return:
@@ -1802,9 +1813,6 @@ static void on_tsx_state_uac( pjsip_evsub *sub, pjsip_transaction *tsx,
return;
}
- /* Kill any timer. */
- set_timer(sub, TIMER_TYPE_NONE, 0);
-
/* Set state to TERMINATED */
set_state(sub, PJSIP_EVSUB_STATE_TERMINATED,
NULL, event, &tsx->status_text);