aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-04-08 18:02:20 +0200
committerDaniel Willmann <dwillmann@sysmocom.de>2016-04-08 18:04:04 +0200
commitfafb0742683fb069ea88355c513290c6bb4373b4 (patch)
tree8c0cb88a8373d1815c1eaff961c33bd7b0b6cad0 /openbsc
parenta3dfdcb308ca72255819fa4cdb114b85d8c672bc (diff)
sgsn: Reset mm ctx state in service request and after authorization
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/gprs/gprs_gmm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index 2b8581be6..a3a8f4aed 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -777,6 +777,7 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx)
"no pending request, authorization completed\n");
break;
case GSM48_MT_GMM_ATTACH_REQ:
+ ctx->pending_req = 0;
extract_subscr_msisdn(ctx);
extract_subscr_hlr(ctx);
@@ -802,6 +803,7 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx)
return rc;
case GSM48_MT_GMM_RA_UPD_REQ:
+ ctx->pending_req = 0;
/* Send RA UPDATE ACCEPT */
return gsm48_tx_gmm_ra_upd_ack(ctx);
@@ -1545,6 +1547,8 @@ static int gsm48_rx_gmm_service_req(struct sgsn_mm_ctx *ctx, struct msgb *msg)
goto rejected;
}
+ ctx->mm_state = GMM_COMMON_PROC_INIT;
+
ctx->iu.service.type = service_type;
/* TODO: Handle those only in case of accept? */