summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-12-03 17:27:35 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-12-03 17:27:35 +0000
commit0f569eb0d610091b6a61593cd6646a047e2f7e66 (patch)
treed1e625e4c14c9542ac7d9aa45071000c9af0a33b
parent05d5a31d97bece968fc1f3c36fae7c7504aa837c (diff)
More TS fixes
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2130 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modules/m_spanningtree.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp
index e78740934..5eab7ca34 100644
--- a/src/modules/m_spanningtree.cpp
+++ b/src/modules/m_spanningtree.cpp
@@ -516,6 +516,10 @@ class TreeSocket : public InspSocket
}
log(DEBUG,"FJOIN detected, our TS=%lu, their TS=%lu",ourTS,TS);
+
+ // do this first, so our mode reversals are correctly received by other servers
+ // if there is a TS collision.
+ DoOneToAllButSender(source,"FJOIN",params,source);
for (unsigned int usernum = 2; usernum < params.size(); usernum++)
{
@@ -558,7 +562,6 @@ class TreeSocket : public InspSocket
log(DEBUG,"Their channel newer than ours, bouncing their modes");
// bouncy bouncy!
std::deque<std::string> params;
- params.push_back(channel);
// modes are now being UNSET...
*mode_users[1] = '-';
for (unsigned int x = 0; x < modectr; x++)
@@ -586,7 +589,6 @@ class TreeSocket : public InspSocket
{
log(DEBUG,"Their channel newer than ours, bouncing their modes");
std::deque<std::string> params;
- params.push_back(channel);
*mode_users[1] = '-';
for (unsigned int x = 0; x < modectr; x++)
{
@@ -595,13 +597,6 @@ class TreeSocket : public InspSocket
DoOneToMany(Srv->GetServerName(),"FMODE",params);
}
}
- // sync the TS
- us = Srv->FindChannel(channel);
- if (us)
- {
- us->age = TS;
- }
- DoOneToAllButSender(source,"FJOIN",params,source);
return true;
}