Commit Briefs
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!
Fix compiler warning in ForwardLookup()
When compiling without "working getaddrinfo()", the "af" parameter of ForwardLookup() is unused by that function. Mark it as such! This prevents the following compiler warning: resolve.c:235:56: warning: unused parameter ‘af’ [-Wunused-parameter]
Fix compiler warning in Option_String()
When compiling ngIRCd without support for SSL and without support for ZLIB, gcc outputs the following warning: irc.c:493:9: warning: variable ‘options’ set but not used [-Wunused-but-set-variable] Fix it by providing a dummy function in this case.
Fix Get_Error() usage, take II
This should fix the following compiler warning: resolve.c:113:1: warning: ‘Get_Error’ defined but not used [-Wunused-function] Which can happen, because the logic of commit 543f44bf isn't sufficient: Get_Error() is only used when neither HAVE_WORKING_GETADDRINFO nor HAVE_GETNAMEINFO are set ... Enhances 543f44bf. Closes #241.
Allow IRC Ops and remote servers to KILL service clients (#242)
In the end, service clients behave like regular users, therefore IRC operators and servers should be able to KILL them: for example to resolve nick collisions. This is related to #238.
Don't forward KILLs to other servers if they've been blocked locally
This prevents clients from killing IRC services, for example. Closes #238. Closes #239.
Merge pull request #240 from bkuhls/fix_Get_Error
Fix Get_Error usage
Fix Get_error usage
The usage of Get_Error is guarded by "ifdef h_errno" in this file, the definition of this function should follow the same rules. Fixes a build error when cross-compiling: https://github.com/ngircd/ngircd/issues/223