summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2008-02-28 16:40:05 +0000
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2008-02-28 16:40:05 +0000
commit4ebb8f7d45b2bdcfe51f545ad5f6d0d3d65b385b (patch)
treeecfd6fab0d84e885b0825f373aebe88700ae3f1d /lib
parentb3144e0081462993a01017931ee86fc969f0dc5a (diff)
downloadtelepathy-salut-4ebb8f7d45b2bdcfe51f545ad5f6d0d3d65b385b.tar.gz
GibberRMulticastTransport: Ensure we wait for nodes to finish their failure process before completeling the JOIN
20080228164005-b58c9-91e322e6df3277ac03363586159626c1e4fd3d10.gz
Diffstat (limited to 'lib')
-rw-r--r--lib/gibber/gibber-r-multicast-transport.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/gibber/gibber-r-multicast-transport.c b/lib/gibber/gibber-r-multicast-transport.c
index 62e898ce..6391e049 100644
--- a/lib/gibber/gibber-r-multicast-transport.c
+++ b/lib/gibber/gibber-r-multicast-transport.c
@@ -1417,7 +1417,12 @@ check_join_agreement (GibberRMulticastTransport *self)
if (info == NULL)
continue;
- if (info->state >= MEMBER_STATE_FAILING)
+ /* send_join only contains members we didn't consider as failures at the
+ * time of the join message. The failure process for those has to be
+ * completely done before we can discard them, as it might have send out
+ * a JOIN we just hadn't received just yet.. Only after their failing
+ * has finished the state gets set to MEMBER_STATE_INSTANT_FAILURE */
+ if (info->state >= MEMBER_STATE_INSTANT_FAILURE)
continue;
if (!info->agreed_join)