pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/30921 )
Change subject: llc: Allow app provided callbacks to retain ownership of passed primitive ......................................................................
llc: Allow app provided callbacks to retain ownership of passed primitive
This way the app can, for instance, simply forward the primtiive pointer from LLC callback to SNDCP layer, which will in the end take the ownership of the primitive and free it.
Change-Id: I6ea91b8f190a399c4bcf6c7cba9a65809aaf3ddb --- M src/llc/llc_prim.c 1 file changed, 6 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/21/30921/1
diff --git a/src/llc/llc_prim.c b/src/llc/llc_prim.c index e789819..b5fab8f 100644 --- a/src/llc/llc_prim.c +++ b/src/llc/llc_prim.c @@ -142,7 +142,9 @@ rc = g_ctx->llc_up_cb(llc_prim, g_ctx->llc_up_cb_user_data); else rc = llc_up_cb_dummy(llc_prim, g_ctx->llc_up_cb_user_data); - msgb_free(llc_prim->oph.msg); + /* Special return value '1' means: do not free */ + if (rc != 1) + msgb_free(llc_prim->oph.msg); return rc; }
@@ -178,7 +180,9 @@ rc = g_ctx->llc_down_cb(llc_prim, g_ctx->llc_down_cb_user_data); else rc = llc_down_cb_dummy(llc_prim, g_ctx->llc_down_cb_user_data); - msgb_free(llc_prim->oph.msg); + /* Special return value '1' means: do not free */ + if (rc != 1) + msgb_free(llc_prim->oph.msg); return rc; }