server: Router wasn't propagating the client disconnects fully to the child, the response wait could cause a delayed cancellation (#29707)

* Router wasn't propagating the client disconnects fully to the child, the response wait could cause a delayed cancellation

* tests: satisfy router disconnect type check

* server : remove timing-sensitive router cancellation test

Assisted-by: Codex
This commit is contained in:
Me42019 authored and GitHub committed 2026-10-20 17:43:45 +02:00
1 parent 1ba568c5ad
commit 4e201388c3
2 files changed
+4 -2

No files matched your search

+2 -1
View File
@@ -448,6 +448,7 @@ server_task_result_ptr server_response::recv(const std::unordered_set<int> & id_
}
server_task_result_ptr server_response::recv_with_timeout(const std::unordered_set<int> & id_tasks, int timeout) {
const auto deadline = std::chrono::steady_clock::now() + std::chrono::seconds(timeout);
while (true) {
std::unique_lock<std::mutex> lock(mutex_results);
@@ -459,7 +460,7 @@ server_task_result_ptr server_response::recv_with_timeout(const std::unordered_s
}
}
std::cv_status cr_res = condition_results.wait_for(lock, std::chrono::seconds(timeout));
std::cv_status cr_res = condition_results.wait_until(lock, deadline);
if (!running) {
RES_DBG("%s : queue result stop\n", __func__);
std::terminate(); // we cannot return here since the caller is HTTP code