summaryrefslogtreecommitdiff
path: root/src/messages.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-11-20 18:10:26 -0500
committerAdam <Adam@anope.org>2013-11-20 18:10:26 -0500
commitfbbdedf17e769233882b318d57c895694cd63cb1 (patch)
treee82b0c04aabc62b87349fbb1de4484853b3e6acb /src/messages.cpp
parentb75faefea4a53f1c31bedc94cd0a849c7d6d2ab6 (diff)
OnJoinChannel can modify the ts for a channel, so update keep_their_modes in the sjoin handler before processing a user. Otherwise we can desync and think users have a channel status when they really don't.
Diffstat (limited to 'src/messages.cpp')
-rw-r--r--src/messages.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/messages.cpp b/src/messages.cpp
index 8dc962cfd..b757dde8f 100644
--- a/src/messages.cpp
+++ b/src/messages.cpp
@@ -126,6 +126,7 @@ void Join::SJoin(MessageSource &source, const Anope::string &chan, time_t ts, co
{
const ChannelStatus &status = it->first;
User *u = it->second;
+ keep_their_modes = ts <= c->creation_time; // OnJoinChannel can call modules which can modify this channel's ts
/* Add the user to the channel */
c->JoinUser(u, keep_their_modes ? &status : NULL);