This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgPau Espin Pedrol has uploaded this change for review. ( https://gerrit.osmocom.org/14286
Change subject: gtp: Document free pdp ctx in non-teardown scenario
......................................................................
gtp: Document free pdp ctx in non-teardown scenario
Code modified actually behaves the same, since gtp_freepdp() also calls
delete cb, and this way it's more consistent with rest of the code base.
Change-Id: Ia47ac792111fe1e9aa68222b32b5da823642206b
---
M gtp/gtp.c
1 file changed, 39 insertions(+), 14 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/86/14286/1
diff --git a/gtp/gtp.c b/gtp/gtp.c
index c57ecff..87aa9f9 100644
--- a/gtp/gtp.c
+++ b/gtp/gtp.c
@@ -2397,13 +2397,26 @@
if (teardown) { /* Remove all contexts */
gtp_freepdp_teardown(gsn, linked_pdp);
} else {
- if (gsn->cb_delete_context)
- gsn->cb_delete_context(pdp);
+ /* If we end up here (no teardown) it means we still
+ have at least another pdp context active for this
+ PDN connection (since last DeleteReq should come
+ with teardown enabled). If the ctx to delete is a
+ secondary ctx, simply free it. If it's the primary
+ ctx, mark it as nodata but don't free it since we
+ need it to hold data linked together and we'll
+ require it later to tear down the entire tree. Still,
+ we announce its deletion through cb_delete_context
+ because we don't want user to release its related
+ data and not use it anymore.
+ */
if (pdp == linked_pdp) {
- linked_pdp->secondary_tei[pdp->nsapi & 0xf0] = 0;
- linked_pdp->nodata = 1;
- } else
- pdp_freepdp(pdp);
+ if (gsn->cb_delete_context)
+ gsn->cb_delete_context(pdp);
+ pdp->secondary_tei[pdp->nsapi & 0xf0] = 0;
+ pdp->nodata = 1;
+ } else {
+ gtp_freepdp(gsn, pdp);
+ }
}
return 0;
@@ -2473,15 +2486,27 @@
if (cause == GTPCAUSE_ACC_REQ) {
if ((teardown) || (version == 0)) { /* Remove all contexts */
gtp_freepdp_teardown(gsn, linked_pdp);
- } else { /* Remove only current context */
- if (gsn->cb_delete_context)
- gsn->cb_delete_context(pdp);
+ } else {
+ /* If we end up here (no teardown) it means we still
+ have at least another pdp context active for this
+ PDN connection (since last DeleteReq should come
+ with teardown enabled). If the ctx to delete is a
+ secondary ctx, simply free it. If it's the primary
+ ctx, mark it as nodata but don't free it since we
+ need it to hold data linked together and we'll
+ require it later to tear down the entire tree. Still,
+ we announce its deletion through cb_delete_context
+ because we don't want user to release its related
+ data and not use it anymore.
+ */
if (pdp == linked_pdp) {
- linked_pdp->secondary_tei[pdp->nsapi & 0xf0] =
- 0;
- linked_pdp->nodata = 1;
- } else
- pdp_freepdp(pdp);
+ if (gsn->cb_delete_context)
+ gsn->cb_delete_context(pdp);
+ pdp->secondary_tei[pdp->nsapi & 0xf0] = 0;
+ pdp->nodata = 1;
+ } else {
+ gtp_freepdp(gsn, pdp);
+ }
}
}
/* if (cause == GTPCAUSE_ACC_REQ) */
--
To view, visit https://gerrit.osmocom.org/14286
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ggsn
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia47ac792111fe1e9aa68222b32b5da823642206b
Gerrit-Change-Number: 14286
Gerrit-PatchSet: 1
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190530/0cdf2880/attachment.htm>