diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mode.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index 91a64f89b..8712e63b5 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -371,11 +371,10 @@ void ModeParser::Process(const char* const* parameters, int pcnt, User *user, bo { const char* mode = parameters[1]; int nonlistmodes_found = 0; - bool sent[256]; - mask = MASK_CHANNEL; + seq++; - memset(&sent, 0, 256); + mask = MASK_CHANNEL; while (mode && *mode) { @@ -390,9 +389,9 @@ void ModeParser::Process(const char* const* parameters, int pcnt, User *user, bo /* Ensure the user doesnt request the same mode twice, * so they cant flood themselves off out of idiocy. */ - if (!sent[mletter]) + if (sent[mletter] != seq) { - sent[mletter] = true; + sent[mletter] = seq; } else { @@ -1199,4 +1198,7 @@ ModeParser::ModeParser(InspIRCd* Instance) : ServerInstance(Instance) /* Initialise the RFC mode letters */ for (int index = 0; modes[index]; index++) this->AddMode(modes[index]); + + seq = 0; + memset(&sent, 0, 256); } |