vici: Make threads handling requests get canceled explicitly

Threads initiating SAs can get stuck on the semaphore in
wait_for_listener() during shutdown if the corresponding job is never
executed.  A particular case when this can happen is if more initiations
are triggered than worker threads are available.  This causes a (known)
deadlock as no workers are free anymore to process jobs (for inbound
messages or timeouts etc.), including the one to initiate an SA.
This change at least allows a proper shutdown.
This commit is contained in:
Tobias Brunner
2025-05-19 17:20:59 +02:00
parent 8d3855ba31
commit f8e5e38b12
+2 -2
View File
@@ -563,8 +563,8 @@ CALLBACK(on_read, bool,
.id = entry->id,
);
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create(process_queue,
sel, free, NULL));
(job_t*)callback_job_create(process_queue, sel,
free, callback_job_cancel_thread));
entry->has_processor = TRUE;
}
}