]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_callerid.cpp
Merge pull request #514 from SaberUK/master+virtual-cleanup
[user/henk/code/inspircd.git] / src / modules / m_callerid.cpp
index b0d6b9c64835829315a5bd764d83cb927c3f37eb..1743be1dc1036685cb9fbd8435f5484362753791 100644 (file)
@@ -116,11 +116,16 @@ struct CallerIDExtInfo : public ExtensionItem
                        callerid_data *targ = this->get(*it, false);
 
                        if (!targ)
+                       {
+                               ServerInstance->Logs->Log("m_callerid", LOG_DEFAULT, "ERROR: Inconsistency detected in callerid state, please report (1)");
                                continue; // shouldn't happen, but oh well.
+                       }
 
                        std::list<callerid_data*>::iterator it2 = std::find(targ->wholistsme.begin(), targ->wholistsme.end(), dat);
                        if (it2 != targ->wholistsme.end())
                                targ->wholistsme.erase(it2);
+                       else
+                               ServerInstance->Logs->Log("m_callerid", LOG_DEFAULT, "ERROR: Inconsistency detected in callerid state, please report (2)");
                }
                delete dat;
        }
@@ -145,7 +150,7 @@ public:
                TRANSLATE2(TR_CUSTOM, TR_END);
        }
 
-       virtual void EncodeParameter(std::string& parameter, int index)
+       void EncodeParameter(std::string& parameter, int index)
        {
                if (index != 0)
                        return;
@@ -253,7 +258,7 @@ public:
                callerid_data *targ = extInfo.get(whotoadd, true);
                targ->wholistsme.push_back(dat);
 
-               user->WriteServ("NOTICE %s :%s is now on your accept list", user->nick.c_str(), whotoadd->nick.c_str());
+               user->WriteNotice(whotoadd->nick + " is now on your accept list");
                return true;
        }
 
@@ -280,6 +285,7 @@ public:
                if (!dat2)
                {
                        // How the fuck is this possible.
+                       ServerInstance->Logs->Log("m_callerid", LOG_DEFAULT, "ERROR: Inconsistency detected in callerid state, please report (3)");
                        return false;
                }
 
@@ -287,15 +293,17 @@ public:
                if (it != dat2->wholistsme.end())
                        // Found me!
                        dat2->wholistsme.erase(it);
+               else
+                       ServerInstance->Logs->Log("m_callerid", LOG_DEFAULT, "ERROR: Inconsistency detected in callerid state, please report (4)");
+
 
-               user->WriteServ("NOTICE %s :%s is no longer on your accept list", user->nick.c_str(), whotoremove->nick.c_str());
+               user->WriteNotice(whotoremove->nick + " is no longer on your accept list");
                return true;
        }
 };
 
 class ModuleCallerID : public Module
 {
-private:
        CommandAccept cmd;
        User_g myumode;
 
@@ -324,6 +332,8 @@ private:
 
                        if (it2 != dat->accepting.end())
                                dat->accepting.erase(it2);
+                       else
+                               ServerInstance->Logs->Log("m_callerid", LOG_DEFAULT, "ERROR: Inconsistency detected in callerid state, please report (5)");
                }
 
                userdata->wholistsme.clear();
@@ -334,7 +344,7 @@ public:
        {
        }
 
-       void init()
+       void init() CXX11_OVERRIDE
        {
                OnRehash(NULL);
 
@@ -346,26 +356,22 @@ public:
                ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
        }
 
-       virtual ~ModuleCallerID()
-       {
-       }
-
-       virtual Version GetVersion()
+       Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Implementation of callerid, usermode +g, /accept", VF_COMMON | VF_VENDOR);
        }
 
-       virtual void On005Numeric(std::string& output)
+       void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
        {
-               output += " CALLERID=g";
+               tokens["CALLERID"] = "g";
        }
 
        ModResult PreText(User* user, User* dest, std::string& text)
        {
-               if (!dest->IsModeSet('g'))
+               if (!dest->IsModeSet('g') || (user == dest))
                        return MOD_RES_PASSTHRU;
 
-               if (operoverride && IS_OPER(user))
+               if (operoverride && user->IsOper())
                        return MOD_RES_PASSTHRU;
 
                callerid_data* dat = cmd.extInfo.get(dest, true);
@@ -388,7 +394,7 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
-       virtual ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list)
+       ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list) CXX11_OVERRIDE
        {
                if (IS_LOCAL(user) && target_type == TYPE_USER)
                        return PreText(user, (User*)dest, text);
@@ -396,7 +402,7 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
-       virtual ModResult OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list)
+       ModResult OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list) CXX11_OVERRIDE
        {
                if (IS_LOCAL(user) && target_type == TYPE_USER)
                        return PreText(user, (User*)dest, text);
@@ -404,18 +410,18 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
-       void OnUserPostNick(User* user, const std::string& oldnick)
+       void OnUserPostNick(User* user, const std::string& oldnick) CXX11_OVERRIDE
        {
                if (!tracknick)
                        RemoveFromAllAccepts(user);
        }
 
-       void OnUserQuit(User* user, const std::string& message, const std::string& oper_message)
+       void OnUserQuit(User* user, const std::string& message, const std::string& oper_message) CXX11_OVERRIDE
        {
                RemoveFromAllAccepts(user);
        }
 
-       virtual void OnRehash(User* user)
+       void OnRehash(User* user) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("callerid");
                cmd.maxaccepts = tag->getInt("maxaccepts", 16);
@@ -426,5 +432,3 @@ public:
 };
 
 MODULE_INIT(ModuleCallerID)
-
-