04952c32ad
Incoming MODE processing is split into a parsing step and an execution step, instead of a mode's effector function being involved in its own parsing. Modes can no longer use custom logic to control their parsing, and instead supply a combination of CHM_* flags to the parser. As a result, we know before we try to effect any mode changes what all of them will be. The reauthorize hack for override is no longer necessary. A side effect of its introduction was that `MODE #foo b x!y@z` no longer worked; in removing it we restore that behaviour. We gain the ability to reject various invalid inputs that: - mutate or query unknown modes - supply excess mode arguments - query modes that can't be queried In each case, whether we *should* reject it is an open question; for now I'm rejecting the first one. |
||
---|---|---|
.. | ||
authproc.c | ||
bandbi.c | ||
cache.c | ||
capability.c | ||
channel.c | ||
chmode.c | ||
class.c | ||
client.c | ||
dns.c | ||
extban.c | ||
getopt.c | ||
hash.c | ||
hook.c | ||
hostmask.c | ||
ircd.c | ||
ircd_lexer.l | ||
ircd_parser.y | ||
ircd_signal.c | ||
listener.c | ||
logger.c | ||
main.c | ||
Makefile.am | ||
match.c | ||
modules.c | ||
monitor.c | ||
msgbuf.c | ||
newconf.c | ||
operhash.c | ||
packet.c | ||
parse.c | ||
privilege.c | ||
ratelimit.c | ||
reject.c | ||
restart.c | ||
s_conf.c | ||
s_newconf.c | ||
s_serv.c | ||
s_user.c | ||
scache.c | ||
send.c | ||
snomask.c | ||
sslproc.c | ||
substitution.c | ||
supported.c | ||
tgchange.c | ||
version.c.SH | ||
whowas.c | ||
wsproc.c |