Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cellframe/cellframe-sdk
  • MIKA83/cellframe-sdk
2 results
Show changes
Commits on Source (1)
......@@ -2,7 +2,7 @@ project(cellframe-sdk C)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_C_STANDARD 11)
set(CELLFRAME_SDK_NATIVE_VERSION "2.6-46")
set(CELLFRAME_SDK_NATIVE_VERSION "2.6-47")
add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
set(DAPSDK_MODULES "")
......
......@@ -73,6 +73,7 @@ static void s_stream_ch_delete(dap_stream_ch_t* a_ch, void* a_arg);
static void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg);
static void s_stream_ch_packet_out(dap_stream_ch_t* a_ch, void* a_arg);
static bool s_debug_chain_sync=false;
/**
* @brief dap_stream_ch_chain_init
* @return
......@@ -82,6 +83,7 @@ int dap_stream_ch_chain_init()
log_it(L_NOTICE, "Chains and global db exchange channel initialized");
dap_stream_ch_proc_add(dap_stream_ch_chain_get_id(), s_stream_ch_new, s_stream_ch_delete, s_stream_ch_packet_in,
s_stream_ch_packet_out);
s_debug_chain_sync = dap_config_get_item_bool_default(g_config,"general","debug_chain_sync",false);
return 0;
}
......@@ -195,7 +197,8 @@ bool s_sync_gdb_callback(dap_proc_thread_t *a_thread, void *a_arg)
// Get log diff
uint64_t l_local_last_id = dap_db_log_get_last_id();
log_it(L_DEBUG, "Requested transactions %llu:%llu", l_ch_chain->request.id_start, l_local_last_id);
if (s_debug_chain_sync)
log_it(L_DEBUG, "Requested transactions %llu:%llu", l_ch_chain->request.id_start, l_local_last_id);
uint64_t l_start_item = l_ch_chain->request.id_start;
// If the current global_db has been truncated, but the remote node has not known this
if(l_ch_chain->request.id_start > l_local_last_id) {
......@@ -224,7 +227,8 @@ bool s_sync_gdb_callback(dap_proc_thread_t *a_thread, void *a_arg)
l_ch_chain->callback_notify_packet_out(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB,
NULL, 0, l_ch_chain->callback_notify_arg);
}
//log_it(L_INFO, "Prepared %u items for sync", l_db_log->items_number - l_request->id_start);
if (s_debug_chain_sync)
log_it(L_INFO, "Prepared %u items for sync", l_db_log->items_number - l_ch_chain->request.id_start);
// go to send data from list [in s_stream_ch_packet_out()]
// no data to send -> send one empty message DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB
dap_stream_ch_set_ready_to_write_unsafe(l_ch, true);
......@@ -246,7 +250,8 @@ bool s_chain_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
if (l_pkt_copy){
dap_chain_t *l_chain = dap_chain_find_by_id(l_pkt_copy->pkt_hdr.net_id, l_pkt_copy->pkt_hdr.chain_id);
if (!l_chain) {
log_it(L_WARNING, "No chain found for DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN");
if (s_debug_chain_sync)
log_it(L_WARNING, "No chain found for DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN");
return true;
}
dap_chain_atom_ptr_t l_atom_copy = (dap_chain_atom_ptr_t)l_pkt_copy->pkt_data;
......@@ -278,12 +283,13 @@ bool s_chain_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
do{
size_t l_atom_treshold_size;
// add into ledger
log_it(L_DEBUG, "Try to add atom from treshold");
if (s_debug_chain_sync)
log_it(L_DEBUG, "Try to add atom from treshold");
l_atom_treshold = l_chain->callback_atom_add_from_treshold(l_chain, &l_atom_treshold_size);
// add into file
if(l_atom_treshold) {
l_res = dap_chain_cell_file_append(l_cell, l_atom_treshold, l_atom_treshold_size);
log_it(L_DEBUG, "Added atom from treshold");
log_it(L_INFO, "Added atom from treshold");
if(l_res < 0) {
log_it(L_ERROR, "Can't save event 0x%x from treshold to the file '%s'",
l_atom_treshold, l_cell ? l_cell->file_storage_path : "[null]");
......@@ -345,7 +351,8 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
size_t l_data_obj_count = 0;
// deserialize data & Parse data from dap_db_log_pack()
dap_store_obj_t *l_store_obj = dap_db_log_unpack(l_pkt_copy->pkt_data, l_pkt_copy->pkt_data_size, &l_data_obj_count);
//log_it(L_INFO, "In: l_data_obj_count = %d", l_data_obj_count );
if (s_debug_chain_sync)
log_it(L_INFO, "In: l_data_obj_count = %d", l_data_obj_count );
for(size_t i = 0; i < l_data_obj_count; i++) {
// timestamp for exist obj
......@@ -387,6 +394,15 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
if(l_read_obj)
dap_store_obj_free(l_read_obj, l_count_read);
if (s_debug_chain_sync){
char l_ts_str[50];
dap_time_to_str_rfc822(l_ts_str, sizeof(l_ts_str), l_store_obj[i].timestamp);
log_it(L_DEBUG, "Unpacked log history: type='%c' (0x%02hhX) group=\"%s\" key=\"%s\""
" timestamp=\"%s\" value_len=%u ",
(char ) l_store_obj[i].type, l_store_obj[i].type, l_store_obj[i].group,
l_store_obj[i].key, l_ts_str, l_store_obj[i].value_len);
}
if(!l_apply) {
// If request was from defined node_addr we update its state
if(l_ch_chain->request.node_addr.uint64) {
......@@ -395,12 +411,6 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
continue;
}
char l_ts_str[50];
dap_time_to_str_rfc822(l_ts_str, sizeof(l_ts_str), l_store_obj[i].timestamp);
/*log_it(L_DEBUG, "Unpacked log history: type='%c' (0x%02hhX) group=\"%s\" key=\"%s\""
" timestamp=\"%s\" value_len=%u ",
(char ) l_store_obj[i].type, l_store_obj[i].type, l_store_obj[i].group,
l_store_obj[i].key, l_ts_str, l_store_obj[i].value_len);*/
// apply received transaction
dap_chain_t *l_chain = dap_chain_find_by_id(l_pkt_copy->pkt_hdr.net_id, l_pkt_copy->pkt_hdr.chain_id);
if(l_chain) {
......@@ -422,7 +432,8 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
if(l_ch_chain->request.node_addr.uint64) {
dap_db_set_last_id_remote(l_ch_chain->request.node_addr.uint64, l_obj->id);
}
//log_it(L_DEBUG, "Added new GLOBAL_DB history pack");
if (s_debug_chain_sync)
log_it(L_DEBUG, "Added new GLOBAL_DB history pack");
}
}
if(l_store_obj)
......@@ -480,32 +491,49 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
}
switch (l_ch_pkt->hdr.type) {
case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_ALL: {
log_it(L_INFO, "In: SYNCED_ALL pkt");
log_it(L_INFO, "In: SYNCED_ALL net 0x%08x chain 0x%08x cell 0x%08x", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB: {
log_it(L_INFO, "In: SYNCED_GLOBAL_DB pkt");
log_it(L_INFO, "In: SYNCED_GLOBAL_DB: net 0x%08x chain 0x%08x cell 0x%08x Between %u and %u", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id
, l_ch_chain->request.id_start, l_ch_chain->request.id_end);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB_GROUP: {
log_it(L_INFO, "In: SYNCED_GLOBAL_DB_GROUP pkt");
if (s_debug_chain_sync)
log_it(L_INFO, "In: SYNCED_GLOBAL_DB_GROUP pkt net 0x%08x chain 0x%08x cell 0x%08x", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB_GROUP: {
log_it(L_INFO, "In: SYNCED_GLOBAL_DB_GROUP pkt");
if (s_debug_chain_sync)
log_it(L_INFO, "In: SYNCED_GLOBAL_DB_GROUP pkt net 0x%08x chain 0x%08x cell 0x%08x", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS: {
log_it(L_INFO, "In: SYNCED_CHAINS pkt");
if (dap_log_level_get()<= L_INFO){
char *l_hash_from_str = dap_chain_hash_fast_to_str_new(&l_ch_chain->request.hash_from);
char *l_hash_to_str = dap_chain_hash_fast_to_str_new(&l_ch_chain->request.hash_to);
log_it(L_INFO, "In: SYNCED_CHAINS: between %s and %s",l_hash_from_str, l_hash_to_str);
DAP_DELETE(l_hash_from_str);
DAP_DELETE(l_hash_to_str);
}
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS: {
log_it(L_INFO, "In: SYNC_CHAINS pkt");
char *l_hash_from_str = dap_chain_hash_fast_to_str_new(&l_ch_chain->request.hash_from);
char *l_hash_to_str = dap_chain_hash_fast_to_str_new(&l_ch_chain->request.hash_to);
log_it(L_INFO, "In: SYNC_CHAINS pkt: net 0x%08x chain 0x%08x cell 0x%08x between %s and %s", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id, l_hash_from_str, l_hash_to_str);
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) {
if(l_ch_chain->state != CHAIN_STATE_IDLE) {
log_it(L_INFO, "Can't process SYNC_CHAINS request because not in idle state");
log_it(L_INFO, "Can't process SYNC_CHAINS request between %s and %s because not in idle state", l_hash_from_str,
l_hash_to_str);
dap_stream_ch_chain_pkt_write_error(a_ch, l_chain_pkt->hdr.net_id,
l_chain_pkt->hdr.chain_id, l_chain_pkt->hdr.cell_id,
"ERROR_STATE_NOT_IN_IDLE");
......@@ -522,10 +550,14 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
dap_proc_queue_add_callback_inter( a_ch->stream_worker->worker->proc_queue_input, s_sync_chains_callback, a_ch);
}
}
DAP_DELETE(l_hash_from_str);
DAP_DELETE(l_hash_to_str);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB: {
log_it(L_INFO, "In: SYNC_GLOBAL_DB pkt");
log_it(L_INFO, "In: SYNC_GLOBAL_DB pkt: net 0x%08x chain 0x%08x cell 0x%08x, range between %u and %u", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id, l_ch_chain->request.id_start, l_ch_chain->request.id_end );
if(l_ch_chain->state != CHAIN_STATE_IDLE) {
log_it(L_INFO, "Can't process SYNC_GLOBAL_DB request because not in idle state");
dap_stream_ch_chain_pkt_write_error(a_ch, l_chain_pkt->hdr.net_id,
......@@ -555,13 +587,16 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
break;
// first packet of data with source node address
case DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_CHAIN: {
log_it(L_INFO, "In: FIRST_CHAIN data_size=%d", l_chain_pkt_data_size);
log_it(L_INFO, "In: FIRST_CHAIN data_size=%d net 0x%08x chain 0x%08x cell 0x%08x", l_chain_pkt_data_size,l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
if(l_chain_pkt_data_size == sizeof(dap_chain_node_addr_t))
memcpy(&l_ch_chain->request.node_addr, l_chain_pkt->data, l_chain_pkt_data_size);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN: {
log_it(L_INFO, "In: CHAIN pkt data_size=%d", l_chain_pkt_data_size);
if (s_debug_chain_sync)
log_it(L_INFO, "In: CHAIN pkt data_size=%d net 0x%08x chain 0x%08x cell 0x%08x", l_chain_pkt_data_size,l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
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) {
// Expect atom element in
......@@ -586,13 +621,15 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
break;
// first packet of data with source node address
case DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB: {
log_it(L_INFO, "In: FIRST_GLOBAL_DB data_size=%d", l_chain_pkt_data_size);
log_it(L_INFO, "In: FIRST_GLOBAL_DB data_size=%d net 0x%08x chain 0x%08x cell 0x%08x", l_chain_pkt_data_size,l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
if(l_chain_pkt_data_size == sizeof(dap_chain_node_addr_t))
memcpy(&l_ch_chain->request.node_addr, l_chain_pkt->data, l_chain_pkt_data_size);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB: {
log_it(L_INFO, "In: GLOBAL_DB data_size=%d", l_chain_pkt_data_size);
log_it(L_INFO, "In: GLOBAL_DB data_size=%d net 0x%08x chain 0x%08x cell 0x%08x", l_chain_pkt_data_size,l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id);
// get transaction and save it to global_db
if(l_chain_pkt_data_size > 0) {
dap_chain_pkt_copy_t *l_pkt_copy = DAP_NEW_Z(dap_chain_pkt_copy_t);
......@@ -618,6 +655,8 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
l_sync_gdb.id_start = dap_db_get_last_id_remote(l_sync_gdb.node_addr.uint64);
dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain_pkt->hdr.net_id);
l_sync_gdb.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net);
log_it(L_INFO, "In: SYNC_GLOBAL_DB_RVRS pkt: net 0x%08x chain 0x%08x cell 0x%08x, request gdb sync from %u", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id, l_sync_gdb.id_start );
dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_chain_pkt->hdr.net_id,
l_chain_pkt->hdr.chain_id, l_chain_pkt->hdr.cell_id, &l_sync_gdb, sizeof(l_sync_gdb));
}
......@@ -631,8 +670,13 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
memcpy(&l_sync_chains.hash_from, l_hash, sizeof(*l_hash));
DAP_DELETE(l_hash);
}
char *l_hash_from_str = dap_chain_hash_fast_to_str_new(&l_sync_chains.hash_from);
log_it(L_INFO, "In: SYNC_CHAINS_RVRS pkt: net 0x%08x chain 0x%08x cell 0x%08x request chains sync from %s", l_ch_chain->request_hdr.net_id ,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id, l_hash_from_str);
dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_chain_pkt->hdr.net_id,
l_chain_pkt->hdr.chain_id, l_chain_pkt->hdr.cell_id, &l_sync_chains, sizeof(l_sync_chains));
DAP_DELETE(l_hash_from_str);
}
break;
case DAP_STREAM_CH_CHAIN_PKT_TYPE_ERROR:
......@@ -670,7 +714,8 @@ static void s_process_gdb_iter(dap_stream_ch_t *a_ch)
dap_db_log_list_t *l_db_list = l_ch_chain->request_global_db_trs;
dap_store_obj_pkt_t *l_pkt = (dap_store_obj_pkt_t *)l_ch_chain->db_iter->data;
uint32_t l_pkt_size = sizeof(dap_store_obj_pkt_t) + l_pkt->data_size;
log_it(L_INFO, "Send one global_db record packet len=%d (rest=%d/%d items)", l_pkt_size,
if( s_debug_chain_sync)
log_it(L_INFO, "Send one global_db record packet len=%d (rest=%d/%d items)", l_pkt_size,
dap_db_log_list_get_count_rest(l_db_list), dap_db_log_list_get_count(l_db_list));
dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_GLOBAL_DB,
l_ch_chain->request_hdr.net_id, l_ch_chain->request_hdr.chain_id,
......@@ -692,7 +737,8 @@ static bool s_out_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
dap_stream_ch_t *l_ch = (dap_stream_ch_t *)a_arg;
dap_stream_ch_chain_t *l_ch_chain = DAP_STREAM_CH_CHAIN(l_ch);
//log_it( L_DEBUG,"s_stream_ch_packet_out state=%d", l_ch_chain ? l_ch_chain->state : -1);
if(s_debug_chain_sync)
log_it( L_DEBUG,"s_stream_ch_packet_out state=%d", l_ch_chain ? l_ch_chain->state : -1);
switch (l_ch_chain->state) {
case CHAIN_STATE_IDLE: {
......@@ -720,8 +766,8 @@ static bool s_out_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
// free log list
dap_db_log_list_delete(l_ch_chain->request_global_db_trs);
l_ch_chain->request_global_db_trs = NULL;
log_it( L_DEBUG,"Syncronized database: last id %llu, items syncronyzed %llu ", dap_db_log_get_last_id(),
l_ch_chain->stats_request_gdb_processed );
log_it( L_INFO,"Syncronized database: last id %llu, items syncronyzed %llu ", dap_db_log_get_last_id(),
l_ch_chain->stats_request_gdb_processed );
// last message
dap_stream_ch_chain_sync_request_t l_request = {};
dap_stream_ch_chain_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB,
......@@ -738,7 +784,16 @@ static bool s_out_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
// Synchronize chains
case CHAIN_STATE_SYNC_CHAINS: {
if (l_ch_chain->request_atom_iter->cur) { // Process one chain from l_ch_chain->request_atom_iter
log_it(L_INFO, "Send one CHAIN packet len=%d", l_ch_chain->request_atom_iter->cur_size);
if(s_debug_chain_sync){
dap_chain_hash_fast_t l_atom_hash={0};
dap_hash_fast(l_ch_chain->request_atom_iter->cur, l_ch_chain->request_atom_iter->cur_size,&l_atom_hash);
char l_atom_hash_str[DAP_CHAIN_HASH_FAST_SIZE+1];
dap_chain_hash_fast_to_str(&l_atom_hash,l_atom_hash_str,DAP_CHAIN_HASH_FAST_SIZE);
log_it(L_INFO, "Out CHAIN pkt: net=0x%08x chain=0x%08x cell=0x%08x atom_size=%d atom_hash=%s",
l_ch_chain->request_hdr.net_id,l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id
, l_ch_chain->request_atom_iter->cur_size,l_atom_hash_str);
}
dap_stream_ch_chain_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_CHAIN, l_ch_chain->request_hdr.net_id,
l_ch_chain->request_hdr.chain_id, l_ch_chain->request_hdr.cell_id,
l_ch_chain->request_atom_iter->cur, l_ch_chain->request_atom_iter->cur_size);
......@@ -751,7 +806,7 @@ static bool s_out_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
dap_stream_ch_chain_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS,
l_ch_chain->request_hdr.net_id, l_ch_chain->request_hdr.chain_id,
l_ch_chain->request_hdr.cell_id, &l_request, sizeof(l_request));
log_it( L_DEBUG,"Synced: %llu atoms processed", l_ch_chain->stats_request_atoms_processed);
log_it( L_INFO,"Synced: %llu atoms processed", l_ch_chain->stats_request_atoms_processed);
dap_stream_ch_chain_go_idle(l_ch_chain);
if (l_ch_chain->callback_notify_packet_out)
l_ch_chain->callback_notify_packet_out(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS, NULL,
......
......@@ -1611,17 +1611,17 @@ int s_net_load(const char * a_net_name, uint16_t a_acl_idx)
log_it(L_ERROR,"Can't get hash string for node address!");
} else {
PVT(l_net)->node_info = dap_chain_node_info_read (l_net, l_node_addr);
if ( PVT(l_net)->node_info ) {
log_it(L_NOTICE,"GDB Info: node_addr: " NODE_ADDR_FP_STR" links: %u cell_id: 0x%016X ",
NODE_ADDR_FP_ARGS(l_node_addr),
PVT(l_net)->node_info->hdr.links_number,
PVT(l_net)->node_info->hdr.cell_id.uint64);
// save cell_id
l_net->pub.cell_id.uint64 = PVT(l_net)->node_info->hdr.cell_id.uint64;
}else {
log_it(L_WARNING, "Not present node_info in database for our own address " NODE_ADDR_FP_STR,
NODE_ADDR_FP_ARGS(l_node_addr) );
if ( !PVT(l_net)->node_info ) { // If not present - create it
PVT(l_net)->node_info = DAP_NEW_Z(dap_chain_node_info_t);
memcpy(&PVT(l_net)->node_info->hdr.address, &l_node_addr,sizeof (*l_node_addr));
dap_chain_node_info_save(l_net,PVT(l_net)->node_info);
}
log_it(L_NOTICE,"GDB Info: node_addr: " NODE_ADDR_FP_STR" links: %u cell_id: 0x%016X ",
NODE_ADDR_FP_ARGS(l_node_addr),
PVT(l_net)->node_info->hdr.links_number,
PVT(l_net)->node_info->hdr.cell_id.uint64);
// save cell_id
l_net->pub.cell_id.uint64 = PVT(l_net)->node_info->hdr.cell_id.uint64;
}
}
else{
......
......@@ -174,7 +174,7 @@ dap_chain_node_info_t* dap_chain_node_info_read( dap_chain_net_t * a_net,dap_cha
l_node_info = (dap_chain_node_info_t *) dap_chain_global_db_gr_get(l_key, &node_info_size, a_net->pub.gdb_nodes);
if(!l_node_info) {
log_it(L_ERROR, "node with key %s (addr " NODE_ADDR_FP_STR ") not found in base",l_key, NODE_ADDR_FP_ARGS(l_address));
log_it(L_INFO, "node with key %s (addr " NODE_ADDR_FP_STR ") not found in base",l_key, NODE_ADDR_FP_ARGS(l_address));
DAP_DELETE(l_key);
return NULL;
}
......
......@@ -3300,8 +3300,8 @@ int com_token_emit(int a_argc, char ** a_argv, void *a_arg_func, char ** a_str_r
dap_chain_datum_tx_add_item(&l_tx, (const uint8_t*) l_in);
dap_chain_datum_tx_add_item(&l_tx, (const uint8_t*) l_out);
// Base tx don't need signature items
/*if (l_certs){
// Base tx don't need signature items but let it be
if (l_certs){
// Sign all that we have with certs
for(size_t i = 0; i < l_certs_size; i++) {
if(dap_chain_datum_tx_add_sign_item(&l_tx, l_certs[i]->enc_key) < 0) {
......@@ -3311,7 +3311,7 @@ int com_token_emit(int a_argc, char ** a_argv, void *a_arg_func, char ** a_str_r
return -3;
}
}
}*/
}
if (l_certs)
DAP_DEL_Z(l_certs);
......