summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-04-11 02:27:31 +0200
committerHarald Welte <laforge@gnumonks.org>2019-06-15 10:54:26 +0200
commitb3f94eb39e19366c3458643ee329a73155d46ff8 (patch)
treeddc1e4c1b57348953dd14030d04fadbeb7a81632
parent32e6710487a716a7ad03860426bb5e237fae8f5a (diff)
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
-rw-r--r--src/fsm.c11
1 files changed, 11 insertions, 0 deletions
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);