fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-sgsn/+/42594?usp=email )


Change subject: gprs_gmm: gsm48_rx_gmm_att_req(): drop stale PDP contexts on 
re-Attach
......................................................................

gprs_gmm: gsm48_rx_gmm_att_req(): drop stale PDP contexts on re-Attach

When an MS sends an Attach Request with a known IMSI or P-TMSI, it
implies the MS has restarted and lost all its PDP context state.  The
SGSN must clean up any PDP contexts it still holds for that subscriber;
otherwise it will not create new ones upon subsequent PDP Context
Activation, causing data connectivity failure after a device reboot.

Change-Id: I20c1f5f741275115635188b2f4b1c5fe7c6e40f1
Related: OS#6922
---
M src/sgsn/gprs_gmm.c
1 file changed, 22 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/94/42594/1

diff --git a/src/sgsn/gprs_gmm.c b/src/sgsn/gprs_gmm.c
index 3d4b940..fe7d4b4 100644
--- a/src/sgsn/gprs_gmm.c
+++ b/src/sgsn/gprs_gmm.c
@@ -1336,6 +1336,17 @@
                                goto rejected;
                        }
                        OSMO_STRLCPY_ARRAY(ctx->imsi, mi.imsi);
+               } else {
+                       /* A re-Attach from a known IMSI means the MS has 
restarted
+                        * and lost its PDP state. Clean up stale PDP contexts 
so the
+                        * MS can activate new ones successfully. */
+                       struct sgsn_pdp_ctx *pdp, *pdp2;
+                       llist_for_each_entry_safe(pdp, pdp2, &ctx->pdp_list, 
list) {
+                               LOGMMCTXP(LOGL_NOTICE, ctx,
+                                       "Re-Attach: Dropping stale PDP context 
for NSAPI=%u\n",
+                                       pdp->nsapi);
+                               sgsn_pdp_ctx_terminate(pdp);
+                       }
                }
                break;
        case GSM_MI_TYPE_TMSI:
@@ -1354,6 +1365,17 @@
                                goto rejected;
                        }
                        ctx->p_tmsi = mi.tmsi;
+               } else {
+                       /* A re-Attach from a known P-TMSI means the MS has 
restarted
+                        * and lost its PDP state. Clean up stale PDP contexts 
so the
+                        * MS can activate new ones successfully. */
+                       struct sgsn_pdp_ctx *pdp, *pdp2;
+                       llist_for_each_entry_safe(pdp, pdp2, &ctx->pdp_list, 
list) {
+                               LOGMMCTXP(LOGL_NOTICE, ctx,
+                                       "Re-Attach: Dropping stale PDP context 
for NSAPI=%u\n",
+                                       pdp->nsapi);
+                               sgsn_pdp_ctx_terminate(pdp);
+                       }
                }
                break;
        default:

--
To view, visit https://gerrit.osmocom.org/c/osmo-sgsn/+/42594?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: I20c1f5f741275115635188b2f4b1c5fe7c6e40f1
Gerrit-Change-Number: 42594
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>

Reply via email to