diff --git a/platform/include/internal/ssl_stream.h b/platform/include/internal/ssl_stream.h index 8f3e46c..210128f 100644 --- a/platform/include/internal/ssl_stream.h +++ b/platform/include/internal/ssl_stream.h @@ -13,7 +13,7 @@ struct ssl_stream; struct ssl_mgr; -struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section, struct event_base * evbase, +struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section, struct event_base * ev_base_gc, void * logger, screen_stat_handle_t * fs); void ssl_manager_destroy(struct ssl_mgr * mgr); diff --git a/platform/src/proxy.cpp b/platform/src/proxy.cpp index c0b2e18..0394cd4 100644 --- a/platform/src/proxy.cpp +++ b/platform/src/proxy.cpp @@ -216,6 +216,11 @@ int main(int argc, char *argv[]) g_default_proxy->gcev = event_new(g_default_proxy->evbase, -1, EV_PERSIST, __gc_handler_cb, g_default_proxy); CHECK_OR_EXIT(g_default_proxy->gcev, "Failed at creating GC event. Exit. "); + /* SSL INIT */ + g_default_proxy->ssl_mgr_handler = ssl_manager_init(main_profile, "ssl", + g_default_proxy->evbase, g_default_logger, NULL); + CHECK_OR_EXIT(g_default_proxy->ssl_mgr_handler, "Failed at init SSL manager. Exit."); + /* MODULE INIT */ g_default_proxy->kni_acceptor_handler = kni_acceptor_init(g_default_proxy, main_profile, g_default_logger); CHECK_OR_EXIT(g_default_proxy->kni_acceptor_handler, "Failed at init KNI acceptor. Exit. "); diff --git a/platform/src/ssl_stream.cpp b/platform/src/ssl_stream.cpp index a5f042a..7a94427 100644 --- a/platform/src/ssl_stream.cpp +++ b/platform/src/ssl_stream.cpp @@ -65,6 +65,7 @@ struct ssl_mgr char trust_CA_dir[TFE_STRING_MAX]; X509_STORE * trust_CA_store; struct key_keeper * keeper_of_keys; + struct event_base * ev_base_gc; }; struct __ssl_stream_debug @@ -279,7 +280,8 @@ void ssl_manager_destroy(struct ssl_mgr * mgr) free(mgr); } -struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section, void * logger) +struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section, + struct event_base * ev_base_gc, void * logger, screen_stat_handle_t * fs) { struct ssl_mgr * mgr = ALLOC(struct ssl_mgr, 1); int ret = 0, value = 0; @@ -331,7 +333,7 @@ struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section } MESA_load_profile_string_def(ini_profile, section, "trust_CA_file", mgr->trust_CA_file, sizeof(mgr->trust_CA_file), - ""); + "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"); MESA_load_profile_string_def(ini_profile, section, "trust_CA_dir", mgr->trust_CA_dir, sizeof(mgr->trust_CA_dir), ""); @@ -470,13 +472,12 @@ failed: static void ssl_async_peek_client_hello(struct future * future, evutil_socket_t fd, struct event_base * evbase, void * logger) { - struct event * ev = NULL; struct promise * p = future_to_promise(future); struct peek_client_hello_ctx * ctx = ALLOC(struct peek_client_hello_ctx, 1); ctx->ev = event_new(evbase, fd, EV_READ, peek_client_hello_cb, p); ctx->logger = logger; - event_add(ev, NULL); + event_add(ctx->ev, NULL); promise_set_ctx(p, (void *) ctx, peek_client_hello_ctx_free); return; }