diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-04-17 00:24:41 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-04-17 00:24:41 +0200 |
commit | c36be1c06a3d15fddc167fbc9717d5163fdafc1d (patch) | |
tree | d2478d63f82284c74571d5bd13cb2e6b8f7af4f5 | |
parent | 3a57553145edb0ef708d7482cff8106d425cb34d (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.c | 5 |
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 */ |