From 76f3b87d069f79fe8cbfb7b5dac3f0cd22cfa882 Mon Sep 17 00:00:00 2001
From: "oljas.jarasbaev" <oljas.jarasbaev@demlabs.net>
Date: Mon, 15 Jul 2024 11:57:58 +0000
Subject: [PATCH] Bugfix 12135

---
 modules/net/dap_chain_node_cli_cmd.c | 39 ++++++++++++++++------------
 1 file changed, 22 insertions(+), 17 deletions(-)

diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index e88688ca77..9c2e3d2b38 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -919,6 +919,7 @@ int com_node(int a_argc, char ** a_argv, void **a_str_reply)
     switch (cmd_num)
     {    
     case CMD_ADD: {
+        int l_res = -10;
         if (l_addr_str && dap_chain_net_is_my_node_authorized(l_net)) {
             // We're in authorized list, add directly
             uint16_t l_port = 0;
@@ -935,27 +936,31 @@ int com_node(int a_argc, char ** a_argv, void **a_str_reply)
                 }
             }
             l_node_info->ext_host_len = dap_strlen(l_node_info->ext_host);
-            int l_res = dap_chain_node_info_save(l_net, l_node_info);
+            l_res = dap_chain_node_info_save(l_net, l_node_info);
             if (l_res)
                 dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't add node %s, error %d", l_addr_str, l_res);
             else
                 dap_cli_server_cmd_set_reply_text(a_str_reply, "Successfully added node %s", l_addr_str);
-            return l_res;
-        }
-        // Synchronous request, wait for reply
-        int l_res = dap_chain_net_node_list_request(l_net,
-            l_port_str ? strtoul(l_port_str, NULL, 10) : dap_chain_net_get_my_node_info(l_net)->ext_port,
-            true, 'a');
-        switch (l_res)
-        {
-            case 1: dap_cli_server_cmd_set_reply_text(a_str_reply, "Successfully added"); return 0;
-            case 2: dap_cli_server_cmd_set_reply_text(a_str_reply, "No server"); break;
-            case 3: dap_cli_server_cmd_set_reply_text(a_str_reply, "Didn't add your address node to node list"); break;
-            case 4: dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't calculate hash for your addr"); break;
-            case 5: dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't do handshake for your node"); break;
-            case 6: dap_cli_server_cmd_set_reply_text(a_str_reply, "The node already exists"); break;
-            case 7: dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't process node list HTTP request"); break;
-            default:dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't process request, error %d", l_res); break;
+        } else if (l_hostname) {
+            dap_cli_server_cmd_set_reply_text(a_str_reply, "You have no access rights");
+        } else if (l_addr_str) {
+            // Synchronous request, wait for reply
+            l_res = dap_chain_net_node_list_request(l_net,
+                l_port_str ? strtoul(l_port_str, NULL, 10) : dap_chain_net_get_my_node_info(l_net)->ext_port,
+                true, 'a');
+            switch (l_res)
+            {
+                case 1: dap_cli_server_cmd_set_reply_text(a_str_reply, "Successfully added"); return 0;
+                case 2: dap_cli_server_cmd_set_reply_text(a_str_reply, "No server"); break;
+                case 3: dap_cli_server_cmd_set_reply_text(a_str_reply, "Didn't add your address node to node list"); break;
+                case 4: dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't calculate hash for your addr"); break;
+                case 5: dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't do handshake for your node"); break;
+                case 6: dap_cli_server_cmd_set_reply_text(a_str_reply, "The node already exists"); break;
+                case 7: dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't process node list HTTP request"); break;
+                default:dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't process request, error %d", l_res); break;
+            }
+        } else {
+            dap_cli_server_cmd_set_reply_text(a_str_reply, "node add requires parameter '-addr'");
         }
         return l_res;
     }
-- 
GitLab