summaryrefslogtreecommitdiff
path: root/src/mode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mode.cpp')
-rw-r--r--src/mode.cpp12
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);
}