[PATCH] osmo-msc[master]: gsm_04_08: Ensure we close the SCCP connection on errors

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/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sun Mar 18 21:38:28 UTC 2018


Review at  https://gerrit.osmocom.org/7376

gsm_04_08: Ensure we close the SCCP connection on errors

If we don't yet have a connection FSM (most likely processing the
first L3 message), we must make sure to close the SCCP connection
in case there's any error in processing the L3 message.

Change-Id: I6b295cea301427de7a2cd1769a3604c545ca7d68
---
M src/libmsc/gsm_04_08.c
1 file changed, 10 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/76/7376/1

diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index 437cb59..e44b8da 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -3448,12 +3448,6 @@
 	gh = msgb_l3(msg);
 	pdisc = gsm48_hdr_pdisc(gh);
 
-	if (gsm0407_is_duplicate(conn, msg)) {
-		LOGP(DRLL, LOGL_NOTICE, "%s: Discarding duplicate L3 message\n",
-			(conn && conn->vsub) ? vlr_subscr_name(conn->vsub) : "UNKNOWN");
-		return 0;
-	}
-
 	LOGP(DRLL, LOGL_DEBUG, "Dispatching 04.08 message %s (0x%x:0x%x)\n",
 	     gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)),
 	     pdisc, gsm48_hdr_msg_type(gh));
@@ -3464,7 +3458,8 @@
 		     "subscr %s: Message not permitted for initial conn: %s\n",
 		     vlr_subscr_name(conn->vsub),
 		     gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)));
-		return -EACCES;
+		msc_subscr_conn_close(conn, 0);
+		return 0;
 	}
 
 	if (conn->vsub && conn->vsub->cs.attached_via_ran != conn->via_ran) {
@@ -3474,7 +3469,14 @@
 		     vlr_subscr_name(conn->vsub),
 		     ran_type_name(conn->vsub->cs.attached_via_ran),
 		     ran_type_name(conn->via_ran));
-		return -EACCES;
+		msc_subscr_conn_close(conn, 0);
+		return 0;
+	}
+
+	if (gsm0407_is_duplicate(conn, msg)) {
+		LOGP(DRLL, LOGL_NOTICE, "%s: Discarding duplicate L3 message\n",
+			(conn && conn->vsub) ? vlr_subscr_name(conn->vsub) : "UNKNOWN");
+		return 0;
 	}
 
 #if 0

-- 
To view, visit https://gerrit.osmocom.org/7376
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6b295cea301427de7a2cd1769a3604c545ca7d68
Gerrit-PatchSet: 1
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list