From 2783b20ec4e43e7fb7d5d037cb3f98a73717bb7c Mon Sep 17 00:00:00 2001 From: Constantin Papizh <p.const@bk.ru> Date: Tue, 5 May 2020 15:28:09 +0300 Subject: [PATCH] Some runtime errors and segfaults fixed --- dap-sdk/net/client/dap_client.c | 3 +-- dap-sdk/net/client/dap_client_pvt.c | 4 ++-- modules/net/dap_chain_node_client.c | 4 +++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c index 73c9257cb8..d33a1a96b0 100644 --- a/dap-sdk/net/client/dap_client.c +++ b/dap-sdk/net/client/dap_client.c @@ -207,8 +207,7 @@ void dap_client_delete(dap_client_t * a_client) pthread_mutex_unlock(&a_client->mutex); // a_client will be deleted in dap_events_socket_delete() -> free( a_es->_inheritor ); //DAP_DELETE(a_client); - DAP_DELETE(a_client); - a_client = NULL; + DAP_DEL_Z(a_client); } /** diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c index f86c269f80..04e2fb58d3 100644 --- a/dap-sdk/net/client/dap_client_pvt.c +++ b/dap-sdk/net/client/dap_client_pvt.c @@ -581,7 +581,7 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) } else if (a_client_pvt->last_error != ERROR_NETWORK_CONNECTION_TIMEOUT) { if(!l_is_last_attempt) { // small delay before next request - log_it(L_INFO, "Connection attempt â„– %d", a_client_pvt->connect_attempt); + log_it(L_INFO, "Connection attempt %d", a_client_pvt->connect_attempt); #ifdef _WIN32 Sleep(300);// 0.3 sec #else @@ -595,7 +595,7 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) } else{ log_it(L_INFO, "Too many connection attempts. Tries are over."); - //a_client_pvt->stage_status = STAGE_STATUS_DONE; + a_client_pvt->stage_status = STAGE_STATUS_DONE; // unref pvt //l_is_unref = true; } diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index 5780765f0b..2b19601490 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -335,6 +335,7 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha l_lasts = l_chain->callback_atom_iter_get_lasts(l_iter, &l_lasts_size); if ( l_lasts){ for(size_t i = 0; i < l_lasts_size; i++) { + pthread_mutex_lock(&l_node_client->wait_mutex); dap_chain_atom_item_t * l_item = NULL; dap_chain_hash_fast_t l_atom_hash; dap_hash_fast(l_lasts[i], l_chain->callback_atom_get_size(l_lasts[i]), &l_atom_hash); @@ -347,6 +348,7 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha } //else // DAP_DELETE(l_lasts[i]); + pthread_mutex_unlock(&l_node_client->wait_mutex); } DAP_DELETE(l_lasts); } @@ -521,7 +523,7 @@ void dap_chain_node_client_close(dap_chain_node_client_t *a_client) CloseHandle( a_client->wait_cond ); #endif pthread_mutex_destroy(&a_client->wait_mutex); - DAP_DELETE(a_client); + DAP_DEL_Z(a_client); } } -- GitLab