From 97bb429accbf045c3a12dcdb422157e6054836fd Mon Sep 17 00:00:00 2001 From: "daniil.frolov" <daniil.frolov@demlabs.net> Date: Wed, 28 Feb 2024 13:19:22 +0700 Subject: [PATCH] fix #10705 and #10637 --- .../xchange/dap_chain_net_srv_xchange.c | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c index 26d3dc62c4..ad15a271c4 100644 --- a/modules/service/xchange/dap_chain_net_srv_xchange.c +++ b/modules/service/xchange/dap_chain_net_srv_xchange.c @@ -1061,6 +1061,16 @@ static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, v dap_cli_server_cmd_set_reply_text(a_str_reply, "Command 'order create' requires parameter -token_buy"); return -5; } + if (!dap_ledger_token_ticker_check(l_net->pub.ledger, l_token_buy_str)) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Token ticker %s not found", l_token_buy_str); + return -6; + } + + if (!strcmp(l_token_sell_str, l_token_buy_str)){ + dap_cli_server_cmd_set_reply_text(a_str_reply, "token_buy and token_sell must be different!"); + return -7; + } + const char *l_val_sell_str = NULL, *l_val_rate_str = NULL; dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-value", &l_val_sell_str); if (!l_val_sell_str) { @@ -1257,23 +1267,29 @@ static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, v dap_hash_fast_t l_order_tx_hash = {}; dap_chain_hash_fast_from_str(l_order_hash_str, &l_order_tx_hash); dap_chain_datum_tx_t * l_tx = dap_chain_net_get_tx_by_hash(l_net, &l_order_tx_hash, TX_SEARCH_TYPE_NET); + if( l_tx){ - int l_rc = s_tx_check_for_open_close(l_net,l_tx); - if(l_rc == 0){ - dap_cli_server_cmd_set_reply_text(a_str_reply, "WRONG TX %s", - dap_chain_hash_fast_to_str_static(&l_order_tx_hash)); - }else{ - dap_string_t * l_str_reply = dap_string_new(""); - dap_string_append_printf(l_str_reply, "Order %s hisrory:\n\n", l_order_hash_str); - dap_list_t *l_tx_list = dap_chain_net_get_tx_cond_chain(l_net, &l_order_tx_hash, c_dap_chain_net_srv_xchange_uid ); - dap_list_t *l_tx_list_temp = l_tx_list; - while(l_tx_list_temp ){ - dap_chain_datum_tx_t * l_tx_cur = (dap_chain_datum_tx_t*) l_tx_list_temp->data; - s_string_append_tx_cond_info(l_str_reply, l_net, l_tx_cur, TX_STATUS_ALL, true, true, false); - l_tx_list_temp = l_tx_list_temp->next; + xchange_tx_type_t l_tx_type = s_xchange_tx_get_type(l_net, l_tx, NULL, NULL, NULL); + char *l_tx_hash = dap_chain_hash_fast_to_str_new(&l_order_tx_hash); + if(l_tx_type != TX_TYPE_ORDER){ + dap_cli_server_cmd_set_reply_text(a_str_reply, "Datum with hash %s is not order. Check hash.", l_tx_hash); + } else { + int l_rc = s_tx_check_for_open_close(l_net,l_tx); + if(l_rc == 0){ + dap_cli_server_cmd_set_reply_text(a_str_reply, "WRONG TX %s", l_tx_hash); + }else{ + dap_string_t * l_str_reply = dap_string_new(""); + dap_string_append_printf(l_str_reply, "Order %s hisrory:\n\n", l_order_hash_str); + dap_list_t *l_tx_list = dap_chain_net_get_tx_cond_chain(l_net, &l_order_tx_hash, c_dap_chain_net_srv_xchange_uid ); + dap_list_t *l_tx_list_temp = l_tx_list; + while(l_tx_list_temp ){ + dap_chain_datum_tx_t * l_tx_cur = (dap_chain_datum_tx_t*) l_tx_list_temp->data; + s_string_append_tx_cond_info(l_str_reply, l_net, l_tx_cur, TX_STATUS_ALL, true, true, false); + l_tx_list_temp = l_tx_list_temp->next; + } + dap_list_free(l_tx_list); + *a_str_reply = dap_string_free(l_str_reply, false); } - dap_list_free(l_tx_list); - *a_str_reply = dap_string_free(l_str_reply, false); } }else{ dap_cli_server_cmd_set_reply_text(a_str_reply, "No history"); -- GitLab