]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/mode.cpp
Whoops, make /stats s work
[user/henk/code/inspircd.git] / src / mode.cpp
index b32f31dde42ace14e36b0722edaf330b700440ff..c07682bcfc3e4ffbfbeabb0889d185ed8f18af36 100644 (file)
@@ -534,7 +534,7 @@ void ModeParser::Process(const char** parameters, int pcnt, userrec *user, bool
                                else
                                {
                                        user->WriteTo(targetuser,"MODE %s %s%s",targetuser->nick,output_sequence.c_str(), parameter_list.str().c_str());
-                                       FOREACH_MOD(I_OnMode,OnMode(user, targetuser, TYPE_USER, output_sequence));
+                                       FOREACH_MOD(I_OnMode,OnMode(user, targetuser, TYPE_USER, output_sequence + parameter_list.str()));
                                        this->LastParse = targetuser->nick;
                                }
                        }
@@ -729,6 +729,9 @@ std::string ModeParser::ModeString(userrec* user, chanrec* channel)
        std::string types;
        std::string pars;
 
+       if (!channel || !user)
+               return "";
+
        for (unsigned char mode = 'A'; mode <= 'z'; mode++)
        {
                unsigned char pos = (mode-65) | MASK_CHANNEL;
@@ -888,14 +891,8 @@ void ModeHandler::RemoveMode(userrec* user)
 
        if (user->IsModeSet(this->GetModeChar()))
        {
-               userrec* n = new userrec(ServerInstance);
-
                sprintf(moderemove,"-%c",this->GetModeChar());
-               n->SetFd(FD_MAGIC_NUMBER);
-
-               ServerInstance->SendMode(parameters, 2, n);
-
-               delete n;
+               ServerInstance->Parser->CallHandler("MODE", parameters, 2, user);
        }
 }