From e8b128800274dba9b4a5fe7244ae02fd24eeeff7 Mon Sep 17 00:00:00 2001
From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net>
Date: Tue, 5 Nov 2019 18:49:07 +0700
Subject: [PATCH] [*] Fixed orders dump

---
 dap_chain_net_srv.c        | 16 ++++++++--------
 dap_chain_net_srv_common.h |  4 +++-
 dap_chain_net_srv_order.c  | 14 +++++++-------
 3 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/dap_chain_net_srv.c b/dap_chain_net_srv.c
index eb398ff..843b909 100755
--- a/dap_chain_net_srv.c
+++ b/dap_chain_net_srv.c
@@ -91,7 +91,7 @@ int dap_chain_net_srv_init(void)
         "net_srv -net <chain net name> order dump -hash <Order hash>\n"
         "\tOrder dump info\n"
         "net_srv -net <chain net name> order create -direction <sell|buy> -srv_uid <Service UID> -srv_class <Service Class> -price <Price>\\\n"
-        "        -price_unit <Price Unit> -price_ticker <Token ticker> -node_addr <Node Address> -tx_cond <TX Cond Hash> \\\n"
+        "        -price_unit <Price Unit> -price_token <Token ticker> -node_addr <Node Address> -tx_cond <TX Cond Hash> \\\n"
         "        [-expires <Unix time when expires>]\\\n"
         "\tOrder create\n" );
 
@@ -224,11 +224,9 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
                 uint64_t l_price_min=0, l_price_max =0 ;
                 dap_chain_net_srv_price_unit_uid_t l_price_unit={{0}};
                 dap_chain_net_srv_order_direction_t l_direction = SERV_DIR_UNDEFINED;
-                char l_price_token[DAP_CHAIN_TICKER_SIZE_MAX]={0};
-
 
-                if( dap_chain_net_srv_order_find_all_by( l_net,l_direction,l_srv_uid,l_srv_class,l_price_unit, l_price_token, l_price_min, l_price_max,&l_orders,&l_orders_size) == 0 ){
-                    dap_string_append_printf(l_string_ret,"Found %u orders:\n",l_orders_size);
+                if( dap_chain_net_srv_order_find_all_by( l_net,l_direction,l_srv_uid,l_srv_class,l_price_unit, NULL, l_price_min, l_price_max,&l_orders,&l_orders_size) == 0 ){
+                    dap_string_append_printf(l_string_ret,"Found %zd orders:\n",l_orders_size);
                     for (size_t i = 0; i< l_orders_size; i++){
                         dap_chain_net_srv_order_dump_to_string(l_orders+i,l_string_ret);
                         dap_string_append(l_string_ret,"\n");
@@ -287,7 +285,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
             const char*  l_comments = NULL;
             dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-comments", &l_comments);
 
-            if ( l_srv_uid_str && l_srv_class_str && l_node_addr_str && l_tx_cond_hash_str && l_price_str ) {
+            if ( l_srv_uid_str && l_srv_class_str && l_price_str && l_price_token_str && l_price_unit_str) {
                 dap_chain_net_srv_uid_t l_srv_uid={{0}};
                 dap_chain_net_srv_class_t l_srv_class= SERV_CLASS_UNDEFINED;
                 dap_chain_node_addr_t l_node_addr={0};
@@ -309,8 +307,10 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
                     l_expires = (dap_chain_time_t ) atoll( l_expires_str);
                 l_srv_uid.uint64 = (uint64_t) atoll( l_srv_uid_str);
                 l_srv_class = (dap_chain_net_srv_class_t) atoi( l_srv_class_str );
-                dap_chain_node_addr_from_str( &l_node_addr, l_node_addr_str );
-                dap_chain_str_to_hash_fast (l_tx_cond_hash_str, &l_tx_cond_hash);
+                if (l_node_addr_str)
+                    dap_chain_node_addr_from_str( &l_node_addr, l_node_addr_str );
+                if (l_tx_cond_hash_str)
+                    dap_chain_str_to_hash_fast (l_tx_cond_hash_str, &l_tx_cond_hash);
                 l_price = (uint64_t) atoll ( l_price_str );
                 l_price_unit.uint32 = (uint32_t) atol ( l_price_unit_str );
 
diff --git a/dap_chain_net_srv_common.h b/dap_chain_net_srv_common.h
index f8cf389..b680a5f 100755
--- a/dap_chain_net_srv_common.h
+++ b/dap_chain_net_srv_common.h
@@ -44,6 +44,7 @@ typedef union {
 #endif
 } dap_chain_net_srv_uid_t;
 
+#define DAP_CHAIN_NET_SRV_PRICE_UNIT_UNDEFINED                        0x00000000
 #define DAP_CHAIN_NET_SRV_PRICE_UNIT_BYTE                             0x00000001
 #define DAP_CHAIN_NET_SRV_PRICE_UNIT_SECOND                           0x00000010
 #define DAP_CHAIN_NET_SRV_PRICE_UNIT_BYTE_PER_SECOND                  0x00000100
@@ -70,7 +71,8 @@ typedef enum dap_chain_net_srv_order_direction{
 
 //Types of services
 enum {
-    SERV_ID_VPN = 1,
+    SERV_ID_UNDEFINED = 0x00000000,
+    SERV_ID_VPN = 0x00000001,
 };
 
 //Units of service
diff --git a/dap_chain_net_srv_order.c b/dap_chain_net_srv_order.c
index 872a173..3eabd47 100644
--- a/dap_chain_net_srv_order.c
+++ b/dap_chain_net_srv_order.c
@@ -88,7 +88,6 @@ char* dap_chain_net_srv_order_create(
             return NULL;
         }
         DAP_DELETE( l_order_hash );
-        DAP_DELETE( l_order_hash_str );
         DAP_DELETE( l_order );
         DAP_DELETE( l_gdb_group_str );
         return  l_order_hash_str;
@@ -142,7 +141,7 @@ int dap_chain_net_srv_order_find_all_by(dap_chain_net_t * a_net,const dap_chain_
         char * l_gdb_group_str = dap_chain_net_srv_order_get_gdb_group( a_net);
         size_t l_orders_count = 0;
         dap_global_db_obj_t * l_orders = dap_chain_global_db_gr_load(l_gdb_group_str,&l_orders_count);
-
+        log_it( L_DEBUG ,"Loaded %zd orders", l_orders_count);
         bool l_order_pass_first=true;
         size_t l_order_passed_index;
 lb_order_pass:
@@ -151,10 +150,11 @@ lb_order_pass:
             dap_chain_net_srv_order_t * l_order = (dap_chain_net_srv_order_t *) l_orders[i].value;
             // Check direction
             if (a_direction != SERV_DIR_UNDEFINED )
-                if ( l_order->direction == a_direction )
+                if ( l_order->direction != a_direction )
                     continue;
+
             // Check srv uid
-            if ( a_srv_uid.uint64)
+            if ( a_srv_uid.uint64 )
                 if ( l_order->srv_uid.uint64 != a_srv_uid.uint64 )
                     continue;
             // Check srv class
@@ -175,12 +175,12 @@ lb_order_pass:
                     continue;
             // Check ticker
             if ( a_price_ticker )
-                if ( strcmp( l_order->price_ticker, a_price_ticker) == 0 )
+                if ( strcmp( l_order->price_ticker, a_price_ticker) != 0 )
                     continue;
             if( !l_order_pass_first ){
                 memcpy(a_output_orders[l_order_passed_index], l_order, sizeof (dap_chain_net_srv_order_t));
-            }
-            l_order_passed_index++;
+            }else
+                l_order_passed_index++;
         }
         // Dirty goto usage ho ho ho
         if (l_order_pass_first) {
-- 
GitLab