diff --git a/dap-sdk/net/client/dap_client_http.c b/dap-sdk/net/client/dap_client_http.c
index 127f6eec8757c4c999af299e088930b33635f158..4f7262af53a930937d626ace65f1e131460d095e 100644
--- a/dap-sdk/net/client/dap_client_http.c
+++ b/dap-sdk/net/client/dap_client_http.c
@@ -96,7 +96,7 @@ static bool s_timer_timeout_after_connected_check(void * a_arg);
 
 static bool s_debug_more=false;
 static uint64_t s_client_timeout_ms                     = 20000;
-static time_t s_client_timeout_read_after_connect       = 5;
+static uint64_t s_client_timeout_read_after_connect_ms       = 5;
 static uint32_t s_max_attempts = 5;
 
 #ifndef DAP_NET_CLIENT_NO_SSL
@@ -112,7 +112,7 @@ int dap_client_http_init()
     s_debug_more = dap_config_get_item_bool_default(g_config,"dap_client","debug_more",false);
     s_max_attempts = dap_config_get_item_uint32_default(g_config,"dap_client","max_tries",5);
     s_client_timeout_ms = dap_config_get_item_uint32_default(g_config,"dap_client","timeout",10)*1000;
-    s_client_timeout_read_after_connect = (time_t) dap_config_get_item_uint32_default(g_config,"dap_client","timeout_read_after_connect",5);
+    s_client_timeout_read_after_connect_ms = (time_t) dap_config_get_item_uint64_default(g_config,"dap_client","timeout_read_after_connect",5)*1000;
 #ifndef DAP_NET_CLIENT_NO_SSL
     wolfSSL_Init();
     wolfSSL_Debugging_ON ();
@@ -182,23 +182,16 @@ static bool s_timer_timeout_after_connected_check(void * a_arg)
 {
     dap_events_socket_handler_t *l_es_handler = (dap_events_socket_handler_t*) a_arg;
     assert(l_es_handler);
-    dap_events_socket_t * l_es = l_es_handler->esocket;
-    assert(l_es);
-    dap_events_t * l_events = dap_events_get_default();
-    assert(l_events);
 
-    dap_worker_t * l_worker = dap_events_get_current_worker(l_events); // We're in own esocket context
+    dap_worker_t * l_worker = dap_events_get_current_worker(dap_events_get_default()); // We're in own esocket context
     assert(l_worker);
 
-    if(dap_events_socket_check_unsafe(l_worker, l_es) ){
-        if (!dap_uint128_check_equal(l_es->uuid,l_es_handler->uuid)){
-            if(s_debug_more)
-                log_it(L_DEBUG,"Timer esocket wrong argument, ignore this timeout...");
-            DAP_DEL_Z(l_es_handler)
-            return false;
-        }
+    if(dap_events_socket_check_uuid_unsafe( l_worker, l_es_handler->esocket,l_es_handler->uuid ) ){
+        dap_events_socket_t * l_es = l_es_handler->esocket;
+        assert(l_es);
         dap_client_http_pvt_t * l_http_pvt = PVT(l_es);
-        if ( time(NULL)- l_http_pvt->ts_last_read >= s_client_timeout_read_after_connect){
+        assert(l_http_pvt);
+        if ( time(NULL)- l_http_pvt->ts_last_read >= (time_t) s_client_timeout_read_after_connect_ms){
             log_it(L_WARNING,"Read after connect timeout for request http://%s:%u/%s, possible uplink is on heavy load or DPI between you",
                    l_http_pvt->uplink_addr, l_http_pvt->uplink_port, l_http_pvt->path);
             if(l_http_pvt->error_callback) {
@@ -211,10 +204,10 @@ static bool s_timer_timeout_after_connected_check(void * a_arg)
             l_es->_inheritor = NULL;
             dap_events_socket_remove_and_delete_unsafe_delayed(l_es, true);
         }
-    }else
+    }else{
         if(s_debug_more)
-            log_it(L_DEBUG,"Esocket %p is finished, close check timer", l_es);
-
+            log_it(L_DEBUG,"Esocket %p is finished, close check timer", l_es_handler->esocket);
+    }
     DAP_DEL_Z(l_es_handler)
     return false;
 }
@@ -719,7 +712,7 @@ static void s_http_connected(dap_events_socket_t * a_esocket)
     dap_events_socket_handler_t * l_ev_socket_handler = DAP_NEW_Z(dap_events_socket_handler_t);
     l_ev_socket_handler->esocket = a_esocket;
     l_ev_socket_handler->uuid = a_esocket->uuid;
-    dap_timerfd_start_on_worker(l_http_pvt->worker, (unsigned long)s_client_timeout_read_after_connect * 1000, s_timer_timeout_after_connected_check, l_ev_socket_handler);
+    dap_timerfd_start_on_worker(l_http_pvt->worker, (unsigned long)s_client_timeout_read_after_connect_ms * 1000, s_timer_timeout_after_connected_check, l_ev_socket_handler);
 
     char l_request_headers[1024] = { [0]='\0' };
     int l_offset = 0;
diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
index 3bcdde528328d4b05988564454dde631c0d4b006..30e363a6b47236e67ae693b07e7439cf6973fb1c 100644
--- a/dap-sdk/net/core/dap_events_socket.c
+++ b/dap-sdk/net/core/dap_events_socket.c
@@ -193,7 +193,12 @@ dap_events_socket_t *dap_events_socket_wrap_no_add( dap_events_t *a_events,
 
     if ( a_sock!= 0 && a_sock != -1){
         pthread_rwlock_wrlock(&a_events->sockets_rwlock);
-        HASH_ADD_INT(a_events->sockets, socket, l_ret);
+        dap_events_socket_t * l_es_find = NULL;
+        HASH_FIND_INT( a_events->sockets, &a_sock, l_es_find );
+        if(l_es_find)
+            log_it(L_ERROR,"Trying to add %d descriptor in hashtable but found %p esocket with same socket", a_sock, l_es_find);
+        else
+            HASH_ADD_INT(a_events->sockets, socket, l_ret);
         pthread_rwlock_unlock(&a_events->sockets_rwlock);
     }
     //log_it( L_DEBUG,"Dap event socket wrapped around %d sock a_events = %X", a_sock, a_events );
@@ -1752,7 +1757,9 @@ void dap_events_socket_remove_and_delete_unsafe_delayed( dap_events_socket_t *a_
     l_es_handler->value = a_preserve_inheritor ? 1 : 0;
     dap_events_socket_descriptor_close(a_es);
 
-    dap_timerfd_start_on_worker(a_es->worker, s_delayed_ops_timeout_ms,
+    dap_worker_t * l_worker = a_es->worker;
+    dap_events_socket_remove_from_worker_unsafe( a_es, l_worker);
+    dap_timerfd_start_on_worker(l_worker, s_delayed_ops_timeout_ms,
                                 s_remove_and_delete_unsafe_delayed_delete_callback, l_es_handler );
 }