diff --git a/3rdparty/cuttdb/src/cdb_bgtask.c b/3rdparty/cuttdb/src/cdb_bgtask.c index 1d16c81a95ec1a5b83b64283150fe97e86f83d64..d12bd26e6c3b35e61e97aab1f2be49b10ea9cd80 100644 --- a/3rdparty/cuttdb/src/cdb_bgtask.c +++ b/3rdparty/cuttdb/src/cdb_bgtask.c @@ -16,14 +16,7 @@ #include "cdb_bgtask.h" #include <stdlib.h> #include <errno.h> -#if defined(DAP_OS_DARWIN) #include <signal.h> -#elif defined(_WIN32) -#include <sys/signal.h> -#else -#include <signal.h> -#endif - /* where thread begins */ static void *_cdb_bgtask_func(void *arg); diff --git a/dap-sdk/core/include/dap_common.h b/dap-sdk/core/include/dap_common.h index 7baa879248bd5fb824dfcaaf99ee5521e7dc1698..abda812c208bf9804a17e41019220c68c8d8c621 100755 --- a/dap-sdk/core/include/dap_common.h +++ b/dap-sdk/core/include/dap_common.h @@ -192,8 +192,7 @@ DAP_STATIC_INLINE void _dap_aligned_free( void *ptr ) #if __SIZEOF_LONG__==8 #define DAP_UINT64_FORMAT_X "lX" #define DAP_UINT64_FORMAT_x "lx" -#define DAP_UINT64_FORMAT_u "lu" -#define DAP_UINT64_FORMAT_U "lU" +#define DAP_UINT64_FORMAT_U "lu" #elif __SIZEOF_LONG__==4 #define DAP_UINT64_FORMAT_X "llX" #define DAP_UINT64_FORMAT_x "llx" diff --git a/dap-sdk/crypto/src/dap_cert_file.c b/dap-sdk/crypto/src/dap_cert_file.c index f3ef309e656ec3deee43becd89cbec70b523cbd2..52b76b66c0057c7e2a2ba72a4417778bb391a2d4 100755 --- a/dap-sdk/crypto/src/dap_cert_file.c +++ b/dap-sdk/crypto/src/dap_cert_file.c @@ -39,8 +39,9 @@ static const char s_key_inheritor[] = "Inheritor"; * @brief dap_cert_file_save * @param a_cert * @param a_cert_file_path - * @return + * @return int */ + int dap_cert_file_save(dap_cert_t * a_cert, const char * a_cert_file_path) { char * l_file_dir = dap_path_get_dirname(a_cert_file_path); @@ -72,6 +73,15 @@ int dap_cert_file_save(dap_cert_t * a_cert, const char * a_cert_file_path) } // balance the binary tree + +/** + * @brief s_balance_the_tree + * + * @param a_reorder + * @param a_left_idx + * @param a_right_idx + */ + void s_balance_the_tree(dap_cert_file_aux_t *a_reorder, size_t a_left_idx, size_t a_right_idx) { if (a_left_idx == a_right_idx) { @@ -86,6 +96,14 @@ void s_balance_the_tree(dap_cert_file_aux_t *a_reorder, size_t a_left_idx, size_ } } +/** + * @brief dap_cert_deserialize_meta + * + * @param a_cert + * @param a_data + * @param a_size + */ + void dap_cert_deserialize_meta(dap_cert_t *a_cert, const uint8_t *a_data, size_t a_size) { dap_cert_metadata_t **l_meta_arr = NULL; @@ -152,6 +170,14 @@ void dap_cert_deserialize_meta(dap_cert_t *a_cert, const uint8_t *a_data, size_t DAP_DELETE(l_meta_arr); } +/** + * @brief dap_cert_serialize_meta + * + * @param a_cert + * @param a_buflen_out + * @return uint8_t* + */ + uint8_t *dap_cert_serialize_meta(dap_cert_t *a_cert, size_t *a_buflen_out) { if (!a_cert) { @@ -218,11 +244,12 @@ uint8_t *dap_cert_serialize_meta(dap_cert_t *a_cert, size_t *a_buflen_out) } /** - * @brief dap_cert_file_save_to_mem + * @brief dap_cert_mem_save * @param a_cert * @param a_cert_size_out - * @return + * @return uint8_t* */ + uint8_t* dap_cert_mem_save(dap_cert_t * a_cert, uint32_t *a_cert_size_out) { dap_cert_file_hdr_t l_hdr={0}; @@ -306,8 +333,8 @@ lb_exit: /** * @brief dap_cert_file_load - * @param a_cert_file_path - * @return + * @param a_cert_file_path: path to certificate, for example "{PREFIX}/var/lib/ca/node-addr.dcert" + * @return dap_cert_t */ dap_cert_t* dap_cert_file_load(const char * a_cert_file_path) @@ -338,10 +365,12 @@ lb_exit: /** * @brief dap_cert_mem_load - * @param a_data - * @param a_data_size - * @return + * + * @param a_data - pointer to buffer with certificate, early loaded from filesystem + * @param a_data_size - size of certificate + * @return dap_cert_t* */ + dap_cert_t* dap_cert_mem_load(const void * a_data, size_t a_data_size) { dap_cert_t * l_ret = NULL; diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c index 388b45ba603ab272bda407b97c89ed7dbc198561..7e93007e3e0fb5c94b95d948f5ea1d7d23dacf84 100644 --- a/dap-sdk/net/client/dap_client_pvt.c +++ b/dap-sdk/net/client/dap_client_pvt.c @@ -903,7 +903,6 @@ static void s_request_error(int a_err_code, void * a_obj) static void s_request_response(void * a_response, size_t a_response_size, void * a_obj) { dap_client_pvt_t * l_client_pvt = (dap_client_pvt_t *) a_obj; - assert(l_client_pvt); //int l_ref = dap_client_pvt_get_ref(a_client_internal); if(l_client_pvt->is_encrypted) { diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c index 5cd6763483c06787f4a4980fd84da5de4db10b91..e17c0c52f95ce9f9a2509e7db6889c5adb8d58ea 100644 --- a/dap-sdk/net/core/dap_events_socket.c +++ b/dap-sdk/net/core/dap_events_socket.c @@ -1953,6 +1953,7 @@ void dap_events_socket_set_writable_mt(dap_worker_t * a_w, dap_events_socket_uui { dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (!l_msg) return; l_msg->esocket_uuid = a_es_uuid; + if (a_is_ready) l_msg->flags_set = DAP_SOCK_READY_TO_WRITE; else diff --git a/dap-sdk/net/libdap-net.pri b/dap-sdk/net/libdap-net.pri index ee91fe4e2fb4d59071395e71fa1585ea4cb1a35c..f753e5f14e8b91509e61f8dbe4e81e441219bf29 100755 --- a/dap-sdk/net/libdap-net.pri +++ b/dap-sdk/net/libdap-net.pri @@ -9,6 +9,8 @@ INCLUDEPATH += \ # /usr/include \ # /usr/include/x86_64-linux-gnu/bits \ # /usr/include/x86_64-linux-gnu \ + $$PWD/core/include \ + $$PWD/client/include \ $$PWD/../net/server/http_server/http_client/include \ $$PWD/../net/server/http_server/include \ $$PWD/../net/server/enc_server/include \ diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c index 238e97a4a69df20aafab2d60b05c1d165f0dfa1c..8e44c836749ef016857260637011c9092096f604 100644 --- a/modules/chain/dap_chain_cell.c +++ b/modules/chain/dap_chain_cell.c @@ -115,14 +115,13 @@ void dap_chain_cell_delete(dap_chain_cell_t *a_cell) int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path) { dap_chain_cell_t * l_cell = dap_chain_cell_create(); - l_cell->file_storage_path = dap_strdup( a_cell_file_path ); - - char *l_file_path = dap_strdup_printf("%s/%s", DAP_CHAIN_PVT (a_chain)->file_storage_dir, - l_cell->file_storage_path); - - l_cell->file_storage = fopen(l_file_path,"rb"); - DAP_DELETE(l_file_path); + { + char l_file_path[MAX_PATH] = {'\0'}; + dap_snprintf(l_file_path, MAX_PATH, "%s/%s", DAP_CHAIN_PVT(a_chain)->file_storage_dir, + l_cell->file_storage_path); + l_cell->file_storage = fopen(l_file_path,"rb"); + } if ( l_cell->file_storage ){ dap_chain_cell_file_header_t l_hdr = {0}; if ( fread( &l_hdr,1,sizeof(l_hdr),l_cell->file_storage ) == sizeof (l_hdr) ) { @@ -186,12 +185,12 @@ int dap_chain_cell_file_append( dap_chain_cell_t * a_cell, const void* a_atom, s size_t l_total_wrote_bytes = 0; // file need to be opened or created if(a_cell->file_storage == NULL) { - char *l_file_path = dap_strdup_printf("%s/%s", DAP_CHAIN_PVT ( a_cell->chain)->file_storage_dir, - a_cell->file_storage_path); + char l_file_path[MAX_PATH] = {'\0'}; + dap_snprintf(l_file_path, MAX_PATH, "%s/%s", DAP_CHAIN_PVT(a_cell->chain)->file_storage_dir, + a_cell->file_storage_path); a_cell->file_storage = fopen(l_file_path, "ab"); if(a_cell->file_storage == NULL) a_cell->file_storage = fopen(l_file_path, "wb"); - DAP_DELETE(l_file_path); } if(!a_cell->file_storage) { log_it(L_ERROR, "File \"%s\" not opened for write cell 0x%016X", @@ -255,10 +254,10 @@ int dap_chain_cell_file_update( dap_chain_cell_t * a_cell) return -1; } if(a_cell->file_storage == NULL ){ // File need to be created - char *l_file_path = dap_strdup_printf("%s/%s", DAP_CHAIN_PVT ( a_cell->chain)->file_storage_dir, - a_cell->file_storage_path); + char l_file_path[MAX_PATH] = {'\0'}; + dap_snprintf(l_file_path, MAX_PATH, "%s/%s", DAP_CHAIN_PVT(a_cell->chain)->file_storage_dir, + a_cell->file_storage_path); a_cell->file_storage = fopen(l_file_path, "wb"); - DAP_DELETE(l_file_path); if(a_cell->file_storage) { dap_chain_cell_file_header_t l_hdr = { .signature = DAP_CHAIN_CELL_FILE_SIGNATURE, diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 830f391af1e7c6c7ccaa98604eed148b1ec22efb..86a353e7ec4526bdfec864dab5b2ab82b325b934 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -574,7 +574,7 @@ static void s_gdb_in_pkt_error_worker_callback(dap_worker_t *a_worker, void *a_a dap_stream_ch_t *l_ch = dap_stream_ch_find_by_uuid_unsafe(DAP_STREAM_WORKER(a_worker), l_sync_request->ch_uuid); if( l_ch == NULL ){ log_it(L_INFO,"Client disconnected before we sent the reply"); - s_sync_request_delete(l_sync_request); + DAP_DELETE(l_sync_request); return; } @@ -653,8 +653,10 @@ static bool s_gdb_in_pkt_proc_callback(dap_proc_thread_t *a_thread, void *a_arg) } // save data to global_db if(!dap_chain_global_db_obj_save(l_obj, 1)) { + struct sync_request *l_sync_req_err = DAP_NEW_Z(struct sync_request); + memcpy(l_sync_req_err, l_sync_request, sizeof(struct sync_request)); dap_proc_thread_worker_exec_callback(a_thread, l_sync_request->worker->id, - s_gdb_in_pkt_error_worker_callback, l_sync_request); + s_gdb_in_pkt_error_worker_callback, l_sync_req_err); } else { if (s_debug_more) log_it(L_DEBUG, "Added new GLOBAL_DB synchronization record"); @@ -1000,8 +1002,8 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) // Response with atom hashes and sizes case DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_CHAINS :{ - uint l_count_added=0; - uint l_count_total=0; + unsigned int l_count_added=0; + unsigned int l_count_total=0; dap_chain_t * l_chain = dap_chain_find_by_id(l_chain_pkt->hdr.net_id, l_chain_pkt->hdr.chain_id); if (! l_chain){ diff --git a/modules/common/dap_chain_datum_tx_items.c b/modules/common/dap_chain_datum_tx_items.c index 57556863a58459846da71a5be902733b3e7fbee6..96f0ae56df8970dd701729f088e9d0bcc0607efa 100644 --- a/modules/common/dap_chain_datum_tx_items.c +++ b/modules/common/dap_chain_datum_tx_items.c @@ -152,14 +152,10 @@ dap_chain_tx_token_t* dap_chain_datum_tx_item_token_create(dap_chain_hash_fast_t { if(!a_ticker) return NULL; - size_t a_ticker_len = strlen(a_ticker); dap_chain_tx_token_t *l_item = DAP_NEW_Z(dap_chain_tx_token_t); l_item->header.type = TX_ITEM_TYPE_TOKEN; memcpy (& l_item->header.token_emission_hash, a_datum_token_hash, sizeof ( *a_datum_token_hash ) ); - if(a_ticker_len >= sizeof(l_item->header.ticker)) - a_ticker_len = sizeof(l_item->header.ticker) - 1; - strncpy(l_item->header.ticker, a_ticker, a_ticker_len); - + strncpy(l_item->header.ticker, a_ticker, sizeof(l_item->header.ticker) - 1); return l_item; } diff --git a/modules/global-db/dap_chain_global_db_hist.c b/modules/global-db/dap_chain_global_db_hist.c index c68958a5fb8b3dbe517d86b94cb0005b7b446e68..3839c1cd0c5d99bd5693994422d74bfcaee0ecba 100644 --- a/modules/global-db/dap_chain_global_db_hist.c +++ b/modules/global-db/dap_chain_global_db_hist.c @@ -158,7 +158,7 @@ static void *s_list_thread_proc(void *arg) l_obj_type = 'd'; size_t l_del_name_len = strlen(l_group_cur->name) - 4; //strlen(".del"); l_del_group_name_replace = DAP_NEW_SIZE(char, l_del_name_len + 1); - strncpy(l_del_group_name_replace, l_group_cur->name, l_del_name_len); + memcpy(l_del_group_name_replace, l_group_cur->name, l_del_name_len); l_del_group_name_replace[l_del_name_len] = '\0'; } else { l_obj_type = 'a'; @@ -192,8 +192,6 @@ static void *s_list_thread_proc(void *arg) if (!l_dap_db_log_list->is_process) break; } - if (l_del_group_name_replace) - DAP_DELETE(l_del_group_name_replace); dap_store_obj_free(l_objs, l_item_count); pthread_mutex_lock(&l_dap_db_log_list->list_mutex); // add l_list to list_write @@ -203,6 +201,9 @@ static void *s_list_thread_proc(void *arg) l_dap_db_log_list->list_read = l_list; pthread_mutex_unlock(&l_dap_db_log_list->list_mutex); } + + if (l_del_group_name_replace) + DAP_DELETE(l_del_group_name_replace); } pthread_mutex_lock(&l_dap_db_log_list->list_mutex); diff --git a/modules/net/CMakeLists.txt b/modules/net/CMakeLists.txt index 4085114464c3c8402f4581a3bc27ad5551eb0b02..4c05cea61e5af5c5a8710ee0c20c5a9904af0c74 100644 --- a/modules/net/CMakeLists.txt +++ b/modules/net/CMakeLists.txt @@ -37,7 +37,7 @@ endif() add_library(${PROJECT_NAME} STATIC ${DAP_CHAIN_NET_SRCS} ${DAP_CHAIN_NET_HEADERS} ${IPUTILS_SRCS} ${IPUTILS_HEADERS}) if(WIN32) - target_link_libraries(dap_core dap_chain_net dap_crypto dap_client dap_server_core dap_stream_ch_chain dap_stream_ch_chain_net dap_stream_ch_chain_net_srv dap_chain dap_chain_wallet dap_chain_net_srv + target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_client dap_server_core dap_notify_srv dap_stream_ch_chain dap_stream_ch_chain_net dap_stream_ch_chain_net_srv dap_chain dap_chain_wallet dap_chain_net_srv dap_chain_mempool dap_chain_global_db dap_chain_cs_none) endif() diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index e7da6ab2f75bab27f62a71ade10e7900c8d8e4e9..bdb5a2e59ddebf06ae084f86fdf55b2d4cbc4339 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -3250,7 +3250,7 @@ int com_token_emit(int a_argc, char ** a_argv, void *a_arg_func, char ** a_str_r sizeof(l_emission->data.type_auth.signs_count); l_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, l_emission_size); - strncpy(l_emission->hdr.ticker, l_ticker, sizeof(l_emission->hdr.ticker)); + strncpy(l_emission->hdr.ticker, l_ticker, sizeof(l_emission->hdr.ticker) - 1); l_emission->hdr.value = l_emission_value; l_emission->hdr.type = DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH; memcpy(&l_emission->hdr.address, l_addr, sizeof(l_emission->hdr.address)); diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index dbead5ab3007fb9ab86ceb512c9d3444830fefd6..5f87af7f8562bba2934c1032f3dda4efd6a596fb 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -1006,18 +1006,18 @@ static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_toke switch (l_token->type) { // Simple private token decl case DAP_CHAIN_DATUM_TOKEN_TYPE_SIMPLE: - dap_string_append_printf(l_str_out, " total_supply: %.0llf(%"DAP_UINT64_FORMAT_u"), signs: valid/total %02d/%02d \n", + dap_string_append_printf(l_str_out, " total_supply: %.0llf(%"DAP_UINT64_FORMAT_U"), signs: valid/total %02d/%02d \n", l_token->header_private.total_supply / DATOSHI_LD, l_token->header_private.total_supply, l_token->header_private.signs_valid, l_token->header_private.signs_total); break; case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL: - dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_u", flags: 0x%x \n", + dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_U", flags: 0x%x \n", l_token->header_private_decl.tsd_total_size, l_token->header_private_decl.flags); break; case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE: - dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_u", padding: 0x%x \n", + dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_U", padding: 0x%x \n", l_token->header_private_update.tsd_total_size, l_token->header_private_update.padding); break; @@ -1025,7 +1025,7 @@ static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_toke char *l_addr = dap_chain_addr_to_str(&l_token->header_public.premine_address); char * l_balance = dap_chain_balance_to_coins(l_token->header_public.total_supply); dap_string_append_printf(l_str_out, - " total_supply: %.0llf(%"DAP_UINT64_FORMAT_u"), flags: 0x%x\n, premine_supply: %"DAP_UINT64_FORMAT_u", premine_address '%s'\n", + " total_supply: %.0llf(%"DAP_UINT64_FORMAT_U"), flags: 0x%x\n, premine_supply: %"DAP_UINT64_FORMAT_U", premine_address '%s'\n", l_token->header_public.total_supply / DATOSHI_LD, l_token->header_public.total_supply, l_token->header_public.flags, @@ -1132,18 +1132,18 @@ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger switch (l_token->type) { // Simple private token decl case DAP_CHAIN_DATUM_TOKEN_TYPE_SIMPLE: - dap_string_append_printf(l_str_out, " total_supply: %.0llf(%"DAP_UINT64_FORMAT_u"), signs: valid/total %02d/%02d \n", + dap_string_append_printf(l_str_out, " total_supply: %.0llf(%"DAP_UINT64_FORMAT_U"), signs: valid/total %02d/%02d \n", l_token->header_private.total_supply / DATOSHI_LD, l_token->header_private.total_supply, l_token->header_private.signs_valid, l_token->header_private.signs_total); break; case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL: - dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_u", flags: 0x%x \n", + dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_U", flags: 0x%x \n", l_token->header_private_decl.tsd_total_size, l_token->header_private_decl.flags); break; case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE: - dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_u", padding: 0x%x \n", + dap_string_append_printf(l_str_out, " tsd_total_size: %"DAP_UINT64_FORMAT_U", padding: 0x%x \n", l_token->header_private_update.tsd_total_size, l_token->header_private_update.padding); break; @@ -1151,7 +1151,7 @@ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger char *l_addr = dap_chain_addr_to_str(&l_token->header_public.premine_address); char * l_balance = dap_chain_balance_to_coins(l_token->header_public.total_supply); dap_string_append_printf(l_str_out, - " total_supply: %.0llf(%"DAP_UINT64_FORMAT_u"), flags: 0x%x\n, premine_supply: %"DAP_UINT64_FORMAT_u", premine_address '%s'\n", + " total_supply: %.0llf(%"DAP_UINT64_FORMAT_U"), flags: 0x%x\n, premine_supply: %"DAP_UINT64_FORMAT_U", premine_address '%s'\n", l_token->header_public.total_supply / DATOSHI_LD, l_token->header_public.total_supply, l_token->header_public.flags,