solanum/ircd
Ed Kellett 04952c32ad Rework channel mode handling
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.
2020-11-08 00:26:27 +00:00
..
authproc.c authproc: Don't try to notice dead clients 2020-10-28 21:34:56 +00:00
bandbi.c Refactor clear_out_address_conf* 2020-10-31 16:00:02 +00:00
cache.c free cache emptyline rb_dlink_node, allocated automatically but never freed 2016-10-30 12:05:45 +00:00
capability.c capability: accept new ownerdata for existing caps 2020-06-02 16:14:27 +01:00
channel.c Refactor common channel iteration 2020-10-19 20:15:26 +01:00
chmode.c Rework channel mode handling 2020-11-08 00:26:27 +00:00
class.c class: remove unused macros 2016-06-01 20:54:12 +00:00
client.c Innovation by sed 2020-10-15 15:52:41 +01:00
dns.c remove RB_IPV6 2017-08-20 12:54:46 +01:00
extban.c Innovation by sed 2020-10-15 15:52:41 +01:00
getopt.c YESNO options are of type bool, not int 2018-03-23 16:46:38 +00:00
hash.c ircd: get_or_create_channel: avoid clang static analysis warning 2017-07-29 22:28:51 +01:00
hook.c Add a cap_change hook 2020-10-24 16:19:52 +01:00
hostmask.c Refactor clear_out_address_conf* 2020-10-31 16:00:02 +00:00
ircd.c Innovation by sed 2020-10-15 15:52:41 +01:00
ircd_lexer.l ircd_lexer: fix another crash with the same cause 2016-05-15 00:57:16 +00:00
ircd_parser.y ircd_parser: free the ends of ranges after use 2020-06-07 23:33:59 +01:00
ircd_signal.c ircd_signal: a function that tailcalls a noreturn function should be marked noreturn 2016-06-01 20:54:12 +00:00
listener.c Add secure{} blocks 2020-10-31 16:00:02 +00:00
logger.c Innovation by sed 2020-10-15 15:52:41 +01:00
main.c Innovation by sed 2020-10-15 15:52:41 +01:00
Makefile.am Innovation by sed 2020-10-15 15:52:41 +01:00
match.c Add a comment explaining match_arrange_stars 2020-10-31 17:00:25 +00:00
modules.c Implement the solanum.chat/identify-msg vendor cap 2020-10-16 21:47:38 +01:00
monitor.c ircd: send tags on every message 2017-08-06 16:21:29 +01:00
msgbuf.c Innovation by sed 2020-10-15 15:52:41 +01:00
newconf.c Remove shared blocks 2020-11-01 04:20:44 +00:00
operhash.c Innovation by sed 2020-10-15 15:52:41 +01:00
packet.c Replace most checks for +o with oper:general 2020-08-04 22:58:30 +01:00
parse.c Mark fake test clients, don't assert they're real 2020-11-01 04:33:30 +00:00
privilege.c Innovation by sed 2020-10-15 15:52:41 +01:00
ratelimit.c Innovation by sed 2020-10-15 15:52:41 +01:00
reject.c reject: reorder to avoid leaks 2020-01-03 17:07:25 +00:00
restart.c getopt: don't modify argv as it breaks restart() 2016-04-25 23:32:18 +01:00
s_conf.c Refactor clear_out_address_conf* 2020-10-31 16:00:02 +00:00
s_newconf.c Remove shared blocks 2020-11-01 04:20:44 +00:00
s_serv.c Mint CLICAP_FLAGS_PRIORITY 2020-10-19 19:30:43 -04:00
s_user.c Rename UMODE_SSLCLIENT, IsSSLClient 2020-10-31 16:00:02 +00:00
scache.c Innovation by sed 2020-10-15 15:52:41 +01:00
send.c Send hidden mode changes to auspex:cmodes 2020-08-04 22:58:30 +01:00
snomask.c Innovation by sed 2020-10-15 15:52:41 +01:00
sslproc.c librb: remove unnecessary NULL from the end of rb_string_to_array output 2017-07-29 22:46:04 +01:00
substitution.c Innovation by sed 2020-10-15 15:52:41 +01:00
supported.c Innovation by sed 2020-10-15 15:52:41 +01:00
tgchange.c Refactor common channel iteration 2020-10-19 20:15:26 +01:00
version.c.SH Innovation by sed 2020-10-15 15:52:41 +01:00
whowas.c typedef-ify rb_radixtree for consistency. 2016-03-23 08:32:22 -05:00
wsproc.c remove unused variables 2017-08-04 20:02:20 +01:00