From 3e595d557e1bdaddad809fccb210bf24cf98b338 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Fri, 10 Jul 2020 13:31:37 +0100 Subject: [PATCH] Add db__msg_store_free() for freeing stored messages. --- src/database.c | 31 ++++++++++++++++++------------- src/mosquitto_broker_internal.h | 1 + 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/database.c b/src/database.c index b9e501e8bc..9ea1287fbf 100644 --- a/src/database.c +++ b/src/database.c @@ -187,10 +187,26 @@ void db__msg_store_add(struct mosquitto_db *db, struct mosquitto_msg_store *stor } -void db__msg_store_remove(struct mosquitto_db *db, struct mosquitto_msg_store *store) +void db__msg_store_free(struct mosquitto_msg_store *store) { int i; + mosquitto__free(store->source_id); + mosquitto__free(store->source_username); + if(store->dest_ids){ + for(i=0; idest_id_count; i++){ + mosquitto__free(store->dest_ids[i]); + } + mosquitto__free(store->dest_ids); + } + mosquitto__free(store->topic); + mosquitto_property_free_all(&store->properties); + UHPA_FREE_PAYLOAD(store); + mosquitto__free(store); +} + +void db__msg_store_remove(struct mosquitto_db *db, struct mosquitto_msg_store *store) +{ if(store->prev){ store->prev->next = store->next; if(store->next){ @@ -205,18 +221,7 @@ void db__msg_store_remove(struct mosquitto_db *db, struct mosquitto_msg_store *s db->msg_store_count--; db->msg_store_bytes -= store->payloadlen; - mosquitto__free(store->source_id); - mosquitto__free(store->source_username); - if(store->dest_ids){ - for(i=0; idest_id_count; i++){ - mosquitto__free(store->dest_ids[i]); - } - mosquitto__free(store->dest_ids); - } - mosquitto__free(store->topic); - mosquitto_property_free_all(&store->properties); - UHPA_FREE_PAYLOAD(store); - mosquitto__free(store); + db__msg_store_free(store); } diff --git a/src/mosquitto_broker_internal.h b/src/mosquitto_broker_internal.h index 3cfd86d027..f9d8aecace 100644 --- a/src/mosquitto_broker_internal.h +++ b/src/mosquitto_broker_internal.h @@ -666,6 +666,7 @@ void db__msg_store_ref_inc(struct mosquitto_msg_store *store); void db__msg_store_ref_dec(struct mosquitto_db *db, struct mosquitto_msg_store **store); void db__msg_store_clean(struct mosquitto_db *db); void db__msg_store_compact(struct mosquitto_db *db); +void db__msg_store_free(struct mosquitto_msg_store *store); int db__message_reconnect_reset(struct mosquitto_db *db, struct mosquitto *context); void sys_tree__init(struct mosquitto_db *db); void sys_tree__update(struct mosquitto_db *db, int interval, time_t start_time);