From d1c4ef4d9aa931b4286d96b982dc17419b08f43b Mon Sep 17 00:00:00 2001 From: "roman.khlopkov" <roman.khlopkov@demlabs.net> Date: Tue, 30 Jul 2024 18:18:02 +0300 Subject: [PATCH] [*] Connectivity fix --- io/dap_events_socket.c | 2 +- io/include/dap_worker.h | 2 ++ net/client/dap_client_http.c | 15 ++++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/io/dap_events_socket.c b/io/dap_events_socket.c index bd6d95171..61bedf782 100644 --- a/io/dap_events_socket.c +++ b/io/dap_events_socket.c @@ -1978,7 +1978,7 @@ size_t dap_events_socket_write_mt(dap_worker_t * a_w,dap_events_socket_uuid_t a_ dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (!l_msg) return 0; l_msg->esocket_uuid = a_es_uuid; if (a_data && a_data_size) - l_msg->data = a_data; // DAP_DUP_SIZE(a_data, a_data_size); + l_msg->data = (void *)a_data; // DAP_DUP_SIZE(a_data, a_data_size); l_msg->data_size = a_data_size; l_msg->flags_set = DAP_SOCK_READY_TO_WRITE; diff --git a/io/include/dap_worker.h b/io/include/dap_worker.h index ed3bb337d..36fb86543 100644 --- a/io/include/dap_worker.h +++ b/io/include/dap_worker.h @@ -25,6 +25,7 @@ #include <pthread.h> #include "dap_common.h" #include "dap_events_socket.h" +#include "dap_events.h" typedef struct dap_context dap_context_t; typedef struct dap_timerfd dap_timerfd_t; @@ -88,6 +89,7 @@ void dap_worker_deinit(); static inline dap_worker_t * dap_worker_get_current(){ return (dap_worker_t*) pthread_getspecific(g_pth_key_worker); } +#define dap_worker_get_auto dap_events_worker_get_auto int dap_worker_add_events_socket_unsafe(dap_worker_t *a_worker, dap_events_socket_t *a_esocket); void dap_worker_add_events_socket(dap_worker_t *a_worker, dap_events_socket_t *a_events_socket); diff --git a/net/client/dap_client_http.c b/net/client/dap_client_http.c index 9775f1cca..a4b4c25ef 100644 --- a/net/client/dap_client_http.c +++ b/net/client/dap_client_http.c @@ -505,7 +505,8 @@ static void s_client_http_delete(dap_client_http_t * a_client_http) { dap_return_if_fail(a_client_http); debug_if(s_debug_more, L_DEBUG, "HTTP client delete"); - + if (a_client_http->timer) + dap_timerfd_delete_unsafe(a_client_http->timer); DAP_DEL_Z(a_client_http->method); DAP_DEL_Z(a_client_http->request_content_type); DAP_DEL_Z(a_client_http->cookie); @@ -730,14 +731,15 @@ dap_client_http_t * dap_client_http_request_custom ( else if( errno == EINPROGRESS && l_err == -1){ log_it(L_DEBUG, "Connecting to %s:%u", a_uplink_addr, a_uplink_port); l_client_http->worker = a_worker ? a_worker : dap_worker_get_current(); + if (!l_client_http->worker) + l_client_http->worker = dap_worker_get_auto(); l_client_http->es = l_ev_socket; - dap_worker_add_events_socket(l_client_http->worker, l_ev_socket); dap_events_socket_uuid_t * l_ev_uuid_ptr = DAP_NEW_Z(dap_events_socket_uuid_t); if (!l_ev_uuid_ptr) { - log_it(L_CRITICAL, "%s", c_error_memory_alloc); - DAP_DEL_MULTY(l_client_http->response, l_client_http->request, l_client_http); - if(a_error_callback) + log_it(L_CRITICAL, "%s", c_error_memory_alloc); + if (a_error_callback) a_error_callback(errno, a_callbacks_arg); + DAP_DEL_MULTY(l_client_http->response, l_client_http->request, l_client_http); return NULL; } *l_ev_uuid_ptr = l_ev_socket->uuid; @@ -747,6 +749,7 @@ dap_client_http_t * dap_client_http_request_custom ( l_client_http->worker->id, *l_ev_uuid_ptr); DAP_DEL_Z(l_ev_uuid_ptr); } + dap_worker_add_events_socket(l_client_http->worker, l_ev_socket); return l_client_http; } else{ @@ -819,8 +822,6 @@ dap_client_http_t *dap_client_http_request(dap_worker_t * a_worker,const char *a void dap_client_http_close_unsafe(dap_client_http_t *a_client_http) { - if (a_client_http->timer) - dap_timerfd_delete_unsafe(a_client_http->timer); if (a_client_http->es) { a_client_http->es->callbacks.delete_callback = NULL; dap_events_socket_remove_and_delete_unsafe(a_client_http->es, true); -- GitLab