From b3f94eb39e19366c3458643ee329a73155d46ff8 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 11 Apr 2019 02:27:31 +0200 Subject: fsm.c: Print error message for FSM with allstate_action but no events As suggested by Vadim while reviewing a related fix for ipa_keepalive.c in libosmo-abis (see https://gerrit.osmocom.org/#/c/libosmo-abis/+/13540/), it makes sense to print an error message if anyone registers a FSM that specifies an allstate_action callback but at the same time no events that would ever end up in that callback. Change-Id: I9e73f7363ab15a00843e3f0d1e5776f4be7ebc46 --- src/fsm.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/fsm.c b/src/fsm.c index 337786d9..04c583b0 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -256,6 +256,17 @@ int osmo_fsm_register(struct osmo_fsm *fsm) return -EEXIST; if (fsm->event_names == NULL) LOGP(DLGLOBAL, LOGL_ERROR, "FSM '%s' has no event names! Please fix!\n", fsm->name); + + if (fsm->allstate_action && !fsm->allstate_event_mask) { + LOGP(DLGLOBAL, LOGL_ERROR, "FSM '%s' has allstate_action but no allstate_event_mask\n", + fsm->name); + } + + if (!fsm->allstate_action && fsm->allstate_event_mask) { + LOGP(DLGLOBAL, LOGL_ERROR, "FSM '%s' has allstate_event_mask but no allstate_action\n", + fsm->name); + } + llist_add_tail(&fsm->list, &osmo_g_fsms); INIT_LLIST_HEAD(&fsm->instances); -- cgit v1.2.3