Add delayed verdict support for response end in nano attachment Summary:

* Implement TRAFFIC_VERDICT_DELAYED handling in SendResponseEndfunction
* Add delayed verdict thread spawning when response end returns delayed verdict

This change mirrors the existing delayed verdict handling in SendRequestBody and SendResponseBody to ensure consistent behavior for both request and response body processing.
This commit is contained in:
Granyaa
2025-12-23 13:04:00 +02:00
parent 41e13b1bba
commit ce60759df3

View File

@@ -712,6 +712,31 @@ SendRequestEnd(NanoAttachment *attachment, AttachmentData *data)
ctx.res 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) { if (ctx.res != NANO_HTTP_FORBIDDEN && ctx.res != NANO_OK) {
return FinalizeFailedResponse(attachment, session_id, &ctx); return FinalizeFailedResponse(attachment, session_id, &ctx);
} }