gprs: Use 'Network failure' as default cause

This commit adds a check after a GSUP message has been decoded
whether it is an error message and does not contain a cause value.
If his is the case, the cause value is set to 'Network failure', so
that this cause if effectively the default value for error messages.

Sponsored-by: On-Waves ehf
This commit is contained in:
Jacob Erlbeck 2015-01-29 14:17:51 +01:00 committed by Holger Hans Peter Freyther
parent 85ba655788
commit 9ff82892da
2 changed files with 13 additions and 0 deletions

View File

@ -514,6 +514,9 @@ int gprs_subscr_rx_gsup_message(struct msgb *msg)
return -GMM_CAUSE_INV_MAND_INFO;
}
if (!gsup_msg.cause && GPRS_GSUP_IS_MSGT_ERROR(gsup_msg.message_type))
gsup_msg.cause = GMM_CAUSE_NET_FAIL;
subscr = gprs_subscr_get_by_imsi(gsup_msg.imsi);
if (!subscr) {

View File

@ -451,6 +451,11 @@ static void test_subscriber_gsup(void)
0x02, 0x01, 0x02, /* IMSI unknown in HLR */
};
static const uint8_t purge_ms_err_no_cause[] = {
0x0d,
TEST_GSUP_IMSI1_IE,
};
static const uint8_t purge_ms_res[] = {
0x0e,
TEST_GSUP_IMSI1_IE,
@ -588,6 +593,11 @@ static void test_subscriber_gsup(void)
sizeof(purge_ms_err));
OSMO_ASSERT(rc == -GMM_CAUSE_IMSI_UNKNOWN);
/* Inject PurgeMsErr() GSUP message */
rc = rx_gsup_message(purge_ms_err_no_cause,
sizeof(purge_ms_err_no_cause));
OSMO_ASSERT(rc == -GMM_CAUSE_NET_FAIL);
/* Inject InsertSubscrData GSUP message (unknown IMSI) */
last_updated_subscr = NULL;
rc = rx_gsup_message(insert_data_req, sizeof(insert_data_req));