Send only one ERR_MLOCKRESTRICTED per MODE command.
This agrees with other error messages from MODE.
This commit is contained in:
parent
f10ec0c42e
commit
cc2a7258f1
10
src/chmode.c
10
src/chmode.c
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue