diff --git a/src/frame-xchg.c b/src/frame-xchg.c index 3c1fc279..dfe08f6a 100644 --- a/src/frame-xchg.c +++ b/src/frame-xchg.c @@ -975,6 +975,11 @@ static bool frame_xchg_tx_retry(struct wiphy_radio_work_item *item) return false; } +static bool frame_xchg_match_ptr(const void *a, const void *b) +{ + return a == b; +} + static bool frame_xchg_resp_handle(const struct mmpdu_header *mpdu, const void *body, size_t body_len, int rssi, void *user_data) @@ -1013,6 +1018,9 @@ static bool frame_xchg_resp_handle(const struct mmpdu_header *mpdu, done = watch->cb(mpdu, body, body_len, rssi, fx->user_data); + if (!l_queue_find(frame_xchgs, frame_xchg_match_ptr, fx)) + return true; + if (done) { /* NULL callback here since the caller is done */ fx->cb = NULL;