diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-03-10 18:15:13 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-03-10 18:15:13 +0000 |
commit | e31d17e28ee3933c44d3882fa75a26582f04016a (patch) | |
tree | edd12a44cf57be6af21998302bc8fccac0c6f61d | |
parent | 80ec0564ec7feacba2bcb6cd1944e74fe4be88ec (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.cpp | 13 |
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 != "") { |