Module: kamailio Branch: master Commit: 1b0e1c3cbdd162fcd438a7d9bb412ddce73bc214 URL: https://github.com/kamailio/kamailio/commit/1b0e1c3cbdd162fcd438a7d9bb412ddc...
Author: Victor Seva linuxmaniac@torreviejawireless.org Committer: Victor Seva linuxmaniac@torreviejawireless.org Date: 2017-02-22T08:14:55+01:00
pua_reginfo: fix memory leak when usrloc is DB_ONLY
As release_urecord() clearly says:
/*! * \brief Release urecord previously obtained through get_urecord * \warning Failing to calls this function after get_urecord will * result in a memory leak when the DB_ONLY mode is used. When * the records is later deleted, e.g. with delete_urecord, then * its not necessary, as this function already releases the record. * \param _r released record */
---
Modified: src/modules/pua_reginfo/notify.c Modified: src/modules/pua_reginfo/usrloc_cb.c
---
Diff: https://github.com/kamailio/kamailio/commit/1b0e1c3cbdd162fcd438a7d9bb412ddc... Patch: https://github.com/kamailio/kamailio/commit/1b0e1c3cbdd162fcd438a7d9bb412ddc...
---
diff --git a/src/modules/pua_reginfo/notify.c b/src/modules/pua_reginfo/notify.c index 317f3e8..853dbcc 100644 --- a/src/modules/pua_reginfo/notify.c +++ b/src/modules/pua_reginfo/notify.c @@ -458,7 +458,7 @@ int process_body(str notify_body, udomain_t * domain) { } } next_registration: - // if (ul_record) ul.release_urecord(ul_record); + if (ul_record) ul.release_urecord(ul_record); /* Unlock the domain for this AOR: */ if (aor_key.len > 0) ul.unlock_udomain(domain, &aor_key); diff --git a/src/modules/pua_reginfo/usrloc_cb.c b/src/modules/pua_reginfo/usrloc_cb.c index 7f84788..3e00a0e 100644 --- a/src/modules/pua_reginfo/usrloc_cb.c +++ b/src/modules/pua_reginfo/usrloc_cb.c @@ -223,7 +223,7 @@ void reginfo_usrloc_cb(ucontact_t* c, int type, void* param) { publ_info_t publ; str content_type; udomain_t * domain; - urecord_t * record; + urecord_t * record = NULL; int res; str uri = {NULL, 0}; str user = {NULL, 0}; @@ -332,6 +332,7 @@ void reginfo_usrloc_cb(ucontact_t* c, int type, void* param) { if(body->s) xmlFree(body->s); pkg_free(body); } + if(record) ul.release_urecord(record);
return; }