commit b0cf42726d1b52783abe996ae7845b3032709e81
parent 11cc5d304f939cfd35ebccd3959a3f3d26392c38
Author: Joris Vink <joris@coders.se>
Date: Fri, 4 Oct 2019 11:29:45 +0200
Do not start keymgr if no tls enabled servers are present
Diffstat:
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/worker.c b/src/worker.c
@@ -56,6 +56,7 @@
#endif
#define WORKER_SOLO_COUNT 2
+
#define WORKER(id) \
(struct kore_worker *)((u_int8_t *)kore_workers + \
(sizeof(struct kore_worker) * id))
@@ -96,14 +97,25 @@ kore_worker_init(void)
{
size_t len;
struct kore_worker *kw;
+ struct kore_server *srv;
+ int keymgr;
u_int16_t i, cpu;
+ keymgr = 0;
worker_no_lock = 0;
if (worker_count == 0)
worker_count = cpu_count;
- /* account for the key manager. */
+ /* Check if keymgr will be active. */
+ LIST_FOREACH(srv, &kore_servers, list) {
+ if (srv->tls) {
+ keymgr = 1;
+ break;
+ }
+ }
+
+ /* Account for the keymgr even if we don't end up starting it. */
worker_count += 1;
len = sizeof(*accept_lock) +
@@ -135,11 +147,16 @@ kore_worker_init(void)
kw->lb.offset = 0;
}
- cpu = 0;
- for (i = 0; i < worker_count; i++) {
- kore_worker_spawn(i, cpu++);
- if (cpu == cpu_count)
+ /* Start keymgr if required. */
+ if (keymgr)
+ kore_worker_spawn(0, 0);
+
+ /* Now start all the workers. */
+ cpu = 1;
+ for (i = 1; i < worker_count; i++) {
+ if (cpu >= cpu_count)
cpu = 0;
+ kore_worker_spawn(i, cpu++);
}
}