From 0413a8f4672352171f0df731b7d9c1fe20acbc4c Mon Sep 17 00:00:00 2001
From: Jan Friesse <jfriesse@redhat.com>
Date: Wed, 14 Jun 2017 16:27:37 +0200
Subject: [PATCH] totem: Propagate totem initialization failure
(backported from master 564b4bf7d4c5b3f632a48610761dce58e5809b3a)
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
---
exec/main.c | 8 ++++++--
exec/totempg.c | 5 +++++
exec/totemrrp.c | 6 +++++-
exec/totemsrp.c | 6 +++++-
4 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/exec/main.c b/exec/main.c
index 5f96c28..0d381c2 100644
--- a/exec/main.c
+++ b/exec/main.c
@@ -1355,9 +1355,13 @@ int main (int argc, char **argv, char **envp)
* Join multicast group and setup delivery
* and configuration change functions
*/
- totempg_initialize (
+ if (totempg_initialize (
corosync_poll_handle,
- &totem_config);
+ &totem_config) != 0) {
+
+ log_printf (LOGSYS_LEVEL_ERROR, "Can't initialize TOTEM layer");
+ corosync_exit_error (COROSYNC_DONE_FATAL_ERR);
+ }
totempg_service_ready_register (
main_service_ready);
diff --git a/exec/totempg.c b/exec/totempg.c
index 05729be..5cef5e1 100644
--- a/exec/totempg.c
+++ b/exec/totempg.c
@@ -814,6 +814,10 @@ int totempg_initialize (
totempg_confchg_fn,
totempg_waiting_trans_ack_cb);
+ if (res == -1) {
+ goto error_exit;
+ }
+
totemmrp_callback_token_create (
&callback_token_received_handle,
TOTEM_CALLBACK_TOKEN_RECEIVED,
@@ -827,6 +831,7 @@ int totempg_initialize (
list_init (&totempg_groups_list);
+error_exit:
return (res);
}
diff --git a/exec/totemrrp.c b/exec/totemrrp.c
index c6b97bc..f806feb 100644
--- a/exec/totemrrp.c
+++ b/exec/totemrrp.c
@@ -2150,7 +2150,7 @@ int totemrrp_initialize (
deliver_fn_context->iface_no = i;
instance->deliver_fn_context[i] = (void *)deliver_fn_context;
- totemnet_initialize (
+ res = totemnet_initialize (
poll_handle,
&instance->net_handles[i],
totem_config,
@@ -2161,6 +2161,10 @@ int totemrrp_initialize (
rrp_iface_change_fn,
rrp_target_set_completed);
+ if (res == -1) {
+ goto error_destroy;
+ }
+
totemnet_net_mtu_adjust (instance->net_handles[i], totem_config);
}
diff --git a/exec/totemsrp.c b/exec/totemsrp.c
index f80f8e4..91c5423 100644
--- a/exec/totemsrp.c
+++ b/exec/totemsrp.c
@@ -851,6 +851,7 @@ int totemsrp_initialize (
int waiting_trans_ack))
{
struct totemsrp_instance *instance;
+ int res;
instance = malloc (sizeof (struct totemsrp_instance));
if (instance == NULL) {
@@ -993,7 +994,7 @@ int totemsrp_initialize (
}
}
- totemrrp_initialize (
+ res = totemrrp_initialize (
poll_handle,
&instance->totemrrp_context,
totem_config,
@@ -1004,6 +1005,9 @@ int totemsrp_initialize (
main_token_seqid_get,
main_msgs_missing,
target_set_completed);
+ if (res == -1) {
+ goto error_exit;
+ }
/*
* Must have net_mtu adjusted by totemrrp_initialize first
--
1.7.1