subscr_conn_fsm: handle dialing invalid number

Reset the FSM to idle when receiving a clear command from the MSC during
ST_WAITING_FOR_ASSIGNMENT_COMPLETE.

Related: SYS#5560
Change-Id: Ic0589be21f0ee4dbbbe0ffa6b0acdbe152909700
This commit is contained in:
Oliver Smith 2022-06-08 13:02:23 +02:00
parent 9b3de0183b
commit b83c755b31
1 changed files with 9 additions and 0 deletions

View File

@ -267,6 +267,14 @@ static void st_waiting_for_ass_compl(struct osmo_fsm_inst *fi, uint32_t event, v
* reset the FSM to idle here (clears the mgw endpoint). */
osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_FSM_ST_IDLE, 0, 0);
break;
case SUBSCR_CONN_FSM_EV_BSSMAP_CLEAR_COMMAND:
/* Dialing an invalid number results in receiving a clear
* command from the MSC in ST_WAITING_FOR_ASSIGNMENT_COMPLETE.
* The original message gets forwarded from CN to RAN by
* bssmap_cn_handle_clear_cmd() already, so just reset the FSM
* to idle here (clears the mgw endpoint). */
osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_FSM_ST_IDLE, 0, 0);
break;
default:
OSMO_ASSERT(false);
}
@ -395,6 +403,7 @@ static struct osmo_fsm_state subscr_conn_fsm_states[] = {
.in_event_mask = 0
| X(SUBSCR_CONN_FSM_EV_BSSMAP_ASSIGNMENT_COMPLETE)
| X(SUBSCR_CONN_FSM_EV_BSSMAP_ASSIGNMENT_FAILURE)
| X(SUBSCR_CONN_FSM_EV_BSSMAP_CLEAR_COMMAND)
,
.out_state_mask = 0
| X(SUBSCR_CONN_FSM_ST_IDLE)