pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/40695?usp=email )
Change subject: xua_as_fsm: Fix wrong pointer cast during XUA_ASPAS_ASP_DOWN_IND ......................................................................
xua_as_fsm: Fix wrong pointer cast during XUA_ASPAS_ASP_DOWN_IND
Change-Id: Ied523e080419723e0a3eb2f8103897b241bff41f --- M src/xua_as_fsm.c M src/xua_as_fsm.h 2 files changed, 17 insertions(+), 9 deletions(-)
Approvals: fixeria: Looks good to me, but someone else must approve pespin: Looks good to me, approved osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c index 7afcb6d..c39132b 100644 --- a/src/xua_as_fsm.c +++ b/src/xua_as_fsm.c @@ -586,14 +586,8 @@
switch (event) { case XUA_ASPAS_ASP_DOWN_IND: - case XUA_ASPAS_ASP_INACTIVE_IND: - inact_ind_pars = data; - if (check_any_other_asp_in_active(xafp->as, inact_ind_pars->asp)) { - if (event == XUA_ASPAS_ASP_INACTIVE_IND && inact_ind_pars->asp_requires_notify) { - fill_notify_statchg_pars(fi, &npar); - tx_notify(inact_ind_pars->asp, &npar); - } /* ASP_DOWN_IND: ignore, nothing to be sent */ - } else { + asp = data; + if (!check_any_other_asp_in_active(xafp->as, asp)) { uint32_t recovery_msec = xafp->as->cfg.recovery_timeout_msec; osmo_fsm_inst_state_chg(fi, XUA_AS_S_PENDING, 0, 0); /* Start T(r) */ @@ -602,6 +596,20 @@ * recovery or T(r) expiry */ } break; + case XUA_ASPAS_ASP_INACTIVE_IND: + inact_ind_pars = data; + if (!check_any_other_asp_in_active(xafp->as, inact_ind_pars->asp)) { + uint32_t recovery_msec = xafp->as->cfg.recovery_timeout_msec; + osmo_fsm_inst_state_chg(fi, XUA_AS_S_PENDING, 0, 0); + /* Start T(r) */ + osmo_timer_schedule(&xafp->recovery.t_r, MSEC_TO_S_US(recovery_msec)); + /* FIXME: Queue all signalling messages until + * recovery or T(r) expiry */ + } else if (inact_ind_pars->asp_requires_notify) { + fill_notify_statchg_pars(fi, &npar); + tx_notify(inact_ind_pars->asp, &npar); + } + break; case XUA_ASPAS_ASP_ACTIVE_IND: asp = data; /* RFC466 sec 4.3.4.3 ASP Active Procedures*/ diff --git a/src/xua_as_fsm.h b/src/xua_as_fsm.h index 08f626b..5f6c7f3 100644 --- a/src/xua_as_fsm.h +++ b/src/xua_as_fsm.h @@ -21,7 +21,7 @@
enum xua_as_event { XUA_ASPAS_ASP_INACTIVE_IND, /* param: struct xua_as_event_asp_inactive_ind_pars* */ - XUA_ASPAS_ASP_DOWN_IND, + XUA_ASPAS_ASP_DOWN_IND, /* param: struct osmo_ss7_asp* */ XUA_ASPAS_ASP_ACTIVE_IND, XUA_AS_E_RECOVERY_EXPD, XUA_AS_E_TRANSFER_REQ, /* param: struct xua_msg*, ownership transferred. */