From 407d91e0a9beb53c9735a85ce7619d532a57f276 Mon Sep 17 00:00:00 2001 From: Dmitriy Gerasimov <naeper@demlabs.net> Date: Tue, 10 Aug 2021 17:30:11 +0700 Subject: [PATCH] [*] Fixed race lock --- CMakeLists.txt | 2 +- dap-sdk/net/core/dap_worker.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 53bf8aa177..99bed70dc5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 3.0) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.9-23") +set(CELLFRAME_SDK_NATIVE_VERSION "2.9-24") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") message("Cellframe modules: ${CELLFRAME_MODULES}") diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c index 680223d7e9..7e8b62bbe3 100644 --- a/dap-sdk/net/core/dap_worker.c +++ b/dap-sdk/net/core/dap_worker.c @@ -1099,6 +1099,7 @@ static bool s_socket_all_check_activity( void * a_arg) //log_it(L_DEBUG,"Check sockets activity on worker #%u at %s", l_worker->id, l_curtimebuf); pthread_rwlock_rdlock(&l_worker->esocket_rwlock); HASH_ITER(hh_worker, l_worker->esockets, l_es, tmp ) { + pthread_rwlock_unlock(&l_worker->esocket_rwlock); if ( l_es->type == DESCRIPTOR_TYPE_SOCKET_CLIENT || l_es->type == DESCRIPTOR_TYPE_SOCKET_UDP ){ if ( !(l_es->flags & DAP_SOCK_SIGNAL_CLOSE) && ( l_curtime >= (l_es->last_time_active + s_connection_timeout) ) && !l_es->no_close ) { @@ -1109,6 +1110,7 @@ static bool s_socket_all_check_activity( void * a_arg) dap_events_socket_remove_and_delete_unsafe(l_es,false); } } + pthread_rwlock_rdlock(&l_worker->esocket_rwlock); } pthread_rwlock_unlock(&l_worker->esocket_rwlock); return true; -- GitLab