summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-01-15 17:50:16 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-01-20 16:12:45 +0100
commit4dedb27d7e7829099bf0873ecd6af3b9b9e570b5 (patch)
tree376a168ac9ab9942537b1bbd5f5f773149ac75c9
parent9999fd9026fbb3f4a7d07a455698230d209dbcb6 (diff)
gprs: Don't create a subscr entry on InsertSubscriberData
Currently gprs_subscr_rx_gsup_message creates a subscriber entry if such an entry doesn't exist for the IMSI within an InsertSubscriberData GSUP message. This behaviour is not compliant to GSM 09.02, 20.3.3.2 (Subscriber data management/SGSN) where it is defined, that an error ("Unidentified subscriber") shall be returned. This patch removes the case distinction, so that an existing subscriber entry is required for all incoming GSUP messages. Sponsored-by: On-Waves ehf
-rw-r--r--openbsc/src/gprs/gprs_subscriber.c5
-rw-r--r--openbsc/tests/sgsn/sgsn_test.c3
2 files changed, 2 insertions, 6 deletions
diff --git a/openbsc/src/gprs/gprs_subscriber.c b/openbsc/src/gprs/gprs_subscriber.c
index e971210ef..271cc7832 100644
--- a/openbsc/src/gprs/gprs_subscriber.c
+++ b/openbsc/src/gprs/gprs_subscriber.c
@@ -536,10 +536,7 @@ int gprs_subscr_rx_gsup_message(struct msgb *msg)
if (!gsup_msg.imsi[0])
return -GMM_CAUSE_INV_MAND_INFO;
- if (gsup_msg.message_type == GPRS_GSUP_MSGT_INSERT_DATA_REQUEST)
- subscr = gprs_subscr_get_or_create(gsup_msg.imsi);
- else
- subscr = gprs_subscr_get_by_imsi(gsup_msg.imsi);
+ subscr = gprs_subscr_get_by_imsi(gsup_msg.imsi);
if (!subscr)
return gprs_subscr_handle_unknown_imsi(&gsup_msg);
diff --git a/openbsc/tests/sgsn/sgsn_test.c b/openbsc/tests/sgsn/sgsn_test.c
index 7050a16ec..c09b16931 100644
--- a/openbsc/tests/sgsn/sgsn_test.c
+++ b/openbsc/tests/sgsn/sgsn_test.c
@@ -573,8 +573,7 @@ static void test_subscriber_gsup(void)
/* Inject InsertSubscrData GSUP message (unknown IMSI) */
last_updated_subscr = NULL;
rc = rx_gsup_message(insert_data_req, sizeof(insert_data_req));
- /* TODO: Remove the comments when this is fixed */
- /* OSMO_ASSERT(rc == -GMM_CAUSE_IMSI_UNKNOWN); */
+ OSMO_ASSERT(rc == -GMM_CAUSE_IMSI_UNKNOWN);
OSMO_ASSERT(last_updated_subscr == NULL);
/* Inject DeleteSubscrData GSUP message (unknown IMSI) */