diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2018-03-26 12:05:48 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-03-27 11:31:47 +0000 |
commit | ecb0308e74f3c9d0e228cddc79dc7794005b20f7 (patch) | |
tree | 961671d3da47dc6294b93656a54c83bef5a7eb25 | |
parent | bc893d3e14a26c88f9cca50d3bbb4d312e04a6f1 (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.c | 3 |
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] = { |