aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/osmo-bsc/lchan_fsm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index 7d4738045..1ef7869d3 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -967,6 +967,10 @@ static void lchan_fsm_wait_rf_release_ack(struct osmo_fsm_inst *fi, uint32_t eve
lchan_fsm_state_chg(LCHAN_ST_UNUSED);
break;
+ case LCHAN_EV_RTP_RELEASED:
+ /* ignore late lchan_rtp_fsm release events */
+ return;
+
default:
OSMO_ASSERT(false);
}
@@ -1119,6 +1123,7 @@ static const struct osmo_fsm_state lchan_fsm_states[] = {
.name = "WAIT_BEFORE_RF_RELEASE",
.in_event_mask = 0
| S(LCHAN_EV_RLL_REL_IND) /* allow late REL_IND of SAPI[0] */
+ | S(LCHAN_EV_RTP_RELEASED) /* ignore late lchan_rtp_fsm release events */
,
.out_state_mask = 0
| S(LCHAN_ST_UNUSED)
@@ -1131,6 +1136,7 @@ static const struct osmo_fsm_state lchan_fsm_states[] = {
.action = lchan_fsm_wait_rf_release_ack,
.in_event_mask = 0
| S(LCHAN_EV_RSL_RF_CHAN_REL_ACK)
+ | S(LCHAN_EV_RTP_RELEASED) /* ignore late lchan_rtp_fsm release events */
,
.out_state_mask = 0
| S(LCHAN_ST_UNUSED)
@@ -1140,6 +1146,9 @@ static const struct osmo_fsm_state lchan_fsm_states[] = {
},
[LCHAN_ST_WAIT_AFTER_ERROR] = {
.name = "WAIT_AFTER_ERROR",
+ .in_event_mask = 0
+ | S(LCHAN_EV_RTP_RELEASED) /* ignore late lchan_rtp_fsm release events */
+ ,
.out_state_mask = 0
| S(LCHAN_ST_UNUSED)
,