From 618516ec85c2b9bc6bdd24180b0203f63a1faa20 Mon Sep 17 00:00:00 2001 From: Granyaa Date: Thu, 15 Jan 2026 11:06:13 +0200 Subject: [PATCH] Implement isNanoQueueEmpty, fixed syntax bug in NanoAsyncRemoveResponse. --- attachments/nano_attachment/nano_attachment.c | 8 +++++--- attachments/nano_attachment/nano_attachment_bucket.c | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/attachments/nano_attachment/nano_attachment.c b/attachments/nano_attachment/nano_attachment.c index e00c1fd..8eb0659 100755 --- a/attachments/nano_attachment/nano_attachment.c +++ b/attachments/nano_attachment/nano_attachment.c @@ -97,6 +97,7 @@ InitNanoAttachment(uint8_t attachment_type, int worker_id, int num_of_workers, i attachment->inspection_mode = NON_BLOCKING_THREAD; attachment->num_of_nano_ipc_elements = 200; attachment->keep_alive_interval_msec = DEFAULT_KEEP_ALIVE_INTERVAL_MSEC; + memset(attachment->async_buckets, 0, sizeof(attachment->async_buckets)); if (nano_attachment_init_process(attachment) != NANO_OK) { write_dbg(attachment, 0, DBG_LEVEL_WARNING, "Could not initialize nano attachment"); @@ -271,12 +272,13 @@ SendDataNanoAttachmentAsync(NanoAttachment *attachment, AttachmentData *data) return NANO_OK; } -// TODO: Implement -// Check if the queue is empty, return true if yes - otherwise false. bool isNanoQueueEmpty(NanoAttachment *attachment) { - return false; + if (attachment == NULL || attachment->nano_service_ipc == NULL) { + return true; + } + return !isDataAvailable(attachment->nano_service_ipc); } SessionID diff --git a/attachments/nano_attachment/nano_attachment_bucket.c b/attachments/nano_attachment/nano_attachment_bucket.c index b847de9..dd96ea6 100644 --- a/attachments/nano_attachment/nano_attachment_bucket.c +++ b/attachments/nano_attachment/nano_attachment_bucket.c @@ -1,5 +1,7 @@ #include "nano_attachment_bucket.h" +#include + #define CP_ASYNC_CTX_BUCKETS 2048 ///< Hash table buckets for better distribution /// @@ -49,9 +51,7 @@ NanoAsyncAddResponse(NanoAttachment *attachment, SessionID session_id, Attachmen void NanoAsyncRemoveResponse(NanoAttachment *attachment, SessionID session_id) { - uint bucket = nano_attachment_async_ctx_hash(ctx->session_id); - attachment->async_buckets[bucket]->session_id = 0; - attachment->async_buckets[bucket]->verdict = ATTACHMENT_VERDICT_INSPECT; - attachment->async_buckets[bucket]->modifications = NULL; - attachment->async_buckets[bucket]->web_response_data = NULL; + uint bucket = nano_attachment_async_ctx_hash(session_id); + memset(&attachment->async_buckets[bucket], 0, sizeof(AttachmentVerdictResponse)); + attachment->async_buckets[bucket].verdict = ATTACHMENT_VERDICT_INSPECT; }