summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-01-21 16:23:56 +0000
committerBenny Prijono <bennylp@teluu.com>2007-01-21 16:23:56 +0000
commit35d9a1d95f962e2f2dff53b123733ab202376617 (patch)
treebe62d3d83bfd20f88f9c379f1decf8e725d0f8df /pjsip
parentf0e1d077860ab17140fd52c54d0ac32015c93ee5 (diff)
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
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c5
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c6
2 files changed, 10 insertions, 1 deletions
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);