]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/usermanager.cpp
Add RAWIO log level which is more verbose than DEBUG
[user/henk/code/inspircd.git] / src / usermanager.cpp
index afabf40470bc7fe8f9c4212340dd3e50fc2df71c..2d696c2a3d7a536e68643d57bc0c05c59b9e039b 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -70,6 +70,15 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs
        ServerInstance->Users->AddLocalClone(New);
        ServerInstance->Users->AddGlobalClone(New);
 
+       this->local_users.push_back(New);
+
+       if ((this->local_users.size() > ServerInstance->Config->SoftLimit) || (this->local_users.size() >= (unsigned int)ServerInstance->SE->GetMaxFds()))
+       {
+               ServerInstance->SNO->WriteToSnoMask('a', "Warning: softlimit value has been reached: %d clients", ServerInstance->Config->SoftLimit);
+               this->QuitUser(New,"No more connections allowed");
+               return;
+       }
+
        /*
         * 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
@@ -81,15 +90,8 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs
         * This will be done again after DNS resolution. -- w00t
         */
        New->CheckClass();
-
-       this->local_users.push_back(New);
-
-       if ((this->local_users.size() > ServerInstance->Config->SoftLimit) || (this->local_users.size() >= (unsigned int)ServerInstance->SE->GetMaxFds()))
-       {
-               ServerInstance->SNO->WriteToSnoMask('a', "Warning: softlimit value has been reached: %d clients", ServerInstance->Config->SoftLimit);
-               this->QuitUser(New,"No more connections allowed");
+       if (New->quitting)
                return;
-       }
 
        /*
         * even with bancache, we still have to keep User::exempt current.
@@ -138,6 +140,10 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs
         * BOPM and other stuff requires it.
         */
        New->WriteServ("NOTICE Auth :*** Looking up your hostname...");
+       if (ServerInstance->Config->RawLog)
+               New->WriteServ("NOTICE Auth :*** Raw I/O logging is enabled on this server. All messages, passwords, and commands are being recorded.");
+
+       FOREACH_MOD(I_OnUserInit,OnUserInit(New));
 
        if (ServerInstance->Config->NoUserDns)
        {
@@ -193,22 +199,7 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char
        {
                LocalUser* lu = IS_LOCAL(user);
                FOREACH_MOD(I_OnUserDisconnect,OnUserDisconnect(lu));
-               UserIOHandler* eh = &lu->eh;
-               eh->DoWrite();
-               if (eh->GetIOHook())
-               {
-                       try
-                       {
-                               eh->GetIOHook()->OnStreamSocketClose(eh);
-                       }
-                       catch (CoreException& modexcept)
-                       {
-                               ServerInstance->Logs->Log("USERS",DEBUG, "%s threw an exception: %s", modexcept.GetSource(), modexcept.GetReason());
-                       }
-               }
-
-               ServerInstance->SE->DelFd(eh);
-               eh->Close();
+               lu->eh.Close();
        }
 
        /*
@@ -242,6 +233,8 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char
                this->clientlist->erase(iter);
        else
                ServerInstance->Logs->Log("USERS", DEBUG, "iter == clientlist->end, can't remove them from hash... problematic..");
+
+       ServerInstance->Users->uuidlist->erase(user->uuid);
 }