Fixed possible small memory leak in PJSUA registration
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@769 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 5578e7f..597451c 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -487,6 +487,8 @@
{
pjsua_acc *acc;
pj_str_t contact;
+ char contact_buf[512];
+ pj_pool_t *pool;
pj_status_t status;
acc = &pjsua_var.acc[acc_id];
@@ -496,6 +498,12 @@
return PJ_SUCCESS;
}
+ /* Destroy existing session, if any */
+ if (acc->regc) {
+ pjsip_regc_destroy(acc->regc);
+ acc->regc = NULL;
+ }
+
/* initialize SIP registration if registrar is configured */
status = pjsip_regc_create( pjsua_var.endpt,
@@ -507,7 +515,8 @@
return status;
}
- status = pjsua_acc_create_uac_contact( pjsua_var.pool, &contact,
+ pool = pj_pool_create_on_buf(NULL, contact_buf, sizeof(contact_buf));
+ status = pjsua_acc_create_uac_contact( pool, &contact,
acc_id, &acc->cfg.reg_uri);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Unable to generate suitable Contact header"
@@ -562,7 +571,6 @@
if (renew) {
if (pjsua_var.acc[acc_id].regc == NULL) {
- // Need route set.
status = pjsua_regc_init(acc_id);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Unable to create registration",