From 107ef19913b7d4fe5901941f7a25cf999d05a8d7 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Fri, 30 Apr 2010 05:12:26 +0000 Subject: [PATCH] Save the ring id and restore it properly when the recovery operation fails as a result of a new gather or token loss. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2792 fd59a12c-fef9-0310-b244-a6a79926bd2f --- exec/totemsrp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/exec/totemsrp.c b/exec/totemsrp.c index 58fb8e55..f863460d 100644 --- a/exec/totemsrp.c +++ b/exec/totemsrp.c @@ -1390,6 +1390,8 @@ static void old_ring_state_save (struct totemsrp_instance *instance) { if (instance->old_ring_state_saved == 0) { instance->old_ring_state_saved = 1; + memcpy (&instance->my_old_ring_id, &instance->my_ring_id, + sizeof (struct memb_ring_id)); instance->old_ring_state_aru = instance->my_aru; instance->old_ring_state_high_seq_received = instance->my_high_seq_received; log_printf (instance->totemsrp_log_level_debug, @@ -1401,7 +1403,9 @@ static void old_ring_state_save (struct totemsrp_instance *instance) static void ring_state_restore (struct totemsrp_instance *instance) { if (instance->old_ring_state_saved) { - totemip_zero_set(&instance->my_ring_id.rep); + memcpy (&instance->my_ring_id, &instance->my_old_ring_id, + sizeof (struct memb_ring_id)); + instance->my_aru = instance->old_ring_state_aru; instance->my_high_seq_received = instance->old_ring_state_high_seq_received; log_printf (instance->totemsrp_log_level_debug, @@ -1412,6 +1416,8 @@ static void ring_state_restore (struct totemsrp_instance *instance) static void old_ring_state_reset (struct totemsrp_instance *instance) { + log_printf (instance->totemsrp_log_level_debug, + "Resetting old ring state\n"); instance->old_ring_state_saved = 0; }