[PATCH 13/28] Handle dispatch functions results

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On error, exit corosync-notifyd properly.

Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx>
---
 tools/corosync-notifyd.c |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/tools/corosync-notifyd.c b/tools/corosync-notifyd.c
index 99a4b24..f313416 100644
--- a/tools/corosync-notifyd.c
+++ b/tools/corosync-notifyd.c
@@ -325,7 +325,17 @@ static void _cs_cmap_rrp_faulty_key_changed (
 static int
 _cs_cmap_dispatch(int fd, int revents, void *data)
 {
-	cmap_dispatch(cmap_handle, CS_DISPATCH_ONE);
+	cs_error_t err;
+
+	err = cmap_dispatch(cmap_handle, CS_DISPATCH_ONE);
+
+	if (err != CS_ERR_TRY_AGAIN && err != CS_ERR_TIMEOUT && err != CS_ERR_QUEUE_FULL) {
+		qb_log(LOG_ERR, "Could not dispatch cmap events. Error %u", err);
+		qb_loop_stop(main_loop);
+
+		return -1;
+	}
+
 	return 0;
 }
 
@@ -348,7 +358,15 @@ static void _cs_quorum_notification(quorum_handle_t handle,
 static int
 _cs_quorum_dispatch(int fd, int revents, void *data)
 {
-	quorum_dispatch(quorum_handle, CS_DISPATCH_ONE);
+	cs_error_t err;
+
+	err = quorum_dispatch(quorum_handle, CS_DISPATCH_ONE);
+	if (err != CS_ERR_TRY_AGAIN && err != CS_ERR_TIMEOUT && err != CS_ERR_QUEUE_FULL) {
+		qb_log(LOG_ERR, "Could not dispatch quorum events. Error %u", err);
+		qb_loop_stop(main_loop);
+
+		return -1;
+	}
 	return 0;
 }
 
-- 
1.7.1

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss




[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux