]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_permchannels.cpp
Remove spanningtree override of /LUSERS
[user/henk/code/inspircd.git] / src / modules / m_permchannels.cpp
index bd358e4dcdad6c4bf9de407fee8d5a1505c0730f..a9c4c8a72779e84602285f854efb31baa9e2bb10 100644 (file)
@@ -179,13 +179,13 @@ public:
        {
                if (!ServerInstance->Modes->AddMode(&p))
                        throw ModuleException("Could not add new modes!");
-               Implementation eventlist[] = { I_OnChannelPreDelete, I_OnPostTopicChange, I_OnRawMode };
-               ServerInstance->Modules->Attach(eventlist, this, 3);
+               Implementation eventlist[] = { I_OnChannelPreDelete, I_OnPostTopicChange, I_OnRawMode, I_OnRehash };
+               ServerInstance->Modules->Attach(eventlist, this, 4);
 
                OnRehash(NULL);
        }
 
-       virtual ~ModulePermanentChannels()
+       CullResult cull()
        {
                /*
                 * DelMode can't remove the +P mode on empty channels, or it will break
@@ -200,12 +200,15 @@ public:
                        {
                                chan_hash::iterator at = iter;
                                iter++;
+                               FOREACH_MOD(I_OnChannelDelete, OnChannelDelete(c));
                                ServerInstance->chanlist->erase(at);
-                               delete c;
+                               ServerInstance->GlobalCulls.AddItem(c);
                        }
                        else
                                iter++;
                }
+               ServerInstance->Modes->DelMode(&p);
+               return Module::cull();
        }
 
        virtual void OnRehash(User *user)
@@ -292,7 +295,7 @@ public:
 
        virtual Version GetVersion()
        {
-               return Version("Provides support for channel mode +P to provide permanent channels",VF_COMMON|VF_VENDOR,API_VERSION);
+               return Version("Provides support for channel mode +P to provide permanent channels",VF_COMMON|VF_VENDOR);
        }
 
        virtual ModResult OnChannelPreDelete(Channel *c)