summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-01-15 17:50:16 +0100
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-01-19 08:30:01 +0100
commit10a8847d671260da5d94d76c5751424f2f367a0e (patch)
tree376a168ac9ab9942537b1bbd5f5f773149ac75c9
parent1635150f2ccfb3cba636b42ac8aa1c916e0ae8ec (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) */