lynxis lazus has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-iuh/+/15474 )
Change subject: iu_client: introduce UE field free_on_release ...................................................................... iu_client: introduce UE field free_on_release Allow to free UE ctx when receiving a Iu Release Complete. In preparation of ranap_iu_tx_release_free() it requires a field to free the Iu ctx on it's own without depending on the upstream user. Change-Id: Iac41cd3cce3232d01b2f7ede0cc46226c2cfb6c0 --- M TODO-RELEASE M include/osmocom/ranap/iu_client.h M src/iu_client.c 3 files changed, 12 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/TODO-RELEASE b/TODO-RELEASE index bcbf5de..b967e56 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -9,3 +9,4 @@ #library what description / commit summary line libranap iu_client.h struct ranap_ue_conn_ctx: add field notification libranap iu_client.h struct ranap_ue_conn_ctx: add field release_timeout +libranap iu_client.h struct ranap_ue_conn_ctx: add field free_on_release diff --git a/include/osmocom/ranap/iu_client.h b/include/osmocom/ranap/iu_client.h index a93fff3..24a5af9 100644 --- a/include/osmocom/ranap/iu_client.h +++ b/include/osmocom/ranap/iu_client.h @@ -31,6 +31,8 @@ struct gprs_ra_id ra_id; enum ranap_nsap_addr_enc rab_assign_addr_enc; bool notification; /* send notification to the upstream user */ + /* if true the ue_ctx will be free on Iu release complete */ + bool free_on_release; /* Will be set when the Iu Release Command has been sent */ struct osmo_timer_list release_timeout; }; diff --git a/src/iu_client.c b/src/iu_client.c index e4eb83e..c309ce4 100644 --- a/src/iu_client.c +++ b/src/iu_client.c @@ -129,6 +129,7 @@ ctx->rnc = rnc; ctx->conn_id = conn_id; ctx->notification = true; + ctx->free_on_release = false; osmo_timer_setup(&ctx->release_timeout, (void *)(void *) ranap_iu_free_ue, ctx); @@ -500,6 +501,7 @@ int timeout) { ctx->notification = false; + ctx->free_on_release = true; int ret = ranap_iu_tx_release(ctx, cause); if (ret) { ranap_iu_free_ue(ctx); @@ -851,6 +853,13 @@ break; global_iu_event(ue, RANAP_IU_EVENT_LINK_INVALIDATED, NULL); + + /* A RANAP_IU_EVENT_LINK_INVALIDATED, can lead to a free */ + ue = ue_conn_ctx_find(prim->u.disconnect.conn_id); + if (!ue) + break; + if (ue->free_on_release) + ranap_iu_free_ue(ue); break; case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION): /* connection-oriented data received */ -- To view, visit https://gerrit.osmocom.org/c/osmo-iuh/+/15474 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-iuh Gerrit-Branch: master Gerrit-Change-Id: Iac41cd3cce3232d01b2f7ede0cc46226c2cfb6c0 Gerrit-Change-Number: 15474 Gerrit-PatchSet: 3 Gerrit-Owner: lynxis lazus <lyn...@fe80.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <lafo...@gnumonks.org> Gerrit-Reviewer: lynxis lazus <lyn...@fe80.eu> Gerrit-Reviewer: neels <nhofm...@sysmocom.de> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-CC: fixeria <axilira...@gmail.com> Gerrit-MessageType: merged