]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cull_list.cpp
Don't add duplicate invites
[user/henk/code/inspircd.git] / src / cull_list.cpp
index 77451b47b22cd3e7dc347f51d2ba8227ca682b1e..db07c30ae1360a2921282c49ea95ed1aeccff179 100644 (file)
@@ -11,7 +11,7 @@
  * ---------------------------------------------------
  */
 
-/* $Core: libIRCDcull_list */
+/* $Core */
 
 #include "inspircd.h"
 #include "cull_list.h"
@@ -54,8 +54,8 @@ int CullList::Apply()
                std::string reason;
                std::string oper_reason;
 
-               reason.assign(u->quitmsg, 0, MAXQUIT - 1);
-               oper_reason.assign(preset_reason.empty() ? preset_reason : u->operquitmsg, 0, MAXQUIT - 1);
+               reason.assign(u->quitmsg, 0, ServerInstance->Config->Limits.MaxQuit);
+               oper_reason.assign(preset_reason.empty() ? preset_reason : u->operquitmsg, 0, ServerInstance->Config->Limits.MaxQuit);
 
                if (u->registered != REG_ALL)
                        if (ServerInstance->Users->unregistered_count)
@@ -63,7 +63,7 @@ int CullList::Apply()
 
                if (IS_LOCAL(u))
                {
-                       if ((!u->sendq.empty()) && (!(*u->GetWriteError())))
+                       if (!u->sendq.empty())
                                u->FlushWriteBuf();
                }
 
@@ -104,33 +104,26 @@ int CullList::Apply()
                        {
                                if (!u->quietquit)
                                {
-                                       ServerInstance->SNO->WriteToSnoMask('q',"Client exiting: %s!%s@%s [%s]",u->nick.c_str(),u->ident.c_str(),u->host,oper_reason.c_str());
+                                       ServerInstance->SNO->WriteToSnoMask('q',"Client exiting: %s!%s@%s [%s]", u->nick.c_str(), u->ident.c_str(), u->host.c_str(), oper_reason.c_str());
                                }
                        }
                        else
                        {
                                if ((!ServerInstance->SilentULine(u->server)) && (!u->quietquit))
                                {
-                                       ServerInstance->SNO->WriteToSnoMask('Q',"Client exiting on server %s: %s!%s@%s [%s]",u->server,u->nick.c_str(),u->ident.c_str(),u->host,oper_reason.c_str());
+                                       ServerInstance->SNO->WriteToSnoMask('Q',"Client exiting on server %s: %s!%s@%s [%s]", u->server, u->nick.c_str(), u->ident.c_str(), u->host.c_str(), oper_reason.c_str());
                                }
                        }
                        u->AddToWhoWas();
                }
 
-               bool deleteu = true;
-
                if (iter != ServerInstance->Users->clientlist->end())
                {
                        ServerInstance->Users->clientlist->erase(iter);
                }
                else
                {
-                       /*
-                        * Trying to track down Jason's issue.. this should never happen obviously.
-                        */
-                       ServerInstance->Logs->Log("CULLLIST", DEBUG, "iter == clientlist->end, can't remove them from hash... problematic?");
-//                     deleteu = false;
-// actually, delete them anyway.. the local vector is the real problem here
+                       ServerInstance->Logs->Log("CULLLIST", DEBUG, "iter == clientlist->end, can't remove them from hash... problematic..");
                }
 
                if (IS_LOCAL(u))
@@ -140,22 +133,11 @@ int CullList::Apply()
                                ServerInstance->Users->local_users.erase(x);
                        else
                        {
-                               /*
-                                * This code is in here to monitor an issue of Jason's, where it seems to be trying to quit already quit users.
-                                * The only way that can happen is if this find fails, so log it just in case.
-                                * Also, (perhaps incorrectly, but oh well), return here so we don't delete the user and then start trampling
-                                * on deleted memory, which leads to big problems..
-                                */
-                               ServerInstance->Logs->Log("CULLLIST", DEBUG, "Failed to remove user from vector, we're all gonna die!!! Not deleting the user to save our sanity");
-                               deleteu = false;
+                               ServerInstance->Logs->Log("CULLLIST", DEBUG, "Failed to remove user from vector..");
                        }
                }
 
-               if (deleteu)
-               {
-                       delete u;
-               }
-
+               delete u;
                list.erase(list.begin());
        }