diff options
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_acc.c | 6 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_pres.c | 5 |
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; |