aboutsummaryrefslogtreecommitdiffstats
path: root/src/lu_fsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lu_fsm.c')
-rw-r--r--src/lu_fsm.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/lu_fsm.c b/src/lu_fsm.c
index b5493db..8599f59 100644
--- a/src/lu_fsm.c
+++ b/src/lu_fsm.c
@@ -136,7 +136,7 @@ static void lu_start(struct osmo_gsup_req *update_location_req)
}
if (db_subscr_get_by_imsi(g_hlr->dbc, update_location_req->gsup.imsi, &lu->subscr) < 0) {
- lu_failure(lu, GMM_CAUSE_IMSI_UNKNOWN, "Subscriber does not exist");
+ lu_failure(lu, g_hlr->reject_cause, "Subscriber does not exist");
return;
}
@@ -241,13 +241,11 @@ static void lu_fsm_wait_insert_data_result_onenter(struct osmo_fsm_inst *fi, uin
struct lu *lu = fi->priv;
struct hlr_subscriber *subscr = &lu->subscr;
struct osmo_gsup_message gsup;
- uint8_t msisdn_enc[OSMO_GSUP_MAX_CALLED_PARTY_BCD_LEN];
- uint8_t apn[APN_MAXLEN];
if (osmo_gsup_create_insert_subscriber_data_msg(&gsup, subscr->imsi,
- subscr->msisdn, msisdn_enc, sizeof(msisdn_enc),
- apn, sizeof(apn),
- lu->is_ps? OSMO_GSUP_CN_DOMAIN_PS : OSMO_GSUP_CN_DOMAIN_CS)) {
+ subscr->msisdn,
+ lu->is_ps ? OSMO_GSUP_CN_DOMAIN_PS : OSMO_GSUP_CN_DOMAIN_CS,
+ OTC_SELECT)) {
lu_failure(lu, GMM_CAUSE_NET_FAIL, "cannot encode Insert Subscriber Data message");
return;
}
@@ -277,6 +275,7 @@ void lu_fsm_wait_insert_data_result(struct osmo_fsm_inst *fi, uint32_t event, vo
case OSMO_GSUP_MSGT_INSERT_DATA_ERROR:
lu_failure(lu, GMM_CAUSE_NET_FAIL, "Rx %s", osmo_gsup_message_type_name(req->gsup.message_type));
+ osmo_gsup_req_free(req);
break;
default:
@@ -314,7 +313,7 @@ static struct osmo_fsm lu_fsm = {
.cleanup = lu_fsm_cleanup,
};
-static __attribute__((constructor)) void lu_fsm_init()
+static __attribute__((constructor)) void lu_fsm_init(void)
{
OSMO_ASSERT(osmo_fsm_register(&lu_fsm) == 0);
}