summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-10-13 17:45:38 +0000
committerBenny Prijono <bennylp@teluu.com>2006-10-13 17:45:38 +0000
commit724b815aa990f9c5438841dfca5ea5d937f8231e (patch)
treee5edcf489da8995d57cf004a9a1faaf64f378a07 /pjsip
parent81cf9fbeb48160a3e2c99c86c97d753d57df638d (diff)
Fixed possible small memory leak in PJSUA registration
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@769 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c12
1 files changed, 10 insertions, 2 deletions
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",