diff options
-rw-r--r-- | chat.h | 1 | ||||
-rw-r--r-- | command.c | 2 | ||||
-rw-r--r-- | handle.c | 6 |
3 files changed, 9 insertions, 0 deletions
@@ -187,6 +187,7 @@ extern struct Replies { uint invex; uint join; uint list; + uint mode; uint names; uint topic; uint whois; @@ -185,12 +185,14 @@ static void commandMode(uint id, char *params) { ircFormat("MODE %s %s\r\n", self.nick, params); } else { ircFormat("MODE %s\r\n", self.nick); + replies.mode++; } } else { if (params) { ircFormat("MODE %s %s\r\n", idNames[id], params); } else { ircFormat("MODE %s\r\n", idNames[id]); + replies.mode++; } } } @@ -527,6 +527,9 @@ static const char *UserModes[256] = { static void handleReplyUserModeIs(struct Message *msg) { require(msg, false, 2); + if (!replies.mode) return; + replies.mode--; + char buf[1024] = ""; for (char *ch = msg->params[1]; *ch; ++ch) { if (*ch == '+') continue; @@ -560,6 +563,9 @@ static const char *ChanModes[256] = { static void handleReplyChannelModeIs(struct Message *msg) { require(msg, false, 3); + if (!replies.mode) return; + replies.mode--; + uint param = 3; char buf[1024] = ""; for (char *ch = msg->params[2]; *ch; ++ch) { |