]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/fjoin.cpp
m_spanningtree Fix rare desync when a KILL crosses a message that has the killed...
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / fjoin.cpp
index f6adc76206fec2a1553eaa0eb788883f9cbb8415..71d837b2840b4bf0b150029ac935fd12a484115e 100644 (file)
@@ -55,8 +55,6 @@ CmdResult CommandFJoin::Handle(const std::vector<std::string>& params, User *src
         * losing side, so only its own modes get applied. Life is simple for those
         * who succeed at internets. :-)
         */
-       if (params.size() < 3)
-               return CMD_INVALID;
 
        irc::modestacker modestack(true);                       /* Modes to apply from the users in the user list */
        User* who = NULL;                                               /* User we are currently checking */
@@ -80,14 +78,14 @@ CmdResult CommandFJoin::Handle(const std::vector<std::string>& params, User *src
        if (created)
        {
                chan = new Channel(channel, TS);
-               ServerInstance->SNO->WriteToSnoMask('d', "Creation FJOIN recieved for %s, timestamp: %lu", chan->name.c_str(), (unsigned long)TS);
+               ServerInstance->SNO->WriteToSnoMask('d', "Creation FJOIN received for %s, timestamp: %lu", chan->name.c_str(), (unsigned long)TS);
        }
        else
        {
                time_t ourTS = chan->age;
 
                if (TS != ourTS)
-                       ServerInstance->SNO->WriteToSnoMask('d', "Merge FJOIN recieved for %s, ourTS: %lu, TS: %lu, difference: %lu",
+                       ServerInstance->SNO->WriteToSnoMask('d', "Merge FJOIN received for %s, ourTS: %lu, TS: %lu, difference: %lu",
                                chan->name.c_str(), (unsigned long)ourTS, (unsigned long)TS, (unsigned long)(ourTS - TS));
                /* If our TS is less than theirs, we dont accept their modes */
                if (ourTS < TS)
@@ -105,6 +103,7 @@ CmdResult CommandFJoin::Handle(const std::vector<std::string>& params, User *src
                        // while the name is equal in case-insensitive compare, it might differ in case; use the remote version
                        chan->name = channel;
                        chan->age = TS;
+                       chan->ClearInvites();
                        param_list.push_back(channel);
                        this->RemoveStatus(ServerInstance->FakeClient, param_list);
                }