diff --git a/3rdparty/libmaxminddb/CMakeLists.txt b/3rdparty/libmaxminddb/CMakeLists.txt
index 721af15431b262f5127ca5923f586f9c0959fba6..b0ad5a319ed1c00de246f500ab6d4c2ce3018637 100644
--- a/3rdparty/libmaxminddb/CMakeLists.txt
+++ b/3rdparty/libmaxminddb/CMakeLists.txt
@@ -12,7 +12,7 @@ add_library(${PROJECT_NAME} STATIC ${maxminddb_src} ${maxminddb_h})
 set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)
 set_target_properties(${PROJECT_NAME} PROPERTIES COMPILER_LANGUAGE C)
 target_include_directories(${PROJECT_NAME} INTERFACE .)
-target_compile_options(${PROJECT_NAME} PRIVATE -Wno-sign-compare)
+target_compile_options(${PROJECT_NAME} PRIVATE -Wno-sign-compare -Wno-pointer-sign)
 
 if (INSTALL_SDK)
 set_target_properties(${PROJECT_NAME}  PROPERTIES PUBLIC_HEADER "${maxminddb_h}")
@@ -22,7 +22,4 @@ INSTALL(TARGETS ${PROJECT_NAME}
         ARCHIVE DESTINATION lib/modules/net/
         PUBLIC_HEADER DESTINATION include/modules/net/maxminddb/        
 )
-
-
-
 endif()
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 4ba06647b8635c3beddbc5125ae6ab692884ab2c..4b2f762542d00d11c4da120963ad80946c0cbfe3 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -2368,37 +2368,32 @@ bool s_net_load(void *a_arg)
             l_chain->callback_created(l_chain, l_net->pub.config);
 
      if ( dap_config_get_item_bool_default(g_config, "server", "enabled", false) ) {
-        if ( !l_net_pvt->node_info->ext_port ) {
-            char l_host[DAP_HOSTADDR_STRLEN + 1] = { '\0' };
-            uint16_t l_ext_port = 0;
-            const char *l_ext_addr = dap_config_get_item_str_default(g_config, "server", "ext_address", NULL);
-            if (!l_ext_addr) {
-                log_it(L_INFO, "External address is not set, will be detected automatically");
-            } else {
-                struct sockaddr_storage l_saddr = { };
-                if ( 0 > dap_net_parse_config_address(l_ext_addr, l_host, &l_ext_port, &l_saddr, NULL) )
-                    log_it(L_ERROR, "Invalid server address \"%s\", fix config and restart node", l_ext_addr);
-                else {
-                    uint8_t l_hostlen = dap_strlen(l_host);
-                    l_net_pvt->node_info->ext_port = l_ext_port;
-                    l_net_pvt->node_info->ext_host_len = dap_strncpy(l_net_pvt->node_info->ext_host, l_host, l_hostlen) - l_net_pvt->node_info->ext_host;
-                }
-            }
-            if ( !l_net_pvt->node_info->ext_port ) {
-                const char **l_listening = dap_config_get_array_str(g_config, "server", DAP_CFG_PARAM_LISTEN_ADDRS, NULL);
-                l_net_pvt->node_info->ext_port =
-                    ( l_listening && dap_net_parse_config_address(*l_listening, NULL, &l_ext_port, NULL, NULL) > 0 && l_ext_port )
-                        ? l_ext_port
-                        : dap_config_get_item_int16_default(g_config, "server", DAP_CFG_PARAM_LEGACY_PORT, 8079); // TODO: default port?
+        char l_host[DAP_HOSTADDR_STRLEN + 1] = { '\0' };
+        uint16_t l_ext_port = 0;
+        const char *l_ext_addr = dap_config_get_item_str_default(g_config, "server", "ext_address", NULL);
+        if (l_ext_addr) {
+            struct sockaddr_storage l_saddr = { };
+            if ( 0 > dap_net_parse_config_address(l_ext_addr, l_host, &l_ext_port, &l_saddr, NULL) )
+                log_it(L_ERROR, "Invalid server address \"%s\", fix config and restart node", l_ext_addr);
+            else {
+                uint8_t l_hostlen = dap_strlen(l_host);
+                l_net_pvt->node_info->ext_port = l_ext_port;
+                l_net_pvt->node_info->ext_host_len = dap_strncpy(l_net_pvt->node_info->ext_host, l_host, l_hostlen) - l_net_pvt->node_info->ext_host;
             }
-        } // otherwise, we're in seed list - seed config predominates server config thus disambiguating the settings
-        
-        if (l_net_pvt->node_info->ext_host_len) {
-            log_it(L_INFO, "Server is configured with external address %s : %u",
-               l_net_pvt->node_info->ext_host, l_net_pvt->node_info->ext_port);
         }
-    } else
-        log_it(L_INFO, "Server is disabled");
+#ifdef DAP_TRY_DEFAULT_PORT
+        log_it(L_INFO, "External address is not set, will be detected automatically");
+        if ( !l_net_pvt->node_info->ext_port ) {
+            const char **l_listening = dap_config_get_array_str(g_config, "server", DAP_CFG_PARAM_LISTEN_ADDRS, NULL);
+            l_net_pvt->node_info->ext_port =
+                ( l_listening && dap_net_parse_config_address(*l_listening, NULL, &l_ext_port, NULL, NULL) > 0 && l_ext_port )
+                    ? l_ext_port
+                    : dap_config_get_item_int16_default(g_config, "server", DAP_CFG_PARAM_LEGACY_PORT, 8079);
+        }
+#endif
+        log_it(L_INFO, "Server is configured with external address %s : %u",
+            l_net_pvt->node_info->ext_host_len ? l_net_pvt->node_info->ext_host : "", l_net_pvt->node_info->ext_port);
+    }
 
     l_net_pvt->node_info->address.uint64 = g_node_addr.uint64;
 
@@ -3374,7 +3369,14 @@ 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(dap_chain_net_t *a_net)
+
+void dap_chain_net_announce_addr_all()
+{
+    for (dap_chain_net_item_t *it = s_net_items; it; it = it->hh.next)
+        dap_chain_net_announce_addr(it->chain_net);
+}
+
+void dap_chain_net_announce_addr(dap_chain_net_t *a_net)
 {
     dap_return_if_fail(a_net);
     dap_chain_net_pvt_t *l_net_pvt = PVT(a_net);
diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h
index 5cfa52d7c014c2f8aa05af933eedc7ddd03c112a..56eb1c1973c2e771aed626a590146c739c906d9d 100644
--- a/modules/net/include/dap_chain_net.h
+++ b/modules/net/include/dap_chain_net.h
@@ -201,7 +201,8 @@ int dap_chain_datum_add(dap_chain_t * a_chain, dap_chain_datum_t *a_datum, size_
 int dap_chain_datum_remove(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(dap_chain_net_t *a_net);
+void dap_chain_net_announce_addr(dap_chain_net_t *a_net);
+void dap_chain_net_announce_addr_all();
 char *dap_chain_net_links_dump(dap_chain_net_t*);
 struct json_object *dap_chain_net_states_json_collect(dap_chain_net_t * l_net);