Reject Update location using cause from the HLR
I'm not sure if there is any point in continuing when we have a loc err cause that evaluate to EACCES in check_cause() That is, any of the following: GMM_CAUSE_IMSI_UNKNOWN = 0x02, GMM_CAUSE_ILLEGAL_MS = 0x03, GMM_CAUSE_IMEI_NOT_ACCEPTED = 0x05, GMM_CAUSE_ILLEGAL_ME = 0x06, GMM_CAUSE_GPRS_NOTALLOWED = 0x07, GMM_CAUSE_GPRS_OTHER_NOTALLOWED = 0x08, GMM_CAUSE_MS_ID_NOT_DERIVED = 0x09, GMM_CAUSE_IMPL_DETACHED = 0x0a, GMM_CAUSE_PLMN_NOTALLOWED = 0x0b, GMM_CAUSE_LA_NOTALLOWED = 0x0c, GMM_CAUSE_ROAMING_NOTALLOWED = 0x0d, GMM_CAUSE_NO_GPRS_PLMN = 0x0e, (note that GMM_CAUSE_NO_SUIT_CELL_IN_LA is not included) So if we got any of those from the HLR let's just dispatch E_REJECT instead of waiting for T3350 to expire and then the attach fsm will do just that with GMM_CAUSE_NET_FAIL and a misleading error log message that the HLR did not repond. Change-Id: I6f1a3f8343a9cd66567edc55719cd166e7098da9
This commit is contained in:
parent
2a89bbf66f
commit
3e30082646
|
@ -28,6 +28,7 @@
|
|||
#include <osmocom/core/logging.h>
|
||||
#include <osmocom/sgsn/gprs_subscriber.h>
|
||||
#include <osmocom/gsupclient/gsup_client.h>
|
||||
#include <osmocom/sgsn/gprs_gmm_attach.h>
|
||||
|
||||
#include <osmocom/sgsn/sgsn.h>
|
||||
#include <osmocom/sgsn/mmctx.h>
|
||||
|
@ -537,9 +538,8 @@ static int gprs_subscr_handle_gsup_upd_loc_err(struct gprs_subscr *subscr,
|
|||
get_value_string(gsm48_gmm_cause_names, gsup_msg->cause),
|
||||
gsup_msg->cause);
|
||||
|
||||
subscr->authorized = 0;
|
||||
subscr->sgsn_data->error_cause = gsup_msg->cause;
|
||||
gprs_subscr_update_auth_info(subscr);
|
||||
osmo_fsm_inst_dispatch(subscr->sgsn_data->mm->gmm_att_req.fsm,
|
||||
E_REJECT, (void *) gsup_msg->cause);
|
||||
break;
|
||||
|
||||
case EHOSTUNREACH:
|
||||
|
|
Loading…
Reference in New Issue