summaryrefslogtreecommitdiff
path: root/modules/pseudoclients/chanserv.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2017-10-12 19:30:48 -0400
committerAdam <Adam@anope.org>2017-10-12 19:30:48 -0400
commitd63e32a579b7a19316fa209a99cba3ce79daf6ef (patch)
tree72435fe19b3e09d9f58462c2f16496c6ea80d713 /modules/pseudoclients/chanserv.cpp
parentf13c450b938633a27014cabad377821f87ce16b0 (diff)
No longer try to create persistent channels on the fly
Change initial channel creation to on post init so it will be part of the burst.
Diffstat (limited to 'modules/pseudoclients/chanserv.cpp')
-rw-r--r--modules/pseudoclients/chanserv.cpp40
1 files changed, 21 insertions, 19 deletions
diff --git a/modules/pseudoclients/chanserv.cpp b/modules/pseudoclients/chanserv.cpp
index b66ae1a63..b3dc1657d 100644
--- a/modules/pseudoclients/chanserv.cpp
+++ b/modules/pseudoclients/chanserv.cpp
@@ -377,34 +377,36 @@ class ChanServCore : public Module, public ChanServService
return EVENT_CONTINUE;
}
- void OnPreUplinkSync(Server *serv) anope_override
+ void OnPostInit() anope_override
{
if (!persist)
return;
+
+ ChannelMode *perm = ModeManager::FindChannelModeByName("PERM");
+
/* Find all persistent channels and create them, as we are about to finish burst to our uplink */
for (registered_channel_map::iterator it = RegisteredChannelList->begin(), it_end = RegisteredChannelList->end(); it != it_end; ++it)
{
ChannelInfo *ci = it->second;
- if (persist->HasExt(ci))
- {
- bool c;
- ci->c = Channel::FindOrCreate(ci->name, c, ci->time_registered);
+ if (!persist->HasExt(ci))
+ continue;
- if (ModeManager::FindChannelModeByName("PERM") != NULL)
- {
- if (c)
- IRCD->SendChannel(ci->c);
- ci->c->SetMode(NULL, "PERM");
- }
- else
+ bool c;
+ ci->c = Channel::FindOrCreate(ci->name, c, ci->time_registered);
+ ci->c->syncing |= created;
+
+ if (perm)
+ {
+ ci->c->SetMode(NULL, perm);
+ }
+ else
+ {
+ if (!ci->bi)
+ ci->WhoSends()->Assign(NULL, ci);
+ if (ci->c->FindUser(ci->bi) == NULL)
{
- if (!ci->bi)
- ci->WhoSends()->Assign(NULL, ci);
- if (ci->c->FindUser(ci->bi) == NULL)
- {
- ChannelStatus status(BotModes());
- ci->bi->Join(ci->c, &status);
- }
+ ChannelStatus status(BotModes());
+ ci->bi->Join(ci->c, &status);
}
}
}