From 8067639cb0b6539e19268eb88c0a668f12951469 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Sat, 25 Jan 2025 16:22:11 +0100 Subject: [PATCH] server : fix cleaning up stream task --- examples/server/server.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index a94c3822c..d12e6fbbe 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -1448,16 +1448,16 @@ struct server_queue { if (task.id == -1) { task.id = id++; } + // if this is cancel task make sure to clean up pending tasks + if (task.type == SERVER_TASK_TYPE_CANCEL) { + cleanup_pending_task(task.id_target); + } QUE_DBG("new task, id = %d/%d, front = %d\n", task.id, (int) tasks.size(), front); if (front) { queue_tasks.push_front(std::move(task)); } else { queue_tasks.push_back(std::move(task)); } - // if this is cancel task make sure to clean up pending tasks - if (task.type == SERVER_TASK_TYPE_CANCEL) { - cleanup_pending_task(task.id_target); - } } condition_tasks.notify_one(); return 0; @@ -1554,10 +1554,10 @@ struct server_queue { } private: - void cleanup_pending_task(int id_task) { + void cleanup_pending_task(int id_target) { // no need lock because this is called exclusively by post() - auto rm_func = [id_task](const server_task & task) { - return task.id_target == id_task; + auto rm_func = [id_target](const server_task & task) { + return task.id_target == id_target; }; queue_tasks.erase( std::remove_if(queue_tasks.begin(), queue_tasks.end(), rm_func),