diff options
Diffstat (limited to 'ctdb/common/ctdb_message.c')
-rw-r--r-- | ctdb/common/ctdb_message.c | 6 |
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; } |