summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/channels.cpp31
-rw-r--r--src/servers.cpp4
2 files changed, 24 insertions, 11 deletions
diff --git a/src/channels.cpp b/src/channels.cpp
index 2e6023dae..fb0994626 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -125,13 +125,6 @@ void Channel::CheckModes()
return;
}
- if (this->chanserv_modetime != Anope::CurTime)
- {
- this->chanserv_modecount = 0;
- this->chanserv_modetime = Anope::CurTime;
- }
- this->chanserv_modecount++;
-
EventReturn MOD_RESULT;
FOREACH_RESULT(I_OnCheckModes, OnCheckModes(this));
if (MOD_RESULT == EVENT_STOP)
@@ -484,6 +477,17 @@ void Channel::SetMode(BotInfo *bi, ChannelMode *cm, const Anope::string &param,
return;
}
+ if (Me->IsSynced())
+ {
+ if (this->chanserv_modetime != Anope::CurTime)
+ {
+ this->chanserv_modecount = 0;
+ this->chanserv_modetime = Anope::CurTime;
+ }
+
+ this->chanserv_modecount++;
+ }
+
ModeManager::StackerAdd(bi, this, cm, true, param);
MessageSource ms(bi);
SetModeInternal(ms, cm, param, enforce_mlock);
@@ -524,6 +528,17 @@ void Channel::RemoveMode(BotInfo *bi, ChannelMode *cm, const Anope::string &para
this->GetParam(cmp->name, realparam);
}
+ if (Me->IsSynced())
+ {
+ if (this->chanserv_modetime != Anope::CurTime)
+ {
+ this->chanserv_modecount = 0;
+ this->chanserv_modetime = Anope::CurTime;
+ }
+
+ this->chanserv_modecount++;
+ }
+
ModeManager::StackerAdd(bi, this, cm, false, realparam);
MessageSource ms(bi);
RemoveModeInternal(ms, cm, realparam, enforce_mlock);
@@ -616,7 +631,7 @@ void Channel::SetModes(BotInfo *bi, bool enforce_mlock, const char *cmodes, ...)
void Channel::SetModesInternal(MessageSource &source, const Anope::string &mode, time_t ts, bool enforce_mlock)
{
- if (source.GetServer())
+ if (source.GetServer() && source.GetServer()->IsSynced())
{
if (Anope::CurTime != this->server_modetime)
{
diff --git a/src/servers.cpp b/src/servers.cpp
index 2b4fea2db..1dd9d8a37 100644
--- a/src/servers.cpp
+++ b/src/servers.cpp
@@ -280,9 +280,7 @@ void Server::Sync(bool sync_links)
for (channel_map::const_iterator it = ChannelList.begin(), it_end = ChannelList.end(); it != it_end; ++it)
{
Channel *c = it->second;
- c->CheckModes();
- if (c->ci)
- c->ci->RestoreTopic();
+ c->Sync();
}
if (!Anope::NoFork && Anope::AtTerm())