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
Fri Jul 27 14:27:31 UTC 2018


Neels Hofmeyr has uploaded this change for review. ( 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(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/91/10191/1

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: newchange
Gerrit-Change-Id: Iebaffd0547a9651c5ba435b54dedab99c2cfdd31
Gerrit-Change-Number: 10191
Gerrit-PatchSet: 1
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180727/d86a4c06/attachment.htm>


More information about the gerrit-log mailing list