Pārlūkot izejas kodu

Handle dispatch functions results

On error, exit corosync-notifyd properly.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Jan Friesse 12 gadi atpakaļ
vecāks
revīzija
6006a5b1ba
1 mainītis faili ar 20 papildinājumiem un 2 dzēšanām
  1. 20 2
      tools/corosync-notifyd.c

+ 20 - 2
tools/corosync-notifyd.c

@@ -325,7 +325,17 @@ static void _cs_cmap_rrp_faulty_key_changed (
 static int
 static int
 _cs_cmap_dispatch(int fd, int revents, void *data)
 _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;
 	return 0;
 }
 }
 
 
@@ -348,7 +358,15 @@ static void _cs_quorum_notification(quorum_handle_t handle,
 static int
 static int
 _cs_quorum_dispatch(int fd, int revents, void *data)
 _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;
 	return 0;
 }
 }