diff options
author | Harald Welte <laforge@gnumonks.org> | 2019-04-11 02:27:31 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2019-06-15 10:54:26 +0200 |
commit | b3f94eb39e19366c3458643ee329a73155d46ff8 (patch) | |
tree | ddc1e4c1b57348953dd14030d04fadbeb7a81632 | |
parent | 32e6710487a716a7ad03860426bb5e237fae8f5a (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.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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); |