Change in osmo-bsc[master]: GSCON: avoid sending clear when not connected

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

dexter gerrit-no-reply at lists.osmocom.org
Fri Aug 3 14:22:18 UTC 2018


dexter has uploaded this change for review. ( https://gerrit.osmocom.org/10333


Change subject: GSCON: avoid sending clear when not connected
......................................................................

GSCON: avoid sending clear when not connected

The function gscon_lchan_releasing() may be called randomly by any other
entity. It then sets the FSM state to ST_CLEARING and sends a BSSMAP
CLEAR REQUEST by using gscon_bssmap_clear()

Normally gscon_bssmap_clear() protects against sending connection
oriented data when no connection is present. This is done by checking
if the FSM state is ST_INIT or ST_WAIT_CC. If yes, then nothing is sent.

Now gscon_lchan_releasing() defeats this check by first setting the FSM
to ST_CLEARING and then trying to send. This causes
osmo_bsc_sigtran_send() to be called and the assertion
OSMO_ASSERT(conn->sccp.msc); blows because we never had a connection so
sccp.msc is unpopulated.

We have the possibility to get around the problem by first checking if
we are in ST_CLEARING. If yes, we do nothing. If not we still must be in
ST_INIT when we never had a connection before. So we may call
on_bssmap_clear() without any problem and then set the state to
ST_CLEARING.

OS#3446

Change-Id: I4eaa983702224e5995a388ea9890ee04212eb569
---
M src/osmo-bsc/bsc_subscr_conn_fsm.c
1 file changed, 3 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/33/10333/1

diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index 81fe9f6..bc7539b 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -627,9 +627,10 @@
 		conn->lchan = NULL;
 	}
 	if (!conn->lchan) {
-		if (conn->fi->state != ST_CLEARING)
+		if (conn->fi->state != ST_CLEARING) {
+			gscon_bssmap_clear(conn, GSM0808_CAUSE_EQUIPMENT_FAILURE);
 			osmo_fsm_inst_state_chg(conn->fi, ST_CLEARING, 60, 999);
-		gscon_bssmap_clear(conn, GSM0808_CAUSE_EQUIPMENT_FAILURE);
+		}
 	}
 }
 

-- 
To view, visit https://gerrit.osmocom.org/10333
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4eaa983702224e5995a388ea9890ee04212eb569
Gerrit-Change-Number: 10333
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180803/aeb275c7/attachment.htm>


More information about the gerrit-log mailing list