1
0
mirror of https://github.com/anope/anope.git synced 2026-07-05 17:43:13 +02:00

Unset all known status modes when we recieve a ts older than ours, and remove split servers from their uplinks

This commit is contained in:
Adam
2010-06-28 10:59:40 -04:00
parent 85b07a94d7
commit 4502038e3d
8 changed files with 83 additions and 45 deletions
+13 -7
View File
@@ -484,15 +484,21 @@ int anope_event_fjoin(const char *source, int ac, const char **av)
c->creation_time = ts;
/* Remove status from all of our users */
for (CUserList::iterator it = c->users.begin(); it != c->users.end(); ++it)
for (std::list<Mode *>::const_iterator it = ModeManager::Modes.begin(), it_end = ModeManager::Modes.end(); it != it_end; ++it)
{
UserContainer *uc = *it;
Mode *m = *it;
c->RemoveMode(NULL, CMODE_OWNER, uc->user->nick);
c->RemoveMode(NULL, CMODE_PROTECT, uc->user->nick);
c->RemoveMode(NULL, CMODE_OP, uc->user->nick);
c->RemoveMode(NULL, CMODE_HALFOP, uc->user->nick);
c->RemoveMode(NULL, CMODE_VOICE, uc->user->nick);
if (m->Type != MODE_STATUS)
continue;
ChannelMode *cm = dynamic_cast<ChannelMode *>(m);
for (CUserList::const_iterator uit = c->users.begin(), uit_end = c->users.end(); uit != uit_end; ++uit)
{
UserContainer *uc = *uit;
c->RemoveMode(NULL, cm, uc->user->nick);
}
}
if (c->ci)
{