diff options
Diffstat (limited to 'src/lu_fsm.c')
-rw-r--r-- | src/lu_fsm.c | 13 |
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); } |