Currently my_new_memb_list is set in commit_enter, resulting in join messages being accepted during commit/recovery phases which are not appropriate to maintain protocol guarantees.
Signed-off-by: Steven Dake <[email protected]> --- exec/totemsrp.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/exec/totemsrp.c b/exec/totemsrp.c index 4a299a0..44623d8 100644 --- a/exec/totemsrp.c +++ b/exec/totemsrp.c @@ -1991,6 +1991,11 @@ static void memb_state_recovery_enter ( log_printf (instance->totemsrp_log_level_debug, "entering RECOVERY state.\n"); + memcpy (instance->my_new_memb_list, addr, + sizeof (struct srp_addr) * instance->commit_token->addr_entries); + + instance->my_new_memb_entries = instance->commit_token->addr_entries; + instance->orf_token_discard = 0; instance->my_high_ring_delivered = 0; @@ -2766,11 +2771,6 @@ static void memb_state_commit_token_update ( addr = (struct srp_addr *)instance->commit_token->end_of_commit_token; memb_list = (struct memb_commit_token_memb_entry *)(addr + instance->commit_token->addr_entries); - memcpy (instance->my_new_memb_list, addr, - sizeof (struct srp_addr) * instance->commit_token->addr_entries); - - instance->my_new_memb_entries = instance->commit_token->addr_entries; - memcpy (&memb_list[instance->commit_token->memb_index].ring_id, &instance->my_old_ring_id, sizeof (struct memb_ring_id)); -- 1.7.6 _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
