From f065261b0dc78fb763773d2eecf903ead99dc597 Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Sat, 3 Jul 2021 15:47:49 +0000
Subject: [PATCH] bugs-4815

---
 CMakeLists.txt                      | 2 +-
 dap-sdk/net/client/dap_client.c     | 2 --
 dap-sdk/net/client/dap_client_pvt.c | 8 ++++++--
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b53a2b815..babad017c9 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-8")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.9-9")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 set(DAPSDK_MODULES "")
 message("Cellframe modules: ${CELLFRAME_MODULES}")
diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c
index 56fb3c785f..1bf65abff9 100644
--- a/dap-sdk/net/client/dap_client.c
+++ b/dap-sdk/net/client/dap_client.c
@@ -244,8 +244,6 @@ static void s_go_stage_on_client_worker_unsafe(dap_worker_t * a_worker,void * a_
         return;
     }
 
-
-
     dap_client_stage_t l_cur_stage = l_client_pvt->stage;
     dap_client_stage_status_t l_cur_stage_status= l_client_pvt->stage_status;
     if (l_stage_target == l_cur_stage){
diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c
index 483361c50e..b33422490e 100644
--- a/dap-sdk/net/client/dap_client_pvt.c
+++ b/dap-sdk/net/client/dap_client_pvt.c
@@ -875,14 +875,18 @@ static void s_request_response(void * a_response, size_t a_response_size, void *
             log_it(L_ERROR,"Client internal is NULL for s_request_response");
         else
             log_it(L_ERROR,"Client is NULL for s_request_response");
-
+        dap_client_pvt_hh_unlock();
         return;
     }
     l_client_pvt->refs_count--;
 
     if (l_client_pvt->is_to_delete){
-        if(l_client_pvt->refs_count==0) // Was requested to delete until we was working with request
+        if(l_client_pvt->refs_count==0) {// Was requested to delete until we was working with request
+            dap_client_pvt_hh_unlock();
             dap_client_delete_unsafe(l_client_pvt->client); // Init delete
+            return;
+        }
+        dap_client_pvt_hh_unlock();
         return;
     }
 
-- 
GitLab