From 724b815aa990f9c5438841dfca5ea5d937f8231e Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 13 Oct 2006 17:45:38 +0000 Subject: Fixed possible small memory leak in PJSUA registration git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@769 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_acc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'pjsip') diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 5578e7f8..597451c2 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -487,6 +487,8 @@ static pj_status_t pjsua_regc_init(int acc_id) { 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 @@ static pj_status_t pjsua_regc_init(int acc_id) 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 @@ static pj_status_t pjsua_regc_init(int acc_id) 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 @@ PJ_DEF(pj_status_t) pjsua_acc_set_registration( pjsua_acc_id acc_id, 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", -- cgit v1.2.3