From 0a03dc2594ebe2178819a7a88a47b373d1b86d38 Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Mon, 20 Sep 2021 06:21:09 +0000
Subject: [PATCH] hotfix-4874

---
 CMakeLists.txt                              |  2 +-
 modules/channel/chain/dap_stream_ch_chain.c | 16 +++++-----------
 modules/net/dap_chain_net.c                 |  3 +--
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2f1d866a32..afea6cbb6f 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-43")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.9-44")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 set(DAPSDK_MODULES "")
 message("Cellframe modules: ${CELLFRAME_MODULES}")
diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index 00e39dca2b..e5bba7b3d9 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -264,8 +264,10 @@ static void s_sync_out_chains_last_worker_callback(dap_worker_t *a_worker, void
     dap_stream_ch_chain_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS,
             l_sync_request->request_hdr.net_id.uint64, l_sync_request->request_hdr.chain_id.uint64,
             l_sync_request->request_hdr.cell_id.uint64, &l_request, sizeof(l_request));
-    if (l_ch_chain->request_atom_iter)
+    if (l_ch_chain->request_atom_iter) {
         l_ch_chain->request_atom_iter->chain->callback_atom_iter_delete(l_ch_chain->request_atom_iter);
+        l_ch_chain->request_atom_iter = NULL;
+    }
 
     l_ch_chain->state = CHAIN_STATE_IDLE;
     if (l_ch_chain->callback_notify_packet_out)
@@ -595,10 +597,6 @@ static void s_gdb_sync_tsd_worker_callback(dap_worker_t *a_worker, void *a_arg)
         memcpy(l_data_ptr, &l_sync_request->request.id_end, sizeof(uint64_t));
         l_data_ptr += sizeof(uint64_t);
         memcpy(l_data_ptr, l_sync_request->gdb.sync_group, l_gr_len);
-        log_it(L_INFO, "Allocated %d bytes, copied %d bytes, sent %d bytes",
-               l_data_size + sizeof(dap_tsd_t),
-               (long int)((byte_t *)l_data_ptr - l_tsd_rec->data) + l_gr_len,
-               l_tsd_rec->size + sizeof(dap_tsd_t));
         dap_stream_ch_chain_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_GLOBAL_DB_TSD,
                                              l_sync_request->request_hdr.net_id.uint64,
                                              l_sync_request->request_hdr.chain_id.uint64,
@@ -1298,14 +1296,10 @@ void dap_stream_ch_chain_go_idle ( dap_stream_ch_chain_t * a_ch_chain)
     // Cleanup after request
     memset(&a_ch_chain->request, 0, sizeof(a_ch_chain->request));
     memset(&a_ch_chain->request_hdr, 0, sizeof(a_ch_chain->request_hdr));
-    if(a_ch_chain->request_atom_iter) {
-        if(a_ch_chain->request_atom_iter->chain)
-            if(a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete){
+    if (a_ch_chain->request_atom_iter && a_ch_chain->request_atom_iter->chain &&
+            a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete) {
                 a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete(a_ch_chain->request_atom_iter);
                 a_ch_chain->request_atom_iter = NULL;
-                return;
-            }
-        a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete(a_ch_chain->request_atom_iter);
     }
     // free log list
     dap_db_log_list_delete(a_ch_chain->request_db_log);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 36a29d7c35..b5de41884c 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -572,8 +572,6 @@ static void s_node_link_callback_delete(dap_chain_node_client_t * a_node_client,
         }
     }
     pthread_rwlock_unlock(&l_net_pvt->rwlock);
-    dap_chain_node_client_close(a_node_client);
-
     dap_notify_server_send_f_mt("{"
                             "class:\"NetLinkDelete\","
                             "net_id:0x%016" DAP_UINT64_FORMAT_X ","
@@ -581,6 +579,7 @@ static void s_node_link_callback_delete(dap_chain_node_client_t * a_node_client,
                             "address:\""NODE_ADDR_FP_STR"\""
                         "}\n", a_node_client->net->pub.id.uint64, a_node_client->info->hdr.cell_id.uint64,
                                 NODE_ADDR_FP_ARGS_S(a_node_client->info->hdr.address));
+    dap_chain_node_client_close(a_node_client);
 }
 
 /**
-- 
GitLab