Commit Briefs
ngIRCd Release 25 (tags/rel-25)
Platforms.txt: Add and update systems
- Update x86_64/apple/darwin16.5.0 (Apple clang 8.1) - Add x86_64/apple/darwin17.7.0 (Apple clang 10.0) - Add x86_64/apple/darwin18.2.0 (Apple clang 10.0) - Add x86_64/unknown/haiku (gcc 7.3) - Update x86_64/pc/linux-gnu (gcc 6.3.0)
Fix documentation of MotdPhrase length (#254)
The max length is actually 126 (< 127), since the check errors out if length >= 127. See <https://github.com/ngircd/ngircd/blob/master/src/ngircd/conf.c#L1487>. I didn't look through the history to see when the change happened. I just happened to find during a migration that my 140 character MOTD didn't work. Update sample configuration file as well as the man page.
Implement new configuration option "MaxPenaltyTime" (#251)
This option configures the maximum penalty time increase in seconds, per penalty event. Set to -1 for no limit (the default), 0 to disable penalties altogether. ngIRCd doesn't use penalty increases higher than 2 seconds during normal operation, so values higher than 1 rarely make sense. Disabling (or reducing) penalties can greatly speed up "make check" runs for example, see below, but are mostly a debugging feature and normally not meant to be used on production systems! Some example timings running "make check" from my macOS workstation: - MaxPenaltyTime not set: 4:41,79s - "MaxPenaltyTime = 1": 3:14,71s - "MaxPenaltyTime = 0": 25,46s Closes #249.
Fix some compiler warnings of Apple Xcode/Clang
For example: * src/ngircd/irc-login.c:102:21: Implicit conversion loses integer precision: 'int' to 'char' * src/ngircd/conn.c:1084:9: Implicit conversion turns floating-point number into integer: 'double' to 'bool' * src/tool/tool.c:85:10: Implicit conversion loses integer precision: 'int' to 'char'
Fix typos/errors/... in file comments
Found by Xcode/Clang code analyzer. No functional changes.
Update doc/Protocol.txt for IRCv3 WEBIRC extension
See commit d0f9d3d92.
Allow a 5th parameter in WEBIRC
According to an IRCv3 extension, the 5th parameter can be used for extra flags that are fine to ignore for now, but limiting WEBIRC params to 4 causes a syntax error. See https://github.com/ircv3/ircv3-ideas/issues/12 for more information. This closes #247.
Platforms.txt: Add and update systems
- Update x86_64/unknown/freebsd10.0 (FreeBSD clang 3.3) - Add x86_64/unknown/freebsd10.3 (FreeBSD clang 3.4) - Update i386/pc/solaris2.11 (gcc 4.8.2) - Add mipsel/openwrt/linux-uclibc (gcc 4.8) [cross-compiler] - Add x86_64/pc/linux-gnu (gcc 5.4.0) [Win10/WSL] - Platforms.txt: Update "pre-ANSI compiler" foot note. Thanks to Götz Hoffart <goetz@hoffart.de>!
ngIRCd Release 25~rc1 (tags/rel-25-rc1)
Update config.guess and config.sub to recent versions
- config.guess: 2018-03-08 - config.sub: 2018-03-08
Correctly retry outgoing conenctions when forking a resolver failed
When ngIRCd failed to spawn a new resolver subprocess, the connection structure was still marked as "SERVER_WAIT", and no new attempt to connect to this server was made. Thanks to Robert Obermeier for reporting this bug! Closes #243.
Fix use-after-free while handling ERROR during client login
This patch fixes a "use after free" bug which is hit while processing ERROR commands while a new client is logging into the server, which leads to only the CLIENT structure becoming freed, but not the CONNECTION structure, too. And this leads to the daemon accessing the already freed CLIENT structure later on ... So now IRC_ERROR() uses the correct function Conn_Close() to correctly free both structures. The CONNECTION structure is cleaned up later on, and the freed CLIENT structure can't be overwritten during normal operations, therefore this bug normally can't crash (DoS) the service -- but you can easily hit it when using the GCC option "-fsanitize=address", or run ngIRCd with Valgrind. Thanks a lot to Joseph Bisch <joseph.bisch@gmail.com> for discovering and reporting this issue!
Only send TOPIC updates to a channel when the topic actually changed
This prevents the channel from becoming flooded by unecessary TOPIC update messages, that can happen when IRC services try to enforce a certain topic but which is already set (at least on the local server), for example. Therefore still forward it to all servers, but don't inform local clients (still update setter and timestamp information, though!)
Update Xcode project for latest Xcode version (9.2)
This includes adding missing and deleting obsolete file references.
User mode "C": Allow messages from servers, services, and IRC Ops
Update user mode "C" handling ("Only users that share a channel are allowed to send messages") to behave like user mode "b" ("block private messages and notices") and therefore allow messages from servers, services, and IRC Operators, too. Change proposed by "wowaname" in #ngircd, thanks!