diff --git a/CMakeLists.txt b/CMakeLists.txt index 53bf8aa17758171b4f2eee577719214d6ac404ee..99bed70dc51f15fc89020d7b4877394501ab0009 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 680223d7e918b066243a0bb26e07f03d4bd32142..7e8b62bbe3051207a3364a83c62e5e301db19a88 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;