summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-03-10 18:15:13 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-03-10 18:15:13 +0000
commite31d17e28ee3933c44d3882fa75a26582f04016a (patch)
treeedd12a44cf57be6af21998302bc8fccac0c6f61d
parent80ec0564ec7feacba2bcb6cd1944e74fe4be88ec (diff)
Move FJOIN propogation above the FMODEs generated by winning an FJOIN
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6648 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index d5aeb223c..dbbe865b1 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -645,6 +645,13 @@ bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &p
ourTS = chan->age;
else
created = true; /* don't perform deops, and set TS to correct time after processing. */
+
+ /* do this first, so our mode reversals are correctly received by other servers
+ * if there is a TS collision.
+ */
+ params[2] = ":" + params[2];
+ Utils->DoOneToAllButSender(source,"FJOIN",params,source);
+
/* In 1.1, if they have the newer channel, we immediately clear
* all status modes from our users. We then accept their modes.
* If WE have the newer channel its the other side's job to do this.
@@ -671,11 +678,7 @@ bool TreeSocket::ForceJoin(const std::string &source, std::deque<std::string> &p
/* Put the final parameter of the FJOIN into a tokenstream ready to split it */
irc::tokenstream users(params[2]);
std::string item = "*";
- /* do this first, so our mode reversals are correctly received by other servers
- * if there is a TS collision.
- */
- params[2] = ":" + params[2];
- Utils->DoOneToAllButSender(source,"FJOIN",params,source);
+
/* Now, process every 'prefixes,nick' pair */
while (item != "")
{