diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-11-21 16:31:00 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-11-21 16:32:27 +0100 |
commit | 567500b877ac75744642897cb5d12411feafd541 (patch) | |
tree | b8a95689f0ce29af81dcf1c4b2fe9b9a07f17fcc | |
parent | b71d2c5ddde494658784d4568b4fdaa7b0067f45 (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
-rw-r--r-- | src/sgsn/gprs_gmm.c | 8 |
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, |