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,
|
.id = entry->id,
|
||||||
);
|
);
|
||||||
lib->processor->queue_job(lib->processor,
|
lib->processor->queue_job(lib->processor,
|
||||||
(job_t*)callback_job_create(process_queue,
|
(job_t*)callback_job_create(process_queue, sel,
|
||||||
sel, free, NULL));
|
free, callback_job_cancel_thread));
|
||||||
entry->has_processor = TRUE;
|
entry->has_processor = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user