<feed xmlns='http://www.w3.org/2005/Atom'>
<title>~irc/github.com/solanum-ircd/solanum.git/modules, branch dwfreed/meson-rebased</title>
<subtitle>https://github.com/solanum-ircd/solanum</subtitle>
<id>https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/atom/modules?h=dwfreed%2Fmeson-rebased</id>
<link rel='self' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/atom/modules?h=dwfreed%2Fmeson-rebased'/>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/'/>
<updated>2026-03-15T17:53:21Z</updated>
<entry>
<title>build: add Meson buildsystem</title>
<updated>2026-03-15T17:53:21Z</updated>
<author>
<name>Valentin Lorentz</name>
</author>
<published>2026-03-15T00:46:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=b46433ff940100ac1990798a14cd5b58bfb31062'/>
<id>urn:sha1:b46433ff940100ac1990798a14cd5b58bfb31062</id>
<content type='text'>
</content>
</entry>
<entry>
<title>modules: drop unnecessary link flag</title>
<updated>2026-03-15T00:55:02Z</updated>
<author>
<name>Valentin Lorentz</name>
</author>
<published>2026-03-15T00:45:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=10f42fe39f5e07b21948498c08f7c8b222538914'/>
<id>urn:sha1:10f42fe39f5e07b21948498c08f7c8b222538914</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make TAGMSG behave like NOTICE for errors</title>
<updated>2026-02-12T20:17:53Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-02-12T01:57:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=59e35e3f5e0943729f2b55f860416b63c4a0e73f'/>
<id>urn:sha1:59e35e3f5e0943729f2b55f860416b63c4a0e73f</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add doing_version_confopts hook</title>
<updated>2026-01-22T22:01:58Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-22T20:11:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=fd89d4e837fe2e98cb273c340ddf4762ce1eb070'/>
<id>urn:sha1:fd89d4e837fe2e98cb273c340ddf4762ce1eb070</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Pass msgbuf to PART's privmsg_channel hook and propagate PART tags</title>
<updated>2026-01-22T00:42:01Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-21T22:08:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=6a1cd5ec8650ea4a8f47db64f8a4032cc4827c11'/>
<id>urn:sha1:6a1cd5ec8650ea4a8f47db64f8a4032cc4827c11</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Add doing_info_conf hook and cleanup unused hooks</title>
<updated>2026-01-21T17:09:43Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-13T00:59:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=1b44c4de4d955156bc010fa8223031a14ab69202'/>
<id>urn:sha1:1b44c4de4d955156bc010fa8223031a14ab69202</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Fix msgid tags with echo-message</title>
<updated>2026-01-21T17:09:09Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2025-12-01T16:54:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=0aac79db9d8747facb0fd59b673a437fa6f5696c'/>
<id>urn:sha1:0aac79db9d8747facb0fd59b673a437fa6f5696c</id>
<content type='text'>
msgid generation has been moved to the privmsg_user and privmsg_channel
hooks, which are called on every normal PRIVMSG/NOTICE/TAGMSG. They are
not called when messaging user@server, opers@server, or mass-messages
and as such none of those things will have msgid attached. This seems
fine as user@server is rejected by solanum and exists solely for
messaging pseudoservers, opers@server is turned into a snote, and
mass-messages are oper-only and thus unlikely to need anything that keys
off msgid in the future.

Moving this solves the interaction with msgid and echo-message. Now, we
ensure that an echoed message always has a msgid, and that msgid is
always the same as the msgid shown to other clients.

This requires expanding the hook_data structures for those two hooks.
While a core restart is not needed, attempting to reload tag_message_id
before reloading m_message may cause crashes. When updating your
servers, please reload m_message first.
</content>
</entry>
<entry>
<title>Batch updates</title>
<updated>2026-01-21T16:10:44Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-13T17:12:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=8162cbe9d4f350da87a6eff02d06c804889b0d5f'/>
<id>urn:sha1:8162cbe9d4f350da87a6eff02d06c804889b0d5f</id>
<content type='text'>
The extension example_module was extended to introduce a new
client-initiated batch type named test. This is primarily done to ease
testing of the client-initiated portions of m_batch, but also serves as
a useful sketch for how a module can register its own client-initiated
batch types.

The definition of struct BatchHandler was slightly modified to use a
callback function to determine if nesting is allowed. The callback can
additionally set a custom error message if desired when returning false.

The len and messages list in struct Batch no longer include the start
message, so a len of 0 indicates an empty batch. Because the start
message is still allocated and saved off, adjust anything that impacts a
client's pending_batch_lines by 1 to account for the implicit additional
message.

Empty batches now trigger the relevant batch handler. If a handler wants
to no-op on empty batches, it can do so but this allows additional
flexibility for handlers to still do something upon receiving empty
client-initiated batches.
</content>
</entry>
<entry>
<title>Avoid making spurious netjoin batches</title>
<updated>2026-01-21T16:10:44Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-13T05:55:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=fa0e15aa00731effe4acbc548d1d9202c35ecaef'/>
<id>urn:sha1:fa0e15aa00731effe4acbc548d1d9202c35ecaef</id>
<content type='text'>
If a server being netjoined to us is introducing additional downstream
servers from it, those servers won't themselves be sending us bursts. As
such, we can safely suppress sending a BATCH to clients for those
additional servers.
</content>
</entry>
<entry>
<title>Include AWAY and status MODEs in netjoin batches</title>
<updated>2026-01-21T16:10:44Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-13T05:08:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=0ab66dade004bc3211883c1f2eebf9e0e2a17c4f'/>
<id>urn:sha1:0ab66dade004bc3211883c1f2eebf9e0e2a17c4f</id>
<content type='text'>
AWAY is burst to away-notify clients and status MODEs (+o and +v) are
burst to all clients on the channel. Excluding these from the batch
means that clients may opt to process these before the batch completes,
then get confused because they have no records of those nicknames
existing or being members of the channel. Including both in the netjoin
batch solves these concerns, although the netjoin batch spec is silent
on whether we're allowed to put non-JOIN commands in that batch.
</content>
</entry>
</feed>
