From 4677a17aef0f42af94fd8a5ba800d5df9bcd36e9 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 29 Jul 2011 08:41:35 +1000 Subject: [PATCH] Update the delip command Dont talloc_free(vnn) immediately but postphone it until later when the eventscript callback has completed. CQ S1026664 --- server/ctdb_takeover.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/ctdb_takeover.c b/server/ctdb_takeover.c index ddbc77f2..a971fdec 100644 --- a/server/ctdb_takeover.c +++ b/server/ctdb_takeover.c @@ -2892,12 +2892,16 @@ int32_t ctdb_control_del_public_address(struct ctdb_context *ctdb, TDB_DATA inda TALLOC_CTX *mem_ctx; DLIST_REMOVE(ctdb->vnn, vnn); - if (vnn->iface == NULL) { + if (vnn->iface != NULL) { + ctdb_vnn_unassign_iface(ctdb, vnn); + } + if (vnn->pnn != ctdb->pnn) { talloc_free(vnn); return 0; } mem_ctx = talloc_new(ctdb); + talloc_steal(mem_ctx, vnn); ret = ctdb_event_script_callback(ctdb, mem_ctx, delete_ip_callback, mem_ctx, false, @@ -2906,8 +2910,6 @@ int32_t ctdb_control_del_public_address(struct ctdb_context *ctdb, TDB_DATA inda ctdb_vnn_iface_string(vnn), ctdb_addr_to_str(&vnn->public_address), vnn->public_netmask_bits); - ctdb_vnn_unassign_iface(ctdb, vnn); - talloc_free(vnn); if (ret != 0) { return -1; } -- 2.34.1