From 886ece4c699c89c1b393adaadc8a2b89df9f61ab Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Mon, 26 Jun 2017 16:23:50 +0300 Subject: [PATCH] odissey: fix pooler tls init --- src/od_client.h | 2 ++ src/od_frontend.c | 3 +-- src/od_pooler.c | 21 ++++++++++----------- src/od_pooler.h | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/od_client.h b/src/od_client.h index 6cb13e6c..8e102ecc 100644 --- a/src/od_client.h +++ b/src/od_client.h @@ -24,6 +24,7 @@ struct od_client uint64_t coroutine_id; uint64_t coroutine_attacher_id; machine_io_t *io; + machine_tls_t *tls; od_schemeuser_t *scheme; so_bestartup_t startup; so_key_t key; @@ -42,6 +43,7 @@ od_client_init(od_client_t *client) client->coroutine_id = 0; client->coroutine_attacher_id = 0; client->io = NULL; + client->tls = NULL; client->scheme = NULL; client->server = NULL; client->route = NULL; diff --git a/src/od_frontend.c b/src/od_frontend.c index 0d7fc6bd..72ee8046 100644 --- a/src/od_frontend.c +++ b/src/od_frontend.c @@ -119,7 +119,6 @@ static int od_frontend_startup(od_client_t *client) { od_instance_t *instance = client->system->instance; - od_pooler_t *pooler = client->system->pooler; int rc; rc = od_frontend_startup_read(client); @@ -135,7 +134,7 @@ od_frontend_startup(od_client_t *client) /* client ssl request */ rc = od_tls_frontend_accept(client, &instance->log, &instance->scheme, - pooler->tls); + client->tls); if (rc == -1) return -1; diff --git a/src/od_pooler.c b/src/od_pooler.c index 0439cabb..73f29094 100644 --- a/src/od_pooler.c +++ b/src/od_pooler.c @@ -55,6 +55,15 @@ od_pooler_server(void *arg) od_instance_t *instance = server->system->instance; od_relaypool_t *relay_pool = server->system->relay_pool; + /* create server tls */ + if (instance->scheme.tls_verify != OD_TDISABLE) { + server->tls = od_tls_frontend(&instance->scheme); + if (server->tls == NULL) { + od_error(&instance->log, "server", "failed to create tls handler"); + return; + } + } + /* create server io */ machine_io_t *server_io; server_io = machine_io_create(); @@ -128,6 +137,7 @@ od_pooler_server(void *arg) } od_idmgr_generate(&instance->id_mgr, &client->id); client->io = client_io; + client->tls = server->tls; /* create new client event and pass it to worker pool */ machine_msg_t *msg; @@ -276,20 +286,9 @@ od_pooler(void *arg) int od_pooler_init(od_pooler_t *pooler, od_system_t *system) { - od_instance_t *instance = system->instance; - pooler->machine = -1; pooler->system = system; pooler->addr = NULL; - pooler->tls = NULL; - - /* init pooler tls */ - od_scheme_t *scheme = &instance->scheme; - if (scheme->tls_verify != OD_TDISABLE) { - pooler->tls = od_tls_frontend(scheme); - if (pooler->tls == NULL) - return -1; - } return 0; } diff --git a/src/od_pooler.h b/src/od_pooler.h index 51baa718..bf7e50b2 100644 --- a/src/od_pooler.h +++ b/src/od_pooler.h @@ -13,13 +13,13 @@ typedef struct od_poolerserver od_poolerserver_t; struct od_poolerserver { struct addrinfo *addr; + machine_tls_t *tls; od_system_t *system; }; struct od_pooler { int64_t machine; - machine_tls_t *tls; struct addrinfo *addr; od_system_t *system; };