summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ctdb/common/ctdb_message.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ctdb/common/ctdb_message.c b/ctdb/common/ctdb_message.c
index 2152c88dc9..297f86ba25 100644
--- a/ctdb/common/ctdb_message.c
+++ b/ctdb/common/ctdb_message.c
@@ -110,6 +110,7 @@ int ctdb_dispatch_message(struct ctdb_context *ctdb, uint64_t srvid, TDB_DATA da
ret = message_list_db_fetch(ctdb, key, &hdata);
if (ret == 0) {
h = *(struct ctdb_message_list_header **)hdata.dptr;
+ free(hdata.dptr);
for (m=h->m; m; m=m->next) {
m->message_handler(ctdb, srvid, data, m->message_private);
@@ -122,6 +123,7 @@ int ctdb_dispatch_message(struct ctdb_context *ctdb, uint64_t srvid, TDB_DATA da
ret = message_list_db_fetch(ctdb, key, &hdata);
if (ret == 0) {
h = *(struct ctdb_message_list_header **)hdata.dptr;
+ free(hdata.dptr);
for(m=h->m; m; m=m->next) {
m->message_handler(ctdb, srvid, data, m->message_private);
@@ -227,6 +229,7 @@ int ctdb_register_message_handler(struct ctdb_context *ctdb,
talloc_set_destructor(h, message_header_destructor);
} else {
h = *(struct ctdb_message_list_header **)data.dptr;
+ free(data.dptr);
}
m->h = h;
@@ -255,6 +258,8 @@ int ctdb_deregister_message_handler(struct ctdb_context *ctdb, uint64_t srvid, v
}
h = *(struct ctdb_message_list_header **)data.dptr;
+ free(data.dptr);
+
for (m=h->m; m; m=m->next) {
if (m->message_private == private_data) {
talloc_free(m);
@@ -282,6 +287,7 @@ bool ctdb_check_message_handler(struct ctdb_context *ctdb, uint64_t srvid)
}
h = *(struct ctdb_message_list_header **)data.dptr;
+ free(data.dptr);
if (h->m == NULL) {
return false;
}