aboutsummaryrefslogtreecommitdiffstats
path: root/src/sgsn/gprs_gmm.c
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-11-21 16:31:00 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2019-11-21 16:32:27 +0100
commit567500b877ac75744642897cb5d12411feafd541 (patch)
treeb8a95689f0ce29af81dcf1c4b2fe9b9a07f17fcc /src/sgsn/gprs_gmm.c
parentb71d2c5ddde494658784d4568b4fdaa7b0067f45 (diff)
gprs_gmm.c: Send XID reset with received TLLIpespin/fix
Otherwise lower layers will end up using a TLLI from PTMSI which was not yet announced to the MS if it is still not in GMM attached state, as showcased by SGSN_Tests.TC_attach_req_id_req_ra_update. Change-Id: Ide51726abb82f5784eca4ab8d62b2ad8512be843
Diffstat (limited to 'src/sgsn/gprs_gmm.c')
-rw-r--r--src/sgsn/gprs_gmm.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/sgsn/gprs_gmm.c b/src/sgsn/gprs_gmm.c
index 7a097608e..61da29fe5 100644
--- a/src/sgsn/gprs_gmm.c
+++ b/src/sgsn/gprs_gmm.c
@@ -1616,8 +1616,12 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
/* mmctx is set to NULL and gprs_llgmm_unassign(llme) will be
called below, let's make sure we don't keep dangling llme
pointers in mmctx (OS#3957, OS#4245). */
- if (mmctx->ran_type == MM_CTX_T_GERAN_Gb)
+ if (mmctx->ran_type == MM_CTX_T_GERAN_Gb) {
mmctx->gb.llme = NULL;
+ //mmctx->gb.llme->tlli = msgb_tlli(msg);
+ /* Update the MM context with the new (i.e. foreign) TLLI */
+ //mmctx->gb.tlli = msgb_tlli(msg);
+ }
mmctx = NULL;
}
@@ -1626,7 +1630,7 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
/* send a XID reset to re-set all LLC sequence numbers
* in the MS */
LOGGBP(llme, DMM, LOGL_NOTICE, "LLC XID RESET\n");
- gprs_llgmm_reset(llme);
+ gprs_llgmm_reset_oldmsg(msg, GPRS_SAPI_GMM, llme);
}
/* The MS has to perform GPRS attach */
/* Device is still IMSI attached for CS but initiate GPRS ATTACH,