From 3e7d2fbe0b45b43a30e5c107208550cb20ebd736 Mon Sep 17 00:00:00 2001 From: Riza Sulistyo Date: Thu, 16 Oct 2014 10:39:35 +0000 Subject: 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 --- pjsip/src/pjsua-lib/pjsua_acc.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'pjsip/src/pjsua-lib/pjsua_acc.c') 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 */ -- cgit v1.2.3