diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 0f02b1eff29b34955cc59c9dde5e49c21bdf3d4d..8cee6b9561d464e99286a89694c921a7d7f53499 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -1294,11 +1294,14 @@ static void s_session_state_change(dap_chain_esbocs_session_t *a_session, enum s dap_hash_fast(l_store->candidate, l_store->candidate_size, &l_store->precommit_candidate_hash); // Process received earlier PreCommit messages dap_chain_esbocs_message_item_t *l_chain_message, *l_chain_message_tmp; + uint64_t l_cur_round_id = a_session->cur_round.id; HASH_ITER(hh, a_session->cur_round.message_items, l_chain_message, l_chain_message_tmp) { if (l_chain_message->message->hdr.type == DAP_CHAIN_ESBOCS_MSG_TYPE_PRE_COMMIT && - dap_hash_fast_compare(&l_chain_message->message->hdr.candidate_hash, - &a_session->cur_round.attempt_candidate_hash)) { + dap_hash_fast_compare(&l_chain_message->message->hdr.candidate_hash, &a_session->cur_round.attempt_candidate_hash)) + { s_session_candidate_precommit(a_session, l_chain_message->message); + if (a_session->cur_round.id != l_cur_round_id) + break; } } // Send own PreCommit