summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@luon.net>2007-11-27 22:02:10 +0000
committerSjoerd Simons <sjoerd@luon.net>2007-11-27 22:02:10 +0000
commiteab57f7c8edcaaa17eab4574f0f25f3f5152c66a (patch)
treeb2be77eb75fa954bf90d382059caa4c8747c5d59
parent49117575d2eddab96143401cebe7301b6d074625 (diff)
downloadtelepathy-salut-eab57f7c8edcaaa17eab4574f0f25f3f5152c66a.tar.gz
GibberRMulticastTransport: When tagging a failure as INSTANT_FAILURE, remove the failed timer. Also don't recheck INSTANT_FAILURE members
20071127220210-93b9a-129889dcb3e5ec30bfdf8bd7913422a73ff87b99.gz
-rw-r--r--lib/gibber/gibber-r-multicast-transport.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/gibber/gibber-r-multicast-transport.c b/lib/gibber/gibber-r-multicast-transport.c
index 9cbdbe84..2ffcabad 100644
--- a/lib/gibber/gibber-r-multicast-transport.c
+++ b/lib/gibber/gibber-r-multicast-transport.c
@@ -1120,7 +1120,8 @@ collect_failed_members (gpointer key, gpointer value, gpointer user_data)
MemberInfo *info = (MemberInfo *)value;
GArray *array = (GArray *)user_data;
- if (info->state >= MEMBER_STATE_FAILING)
+ if (info->state >= MEMBER_STATE_FAILING &&
+ info->state < MEMBER_STATE_INSTANT_FAILURE)
g_array_append_val (array, info->id);
}
@@ -1183,6 +1184,11 @@ check_failure_completion (GibberRMulticastTransport *self, guint32 id)
{
/* Make it an instant failure as we already cleaned up this node */
info->state = MEMBER_STATE_INSTANT_FAILURE;
+ if (info->fail_timeout != 0)
+ {
+ g_source_remove (info->fail_timeout);
+ info->fail_timeout = 0;
+ }
check_join_agreement (self);
}
else