Bläddra i källkod

Patch from Hans to clean up main error handling a little bit

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1001 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 20 år sedan
förälder
incheckning
81658a8158
5 ändrade filer med 16 tillägg och 6 borttagningar
  1. 0 2
      exec/amf.c
  2. 10 2
      exec/main.c
  3. 3 0
      exec/service.c
  4. 2 2
      exec/util.c
  5. 1 0
      exec/util.h

+ 0 - 2
exec/amf.c

@@ -877,8 +877,6 @@ static int amf_exec_init_fn (struct objdb_iface_ver0 *objdb)
 	if (enabled) {
 		res = openais_amf_config_read (&error_string);
 		if (res == -1) {
-			dprintf("hej %s", "nisse");
-			TRACE8("hej %s", "nisse");
 			log_printf (LOG_LEVEL_ERROR, error_string);
 			return res;
 		}

+ 10 - 2
exec/main.c

@@ -1229,7 +1229,11 @@ int main (int argc, char **argv)
 
 	openais_service_default_objdb_set (objdb);
 
-	openais_service_link_all (objdb);
+	res = openais_service_link_all (objdb);
+	if (res == -1) {
+		log_printf (LOG_LEVEL_ERROR, "Could not load services\n");
+		openais_exit_error (AIS_DONE_DYNAMICLOAD);
+	}
 
 	res = openais_main_config_read (objdb, &error_string, &main_config);
 	if (res == -1) {
@@ -1307,8 +1311,12 @@ int main (int argc, char **argv)
 	 * This must occur after totempg is initialized because "this_ip" must be set
 	 */
 	this_ip = &totem_config.interfaces[0].boundto;
-	openais_service_init_all (service_count, objdb);
 
+	res = openais_service_init_all (service_count, objdb);
+	if (res == -1) {
+		log_printf (LOG_LEVEL_ERROR, "Could not init services\n");
+		openais_exit_error (AIS_DONE_INIT_SERVICES);
+	}
 
 	sync_register (openais_sync_callbacks_retrieve, openais_sync_completed);
 

+ 3 - 0
exec/service.c

@@ -236,6 +236,9 @@ int openais_service_init_all (int service_count,
 		if (ais_service[i] && ais_service[i]->exec_init_fn) {
 			log_printf (LOG_LEVEL_NOTICE, "Initialising service handler '%s'\n", ais_service[i]->name);
 			res = ais_service[i]->exec_init_fn (objdb);
+			if (res != 0) {
+				break;
+			}
 		}
 	}
 	return (res);

+ 2 - 2
exec/util.c

@@ -78,8 +78,8 @@ SaTimeT clust_time_now(void)
 
 void openais_exit_error (enum e_ais_done err)
 {
-	log_printf (LOG_LEVEL_ERROR, "AIS Executive exiting.\n");
-	exit (1);
+	log_printf (LOG_LEVEL_ERROR, "AIS Executive exiting (%d).\n", err);
+	exit (err);
 }
 
 char *getSaNameT (SaNameT *name)

+ 1 - 0
exec/util.h

@@ -61,6 +61,7 @@ enum e_ais_done {
 	AIS_DONE_AMFCONFIGREAD = -11,
 	AIS_DONE_DYNAMICLOAD = -12,
 	AIS_DONE_OBJDB = -13,
+	AIS_DONE_INIT_SERVICES = -14,
 };
 
 void openais_exit_error (enum e_ais_done err);