pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-bsc/+/33615 )

 (

4 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted 
one.
 )Change subject: ASCI: Indicate release of subscriber connection to VGCS FSM
......................................................................

ASCI: Indicate release of subscriber connection to VGCS FSM

If an SCCP connection or channel is released or fails, send indications
towards VGCS FSM, so that it can terminate the state machines belonging
to these connections.

Change-Id: Ia74db9ba47fea11b359ac01269f714482485d464
Related: OS#4852
---
M src/osmo-bsc/bsc_subscr_conn_fsm.c
1 file changed, 39 insertions(+), 0 deletions(-)

Approvals:
  pespin: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved
  Jenkins Builder: Verified




diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c 
b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index d9abf10..f1f48bc 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -213,6 +213,12 @@
        if (conn->lcs.loc_req)
                osmo_fsm_inst_dispatch(conn->lcs.loc_req->fi, 
LCS_LOC_REQ_EV_CONN_CLEAR, NULL);

+       if (conn->vgcs_call.fi)
+               osmo_fsm_inst_dispatch(conn->vgcs_call.fi, VGCS_EV_CLEANUP, 
NULL);
+
+       if (conn->vgcs_chan.fi)
+               osmo_fsm_inst_dispatch(conn->vgcs_chan.fi, VGCS_EV_CLEANUP, 
NULL);
+
        gscon_release_lchans(conn, true, 
bsc_gsm48_rr_cause_from_gsm0808_cause(conn->clear_cause));
        osmo_mgcpc_ep_clear(conn->user_plane.mgw_endpoint);

@@ -247,6 +253,8 @@
                conn->lchan = NULL;
        if (conn->ho.fi && conn->ho.new_lchan == lchan)
                conn->ho.new_lchan = NULL;
+       if (conn->vgcs_chan.new_lchan == lchan)
+               conn->vgcs_chan.new_lchan = NULL;
        if (conn->assignment.new_lchan == lchan)
                conn->assignment.new_lchan = NULL;
        lchan_release(lchan, do_rr_release, err, cause_rr,
@@ -953,6 +961,10 @@
                if (conn->ho.fi)
                        osmo_fsm_inst_dispatch(conn->ho.fi, HO_EV_LCHAN_ERROR, 
lchan);
        }
+       if (conn->vgcs_chan.new_lchan == lchan) {
+               if (conn->vgcs_chan.fi)
+                       osmo_fsm_inst_dispatch(conn->vgcs_chan.fi, 
VGCS_EV_LCHAN_ERROR, lchan);
+       }
        if (conn->lchan == lchan) {
                lchan_forget_conn(conn->lchan);
                conn->lchan = NULL;
@@ -989,6 +1001,10 @@
                conn->ho.new_lchan = NULL;
                detach_label = "ho.new_lchan";
        }
+       if (conn->vgcs_chan.new_lchan == lchan) {
+               conn->vgcs_chan.new_lchan = NULL;
+               detach_label = "vgcs.new_lchan";
+       }
        if (conn->lchan == lchan) {
                conn->lchan = NULL;
                detach_label = "primary lchan";
@@ -1007,6 +1023,7 @@
        if (!conn->lchan
            && !conn->ho.new_lchan
            && !conn->assignment.new_lchan
+           && !conn->vgcs_chan.new_lchan
            && !conn->lcs.loc_req)
                gscon_bssmap_clear(conn, GSM0808_CAUSE_EQUIPMENT_FAILURE);
 }
@@ -1028,6 +1045,7 @@
        conn->ho.created_ci_for_msc = NULL;
        lchan_forget_mgw_endpoint(conn->lchan);
        lchan_forget_mgw_endpoint(conn->assignment.new_lchan);
+       lchan_forget_mgw_endpoint(conn->vgcs_chan.new_lchan);
        lchan_forget_mgw_endpoint(conn->ho.new_lchan);
 }

@@ -1117,6 +1135,7 @@

        lchan_forget_conn(conn->lchan);
        lchan_forget_conn(conn->assignment.new_lchan);
+       lchan_forget_conn(conn->vgcs_chan.new_lchan);
        lchan_forget_conn(conn->ho.new_lchan);

        lb_close_conn(conn);
@@ -1169,6 +1188,12 @@
                conn->lcls.fi = NULL;
        }

+       if (conn->vgcs_call.fi)
+               osmo_fsm_inst_dispatch(conn->vgcs_call.fi, VGCS_EV_CLEANUP, 
NULL);
+
+       if (conn->vgcs_chan.fi)
+               osmo_fsm_inst_dispatch(conn->vgcs_chan.fi, VGCS_EV_CLEANUP, 
NULL);
+
        LOGPFSML(fi, LOGL_DEBUG, "Releasing all lchans (if any) because this 
conn is terminating\n");
        gscon_release_lchans(conn, true, 
bsc_gsm48_rr_cause_from_gsm0808_cause(conn->clear_cause));


--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/33615
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ia74db9ba47fea11b359ac01269f714482485d464
Gerrit-Change-Number: 33615
Gerrit-PatchSet: 8
Gerrit-Owner: jolly <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to