Commits


ngIRCd Release 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.


2019!


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 compilation without deprecated OpenSSL APIs (#252)


Update Xcode project for latest Xcode version (10.0)


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.


Update HowToRelease.txt: Include the website


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


Update and fix logcheck(8) rules


Update config.guess and config.sub to recent versions - config.guess: 2018-03-08 - config.sub: 2018-03-08


Initialize listening socket: Streamline error message


Update NEWS and ChangeLog files


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.


Use .mailmap to fix spelling of Götz Hoffart


Little code cleanups, better comments


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!