sgsn: If there is a subscr don't allow an empty list

This is a left-over from the initial system where no PDP
was provided by the system. For now if there is a subscr
attached and no PDP context provisioned. He is not allowed
to have a data connection.

Update the testcase to create the pdp list entry more
early with a wildcard and then change it to a specific
match.
This commit is contained in:
Holger Hans Peter Freyther 2015-05-24 20:51:17 +08:00
parent 5e4b88cbb2
commit 9270d99f3d
2 changed files with 6 additions and 6 deletions

View File

@ -638,8 +638,7 @@ struct sgsn_ggsn_ctx *sgsn_mm_ctx_find_ggsn_ctx(struct sgsn_mm_ctx *mmctx,
req_apn_str[0] = 0;
}
if (mmctx->subscr == NULL ||
llist_empty(&mmctx->subscr->sgsn_data->pdp_list))
if (mmctx->subscr == NULL)
allow_any_apn = 1;
if (strlen(req_apn_str) == 0 && !allow_any_apn) {

View File

@ -1871,6 +1871,11 @@ static void test_ggsn_selection(void)
actxs[2] = sgsn_apn_ctx_find_alloc("*", "456789");
actxs[2]->ggsn = ggcs[2];
pdp_data = sgsn_subscriber_pdp_data_alloc(s1->sgsn_data);
pdp_data->context_id = 1;
pdp_data->pdp_type = 0x0121;
strncpy(pdp_data->apn_str, "*", sizeof(pdp_data->apn_str)-1);
/* Resolve GGSNs */
tp.lv[GSM48_IE_GSM_APN].len =
@ -1917,10 +1922,6 @@ static void test_ggsn_selection(void)
/* Add PDP data entry to subscriber */
pdp_data = sgsn_subscriber_pdp_data_alloc(s1->sgsn_data);
pdp_data->context_id = 1;
pdp_data->pdp_type = 0x0121;
strncpy(pdp_data->apn_str, "Test.Apn", sizeof(pdp_data->apn_str)-1);
tp.lv[GSM48_IE_GSM_APN].len =