diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 357f3e6baaab4cac3402e0b1a3b21ae39d9bb7b9..1efc4c9ee8b7f79b1b5404cf5671fefbf127d209 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -273,7 +273,10 @@ static int s_net_states_proc(dap_chain_net_t * l_net) switch ( PVT(l_net)->state ){ case NET_STATE_OFFLINE:{ - PVT(l_net)->state_target = PVT(l_net)->state_new; + if (PVT(l_net)->state_new != NET_STATE_UNDEFINED) { + PVT(l_net)->state_target = PVT(l_net)->state_new; + PVT(l_net)->state_new = NET_STATE_UNDEFINED; + } // reset current link PVT(l_net)->links_count = 0; // delete all links @@ -717,7 +720,10 @@ static int s_net_states_proc(dap_chain_net_t * l_net) break; case NET_STATE_ONLINE: { - PVT(l_net)->state_target = PVT(l_net)->state_new; + if (PVT(l_net)->state_new != NET_STATE_UNDEFINED) { + PVT(l_net)->state_target = PVT(l_net)->state_new; + PVT(l_net)->state_new = NET_STATE_UNDEFINED; + } switch ( PVT(l_net)->state_target) { // disconnect case NET_STATE_OFFLINE: diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h index 8b76bfcf1b80bab2dd9ba984004fa09228b40d0b..ca84a0203c08c2163a897d46e2a14d4631829762 100644 --- a/modules/net/include/dap_chain_net.h +++ b/modules/net/include/dap_chain_net.h @@ -60,7 +60,8 @@ typedef enum dap_chain_net_state{ NET_STATE_ADDR_REQUEST, // Waiting for address assign NET_STATE_SYNC_GDB, NET_STATE_SYNC_CHAINS, - NET_STATE_ONLINE + NET_STATE_ONLINE, + NET_STATE_UNDEFINED } dap_chain_net_state_t; typedef struct dap_chain_net{