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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user