diff options
-rw-r--r-- | ggsn/ggsn.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 7b32bde..ffa508b 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -775,16 +775,17 @@ static int cb_conf(int type, int cause, struct pdp_t *pdp, void *cbp) case GTP_DELETE_PDP_REQ: /* Remark: We actually never reach this path nowadays because only place where we call gtp_delete_context_req2() is during - apn_stop()->pool_close_all_pdp() path, and in that case we - free all pdp contexts immediatelly without waiting for - confirmation since we want to tear down the whole APN - anyways. As a result, DeleteCtxResponse will never reach here - since it will be dropped at some point in lower layers in the - Rx path. This code is nevertheless left here in order to ease - future developent and avoid possible future memleaks once more - scenarios where GGSN sends a DeleteCtxRequest are introduced. */ + ggsn_close_one_pdp() path, and in that case we free all pdp + contexts immediatelly without waiting for confirmation + (through gtp_freepdp_teardown()) since we want to tear down + the whole APN anyways. As a result, DeleteCtxResponse will + never reach here since it will be dropped at some point in + lower layers in the Rx path. This code is nevertheless left + here in order to ease future developent and avoid possible + future memleaks once more scenarios where GGSN sends a + DeleteCtxRequest are introduced. */ if (pdp) - rc = pdp_freepdp(pdp); + rc = gtp_freepdp(pdp->gsn, pdp); break; case GTP_ECHO_REQ: sgsn = (struct sgsn_peer *)cbp; |