From 4a8a43965f67241579de64e8d99010e1393be6f3 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Wed, 15 Dec 2021 09:41:46 -0800 Subject: [PATCH] offchannel: always call destroy right away on cancel The main cancel code path was not calling destroy immediately which was not consistent with other code paths/APIs. --- src/offchannel.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/offchannel.c b/src/offchannel.c index ad35f4f6..4db3fcf2 100644 --- a/src/offchannel.c +++ b/src/offchannel.c @@ -208,20 +208,10 @@ void offchannel_cancel(uint64_t wdev_id, uint32_t id) goto work_done; } - /* - * Call destroy now to maintain consistency with any other - * path leading to radio_work_done(). But set needs_cancel so - * the ROC command can be canceled - */ - if (info->destroy) - info->destroy(info->error, info->user_data); - - info->destroy = NULL; - info->started = NULL; - info->user_data = NULL; + /* Lets the ROC callback know it needs to cancel the request */ info->needs_cancel = true; - return; + goto destroy; } /* @@ -239,6 +229,14 @@ void offchannel_cancel(uint64_t wdev_id, uint32_t id) */ offchannel_cancel_roc(info); +destroy: + if (info->destroy) + info->destroy(info->error, info->user_data); + + info->destroy = NULL; + info->started = NULL; + info->user_data = NULL; + return; work_done: