<feed xmlns='http://www.w3.org/2005/Atom'>
<title>~irc/github.com/solanum-ircd/solanum.git, branch amdj/fix-buildsys-headers</title>
<subtitle>https://github.com/solanum-ircd/solanum</subtitle>
<id>https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/atom/?h=amdj%2Ffix-buildsys-headers</id>
<link rel='self' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/atom/?h=amdj%2Ffix-buildsys-headers'/>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/'/>
<updated>2026-05-14T23:51:12Z</updated>
<entry>
<title>Clean up include/stdinc.h and librb/include/rb_lib.h</title>
<updated>2026-05-14T23:51:12Z</updated>
<author>
<name>Aaron Jones</name>
</author>
<published>2026-05-04T08:46:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=2f62754caef32904f589a54edd9856c592b6164e'/>
<id>urn:sha1:2f62754caef32904f589a54edd9856c592b6164e</id>
<content type='text'>
- Unconditionally require stdbool.h in IRCd

  We are a C99 project anyway (configure.ac and meson.build both
  require a C99 compiler), so this header will always be present

  This removes the awful hack defining bool, true, and false in
  its absense, which was creating build errors when using meson,
  because meson.build did not set the HAVE_STDBOOL_H macro

- Modernise definition of alloca(3) according to GNU guidance

  This was in both librb and IRCd, while it only needs to be in
  the former

- Fix missing endianness check in librb/meson.build

  IRCd and librb both use the WORDS_BIGENDIAN macro, which was
  only being set by their configure.ac (with the AC_C_BIGENDIAN
  M4 macro)

  Since IRCd's stdinc.h includes librb's rb_lib.h, which then
  includes librb's librb-config.h, which would have the macro
  defined there, we only need to check for it in librb, so we
  can remove the endianness check from IRCd's configure.ac and
  don't need to add it to IRCd's meson.build

- Use __has_attribute to detect whether compiler attributes are
  available

  This is supported by gcc (5+), clang (2.9+), and ICC (17+)

- Add a __noreturn macro for __attribute__((__noreturn__)) and
  adjust the codebase to use that

- Remove inclusion of headers that are only used by librb

- Remove inclusion of headers that are included in rb_lib.h
  because stdinc.h includes rb_lib.h anyway

- Remove the checks for headers and functions from the IRCd
  configure.ac and meson.build that are only used by librb

- Alphabetise checks for headers and functions (by the name of
  the macro they define) in the meson.build files

- Use check_header() instead of has_header() in meson to see if
  it is actually possible to compile code using the header

- Remove dead code using srand48(3) which has never been
  compiled because neither build system has ever set the
  HAVE_SRAND48 macro and the surrounding code makes no use of
  this libc RNG

- Remove the TLS defines from IRCd's meson.build because librb's
  meson.build already defines them and IRCd pulls those in
</content>
</entry>
<entry>
<title>Automatically rehash when modules change conf</title>
<updated>2026-04-29T16:12:34Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-04-11T04:05:08Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=eacc3388cd75060a1ece9209c24c85bc20b65ff7'/>
<id>urn:sha1:eacc3388cd75060a1ece9209c24c85bc20b65ff7</id>
<content type='text'>
When loading a module that modifies config (add/remove conf items or top
conf sections), we now queue a rehash operation so that new config can
be immediately applied. A new rb_defer_once() function was added to
deduplicate these rehash requests so that at most one rehash will occur
regardless of how many modules change conf.
</content>
</entry>
<entry>
<title>Add m_quarantine</title>
<updated>2026-04-29T16:12:04Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-28T02:48:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=13969e96c9993892924b61f4b98d25626b4f1e2f'/>
<id>urn:sha1:13969e96c9993892924b61f4b98d25626b4f1e2f</id>
<content type='text'>
This extension module provides a new usermode (+q) and two commands that
allow opers to set/unset that mode. The mode can be set either via
ircd.conf (general::default_umodes or auth::umodes) or via the
QUARANTINE command. When using the command, a reason is required which
will be broadcast to all other opers via the snote.

The quarantine will be automatically removed if the target opers up or
logs into a services account, and opers and logged in users cannot be
quarantined. The UNQUARNTINE command may additionally be used to remove
the quarantine status from a user. Users cannot otherwise set or remove
this usermode from themselves.

The QUARANTINE and UNQUARANTINE commands require a new priv
oper:quarantine.

To support this, a new account_change hook was added to m_services and
m_signon. This hook is fired whenever a user's services account changes
(via logging in or logging out) from the SVSLOGIN, SIGNON, LOGIN, or SU
services commands. It is **not** fired for SVSLOGIN on unknown
(pre-registration) users.

Documentation was updated for the new usermode, hook, and commands.
Usermode help was alphabetized for consistency, a missing entry for
helpops was added, and cloaking was moved to +x (since all modern
cloaking modules use that mode instead) since I was touching the file
anyway.
</content>
</entry>
<entry>
<title>OpenSSL backend: Use nicer error strings for system errors</title>
<updated>2026-04-09T19:33:53Z</updated>
<author>
<name>Aaron Jones</name>
</author>
<published>2026-04-05T17:48:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=54286cf59235c8688104ee20d4e1d74fe8934317'/>
<id>urn:sha1:54286cf59235c8688104ee20d4e1d74fe8934317</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add +reply client tag support</title>
<updated>2026-04-09T17:45:27Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-02-22T18:15:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=28862ff3e312bf9dfb4fc8f9621f27f195d7d631'/>
<id>urn:sha1:28862ff3e312bf9dfb4fc8f9621f27f195d7d631</id>
<content type='text'>
We validate that the reply looks like a valid message id as generated by
tag_message_id and, for channel messages, that the reply is going to the
same channel as specified in the message id. Since tag values do not
currently go through spamfilter, this is an easy-ish way to ensure that
it cannot be used as a backchannel for spam.
</content>
</entry>
<entry>
<title>Add +channel-context client tag</title>
<updated>2026-04-09T17:41:27Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-04-09T16:14:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=61b53aeae8f4df388c4c6f3ca31dea88268259bd'/>
<id>urn:sha1:61b53aeae8f4df388c4c6f3ca31dea88268259bd</id>
<content type='text'>
The sender must be in the channel mentioned by the tag and must be able
to send messages to that channel. Since this is a hint for clients to
display the received PM in a channel buffer, having the ircd strip the
tag when the sender would otherwise not be able to talk in the channel
will help reduce confusion and make chanop actions more effective in
reducing perceived in-channel issues.
</content>
</entry>
<entry>
<title>Fix logfile checks</title>
<updated>2026-04-05T19:44:06Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-03-29T04:48:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=ce3b170671eefd9a6612c62de7b8bd5c7ea329fb'/>
<id>urn:sha1:ce3b170671eefd9a6612c62de7b8bd5c7ea329fb</id>
<content type='text'>
- Initialize hooks before the main log file, because if we send a snote
  due to failing to open a logfile, that calls a hook. Attempting to
  call a hook before hooks are initialized will cause the ircd to
  segfault.
- Skip access() check for the logfile itself and simply check the return
  value of fopen(). This fixes a TOCTTOU race where an access check
  succeeds but something causes the file to become inaccessible between
  access() and fopen(), preventing an appropriate error from being
  logged. Also makes my life easier with my custom SELinux policy for
  the ircd since access() checks for full-write access whereas my policy
  only allows append access for logfiles.
</content>
</entry>
<entry>
<title>Fix copy/paste errors</title>
<updated>2026-04-05T19:40:11Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-03-26T14:57:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=53ddbc4a9fdd26d7604cfdaac79deb33625398a7'/>
<id>urn:sha1:53ddbc4a9fdd26d7604cfdaac79deb33625398a7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow all ircd file paths to be customized</title>
<updated>2026-04-05T19:40:11Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-03-26T05:05:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=7b327076084b71ae7879f4d8cb1ad33e6ac229d4'/>
<id>urn:sha1:7b327076084b71ae7879f4d8cb1ad33e6ac229d4</id>
<content type='text'>
The ban.db file as well as both MOTD files were in hardcoded locations. Add new config options to the main solanum binary to manipulate where these files are looked for. This should make it fully possible to run multiple solanum instances from the same directory side-by-side.
</content>
</entry>
<entry>
<title>doc/: rename ircd.motd{,.example} and unconditionally install</title>
<updated>2026-03-25T20:47:47Z</updated>
<author>
<name>Aaron Jones</name>
</author>
<published>2026-03-25T20:40:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=d8d710c7bc052c3e24f76ca7a63da3a6ba6af8ea'/>
<id>urn:sha1:d8d710c7bc052c3e24f76ca7a63da3a6ba6af8ea</id>
<content type='text'>
Fixes #510
</content>
</entry>
</feed>
