]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/usermanager.cpp
Fix mode +L being visibly reset on every FJOIN
[user/henk/code/inspircd.git] / src / usermanager.cpp
index 15066fd2856d742d2b005458698b6801695789f1..8c87ab5e14592f64d5b768f775d6d044bd394977 100644 (file)
@@ -79,8 +79,6 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs
                return;
        }
 
-       FOREACH_MOD(I_OnUserInit,OnUserInit(New));
-
        /*
         * First class check. We do this again in FullConnect after DNS is done, and NICK/USER is recieved.
         * See my note down there for why this is required. DO NOT REMOVE. :) -- w00t
@@ -92,6 +90,8 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs
         * This will be done again after DNS resolution. -- w00t
         */
        New->CheckClass();
+       if (New->quitting)
+               return;
 
        /*
         * even with bancache, we still have to keep User::exempt current.
@@ -141,6 +141,8 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs
         */
        New->WriteServ("NOTICE Auth :*** Looking up your hostname...");
 
+       FOREACH_MOD(I_OnUserInit,OnUserInit(New));
+
        if (ServerInstance->Config->NoUserDns)
        {
                New->WriteServ("NOTICE %s :*** Skipping host resolution (disabled by server administrator)", New->nick.c_str());