From 7cb1ee4e39a946d9247736ea8e1271a1b836dc1d Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Tue, 2 Jul 2024 16:30:42 +0300
Subject: [PATCH] [*] Srv_stake check related changes

---
 dap-sdk                                             |  2 +-
 modules/net/dap_chain_node_client.c                 | 13 +++++++------
 .../stake/dap_chain_net_srv_stake_pos_delegate.c    |  5 +++--
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/dap-sdk b/dap-sdk
index dbe2fe1f58..fef9c1e0ed 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit dbe2fe1f5893776de3cb67ac2eb05e4885fe4332
+Subproject commit fef9c1e0ed18345ba26aa8ffe610cc83a55899f2
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index 2c6de201ba..85c1e97920 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -297,8 +297,9 @@ bool dap_chain_node_client_connect(dap_chain_node_client_t *a_node_client, const
     dap_client_set_is_always_reconnect(a_node_client->client, false);
     a_node_client->client->_inheritor = a_node_client;
     dap_client_set_active_channels_unsafe(a_node_client->client, a_active_channels);
-    const char *l_cert_node_name = dap_config_get_item_str(a_node_client->net->pub.config, "general", "auth_cert");
-    dap_client_set_auth_cert(a_node_client->client, l_cert_node_name);
+    const char *l_auth_cert_name = dap_config_get_item_str(a_node_client->net->pub.config, "general", "auth_cert");
+    if (l_auth_cert_name)
+        dap_client_set_auth_cert(a_node_client->client, l_auth_cert_name);
     char *l_host_addr = a_node_client->info->ext_host;
     
     if ( !*l_host_addr || !strcmp(l_host_addr, "::") || !a_node_client->info->ext_port ) {
@@ -320,7 +321,7 @@ bool dap_chain_node_client_connect(dap_chain_node_client_t *a_node_client, const
  */
 void dap_chain_node_client_close_unsafe(dap_chain_node_client_t *a_node_client)
 {
-    log_it(L_INFO, "Closing node client to uplink"NODE_ADDR_FP_STR" [ %s : %u ]",
+    log_it(L_INFO, "Closing node client to uplink "NODE_ADDR_FP_STR" [ %s : %u ]",
                     NODE_ADDR_FP_ARGS_S(a_node_client->remote_node_addr),
                     a_node_client->info->ext_host,
                     a_node_client->info->ext_port);
@@ -396,8 +397,8 @@ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_s
 
     // prepare for signal waiting
     struct timespec l_cond_timeout;
-    clock_gettime( CLOCK_MONOTONIC, &l_cond_timeout);
-    l_cond_timeout.tv_sec += a_timeout_ms/1000;
+    clock_gettime(CLOCK_REALTIME, &l_cond_timeout);
+    l_cond_timeout.tv_sec += a_timeout_ms;//1000;
     // signal waiting
     dap_chain_node_client_state_t l_clinet_state = a_client->state;
     while (a_client->state == l_clinet_state) {
@@ -410,7 +411,7 @@ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_s
             break;
         }
         else if(l_ret_wait == ETIMEDOUT) { // 110 260
-            //log_it(L_NOTICE,"Wait for status is stopped by timeout");
+            log_it(L_NOTICE, "Wait for status is stopped by timeout");
             ret = -1;
             break;
         }else if (l_ret_wait != 0 ){
diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
index cb3b482092..5417154917 100644
--- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
@@ -2301,7 +2301,8 @@ int dap_chain_net_srv_stake_check_validator(dap_chain_net_t * a_net, dap_hash_fa
             if (l_sign_correct)
                 l_sign_correct = !dap_sign_verify_all(l_sign, validators_data->header.sign_size, l_test_data, sizeof(l_test_data));
         }
-        l_overall_correct = l_sign_correct && validators_data->header.flags == 0xCF;
+        l_overall_correct = l_sign_correct && (validators_data->header.flags & A_PROC) && (validators_data->header.flags & F_ORDR) &&
+                                              (validators_data->header.flags & D_SIGN) && (validators_data->header.flags & F_CERT);
         *out_data = *validators_data;
         out_data->header.sign_correct = l_sign_correct ? 1 : 0;
         out_data->header.overall_correct = l_overall_correct ? 1 : 0;
@@ -2408,7 +2409,7 @@ static int s_cli_srv_stake(int a_argc, char **a_argv, void **a_str_reply)
             int res = dap_chain_net_srv_stake_check_validator(l_net, &l_tx, &l_out, 10000, 15000);
             switch (res) {
             case -4:
-                dap_cli_server_cmd_set_reply_text(a_str_reply,"Requested conditional transaction has no requires conditional output");
+                dap_cli_server_cmd_set_reply_text(a_str_reply,"Requested conditional transaction has no required conditional output");
                 return -30;
                 break;
             case -5:
-- 
GitLab