From a250273085a99873f02239fcf2f283882362de9d Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Tue, 28 Aug 2018 06:06:28 +0200 Subject: [PATCH] Implement SSL child socket contexts --- src/interfaces/ssl.h | 2 +- src/ssl.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/interfaces/ssl.h b/src/interfaces/ssl.h index b4b369c4..0119ec90 100644 --- a/src/interfaces/ssl.h +++ b/src/interfaces/ssl.h @@ -59,7 +59,7 @@ WIN32_EXPORT struct us_ssl_socket *us_ssl_socket_context_adopt_socket(struct us_ /* Create a child socket context which acts much like its own socket context with its own callbacks yet still relies on the * parent socket context for some shared resources. Child socket contexts should be used together with socket adoptions and nothing else. */ -WIN32_EXPORT struct us_ssl_socket_context *us_create_child_ssl_socket_context(struct us_ssl_socket_context *context); +WIN32_EXPORT struct us_ssl_socket_context *us_create_child_ssl_socket_context(struct us_ssl_socket_context *context, int context_ext_size); WIN32_EXPORT struct us_loop *us_ssl_socket_context_loop(struct us_ssl_socket_context *context); diff --git a/src/ssl.c b/src/ssl.c index a60ad8fa..24f0b157 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -275,6 +275,15 @@ void us_internal_free_loop_ssl_data(struct us_loop *loop) { } /* Per-context functions */ +struct us_ssl_socket_context *us_create_child_ssl_socket_context(struct us_ssl_socket_context *context, int context_ext_size) { + struct us_ssl_socket_context *child_context = (struct us_ssl_socket_context *) us_create_socket_context(context->sc.loop, sizeof(struct us_ssl_socket_context) + context_ext_size); + + // I think this is the only thing being shared + child_context->ssl_context = context->ssl_context; + + return child_context; +} + struct us_ssl_socket_context *us_create_ssl_socket_context(struct us_loop *loop, int context_ext_size, struct us_ssl_socket_context_options options) { us_internal_init_loop_ssl_data(loop); @@ -442,11 +451,7 @@ struct us_ssl_socket *us_ssl_socket_context_adopt_socket(struct us_ssl_socket_co return s; } -struct us_ssl_socket_context *us_create_child_ssl_socket_context(struct us_ssl_socket_context *context) { - return context; -} - -struct us_loop *us_ssl_socket_context_loop(struct us_ssl_socket_context *context, int context_ext_size) { +struct us_loop *us_ssl_socket_context_loop(struct us_ssl_socket_context *context) { return context->sc.loop; }