diff options
author | Adam <Adam@anope.org> | 2013-11-20 18:10:26 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-11-20 18:10:26 -0500 |
commit | fbbdedf17e769233882b318d57c895694cd63cb1 (patch) | |
tree | e82b0c04aabc62b87349fbb1de4484853b3e6acb /src/messages.cpp | |
parent | b75faefea4a53f1c31bedc94cd0a849c7d6d2ab6 (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.cpp | 1 |
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); |