Move contexts under mm_self

This commit is contained in:
Andrey Borodin 2020-02-23 00:50:48 +05:00 committed by kirill reshke
parent c4b7a3cc18
commit 553f176e99
3 changed files with 12 additions and 13 deletions

View File

@ -74,6 +74,8 @@ machine_create(char *name, machine_coroutine_t function, void *arg)
machine->id = 0;
machine->main = function;
machine->main_arg = arg;
machine->server_tls_ctx = NULL;
machine->client_tls_ctx = NULL;
machine->name = NULL;
if (name) {
machine->name = strdup(name);

View File

@ -24,6 +24,8 @@ struct mm_machine
mm_coroutine_cache_t coroutine_cache;
mm_loop_t loop;
mm_list_t link;
struct mm_tls_ctx *server_tls_ctx;
struct mm_tls_ctx *client_tls_ctx;
};
extern __thread mm_machine_t *mm_self;

View File

@ -173,20 +173,17 @@ mm_tls_error(mm_io_t *io, int ssl_rc, char *fmt, ...)
errno = EIO;
}
__thread mm_tls_ctx_t *server_tls_ctx = NULL;
__thread mm_tls_ctx_t *client_tls_ctx = NULL;
SSL_CTX*
mm_tls_get_context(mm_io_t *io, int is_client) {
mm_tls_ctx_t *ctx_container;
if (is_client)
ctx_container = client_tls_ctx;
ctx_container = mm_self->client_tls_ctx;
else
ctx_container = server_tls_ctx;
ctx_container = mm_self->server_tls_ctx;
while (ctx_container != NULL) {
if (ctx_container->key == io->tls)
if (ctx_container->key == io->tls) {
return ctx_container->tls_ctx;
}
}
// Cached context not found - we must create ctx
@ -278,10 +275,8 @@ mm_tls_get_context(mm_io_t *io, int is_client) {
goto error;
}
SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
}
// Place new ctx on top of cache
ctx_container = malloc(sizeof(*ctx_container));
@ -289,12 +284,12 @@ mm_tls_get_context(mm_io_t *io, int is_client) {
ctx_container->tls_ctx = ctx;
if (is_client) {
ctx_container->next = client_tls_ctx;
client_tls_ctx = ctx_container;
ctx_container->next = mm_self->client_tls_ctx;
mm_self->client_tls_ctx = ctx_container;
}
else {
ctx_container->next = server_tls_ctx;
server_tls_ctx = ctx_container;
ctx_container->next = mm_self->server_tls_ctx;
mm_self->server_tls_ctx = ctx_container;
}
return ctx;