From a3d98f1652011d6bc75101c7b8aa098c2d2977e4 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Thu, 7 Jul 2011 15:29:10 -0700 Subject: [PATCH] Fix problem where corosync will segfault if there are gaps in recovery queue Fixes a problem where there are gaps in the recovery queue. Example my_aru = 5, but there are messages at 7,8. 8 = my_high_seq_received which results in data slots taken up in new message queue. What should really happen is these last messages should be delivered after a transitional configuration to maintain SAFE agreement. We don't have support for SAFE atm, so it is probably safe just to throw these messages away. Without this change, the new message queue on a new configuraton change is out of sync. Signed-off-by: Steven Dake Tested-by: Tim Beale Reviewed-by: Jan Friesse --- exec/totemsrp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exec/totemsrp.c b/exec/totemsrp.c index 3dcc05e3..16de74d8 100644 --- a/exec/totemsrp.c +++ b/exec/totemsrp.c @@ -1809,7 +1809,7 @@ static void memb_state_operational_enter (struct totemsrp_instance *instance) sizeof (struct srp_addr) * instance->my_memb_entries); instance->my_failed_list_entries = 0; - instance->my_high_delivered = instance->my_aru; + instance->my_high_delivered = instance->my_high_seq_received; for (i = 0; i <= instance->my_high_delivered; i++) { void *ptr;