From 0a455d706b5011886e57270ad538e713bb88a9e8 Mon Sep 17 00:00:00 2001
From: "roman.khlopkov" <roman.khlopkov@demlabs.net>
Date: Wed, 21 Feb 2024 18:35:33 +0300
Subject: [PATCH] [*] Announce node address per net based now

---
 dap-sdk                                       |  2 +-
 .../consensus/dag-poa/dap_chain_cs_dag_poa.c  |  1 -
 modules/net/dap_chain_net.c                   | 31 +++++++------------
 modules/net/include/dap_chain_net.h           |  2 +-
 4 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/dap-sdk b/dap-sdk
index a806d84506..e33119e884 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit a806d84506a9c073a90ca792006019aaa8acdb30
+Subproject commit e33119e8840942990fa78461420d49ea0976c002
diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
index 2c3218072d..f50230daf7 100644
--- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
+++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
@@ -971,7 +971,6 @@ dap_list_t *dap_chain_cs_dag_poa_get_auth_certs(dap_chain_t *a_chain, size_t *a_
     if (a_count_verify)
         *a_count_verify = l_poa_pvt->auth_certs_count_verify;
 
-
     dap_list_t *l_keys_list = NULL;
     for(size_t i = 0; i < l_poa_pvt->auth_certs_count; i++)
     {
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 998ceea52d..585fa6c4a0 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -2983,7 +2983,6 @@ int s_net_load(dap_chain_net_t *a_net)
     uint32_t l_timeout = dap_config_get_item_uint32_default(g_config, "node_client", "timer_update_states", 600);
     PVT(l_net)->main_timer = dap_interval_timer_create(l_timeout * 1000, s_main_timer_callback, l_net);
 
-
     dap_config_close(l_cfg);
     log_it(L_INFO, "Chain network \"%s\" initialized",l_net->pub.name);
 
@@ -3715,23 +3714,17 @@ uint256_t dap_chain_net_get_reward(dap_chain_net_t *a_net, uint64_t a_block_num)
     return uint256_0;
 }
 
-void dap_chain_net_announce_addrs() {
-    if(!HASH_COUNT(s_net_items)){
-        log_it(L_ERROR, "Can't find any nets");
-        return;
-    }
-    dap_chain_net_item_t *l_net_item = NULL, *l_tmp = NULL;
-    HASH_ITER(hh, s_net_items, l_net_item, l_tmp) {
-        dap_chain_net_pvt_t *l_net_pvt = PVT(l_net_item->chain_net);
-        if (l_net_pvt->node_info->hdr.ext_port &&
-                (l_net_pvt->node_info->hdr.ext_addr_v4.s_addr != INADDR_ANY
-                 || memcmp(&l_net_pvt->node_info->hdr.ext_addr_v6, &in6addr_any, sizeof(struct in6_addr))))
-        {
-            dap_chain_net_node_list_request(l_net_item->chain_net, l_net_pvt->node_info, false);
-            char l_node_addr_str[INET_ADDRSTRLEN] = { '\0' };
-            inet_ntop(AF_INET, &l_net_pvt->node_info->hdr.ext_addr_v4, l_node_addr_str, INET_ADDRSTRLEN);
-            log_it(L_MSG, "Announce our node address "NODE_ADDR_FP_STR" < %s:%u > in net %s",
-                   NODE_ADDR_FP_ARGS_S(g_node_addr), l_node_addr_str, l_net_pvt->node_info->hdr.ext_port, l_net_item->name);
-        }
+void dap_chain_net_announce_addrs(dap_chain_net_t *a_net)
+{
+    dap_return_if_fail(a_net);
+    dap_chain_net_pvt_t *l_net_pvt = PVT(a_net);
+    if (l_net_pvt->node_info->hdr.ext_port &&
+            (l_net_pvt->node_info->hdr.ext_addr_v4.s_addr != INADDR_ANY
+            || memcmp(&l_net_pvt->node_info->hdr.ext_addr_v6, &in6addr_any, sizeof(struct in6_addr)))) {
+        dap_chain_net_node_list_request(a_net, l_net_pvt->node_info, false);
+        char l_node_addr_str[INET_ADDRSTRLEN] = { '\0' };
+        inet_ntop(AF_INET, &l_net_pvt->node_info->hdr.ext_addr_v4, l_node_addr_str, INET_ADDRSTRLEN);
+        log_it(L_MSG, "Announce our node address "NODE_ADDR_FP_STR" < %s:%u > in net %s",
+               NODE_ADDR_FP_ARGS_S(g_node_addr), l_node_addr_str, l_net_pvt->node_info->hdr.ext_port, a_net->pub.name);
     }
 }
diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h
index 67f151c777..92548139f4 100644
--- a/modules/net/include/dap_chain_net.h
+++ b/modules/net/include/dap_chain_net.h
@@ -213,7 +213,7 @@ dap_list_t *dap_chain_datum_list(dap_chain_net_t *a_net, dap_chain_t *a_chain, d
 int dap_chain_datum_add(dap_chain_t * a_chain, dap_chain_datum_t *a_datum, size_t a_datum_size, dap_hash_fast_t *a_datum_hash);
 
 bool dap_chain_net_get_load_mode(dap_chain_net_t * a_net);
-void dap_chain_net_announce_addrs();
+void dap_chain_net_announce_addrs(dap_chain_net_t *a_net);
 char *dap_chain_net_links_dump(dap_chain_net_t*);
 
 enum dap_chain_net_json_rpc_error_list{
-- 
GitLab