From 10a8847d671260da5d94d76c5751424f2f367a0e Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Thu, 15 Jan 2015 17:50:16 +0100 Subject: 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 --- openbsc/src/gprs/gprs_subscriber.c | 5 +---- openbsc/tests/sgsn/sgsn_test.c | 3 +-- 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) */ -- cgit v1.2.3