diff options
author | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2008-02-28 16:40:05 +0000 |
---|---|---|
committer | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2008-02-28 16:40:05 +0000 |
commit | 4ebb8f7d45b2bdcfe51f545ad5f6d0d3d65b385b (patch) | |
tree | ecfd6fab0d84e885b0825f373aebe88700ae3f1d /lib | |
parent | b3144e0081462993a01017931ee86fc969f0dc5a (diff) | |
download | telepathy-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.c | 7 |
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) |