diff options
author | Martin Schwenke <martin@meltin.net> | 2017-02-23 16:10:33 +1100 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2017-02-24 07:47:11 +0100 |
commit | 42bcfa6a51cd829304742fd3aa70d8958c5b10fe (patch) | |
tree | 2496c056392e81b5742cae282abbcca5d4f30f8f /ctdb/server/ctdb_takeover_helper.c | |
parent | fdc0dbee29f8cb81dfcb1c995df6468469fd75ce (diff) | |
download | samba-42bcfa6a51cd829304742fd3aa70d8958c5b10fe.tar.gz |
ctdb-takeover: Allocate IP list unconditionally in send function
This simplifies error handling and make failures less likely after
send.
This also means that num_nodes is not required in the state.
Also quietly remove unused ev and client from state.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb/server/ctdb_takeover_helper.c')
-rw-r--r-- | ctdb/server/ctdb_takeover_helper.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/ctdb/server/ctdb_takeover_helper.c b/ctdb/server/ctdb_takeover_helper.c index 5f537c43561..796d45cc4a7 100644 --- a/ctdb/server/ctdb_takeover_helper.c +++ b/ctdb/server/ctdb_takeover_helper.c @@ -88,10 +88,8 @@ determine_algorithm(const struct ctdb_tunable_list *tunables) /**********************************************************************/ struct get_public_ips_state { - struct tevent_context *ev; - struct ctdb_client_context *client; uint32_t *pnns; - int count, num_nodes; + int count; struct ctdb_public_ip_list *ips; }; @@ -116,8 +114,13 @@ static struct tevent_req *get_public_ips_send( state->pnns = pnns; state->count = count; - state->num_nodes = num_nodes; - state->ips = NULL; + + state->ips = talloc_zero_array(state, + struct ctdb_public_ip_list, + num_nodes); + if (tevent_req_nomem(state->ips, req)) { + return tevent_req_post(req, ev); + } ctdb_req_control_get_public_ips(&request, available_only); subreq = ctdb_client_control_multi_send(mem_ctx, ev, client, @@ -164,12 +167,6 @@ static void get_public_ips_done(struct tevent_req *subreq) return; } - state->ips = talloc_zero_array(state, struct ctdb_public_ip_list, - state->num_nodes); - if (tevent_req_nomem(state->ips, req)) { - return; - } - for (i = 0; i < state->count; i++) { uint32_t pnn; struct ctdb_public_ip_list *ips; |