summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2012-06-26 09:37:41 +0000
committerLiong Sauw Ming <ming@teluu.com>2012-06-26 09:37:41 +0000
commitc6a4be00c6cd11309519adb5c693589f85d68aa4 (patch)
treeca0243f0813442089d9ebf16e3e8bc66fc1f3f18 /pjsip/src/pjsua-lib
parent212dca784b98723807900d8a935a67e77d4458d4 (diff)
Re #1540: Modify MWI subscription setting on run-time
* Add subscription state callback * Terminate subscription when deleting acc git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4180 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index f6c97df0..d4df760f 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -612,6 +612,12 @@ PJ_DEF(pj_status_t) pjsua_acc_del(pjsua_acc_id acc_id)
acc->regc = NULL;
}
+ /* Terminate mwi subscription */
+ if (acc->cfg.mwi_enabled) {
+ acc->cfg.mwi_enabled = PJ_FALSE;
+ pjsua_start_mwi(acc_id, PJ_FALSE);
+ }
+
/* Delete server presence subscription */
pjsua_pres_delete_acc(acc_id, 0);
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index 5eac4415..21cb4d69 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -1958,6 +1958,11 @@ static void mwi_evsub_on_state( pjsip_evsub *sub, pjsip_event *event)
(int)acc->cfg.id.slen, acc->cfg.id.ptr,
pjsip_evsub_get_state_name(sub)));
+ /* Call callback */
+ if (pjsua_var.ua_cfg.cb.on_mwi_state) {
+ (*pjsua_var.ua_cfg.cb.on_mwi_state)(acc->index, sub);
+ }
+
if (pjsip_evsub_get_state(sub) == PJSIP_EVSUB_STATE_TERMINATED) {
/* Clear subscription */
acc->mwi_dlg = NULL;