diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2014-01-29 06:58:21 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2014-01-29 06:58:21 +0000 |
commit | 3822a45298ad88af2a85e0df4747d364bd84a12a (patch) | |
tree | 864360c15c87dfc0fb2266c0c34d9773338aa022 /pjsip | |
parent | da29133b4c0957ccae25eacb2308974a839e02aa (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
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip-simple/evsub.c | 14 |
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); |