aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-04-17 00:24:41 +0200
committerHarald Welte <laforge@gnumonks.org>2017-04-17 00:24:41 +0200
commitc36be1c06a3d15fddc167fbc9717d5163fdafc1d (patch)
treed2478d63f82284c74571d5bd13cb2e6b8f7af4f5
parent3a57553145edb0ef708d7482cff8106d425cb34d (diff)
xua_as_fsm: We might change to AS_INACTIVE after T(r) expiry
Depending on whether or not any ASP is INACTIVE, we need to go to AS_INACTIVE or AS_DOWN after T(r) expiry in the xua_as_fsm. Found by m3ua-testtool testcase m3ua-sgp-aspsm-o-003 Change-Id: Iad6b176a5c95a28fbd5ba437696c2e6e160bdb00
-rw-r--r--src/xua_as_fsm.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c
index 282a6bf..36aed64 100644
--- a/src/xua_as_fsm.c
+++ b/src/xua_as_fsm.c
@@ -296,7 +296,10 @@ static void xua_as_fsm_pending(struct osmo_fsm_inst *fi, uint32_t event, void *d
LOGPFSM(fi, "T(r) expired; dropping queued messages\n");
while ((msg = msgb_dequeue(&xafp->recovery.queued_msgs)))
talloc_free(msg);
- osmo_fsm_inst_state_chg(fi, XUA_AS_S_DOWN, 0, 0);
+ if (check_any_other_asp_not_down(xafp->as, NULL))
+ osmo_fsm_inst_state_chg(fi, XUA_AS_S_INACTIVE, 0, 0);
+ else
+ osmo_fsm_inst_state_chg(fi, XUA_AS_S_DOWN, 0, 0);
break;
case XUA_AS_E_TRANSFER_REQ:
/* enqueue the to-be-transferred message */