fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-bsc/+/42591?usp=email )

Change subject: lchan_fsm: ignore late lchan_rtp_fsm events
......................................................................

lchan_fsm: ignore late lchan_rtp_fsm events

The lchan_rtp_fsm is a child FSM that manages the MGW/RTP endpoint.
When the parent lchan_fsm transitions away before the child has
finished its work (e.g. a CRCX timeout or a DLCX completing after
the lchan is already idle), the child can still deliver
LCHAN_EV_RTP_RELEASED or LCHAN_EV_RTP_ERROR to the parent.

Currently these late events are not in the in_event_mask of every
state that can be reached with the child still running:

* LCHAN_ST_UNUSED: entered from WAIT_AFTER_ERROR after the error timer
  fires, while a DLCX triggered at error time may still be in flight.
* LCHAN_ST_WAIT_AFTER_ERROR: already handles LCHAN_EV_RTP_RELEASED but
  misses LCHAN_EV_RTP_ERROR (e.g. CRCX timeout arriving after the
  NACK was handled).

Add the missing events to both states' in_event_mask and provide a
no-op handler in lchan_fsm_unused() so that the assert is not hit.

Change-Id: Ie6333bd941e4e5a6ddf0e3f113b8764e8bc2bbc0
---
M src/osmo-bsc/lchan_fsm.c
1 file changed, 8 insertions(+), 0 deletions(-)

Approvals:
  fixeria: Looks good to me, approved
  Jenkins Builder: Verified
  dexter: Looks good to me, but someone else must approve
  laforge: Looks good to me, but someone else must approve




diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index 55875f0..524d66e 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -736,6 +736,11 @@
                lchan_fsm_state_chg(LCHAN_ST_WAIT_TS_READY);
                break;

+       case LCHAN_EV_RTP_RELEASED:
+       case LCHAN_EV_RTP_ERROR:
+               /* Ignore late lchan_rtp_fsm events arriving after the lchan is 
back to UNUSED. */
+               break;
+
        default:
                OSMO_ASSERT(false);
        }
@@ -1710,6 +1715,8 @@
                .action = lchan_fsm_unused,
                .in_event_mask = 0
                        | S(LCHAN_EV_ACTIVATE)
+                       | S(LCHAN_EV_RTP_RELEASED) /* ignore late lchan_rtp_fsm 
release events */
+                       | S(LCHAN_EV_RTP_ERROR) /* ignore late lchan_rtp_fsm 
error events */
                        ,
                .out_state_mask = 0
                        | S(LCHAN_ST_WAIT_TS_READY)
@@ -1869,6 +1876,7 @@
                .onenter = lchan_fsm_wait_after_error_onenter,
                .in_event_mask = 0
                        | S(LCHAN_EV_RTP_RELEASED) /* ignore late lchan_rtp_fsm 
release events */
+                       | S(LCHAN_EV_RTP_ERROR) /* ignore late lchan_rtp_fsm 
error events */
                        ,
                .out_state_mask = 0
                        | S(LCHAN_ST_UNUSED)

--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/42591?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ie6333bd941e4e5a6ddf0e3f113b8764e8bc2bbc0
Gerrit-Change-Number: 42591
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <[email protected]>
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: neels <[email protected]>

Reply via email to