Send only one ERR_MLOCKRESTRICTED per MODE command.

This agrees with other error messages from MODE.
This commit is contained in:
Jilles Tjoelker 2010-08-24 23:03:23 +02:00
parent f10ec0c42e
commit cc2a7258f1
1 changed files with 9 additions and 1 deletions

View File

@ -56,6 +56,7 @@
#define SM_ERR_NOPRIVS 0x00000400 #define SM_ERR_NOPRIVS 0x00000400
#define SM_ERR_RPL_Q 0x00000800 #define SM_ERR_RPL_Q 0x00000800
#define SM_ERR_RPL_F 0x00001000 #define SM_ERR_RPL_F 0x00001000
#define SM_ERR_MLOCK 0x00002000
#define MAXMODES_SIMPLE 46 /* a-zA-Z except bqeIov */ #define MAXMODES_SIMPLE 46 /* a-zA-Z except bqeIov */
@ -2087,7 +2088,14 @@ set_channel_mode(struct Client *client_p, struct Client *source_p,
/* If this mode char is locked, don't allow local users to change it. */ /* If this mode char is locked, don't allow local users to change it. */
if (MyClient(source_p) && chptr->mode_lock && strchr(chptr->mode_lock, c)) if (MyClient(source_p) && chptr->mode_lock && strchr(chptr->mode_lock, c))
{ {
sendto_one_numeric(source_p, ERR_MLOCKRESTRICTED, form_str(ERR_MLOCKRESTRICTED), chptr->chname, c, chptr->mode_lock); if (!(errors & SM_ERR_MLOCK))
sendto_one_numeric(source_p,
ERR_MLOCKRESTRICTED,
form_str(ERR_MLOCKRESTRICTED),
chptr->chname,
c,
chptr->mode_lock);
errors |= SM_ERR_MLOCK;
continue; continue;
} }
chmode_table[(unsigned char) c].set_func(fakesource_p, chptr, alevel, chmode_table[(unsigned char) c].set_func(fakesource_p, chptr, alevel,