summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@luon.net>2007-11-26 19:03:51 +0000
committerSjoerd Simons <sjoerd@luon.net>2007-11-26 19:03:51 +0000
commit4ab8223cb72f2b2a9e8ec03177378b5400a674a9 (patch)
tree585d84e56b736349e38abb1b5bb2eb9adb2f65c0
parent6c479cb382ec76be3910b1f8c1c71b0a8a4e26c7 (diff)
downloadtelepathy-salut-4ab8223cb72f2b2a9e8ec03177378b5400a674a9.tar.gz
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
-rw-r--r--lib/gibber/gibber-r-multicast-transport.c13
1 files changed, 12 insertions, 1 deletions
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)
{