Fix handling of channel mode sequence with/without arguments

For example, don't generate wrong error messages when handling
"MODE #chan +IIIIItn *!aa@b *!bb@c *!cc@d *!dd@e *!ee@f".
This commit is contained in:
Alexander Barton 2012-01-06 17:24:55 +01:00
parent 05cc9bf9b0
commit 1fa2af5b3a
1 changed files with 4 additions and 2 deletions

View File

@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -280,7 +280,7 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target )
/* Are there changed modes? */
if (the_modes[1]) {
/* Remoce needless action modifier characters */
/* Remove needless action modifier characters */
len = strlen(the_modes) - 1;
if (the_modes[len] == '+' || the_modes[len] == '-')
the_modes[len] = '\0';
@ -428,6 +428,8 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
mode_ptr++;
if (!*mode_ptr) {
/* Try next argument if there's any */
if (arg_arg < 0)
break;
if (arg_arg > mode_arg)
mode_arg = arg_arg;
else