增加SSL模块初始化代码,修正SSL模块初始化时遇到的空句柄问题。
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
struct ssl_stream;
|
struct ssl_stream;
|
||||||
|
|
||||||
struct ssl_mgr;
|
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 * logger, screen_stat_handle_t * fs);
|
||||||
void ssl_manager_destroy(struct ssl_mgr * mgr);
|
void ssl_manager_destroy(struct ssl_mgr * mgr);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
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. ");
|
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 */
|
/* MODULE INIT */
|
||||||
g_default_proxy->kni_acceptor_handler = kni_acceptor_init(g_default_proxy, main_profile, g_default_logger);
|
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. ");
|
CHECK_OR_EXIT(g_default_proxy->kni_acceptor_handler, "Failed at init KNI acceptor. Exit. ");
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ struct ssl_mgr
|
|||||||
char trust_CA_dir[TFE_STRING_MAX];
|
char trust_CA_dir[TFE_STRING_MAX];
|
||||||
X509_STORE * trust_CA_store;
|
X509_STORE * trust_CA_store;
|
||||||
struct key_keeper * keeper_of_keys;
|
struct key_keeper * keeper_of_keys;
|
||||||
|
struct event_base * ev_base_gc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct __ssl_stream_debug
|
struct __ssl_stream_debug
|
||||||
@@ -279,7 +280,8 @@ void ssl_manager_destroy(struct ssl_mgr * mgr)
|
|||||||
free(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);
|
struct ssl_mgr * mgr = ALLOC(struct ssl_mgr, 1);
|
||||||
int ret = 0, value = 0;
|
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),
|
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),
|
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,
|
static void ssl_async_peek_client_hello(struct future * future, evutil_socket_t fd, struct event_base * evbase,
|
||||||
void * logger)
|
void * logger)
|
||||||
{
|
{
|
||||||
struct event * ev = NULL;
|
|
||||||
struct promise * p = future_to_promise(future);
|
struct promise * p = future_to_promise(future);
|
||||||
struct peek_client_hello_ctx * ctx = ALLOC(struct peek_client_hello_ctx, 1);
|
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->ev = event_new(evbase, fd, EV_READ, peek_client_hello_cb, p);
|
||||||
ctx->logger = logger;
|
ctx->logger = logger;
|
||||||
|
|
||||||
event_add(ev, NULL);
|
event_add(ctx->ev, NULL);
|
||||||
promise_set_ctx(p, (void *) ctx, peek_client_hello_ctx_free);
|
promise_set_ctx(p, (void *) ctx, peek_client_hello_ctx_free);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user