aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-03-26 12:05:48 +0200
committerHarald Welte <laforge@gnumonks.org>2018-03-27 11:31:47 +0000
commitecb0308e74f3c9d0e228cddc79dc7794005b20f7 (patch)
tree961671d3da47dc6294b93656a54c83bef5a7eb25
parentbc893d3e14a26c88f9cca50d3bbb4d312e04a6f1 (diff)
gscon: fix illegal state transitions
The GSCON fsm has two illegal state transions. The transions themselves are logically legal but theur respective entries in out_state_mask are missing. - remove unnecessary transition from ST_ACTIVE to ST_ACTIVE - Add ST_CLEARING to the out_state_mask of ST_WAIT_HO_COMPL Change-Id: I165c3e8b4b268b50e5f4a482b0fe890e940637b3 Closes: OS#3109
-rw-r--r--src/libbsc/bsc_subscr_conn_fsm.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c
index 03eec3f39..a24cb315e 100644
--- a/src/libbsc/bsc_subscr_conn_fsm.c
+++ b/src/libbsc/bsc_subscr_conn_fsm.c
@@ -417,7 +417,6 @@ static void gscon_fsm_active(struct osmo_fsm_inst *fi, uint32_t event, void *dat
if (!conn->user_plane.fi_bts) {
resp = gsm0808_create_assignment_failure(GSM0808_CAUSE_EQUIPMENT_FAILURE, NULL);
sigtran_send(conn, resp, fi);
- osmo_fsm_inst_state_chg(fi, ST_ACTIVE, 0, 0);
return;
}
break;
@@ -916,7 +915,7 @@ static const struct osmo_fsm_state gscon_fsm_states[] = {
[ST_WAIT_HO_COMPL] = {
.name = OSMO_STRINGIFY(WAIT_HO_COMPL),
.in_event_mask = S(GSCON_EV_HO_COMPL) | S(GSCON_EV_HO_FAIL) | S(GSCON_EV_HO_TIMEOUT),
- .out_state_mask = S(ST_ACTIVE) | S(ST_WAIT_MDCX_BTS_HO),
+ .out_state_mask = S(ST_ACTIVE) | S(ST_WAIT_MDCX_BTS_HO) | S(ST_CLEARING),
.action = gscon_fsm_wait_ho_compl,
},
[ST_WAIT_MDCX_BTS_HO] = {