summaryrefslogtreecommitdiff
path: root/src/servers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/servers.cpp')
-rw-r--r--src/servers.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/servers.cpp b/src/servers.cpp
index 6c017f08e..0c1019216 100644
--- a/src/servers.cpp
+++ b/src/servers.cpp
@@ -254,35 +254,39 @@ void Server::Sync(bool sync_links)
{
bool created;
ci->c = Channel::FindOrCreate(ci->name, created, ci->time_registered);
+
if (ModeManager::FindChannelModeByName("PERM") != NULL)
{
- ci->c->SetMode(NULL, "PERM");
if (created)
IRCD->SendChannel(ci->c);
+ ci->c->SetMode(NULL, "PERM");
}
else
{
if (!ci->bi)
ci->WhoSends()->Assign(NULL, ci);
if (ci->c->FindUser(ci->bi) == NULL)
- ci->bi->Join(ci->c);
+ {
+ ChannelStatus status(Config->GetModule("botserv")->Get<const Anope::string>("botmodes"));
+ ci->bi->Join(ci->c, &status);
+ }
}
}
}
FOREACH_MOD(I_OnPreUplinkSync, OnPreUplinkSync(this));
- IRCD->SendEOB();
- Me->Sync(false);
-
- FOREACH_MOD(I_OnUplinkSync, OnUplinkSync(this));
-
for (channel_map::const_iterator it = ChannelList.begin(), it_end = ChannelList.end(); it != it_end; ++it)
{
Channel *c = it->second;
c->Sync();
}
+ IRCD->SendEOB();
+ Me->Sync(false);
+
+ FOREACH_MOD(I_OnUplinkSync, OnUplinkSync(this));
+
if (!Anope::NoFork && Anope::AtTerm())
{
Log(LOG_TERMINAL) << "Successfully linked, launching into background...";