From 4ab8223cb72f2b2a9e8ec03177378b5400a674a9 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Mon, 26 Nov 2007 19:03:51 +0000 Subject: GibberRMulticastSender: Only do the failure process on the wire for nodes of which we known the start, otherwise mark them as instant failures 20071126190351-93b9a-fb941ab8851d7a585dca63a0fad5cb26606d466a.gz --- lib/gibber/gibber-r-multicast-transport.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/gibber/gibber-r-multicast-transport.c b/lib/gibber/gibber-r-multicast-transport.c index 325203f2..3612c781 100644 --- a/lib/gibber/gibber-r-multicast-transport.c +++ b/lib/gibber/gibber-r-multicast-transport.c @@ -1217,7 +1217,18 @@ fail_member (GibberRMulticastTransport *self, MemberInfo *info, guint32 id) return; } - finfo = member_get_info (self, id); + finfo = g_hash_table_lookup (priv->members, &id); + + if (finfo == NULL || finfo->state < MEMBER_STATE_ATTEMPT_JOIN_REPEAT) + { + /* We don't know starting or end points of these, makes no sense to send + * failure messages for them. Will be handles at time of JOIN. + */ + gibber_r_multicast_causal_transport_remove_sender (priv->transport, id); + if (finfo != NULL) + finfo->state = MEMBER_STATE_INSTANT_FAILURE; + return; + } if (finfo->state < MEMBER_STATE_FAILING) { -- cgit v1.2.1