diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2014-12-19 18:08:48 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2015-01-18 13:23:13 +0100 |
commit | 771573c535ae97ce7c7ed7694670e3b98eeae48a (patch) | |
tree | b352cd778657c7e498f6675be0deea246cc0da1b /openbsc/src/gprs/sgsn_auth.c | |
parent | a071c1ccc07074272f6cb7626b781f45f85564c6 (diff) |
sgsn: Add global require_update_location flag
This flag is used to determine, whether the Update Location procedure
shall be invoked. This is currently only set, when the 'remote'
authorization policy is set. When the flag is set, sgsn_auth_update
will not never be called directly by sgsn_auth_request, if an Attach
Request procedure is pending, even if the remote connection fails for
some reason.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/src/gprs/sgsn_auth.c')
-rw-r--r-- | openbsc/src/gprs/sgsn_auth.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/openbsc/src/gprs/sgsn_auth.c b/openbsc/src/gprs/sgsn_auth.c index 83372e857..9cc67db1c 100644 --- a/openbsc/src/gprs/sgsn_auth.c +++ b/openbsc/src/gprs/sgsn_auth.c @@ -161,9 +161,9 @@ int sgsn_auth_request(struct sgsn_mm_ctx *mmctx) return 0; } - need_update_location = - mmctx->subscr == NULL || - mmctx->pending_req == GSM48_MT_GMM_ATTACH_REQ; + need_update_location = sgsn->cfg.require_update_location && + (mmctx->subscr == NULL || + mmctx->pending_req == GSM48_MT_GMM_ATTACH_REQ); /* This has the side effect of registering the subscr with the mmctx */ subscr = gprs_subscr_get_or_create_by_mmctx(mmctx); @@ -191,8 +191,11 @@ int sgsn_auth_request(struct sgsn_mm_ctx *mmctx) } else if (need_update_location) { LOGMMCTXP(LOGL_INFO, mmctx, "Missing information, requesting subscriber data\n"); - if (gprs_subscr_request_update_location(mmctx) >= 0) + rc = gprs_subscr_request_update_location(mmctx); + if (rc >= 0) return 0; + + return rc; } sgsn_auth_update(mmctx); |