diff --git a/dap-sdk/net/client/dap_client_http.c b/dap-sdk/net/client/dap_client_http.c index 2371d6cd58d2faba7729b5275fed15dbb1f72a30..baeef39724cd923730739a3ff4fdf08422206be1 100644 --- a/dap-sdk/net/client/dap_client_http.c +++ b/dap-sdk/net/client/dap_client_http.c @@ -341,6 +341,10 @@ void* dap_client_http_request_custom(const char *a_uplink_addr, uint16_t a_uplin // create socket int l_socket = socket( PF_INET, SOCK_STREAM, 0); + if (l_socket == -1) { + log_it(L_ERROR, "Error %d with socket create", errno); + return NULL; + } // set socket param int buffsize = DAP_CLIENT_HTTP_RESPONSE_SIZE_MAX; #ifdef _WIN32 diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c index ed75611c32415c6ae8195bb6ef06a52cfc00d79e..8455364d9c3fc86bec2b6b6cacabcd1421cd9a3c 100644 --- a/dap-sdk/net/client/dap_client_pvt.c +++ b/dap-sdk/net/client/dap_client_pvt.c @@ -439,6 +439,11 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) log_it(L_INFO, "Go to stage STREAM_SESSION: process the state ops"); a_client_pvt->stream_socket = socket( PF_INET, SOCK_STREAM, 0); + if (a_client_pvt->stream_socket == -1) { + log_it(L_ERROR, "Error %d with socket create", errno); + a_client_pvt->stage_status = STAGE_STATUS_ERROR; + break; + } #ifdef _WIN32 { int buffsize = 65536; diff --git a/dap-sdk/net/server/enc_server/dap_enc_http.c b/dap-sdk/net/server/enc_server/dap_enc_http.c index 79bbd50a90b7b19ec73600041c9730cf492eea80..e5513c121635f35a4749ae377c8983717ba23bc5 100644 --- a/dap-sdk/net/server/enc_server/dap_enc_http.c +++ b/dap-sdk/net/server/enc_server/dap_enc_http.c @@ -124,9 +124,6 @@ void enc_http_proc(struct dap_http_simple *cl_st, void * arg) dap_enc_key_delete(msrln_key); *return_code = Http_Status_OK; - - - *return_code = Http_Status_Unauthorized; } else{ log_it(L_ERROR,"Wrong path '%s' in the request to enc_http module",cl_st->http->url_path); *return_code = Http_Status_NotFound; diff --git a/dap-sdk/net/stream/ch/dap_stream_ch.c b/dap-sdk/net/stream/ch/dap_stream_ch.c index 4c4a8148c2b1d10ac82f8f13a3edc3cac60b6ede..8a93a0106ff1c9817ef62f808aefd3c11c492e08 100644 --- a/dap-sdk/net/stream/ch/dap_stream_ch.c +++ b/dap-sdk/net/stream/ch/dap_stream_ch.c @@ -132,6 +132,10 @@ void dap_stream_ch_delete(dap_stream_ch_t *a_ch) pthread_mutex_lock(&s_ch_table_lock); struct dap_stream_ch_table_t *l_ret;; HASH_FIND_PTR(s_ch_table, a_ch, l_ret); + if (!l_ret) { + pthread_mutex_unlock(&s_ch_table_lock); + return; + } HASH_DEL(s_ch_table, l_ret); pthread_mutex_unlock(&s_ch_table_lock); diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index bcc2ad76163c2e1c92f00b0717c9d87a9734d2af..b1fb31ee51129966288237deef8f022791a37fa4 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -362,7 +362,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net) case NODE_ROLE_ARCHIVE: case NODE_ROLE_CELL_MASTER: { // Add other root nodes as synchronization links - while (dap_list_length(l_pvt_net->links_info) <= s_max_links_count) { + while (dap_list_length(l_pvt_net->links_info) < s_max_links_count) { int i = rand() % l_pvt_net->seed_aliases_count; dap_chain_node_addr_t *l_link_addr = dap_chain_node_alias_find(l_net, l_pvt_net->seed_aliases[i]); dap_chain_node_info_read(l_net, l_link_addr); @@ -373,32 +373,30 @@ static int s_net_states_proc(dap_chain_net_t * l_net) case NODE_ROLE_LIGHT: default: { // Get DNS request result from root nodes as synchronization links - while (dap_list_length(l_pvt_net->links_info) <= s_max_links_count) { + while (dap_list_length(l_pvt_net->links_info) < s_max_links_count) { int i = rand() % l_pvt_net->seed_aliases_count; dap_chain_node_addr_t *l_remote_addr = dap_chain_node_alias_find(l_net, l_pvt_net->seed_aliases[i]); dap_chain_node_info_t *l_remote_node_info = dap_chain_node_info_read(l_net, l_remote_addr); dap_chain_node_info_t *l_link_node_info = DAP_NEW_Z(dap_chain_node_info_t); - int res = dap_dns_client_get_addr(l_remote_node_info->hdr.ext_addr_v4.s_addr, l_net->pub.name, l_link_node_info); + int res = 0;//dap_dns_client_get_addr(l_remote_node_info->hdr.ext_addr_v4.s_addr, l_net->pub.name, l_link_node_info); + memcpy(l_link_node_info, l_remote_node_info, sizeof(dap_chain_node_info_t)); DAP_DELETE(l_remote_node_info); if (res) { DAP_DELETE(l_link_node_info); } else { l_pvt_net->links_info = dap_list_append(l_pvt_net->links_info, l_link_node_info); } + if (l_pvt_net->state_target == NET_STATE_OFFLINE) { + l_pvt_net->state = NET_STATE_OFFLINE; + break; + } } } break; } - if (l_pvt_net->state_target > NET_STATE_LINKS_PREPARE) { - if (l_pvt_net->links_info) { // If links are present - l_pvt_net->state = NET_STATE_LINKS_CONNECTING; - log_it(L_DEBUG, "Prepared %u links, start to establish them", dap_list_length(l_pvt_net->links_info)); - } else { - log_it(L_WARNING, "No links for connecting, try again to find it"); - struct timespec l_sleep = {3, 0}; - nanosleep(&l_sleep, NULL); - } - }else { - log_it(L_WARNING, "Target state is NET_STATE_LINKS_PREPARE? Realy?"); + if (l_pvt_net->state_target != NET_STATE_OFFLINE) { + l_pvt_net->state = NET_STATE_LINKS_CONNECTING; + log_it(L_DEBUG, "Prepared %u links, start to establish them", dap_list_length(l_pvt_net->links_info)); + } else { l_pvt_net->state = l_pvt_net->state_target = NET_STATE_OFFLINE; } } break; @@ -428,8 +426,10 @@ static int s_net_states_proc(dap_chain_net_t * l_net) } } if (l_pvt_net->links) { // We have at least one working link - l_pvt_net->state = NET_STATE_LINKS_ESTABLISHED; + l_pvt_net->state = NET_STATE_SYNC_GDB; } else { // Try to find another links + struct timespec l_sleep = {3, 0}; + nanosleep(&l_sleep, NULL); l_pvt_net->state = NET_STATE_OFFLINE; } } break;