From 6f28e633d0c238365c7c7242a72dee3e549ad524 Mon Sep 17 00:00:00 2001
From: "roman.khlopkov" <roman.khlopkov@demlabs.net>
Date: Tue, 14 May 2024 19:30:44 +0300
Subject: [PATCH] [+] Block standard chain protocol for GDB chains

---
 modules/chain/dap_chain_ch.c | 4 ++--
 modules/net/dap_chain_net.c  | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/modules/chain/dap_chain_ch.c b/modules/chain/dap_chain_ch.c
index 63efeb33a9..db000009a4 100644
--- a/modules/chain/dap_chain_ch.c
+++ b/modules/chain/dap_chain_ch.c
@@ -835,8 +835,8 @@ static bool s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
             break;
         }
         dap_chain_t *l_chain = dap_chain_find_by_id(l_chain_pkt->hdr.net_id, l_chain_pkt->hdr.chain_id);
-        if (!l_chain) {
-            log_it(L_WARNING, "Not found chain id 0x%016" DAP_UINT64_FORMAT_x " with net id 0x%016" DAP_UINT64_FORMAT_x,
+        if (!l_chain || l_chain->callback_load_from_gdb) {
+            log_it(L_WARNING, "Not found valid chain with id 0x%016" DAP_UINT64_FORMAT_x " and net id 0x%016" DAP_UINT64_FORMAT_x,
                                                         l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.net_id.uint64);
             dap_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id,
                     l_chain_pkt->hdr.chain_id, l_chain_pkt->hdr.cell_id,
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index a1767982f7..4836034886 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -2519,6 +2519,12 @@ static void s_sync_timer_callback(void *a_arg)
         }
         // TODO make correct working with cells
         assert(l_net_pvt->sync_context.cur_chain);
+        if (l_net_pvt->sync_context.cur_chain->callback_load_from_gdb) {
+            // This type of chain is GDB based and not synced by chains protocol
+            l_net_pvt->sync_context.cur_chain = l_net_pvt->sync_context.cur_chain->next;
+            l_net_pvt->sync_context.last_state = SYNC_STATE_SYNCED;
+            return;
+        }
         l_net_pvt->sync_context.cur_cell = l_net_pvt->sync_context.cur_chain->cells;
         l_net_pvt->sync_context.state = l_net_pvt->sync_context.last_state = SYNC_STATE_WAITING;
         dap_chain_ch_sync_request_t l_request = {};
-- 
GitLab