From 567500b877ac75744642897cb5d12411feafd541 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Thu, 21 Nov 2019 16:31:00 +0100 Subject: gprs_gmm.c: Send XID reset with received TLLI 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 --- src/sgsn/gprs_gmm.c | 8 ++++++-- 1 file 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, -- cgit v1.2.3