diff options
author | Sjoerd Simons <sjoerd@luon.net> | 2007-11-26 19:03:51 +0000 |
---|---|---|
committer | Sjoerd Simons <sjoerd@luon.net> | 2007-11-26 19:03:51 +0000 |
commit | 4ab8223cb72f2b2a9e8ec03177378b5400a674a9 (patch) | |
tree | 585d84e56b736349e38abb1b5bb2eb9adb2f65c0 | |
parent | 6c479cb382ec76be3910b1f8c1c71b0a8a4e26c7 (diff) | |
download | telepathy-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.c | 13 |
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) { |