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

Reply via email to