diff options
Diffstat (limited to 'src/messages.cpp')
-rw-r--r-- | src/messages.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/messages.cpp b/src/messages.cpp index 6a60d9cd9..dc11b99b4 100644 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -107,7 +107,10 @@ void Join::SJoin(MessageSource &source, const Anope::string &chan, time_t ts, co /* Update the modes for the channel */ if (keep_their_modes && !modes.empty()) - c->SetModesInternal(source, modes); + /* If we are syncing, mlock is checked later in Channel::Sync. It is important to not check it here + * so that Channel::SetCorrectModes can correctly detect the presence of channel mode +r. + */ + c->SetModesInternal(source, modes, ts, !c->HasExt("SYNCING")); for (std::list<SJoinUser>::const_iterator it = users.begin(), it_end = users.end(); it != it_end; ++it) { |