aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2021-04-01 15:29:16 +0200
committerlynxis lazus <lynxis@fe80.eu>2021-04-06 14:30:19 +0000
commitcdb2baaa0cd04cff251d4a1cfcc40b2866fae763 (patch)
tree4d7b1c745ca05fcb3d9bceb7d8fe91bd46eca32d /src
parent5b72247ddeb6cf3564ab442203681df63619355d (diff)
gprs_ns2: sns: ensure the sns->alive state is correct
The SNS fsms also track the NSE however since the NSVC starts now in ALIVE for SNS the SNS must check when synchronize the alive state when entering the ST_CONFIGURED. Related: SYS#5416 Change-Id: Ib6a1cc1fd84959e69c07b72ef780642205d2cd18
Diffstat (limited to 'src')
-rw-r--r--src/gb/gprs_ns2_sns.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gb/gprs_ns2_sns.c b/src/gb/gprs_ns2_sns.c
index b8c44f1f..552e4b8e 100644
--- a/src/gb/gprs_ns2_sns.c
+++ b/src/gb/gprs_ns2_sns.c
@@ -1355,7 +1355,19 @@ static void ns2_sns_st_configured(struct osmo_fsm_inst *fi, uint32_t event, void
static void ns2_sns_st_configured_onenter(struct osmo_fsm_inst *fi, uint32_t old_state)
{
+ struct gprs_ns2_vc *nsvc;
+ struct ns2_sns_state *gss = (struct ns2_sns_state *) fi->priv;
struct gprs_ns2_nse *nse = nse_inst_from_fi(fi);
+ /* NS-VC status updates are only parsed in ST_CONFIGURED.
+ * Do an initial check if there are any nsvc alive atm */
+ llist_for_each_entry(nsvc, &nse->nsvc, list) {
+ if (ns2_vc_is_unblocked(nsvc)) {
+ gss->alive = true;
+ osmo_timer_del(&fi->timer);
+ break;
+ }
+ }
+
ns2_prim_status_ind(nse, NULL, 0, GPRS_NS2_AFF_CAUSE_SNS_CONFIGURED);
}