Просмотр исходного кода

Check successful initialization of IPC

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Jan Friesse 13 лет назад
Родитель
Сommit
89809ec80e
3 измененных файлов с 13 добавлено и 5 удалено
  1. 8 3
      exec/ipc_glue.c
  2. 1 1
      exec/main.h
  3. 4 1
      exec/service.c

+ 8 - 3
exec/ipc_glue.c

@@ -801,14 +801,14 @@ void cs_ipcs_stats_update(void)
 	}
 }
 
-void cs_ipcs_service_init(struct corosync_service_engine *service)
+const char *cs_ipcs_service_init(struct corosync_service_engine *service)
 {
 	if (service->lib_engine_count == 0) {
 		log_printf (LOGSYS_LEVEL_DEBUG,
 			"NOT Initializing IPC on %s [%d]",
 			cs_ipcs_serv_short_name(service->id),
 			service->id);
-		return;
+		return NULL;
 	}
 	ipcs_mapper[service->id].id = service->id;
 	strcpy(ipcs_mapper[service->id].name, cs_ipcs_serv_short_name(service->id));
@@ -823,7 +823,12 @@ void cs_ipcs_service_init(struct corosync_service_engine *service)
 	assert(ipcs_mapper[service->id].inst);
 	qb_ipcs_poll_handlers_set(ipcs_mapper[service->id].inst,
 		&corosync_poll_funcs);
-	qb_ipcs_run(ipcs_mapper[service->id].inst);
+	if (qb_ipcs_run(ipcs_mapper[service->id].inst) != 0) {
+		log_printf (LOGSYS_LEVEL_ERROR, "Can't initialize IPC");
+		return "qb_ipcs_run error";
+	}
+
+	return NULL;
 }
 
 void cs_ipcs_init(void)

+ 1 - 1
exec/main.h

@@ -93,7 +93,7 @@ extern void corosync_recheck_the_q_level(void *data);
 
 extern void cs_ipcs_init(void);
 
-extern void cs_ipcs_service_init(struct corosync_service_engine *service);
+extern const char *cs_ipcs_service_init(struct corosync_service_engine *service);
 
 extern void cs_ipcs_stats_update(void);
 

+ 4 - 1
exec/service.c

@@ -172,7 +172,10 @@ char *corosync_service_link_and_init (
 
 	log_printf (LOGSYS_LEVEL_NOTICE,
 		"Service engine loaded: %s [%d]", service_engine->name, service_engine->id);
-	cs_ipcs_service_init(service_engine);
+	init_result = (char *)cs_ipcs_service_init(service_engine);
+	if (init_result != NULL) {
+		return (init_result);
+	}
 
 	return NULL;
 }