diff options
author | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2011-07-29 08:41:35 +1000 |
---|---|---|
committer | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2011-07-29 08:50:48 +1000 |
commit | e707f235967407cc5a9197d40b3f30513d75c67d (patch) | |
tree | 15a460eab1482ebe76767b203535aa61b53b7f4b | |
parent | 87ea4818bf4414c1895e60a287d009a5d2011de2 (diff) | |
download | samba-e707f235967407cc5a9197d40b3f30513d75c67d.tar.gz samba-e707f235967407cc5a9197d40b3f30513d75c67d.tar.xz samba-e707f235967407cc5a9197d40b3f30513d75c67d.zip |
Update the delip command
Dont talloc_free(vnn) immediately but postphone it until later when
the eventscript callback has completed.
CQ S1026664
(This used to be ctdb commit 0a99e8742a261b1d3a2c8830f5c19ea6c2c47cad)
-rw-r--r-- | ctdb/server/ctdb_takeover.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ctdb/server/ctdb_takeover.c b/ctdb/server/ctdb_takeover.c index ddbc77f2c4a..a971fdecfbe 100644 --- a/ctdb/server/ctdb_takeover.c +++ b/ctdb/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; } |