From 3964ea1a3d95be07c9bd71586fd132a4f3c067b6 Mon Sep 17 00:00:00 2001 From: Granyaa Date: Tue, 23 Dec 2025 10:48:52 +0200 Subject: [PATCH] Add delayed verdict support for response body in nano attachment Summary: * Implement TRAFFIC_VERDICT_DELAYED handling in SendResponseBody function * Add delayed verdict thread spawning when response body returns delayed verdict This change mirrors the existing delayed verdict handling in SendRequestBody to ensure consistent behavior for both request and response body processing. --- .../nano_attachment/nano_attachment_sender.c | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/attachments/nano_attachment/nano_attachment_sender.c b/attachments/nano_attachment/nano_attachment_sender.c index 870fb64..d19e439 100644 --- a/attachments/nano_attachment/nano_attachment_sender.c +++ b/attachments/nano_attachment/nano_attachment_sender.c @@ -636,6 +636,31 @@ SendResponseBody(NanoAttachment *attachment, AttachmentData *data) ctx.res ); + if (session_data_p->verdict == TRAFFIC_VERDICT_DELAYED) { + write_dbg(attachment, session_id, DBG_LEVEL_DEBUG, "spawn SendDelayedVerdictRequestThread"); + res = NanoRunInThreadTimeout( + attachment, + data, + SendDelayedVerdictRequestThread, + (void *)&ctx, + attachment->waiting_for_verdict_thread_timeout_msec, + "SendDelayedVerdictRequestThread", + RESPONSE + ); + if (!res) { + updateMetricField(attachment, HOLD_THREAD_TIMEOUT, 1); + return SendThreadTimeoutVerdict(attachment, session_id, &ctx); + } + + write_dbg( + attachment, + session_id, + DBG_LEVEL_DEBUG, + "finished SendDelayedVerdictRequestThread successfully. res=%d", + ctx.res + ); + } + if (ctx.res != NANO_HTTP_FORBIDDEN && ctx.res != NANO_OK) { return FinalizeFailedResponse(attachment, session_id, &ctx); }