Change in osmo-bsc[master]: timeslot FSM: fix infinite recursion on failure to send PDCH ACT

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Sat Jul 28 10:43:59 UTC 2018


Neels Hofmeyr has submitted this change and it was merged. ( https://gerrit.osmocom.org/10191 )

Change subject: timeslot FSM: fix infinite recursion on failure to send PDCH ACT
......................................................................

timeslot FSM: fix infinite recursion on failure to send PDCH ACT

If PDCH ACT sending fails and we go back to UNUSED, the UNUSED onenter goes
right back to PDCH ACT and we loop. Avoid by going straight to broken state.

Actually, if we can't send messages, the timeslot is obviously broken, so also
enter the broken state if PDCH deactivation fails to be sent out.

Change-Id: Iebaffd0547a9651c5ba435b54dedab99c2cfdd31
---
M src/osmo-bsc/timeslot_fsm.c
1 file changed, 7 insertions(+), 4 deletions(-)

Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved



diff --git a/src/osmo-bsc/timeslot_fsm.c b/src/osmo-bsc/timeslot_fsm.c
index 245ce76..4514f34 100644
--- a/src/osmo-bsc/timeslot_fsm.c
+++ b/src/osmo-bsc/timeslot_fsm.c
@@ -345,9 +345,11 @@
 
 	rc = rsl_tx_dyn_ts_pdch_act_deact(ts, true);
 
-	/* On error, we couldn't send the activation message and remain unused. */
+	/* On error, we couldn't send the activation message. If we can't send messages, we're broken.
+	 * (Also avoiding a recursion loop: enter UNUSED, try to PDCH act, fail, enter UNUSED, try to
+	 * PDCH act,...). */
 	if (rc)
-		ts_fsm_error(fi, TS_ST_UNUSED, "Unable to send PDCH activation");
+		ts_fsm_error(fi, TS_ST_BORKEN, "Unable to send PDCH activation");
 }
 
 static void ts_fsm_wait_pdch_act(struct osmo_fsm_inst *fi, uint32_t event, void *data)
@@ -464,9 +466,10 @@
 
 	rc = rsl_tx_dyn_ts_pdch_act_deact(ts, false);
 
-	/* On error, we couldn't send the deactivation message and remain in PDCH. */
+	/* On error, we couldn't send the deactivation message. If we can't send messages, we're broken.
+	 */
 	if (rc)
-		ts_fsm_error(fi, TS_ST_PDCH, "Unable to send PDCH deactivation");
+		ts_fsm_error(fi, TS_ST_BORKEN, "Unable to send PDCH deactivation");
 }
 
 static void ts_fsm_wait_pdch_deact(struct osmo_fsm_inst *fi, uint32_t event, void *data)

-- 
To view, visit https://gerrit.osmocom.org/10191
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Iebaffd0547a9651c5ba435b54dedab99c2cfdd31
Gerrit-Change-Number: 10191
Gerrit-PatchSet: 2
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180728/152ec877/attachment.htm>


More information about the gerrit-log mailing list