Procházet zdrojové kódy

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
 */
Victor Seva před 8 roky
rodič
revize
1b0e1c3cbd

+ 1 - 1
src/modules/pua_reginfo/notify.c

@@ -458,7 +458,7 @@ next_contact:
 			}
 		}
 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);

+ 2 - 1
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 @@ error:
 		if(body->s) xmlFree(body->s);
 		pkg_free(body);
 	}
+	if(record) ul.release_urecord(record);
 
 	return;
 }