diff --git a/dap-sdk b/dap-sdk index d6b22281ca619d673cbfff1258b4d0063a0057df..10498899c1adcfc7711137597d531539e086f445 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit d6b22281ca619d673cbfff1258b4d0063a0057df +Subproject commit 10498899c1adcfc7711137597d531539e086f445 diff --git a/modules/chain/dap_chain_ch.c b/modules/chain/dap_chain_ch.c index d24fa779010ed5808001459522e92040eb030df7..2771e6b3d14dbbdd6468b099400886b5b68d0370 100644 --- a/modules/chain/dap_chain_ch.c +++ b/modules/chain/dap_chain_ch.c @@ -154,39 +154,21 @@ static dap_memstat_rec_t s_memstat [MEMSTAT$K_NR] = { #endif -static const char *s_error_type_to_string(dap_chain_ch_error_type_t a_error) -{ - switch (a_error) { - case DAP_CHAIN_CH_ERROR_SYNC_REQUEST_ALREADY_IN_PROCESS: - return "SYNC_REQUEST_ALREADY_IN_PROCESS"; - case DAP_CHAIN_CH_ERROR_INCORRECT_SYNC_SEQUENCE: - return "INCORRECT_SYNC_SEQUENCE"; - case DAP_CHAIN_CH_ERROR_SYNC_TIMEOUT: - return "SYNCHRONIZATION TIMEOUT"; - case DAP_CHAIN_CH_ERROR_CHAIN_PKT_DATA_SIZE: - return "INVALID_PACKET_SIZE"; - case DAP_CHAIN_CH_ERROR_LEGACY_PKT_DATA_SIZE: - return "INVALID_LEGACY_PACKET_SIZE"; - case DAP_CHAIN_CH_ERROR_NET_INVALID_ID: - return "INVALID_NET_ID"; - case DAP_CHAIN_CH_ERROR_CHAIN_NOT_FOUND: - return "CHAIN_NOT_FOUND"; - case DAP_CHAIN_CH_ERROR_ATOM_NOT_FOUND: - return "ATOM_NOT_FOUND"; - case DAP_CHAIN_CH_ERROR_UNKNOWN_CHAIN_PKT_TYPE: - return "UNKNOWN_CHAIN_PACKET_TYPE"; - case DAP_CHAIN_CH_ERROR_GLOBAL_DB_INTERNAL_NOT_SAVED: - return "GLOBAL_DB_INTERNAL_SAVING_ERROR"; - case DAP_CHAIN_CH_ERROR_NET_IS_OFFLINE: - return "NET_IS_OFFLINE"; - case DAP_CHAIN_CH_ERROR_OUT_OF_MEMORY: - return "OUT_OF_MEMORY"; - case DAP_CHAIN_CH_ERROR_INTERNAL: - return "INTERNAL_ERROR"; - default: - return "UNKNOWN_ERROR"; - } -} +const char* const s_error_type_to_string[] = { + [DAP_CHAIN_CH_ERROR_SYNC_REQUEST_ALREADY_IN_PROCESS]= "SYNC_REQUEST_ALREADY_IN_PROCESS", + [DAP_CHAIN_CH_ERROR_INCORRECT_SYNC_SEQUENCE] = "INCORRECT_SYNC_SEQUENCE", + [DAP_CHAIN_CH_ERROR_SYNC_TIMEOUT] = "SYNCHRONIZATION TIMEOUT", + [DAP_CHAIN_CH_ERROR_CHAIN_PKT_DATA_SIZE] = "INVALID_PACKET_SIZE", + [DAP_CHAIN_CH_ERROR_LEGACY_PKT_DATA_SIZE] = "INVALID_LEGACY_PACKET_SIZE", + [DAP_CHAIN_CH_ERROR_NET_INVALID_ID] = "INVALID_NET_ID", + [DAP_CHAIN_CH_ERROR_CHAIN_NOT_FOUND] = "CHAIN_NOT_FOUND", + [DAP_CHAIN_CH_ERROR_ATOM_NOT_FOUND] = "ATOM_NOT_FOUND", + [DAP_CHAIN_CH_ERROR_UNKNOWN_CHAIN_PKT_TYPE] = "UNKNOWN_CHAIN_PACKET_TYPE", + [DAP_CHAIN_CH_ERROR_GLOBAL_DB_INTERNAL_NOT_SAVED] = "GLOBAL_DB_INTERNAL_SAVING_ERROR", + [DAP_CHAIN_CH_ERROR_NET_IS_OFFLINE] = "NET_IS_OFFLINE", + [DAP_CHAIN_CH_ERROR_OUT_OF_MEMORY] = "OUT_OF_MEMORY", + [DAP_CHAIN_CH_ERROR_INTERNAL] = "INTERNAL_ERROR" +}; /** * @brief dap_chain_ch_init @@ -686,7 +668,7 @@ void dap_stream_ch_write_error_unsafe(dap_stream_ch_t *a_ch, dap_chain_net_id_t { dap_chain_ch_t *l_ch_chain = DAP_CHAIN_CH(a_ch); dap_return_if_fail(l_ch_chain); - const char *l_err_str = s_error_type_to_string(a_error); + const char *l_err_str = a_error < DAP_CHAIN_CH_ERROR_LAST ? s_error_type_to_string[a_error] : "UNDEFINED ERROR"; dap_chain_ch_pkt_write_unsafe(a_ch, DAP_CHAIN_CH_PKT_TYPE_ERROR, a_net_id, a_chain_id, a_cell_id, l_err_str, strlen(l_err_str) + 1, DAP_CHAIN_CH_PKT_VERSION_LEGACY); s_ch_chain_go_idle(l_ch_chain); } @@ -1542,7 +1524,7 @@ static bool s_sync_timer_callback(void *a_arg) } bool l_timer_break = false; - const char *l_err_str = s_error_type_to_string(DAP_CHAIN_CH_ERROR_SYNC_TIMEOUT); + const char* l_err_str = s_error_type_to_string[DAP_CHAIN_CH_ERROR_SYNC_TIMEOUT]; if (l_ch_chain->sync_context) { struct sync_context *l_context = l_ch_chain->sync_context; if (l_context->last_activity + s_sync_timeout <= dap_time_now()) { diff --git a/modules/chain/include/dap_chain_ch.h b/modules/chain/include/dap_chain_ch.h index 384e5ec3d9154c784f783acb6caa0b6b06122237..da98e7e88fa5c016c40465c49b0c6884e657ba5a 100644 --- a/modules/chain/include/dap_chain_ch.h +++ b/modules/chain/include/dap_chain_ch.h @@ -63,7 +63,9 @@ typedef enum dap_chain_ch_error_type { DAP_CHAIN_CH_ERROR_INTERNAL, // Legacy DAP_CHAIN_CH_ERROR_GLOBAL_DB_INTERNAL_NOT_SAVED, - DAP_CHAIN_CH_ERROR_LEGACY_PKT_DATA_SIZE + DAP_CHAIN_CH_ERROR_LEGACY_PKT_DATA_SIZE, + // + DAP_CHAIN_CH_ERROR_LAST } dap_chain_ch_error_type_t; int dap_chain_ch_init(void); diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index ccc4c5b94d026ffb5454702c26c4a59765141862..d42f9997a549033e045f6a64bdd54c96a3de5b72 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -3106,10 +3106,11 @@ static void s_ch_in_pkt_callback(dap_stream_ch_t *a_ch, uint8_t a_type, const vo static void s_ch_out_pkt_callback(dap_stream_ch_t *a_ch, uint8_t a_type, const void *a_data, size_t a_data_size, void *a_arg) { - debug_if(s_debug_more, L_DEBUG, "Sent OUT sync packet type %hhu size %zu to addr " NODE_ADDR_FP_STR, - a_type, a_data_size, NODE_ADDR_FP_ARGS_S(a_ch->stream->node)); + dap_chain_net_t *l_net = a_arg; dap_chain_net_pvt_t *l_net_pvt = PVT(l_net); + if (!l_net_pvt->sync_context.cur_chain) + return; switch (a_type) { case DAP_CHAIN_CH_PKT_TYPE_ERROR: l_net_pvt->sync_context.cur_chain->state = CHAIN_SYNC_STATE_ERROR; @@ -3118,6 +3119,8 @@ static void s_ch_out_pkt_callback(dap_stream_ch_t *a_ch, uint8_t a_type, const v break; } l_net_pvt->sync_context.stage_last_activity = dap_time_now(); + debug_if(s_debug_more, L_DEBUG, "Sent OUT sync packet type %hhu size %zu to addr " NODE_ADDR_FP_STR, + a_type, a_data_size, NODE_ADDR_FP_ARGS_S(a_ch->stream->node)); }