aboutsummaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
amdj/autotools-version-fixinclude/serno.h.SH: correct check for git directoryGravatar Aaron Jones3 months
amdj/fix-buildsys-headersClean up include/stdinc.h and librb/include/rb_lib.hGravatar Aaron Jones3 months
amdj/list-memleakMerge branch 'main' into amdj/list-memleakGravatar Doug Freed7 weeks
amdj/meson-generation-builddateMeson: Decouple creation and generation data from versionGravatar Aaron Jones4 weeks
amdj/modulesTidy up module loading codeGravatar Aaron Jones5 months
amdj/openssl-strerrorOpenSSL backend: Use nicer error strings for system errorsGravatar Aaron Jones4 months
amdj/unify-openssl-macroUnify the preprocessor macro for OpenSSL supportGravatar Aaron Jones5 months
dwfreed/meson-rebasedbuild: add Meson buildsystemGravatar Valentin Lorentz5 months
dwfreed/rm-rf-autotoolsbuild: remove autotools buildsystemGravatar Doug Freed4 months
mainOnly init solanum once in tests/sasl_abort1.cGravatar Ryan Schmidt13 days
[...]
 
 
AgeCommit messageAuthorFilesLines
2026-03-11Tidy up module loading code•••The existing code had several defects: - Core module file names were hardcoded, while autoloaded non- core module filenames were not. Code that loaded core modules had a different but in some places duplicated structure to the code that loaded autoloaded modules. - Module loading for autoloaded modules happened in dentry order, making it unpredictable from one server to the next, or even across instances of `make install` on the same server. - Module loading for autoloaded modules did not verify that the dentry was a file before trying to load it. - An IRCd start (or a conftest) only printed lines about loading modules mentioned in the configuration file. - The configuration file was parsed before loading core and autoloaded modules, meaning any modules specified in the configuration file would be loaded first. - Once a module was loaded, it was added to the head of the module list, making MODLIST show them in reverse loaded order (newest (re)loaded modules at the top of the list). These are addressed as follows: - We now scan the core and autoload module directories and use this to determine which modules to load. - We now sort the dentries according to their filename before iterating them to load them, making module load order finally deterministic. - We now test if a dentry is actually a file before trying to load it. - We now print a message to the console (if running in foreground or conftest mode) when loading any module, including core and autoloaded modules. - The message printed to the console now has the IRCd module directory prefix stripped from it if it matches. - The configuration file is now parsed after loading core and autoload modules. - The modules are added to the module list in the order that they are loaded. This now makes MODLIST show the order that modules were (re)loaded in. Modifications to two modules are part of this effort: - The autoload module `m_alias` relied upon the alias dict not being NULL when loaded, but this is only the case after the configuration file has been parsed. The module already had a "rehash" hook to destroy all existing aliases and create new ones, so we can just make the module do nothing on load (remove its modinit function) and change it to use the "conf_read_end" hook instead of the "rehash" hook, and it will still create aliases after the configuration file is subsequently parsed. With this modification, there are now no in-tree consumers of the "rehash" hook. - The autoload module `m_services` iterated `service_list` upon loading it, which will now be empty (a no-op) since the module is loaded before configuration file is parsed. This module too handles the configuration file being parsed with a "conf_read_end" hook and takes the appropriate action, so we can just remove this code from its modinit function. All other modules' modinit functions have been audited for behaviour like this; there was nothing of note. amdj/modulesGravatar Aaron Jones6-83/+138
2026-02-12Make TAGMSG behave like NOTICE for errors•••We explicitly do not send error numerics to clients for NOTICE in most cases, instead silently discarding the command. Give this treatment to TAGMSG across the board as well. Previously, this was the case for TAGMSG without tags but was not applied for TAGMSG that had tags but otherwise had issues (e.g. +m channel and the user is not +ov). This prevents spamming users whose clients send automatic TAGMSG with errors they can do nothing about. Gravatar Ryan Schmidt1-17/+17
2026-02-03Create $PREFIX/var/solanum on install with --enable-fhs-paths•••On startup, bandb tries to create $PREFIX/var/solanum/ban.db, which fails if the directory does not exist. Gravatar Valentin Lorentz1-0/+2
2026-02-03Write data files to $PREFIX/var/lib/solanum instead of $PREFIX/var/solanum wi...Gravatar Valentin Lorentz1-1/+1
2026-01-27parse: fix crash•••The incoming_client and incoming_message globals were not properly cleared after processing a numeric command. Ensure they are cleared by not returning early after setting those global values. Fixes: e2a499fGravatar Ryan Schmidt1-3/+3
2026-01-27ircd/newconf.c: conf_set_general_hidden_caps: fix order of operations•••We should increment the number of capabilities to allocate space for after freeing any existing capabilities, in order to prevent the loop that frees them from overwriting the number. Reported-By: Ryan Schmidt Gravatar Aaron Jones1-6/+10
2026-01-22Add doing_version_confopts hook•••This hook allows modification of the confopts portion of a VERSION response (i.e. the set of flags representing how the ircd was configured). Extension modules can use this hook to display additional confopts without needing to edit m_version or add things to core in order to share state with m_version. Gravatar Ryan Schmidt2-61/+115
2026-01-22Pass msgbuf to PART's privmsg_channel hook and propagate PART tags•••The privmsg_channel hook gained a new msgbuf member which was uninitialized in m_part. Properly pass the msgbuf to that parameter and propagate any tags set by the hook to downstream servers. This requires introducing sendto_server_tags(), and I refactored sendto_server() to call the same helper internal method as sendto_server_tags(). I took the opportunity to update the method to use msgbuf instead of linebuf directly (meaning sendto_server() now calls outbound_msgbuf). Fixes #484 Gravatar Ryan Schmidt5-37/+93
2026-01-21Overhaul hooks documentation•••The new hooks documentation is now a comprehensive accounting of every hook that exists in the solanum repo. The document includes changes to hooks present in the (as of now unmerged) PRs #466, #478, and #482. Gravatar Ryan Schmidt2-137/+1214
2026-01-21Add doing_info_conf hook and cleanup unused hooks•••doing_info_conf is called during INFO commands after all conf options have been sent to opers. Modules can use this hook to expose any conf options they define by sending relevant RPL_INFO replies to the oper. This addition removes the final barrier to defining new ircd.conf options inside of extension modules rather than requiring core changes for extension configuration. Additionally, some cleanup has been performed for hook definitions that are not called anywhere inside of solanum. Three hooks were declared in hook.h as extern int but were not defined or referenced in any other file: iosend_id, iorecv_id, and iorecvctrl_id. The doing_admin, doing_info, doing_motd, and doing_trace "spy" hooks were defined in the module headers for those modules, however the modules never actually invoked those hooks. All of the lingering declarations for these hooks have now been removed as they weren't doing anything anyway. Gravatar Ryan Schmidt5-22/+7
[...]
 
Clone
https://cgit.space/~irc/github.com/solanum-ircd/solanum.git
http://cgitspacea7m5fmo5stfwxkykfbrjcecevl6z3xm5u7nfppuiigqoeyd.onion/~irc/github.com/solanum-ircd/solanum.git
http://cgit.i2p/~irc/github.com/solanum-ircd/solanum.git
http://cgitiek6febqkrplowpeqssm6cur3fk6de76oajer7dqixw2pwkq.b32.i2p/~irc/github.com/solanum-ircd/solanum.git