summaryrefslogtreecommitdiff
path: root/ctdb/server/ctdb_takeover_helper.c
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2017-02-23 16:10:33 +1100
committerMartin Schwenke <martins@samba.org>2017-02-24 07:47:11 +0100
commit42bcfa6a51cd829304742fd3aa70d8958c5b10fe (patch)
tree2496c056392e81b5742cae282abbcca5d4f30f8f /ctdb/server/ctdb_takeover_helper.c
parentfdc0dbee29f8cb81dfcb1c995df6468469fd75ce (diff)
downloadsamba-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.c19
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;