Add delayed verdict support for response end in nano attachment Summary: (#51)

* 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:
Gray
2025-12-23 13:43:31 +02:00
committed by GitHub
parent 41e13b1bba
commit 565adf10a1

View File

@@ -712,6 +712,31 @@ SendRequestEnd(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);
}