From 83dc0d91d3c0cf3e4d1fa0ee8645d028e142948e Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Mon, 28 Sep 2020 16:05:46 +0700 Subject: [PATCH] [*] Dirty fix for non-working DNS situation --- modules/net/dap_chain_net.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 3130e4e291..10061b1e3e 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -417,7 +417,9 @@ static int s_net_states_proc(dap_chain_net_t * l_net) case NODE_ROLE_LIGHT: default: { // Get DNS request result from root nodes as synchronization links - while (dap_list_length(l_pvt_net->links_info) < s_max_links_count) { + int l_max_tries = 5; + int l_tries =0; + while (dap_list_length(l_pvt_net->links_info) < s_max_links_count && l_tries < l_max_tries) { int i = rand() % l_pvt_net->seed_aliases_count; dap_chain_node_addr_t *l_remote_addr = dap_chain_node_alias_find(l_net, l_pvt_net->seed_aliases[i]); dap_chain_node_info_t *l_remote_node_info = dap_chain_node_info_read(l_net, l_remote_addr); @@ -437,7 +439,28 @@ static int s_net_states_proc(dap_chain_net_t * l_net) l_pvt_net->state = NET_STATE_OFFLINE; break; } + l_tries++; } + + if (!l_pvt_net->links){ + for (int i = 0; i < MIN(s_max_links_count, l_pvt_net->seed_aliases_count); i++) { + dap_chain_node_addr_t *l_link_addr = dap_chain_node_alias_find(l_net, l_pvt_net->seed_aliases[i]); + if (l_link_addr->uint64 == l_own_addr) { + continue; // Do not link with self + } + dap_chain_node_info_t *l_link_node_info = dap_chain_node_info_read(l_net, l_link_addr); + if(l_link_node_info) { + l_pvt_net->links_info = dap_list_append(l_pvt_net->links_info, l_link_node_info); + } + else{ + log_it(L_WARNING, "Not found link "NODE_ADDR_FP_STR" in the node list", NODE_ADDR_FPS_ARGS(l_link_addr)); + } + if (dap_list_length(l_pvt_net->links_info) >= s_max_links_count) { + break; + } + } + } + } break; } } else { -- GitLab