diff options
Diffstat (limited to 'openbsc/src/gsm_04_08.c')
-rw-r--r-- | openbsc/src/gsm_04_08.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c index 65940a0f5..98f2d5603 100644 --- a/openbsc/src/gsm_04_08.c +++ b/openbsc/src/gsm_04_08.c @@ -329,9 +329,10 @@ static int authorize_subscriber(struct gsm_loc_updating_operation *loc, switch (subscriber->net->auth_policy) { case GSM_AUTH_POLICY_CLOSED: return subscriber->authorized; + case GSM_AUTH_POLICY_TOKEN: + return (subscriber->flags & GSM_SUBSCRIBER_FIRST_CONTACT); case GSM_AUTH_POLICY_ACCEPT_ALL: return 1; - case GSM_AUTH_POLICY_TOKEN: default: return 0; } @@ -1152,12 +1153,8 @@ static int mm_rx_id_resp(struct msgb *msg) /* look up subscriber based on IMSI, create if not found */ if (!lchan->subscr) { lchan->subscr = subscr_get_by_imsi(net, mi_string); - } - if (!lchan->subscr) { - lchan->subscr = db_create_subscriber(net, mi_string); - if (lchan->subscr->flags & GSM_SUBSCRIBER_FIRST_CONTACT) { - dispatch_signal(SS_SUBSCR, S_SUBSCR_FIRST_CONTACT, &lchan->subscr); - } + if (!lchan->subscr) + lchan->subscr = db_create_subscriber(net, mi_string); } if (lchan->loc_operation) lchan->loc_operation->waiting_for_imsi = 0; @@ -1254,9 +1251,6 @@ static int mm_rx_loc_upd_req(struct msgb *msg) if (!subscr) { subscr = db_create_subscriber(bts->network, mi_string); } - if (subscr->flags & GSM_SUBSCRIBER_FIRST_CONTACT) { - dispatch_signal(SS_SUBSCR, S_SUBSCR_FIRST_CONTACT, &subscr); - } break; case GSM_MI_TYPE_TMSI: DEBUGPC(DMM, "\n"); |