diff --git a/http_server/dap_http_simple.c b/http_server/dap_http_simple.c index 90a35f30af198821473ba5c5172eed7a9b382d8c..4d9e29d53563bba376ff5117ee654841f4f79c44 100644 --- a/http_server/dap_http_simple.c +++ b/http_server/dap_http_simple.c @@ -73,24 +73,30 @@ user_agents_item_t *user_agents_list = NULL; static struct ev_loop* http_simple_loop; static ev_async async_watcher_http_simple; static pthread_mutex_t mutex_on_queue_http_response = PTHREAD_MUTEX_INITIALIZER; +static pthread_t http_simple_loop_thread; // uint64_t s_TTL_session_key=3600; int dap_http_simple_module_init() { - pthread_mutex_init(&mutex_on_queue_http_response, NULL); http_simple_loop = ev_loop_new(0); TAILQ_INIT(&tailq_head); - pthread_t thread; ev_async_init(&async_watcher_http_simple, async_control_proc); ev_async_start(http_simple_loop, &async_watcher_http_simple); - pthread_create(&thread, NULL, loop_http_simple_proc, NULL); + pthread_create(&http_simple_loop_thread, NULL, loop_http_simple_proc, NULL); return 0; } +void dap_http_simple_module_deinit(void) +{ + ev_async_stop(http_simple_loop, &async_watcher_http_simple); + pthread_mutex_destroy(&mutex_on_queue_http_response); + pthread_join(http_simple_loop_thread, NULL); + ev_loop_destroy(http_simple_loop); +} static void async_control_proc (EV_P_ ev_async *w, int revents) { diff --git a/test/http_server/dap_http_simple_test.c b/test/http_server/dap_http_simple_test.c index 4808c422989755d961b99c1b9a90571977b88985..ebb0e88395cb1684120622bafbef1f2964abdd7e 100644 --- a/test/http_server/dap_http_simple_test.c +++ b/test/http_server/dap_http_simple_test.c @@ -1,7 +1,7 @@ #include "dap_http_simple_test.h" #include "dap_http_simple.c" -static void test_init_deinit() +static void test_user_agent_support() { dap_http_simple_set_supported_user_agents("DapVpn/2.2", "SecondVpn/3.3", NULL); @@ -28,8 +28,15 @@ static void test_init_deinit() _free_user_agents_list(); } +void dap_http_simple_test_init_deinit() +{ + dap_http_simple_module_init(); + dap_http_simple_module_deinit(); +} + void dap_http_http_simple_test_run() { dap_print_module_name("dap_http_http_simple_test"); - test_init_deinit(); + test_user_agent_support(); + dap_http_simple_test_init_deinit(); }