From 751a3b88dee31bead63001756e0095553eecf7f7 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 9 Oct 2015 18:49:37 +0200 Subject: [PATCH] clean up some error handling Does not change functionality, makes some code a bit more readable and lessens code reuse. Signed-off-by: Thomas Lamprecht --- data/src/dcdb.c | 6 +++--- data/src/dfsm.c | 21 +++++++++------------ data/src/quorum.c | 23 +++++++++++------------ 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/data/src/dcdb.c b/data/src/dcdb.c index 307c7ec..b83caa4 100644 --- a/data/src/dcdb.c +++ b/data/src/dcdb.c @@ -918,13 +918,13 @@ ret: cfs_debug("leave %s (%d)", __func__, res); return res; + +unknown: + cfs_critical("received unknown message type (msg_type == %d)", msg_type); leave: res = -1; goto ret; -unknown: - cfs_critical("received unknown message type (msg_type == %d)", msg_type); - goto leave; }; static dfsm_callbacks_t dcdb_dfsm_callbacks = { diff --git a/data/src/dfsm.c b/data/src/dfsm.c index c14564f..bf2d78c 100644 --- a/data/src/dfsm.c +++ b/data/src/dfsm.c @@ -1371,13 +1371,12 @@ dfsm_initialize(dfsm_t *dfsm, int *fd) if (dfsm->cpg_handle == 0) { if ((result = cpg_initialize(&dfsm->cpg_handle, dfsm->cpg_callbacks)) != CS_OK) { cfs_dom_critical(dfsm->log_domain, "cpg_initialize failed: %d", result); - dfsm->cpg_handle = 0; - goto fail; + goto err_no_finalize; } if ((result = cpg_local_get(dfsm->cpg_handle, &dfsm->nodeid)) != CS_OK) { cfs_dom_critical(dfsm->log_domain, "cpg_local_get failed: %d", result); - goto fail; + goto err_finalize; } dfsm->pid = getpid(); @@ -1385,21 +1384,21 @@ dfsm_initialize(dfsm_t *dfsm, int *fd) result = cpg_context_set(dfsm->cpg_handle, dfsm); if (result != CS_OK) { cfs_dom_critical(dfsm->log_domain, "cpg_context_set failed: %d", result); - goto fail; + goto err_finalize; } } result = cpg_fd_get(dfsm->cpg_handle, fd); if (result != CS_OK) { cfs_dom_critical(dfsm->log_domain, "cpg_fd_get failed: %d", result); - goto fail; + goto err_finalize; } return CS_OK; -fail: - if (dfsm->cpg_handle) - cpg_finalize(dfsm->cpg_handle); + err_finalize: + cpg_finalize(dfsm->cpg_handle); + err_no_finalize: dfsm->cpg_handle = 0; return result; } @@ -1613,13 +1612,11 @@ service_dfsm_dispatch( return TRUE; +finalize: + dfsm_finalize(dfsm); fail: cfs_service_set_restartable(service, dfsm_restartable(dfsm)); return FALSE; - -finalize: - dfsm_finalize(dfsm); - goto fail; } static void diff --git a/data/src/quorum.c b/data/src/quorum.c index 983a4da..1c258db 100644 --- a/data/src/quorum.c +++ b/data/src/quorum.c @@ -110,23 +110,18 @@ static int service_quorum_initialize( result = quorum_initialize(&handle, &quorum_callbacks, &quorum_type); if (result != CS_OK) { cfs_critical("quorum_initialize failed: %d", result); - private->handle = 0; - return -1; + goto err_reset_handle; } if (quorum_type != QUORUM_SET) { - cfs_critical("quorum_initialize returned wron quorum_type: %d", quorum_type); - quorum_finalize(handle); - private->handle = 0; - return -1; + cfs_critical("quorum_initialize returned wrong quorum_type: %d", quorum_type); + goto err_finalize; } result = quorum_context_set(handle, private); if (result != CS_OK) { cfs_critical("quorum_context_set failed: %d", result); - quorum_finalize(handle); - private->handle = 0; - return -1; + goto err_finalize; } private->handle = handle; @@ -136,9 +131,7 @@ static int service_quorum_initialize( result = quorum_trackstart(handle, CS_TRACK_CHANGES); if (result == CS_ERR_LIBRARY || result == CS_ERR_BAD_HANDLE) { cfs_critical("quorum_trackstart failed: %d - closing handle", result); - quorum_finalize(handle); - private->handle = 0; - return -1; + goto err_finalize; } else if (result != CS_OK) { cfs_critical("quorum_trackstart failed: %d - trying again", result); return -1; @@ -151,6 +144,12 @@ static int service_quorum_initialize( } return quorum_fd; + + err_finalize: + quorum_finalize(handle); + err_reset_handle: + private->handle = 0; + return -1; } static gboolean service_quorum_dispatch( -- 2.39.2