summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2014-10-16 10:39:35 +0000
committerRiza Sulistyo <riza@teluu.com>2014-10-16 10:39:35 +0000
commit3e7d2fbe0b45b43a30e5c107208550cb20ebd736 (patch)
tree181b679f0afe3e0800e732a5b565b88f7a389778 /pjsip
parent4d7eca4fa844d0263ba4a689352e77d407f56a2c (diff)
Misc (re #1782): Fixed unregistration sent twice when calling pjsua_acc_modify with reg_uri is blank.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4947 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 0cb4801c..ac4cb303 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -1249,12 +1249,7 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
pj_strdup_with_null(acc->pool, &acc->cfg.reg_uri, &cfg->reg_uri);
if (reg_sip_uri)
acc->srv_port = reg_sip_uri->port;
- } else {
- /* Unregister if registration was set */
- if (acc->cfg.reg_uri.slen)
- pjsua_acc_set_registration(acc->index, PJ_FALSE);
- pj_bzero(&acc->cfg.reg_uri, sizeof(acc->cfg.reg_uri));
- }
+ }
update_reg = PJ_TRUE;
unreg_first = PJ_TRUE;
}
@@ -1338,14 +1333,18 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
/* Unregister first */
if (unreg_first) {
- if (acc->cfg.reg_uri.slen)
- pjsua_acc_set_registration(acc->index, PJ_FALSE);
+ pjsua_acc_set_registration(acc->index, PJ_FALSE);
if (acc->regc != NULL) {
pjsip_regc_destroy(acc->regc);
acc->regc = NULL;
acc->contact.slen = 0;
acc->reg_mapped_addr.slen = 0;
}
+
+ if (!cfg->reg_uri.slen) {
+ /* Reg URI still needed, delay unset after sending unregister. */
+ pj_bzero(&acc->cfg.reg_uri, sizeof(acc->cfg.reg_uri));
+ }
}
/* Update registration */