From 35d9a1d95f962e2f2dff53b123733ab202376617 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sun, 21 Jan 2007 16:23:56 +0000 Subject: Fixed ticket #68: pjsua account is not completely invalidated git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@892 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_acc.c | 5 ++++- pjsip/src/pjsua-lib/pjsua_pres.c | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 37f36ce7..50cab336 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -360,8 +360,11 @@ PJ_DEF(pj_status_t) pjsua_acc_del(pjsua_acc_id acc_id) PJSUA_LOCK(); /* Delete registration */ - if (pjsua_var.acc[acc_id].regc != NULL) + if (pjsua_var.acc[acc_id].regc != NULL) { pjsua_acc_set_registration(acc_id, PJ_FALSE); + pjsip_regc_destroy(pjsua_var.acc[acc_id].regc); + pjsua_var.acc[acc_id].regc = NULL; + } /* Delete server presence subscription */ pjsua_pres_delete_acc(acc_id); diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c index f9f87550..6261583e 100644 --- a/pjsip/src/pjsua-lib/pjsua_pres.c +++ b/pjsip/src/pjsua-lib/pjsua_pres.c @@ -732,6 +732,7 @@ void pjsua_pres_delete_acc(int acc_id) uapres = pjsua_var.acc[acc_id].pres_srv_list.next; + /* Notify all subscribers that we're no longer available */ while (uapres != &acc->pres_srv_list) { pjsip_pres_status pres_status; @@ -753,6 +754,11 @@ void pjsua_pres_delete_acc(int acc_id) uapres = uapres->next; } + /* Clear server presence subscription list because account might be reused + * later. */ + pj_list_init(&acc->pres_srv_list); + + /* Terminate presence publication, if any */ if (acc->publish_sess) { acc->online_status = PJ_FALSE; send_publish(acc_id, PJ_FALSE); -- cgit v1.2.3