Commit Briefs
ngIRCd release 14~rc1 (tags/rel-14-rc1)
Updated Debian/Linux init script
- PidFile, ServerUID and ServerGID are read from actual server configuration - Exit code and behaviour is more LSB compliant - New "status" and "test" sub-functions
testsuite: add more predefined channels to server config
make sure it creates & and +, and accepts channel names without a special character (ngircd should treat 'Name = chan' as 'Name = #chan').
add and use Channel_IsModeless()
avoid "name[0] == '+'" where possible, having Channel_IsModeless() makes things much more obvious.
Channel mode changes: break on error
Don't echo multiple syntax error messages (461) on invalid commands, but break after the first one. In addition, this solves corrupted 'Unknown mode "+' messages.
TLS/SSL: remove useless error message when ssl connection is closed
When using OpenSSL, the following annoying "error" message was logged whenever an encrypted connection was shut down in a orderly fashion: TLS/SSL Connection shutdown: ConnSSL_Read: Unable to determine error of course, this isn't an error at all.
SSL/TLS: clear all ssl realted flags on shutdown
one ssl related flags was not cleared on ssl shutdown. introduce and use CONN_SSL_FLAGS_ALL to zap them all.
TLS/SSL: fix memory leak when using compressed server links with ssl
commit 6bc2d3d06e9cb4da68ea4b63d9b6b219d88ab927 (New connection option CONN_RFC1459) forgot to adjust the ssl bitmasks. The result is that when a compressed AND encrypted server link goes down the memory allocated by zlib and the r/w buffers are no longer free'd as the previous ConnSSL_Free() would then also remove the CONN_ZIP flag from the flag mask.
Channel key file: store file name and open on each access.
Store the file name of channel key files and reopen them on each access (on each JOIN command) insted of just storing the file handles. This eliminates the special requirements (no delete) and makes sure that always the actual file contents are used in all circumstances.
Support individual channel keys for pre-defined channels.
This patch introduces the new configuration variable "KeyFile" for [Channel] sections in ngircd.conf. Here a file can be configured for each pre-defined channel which contains individual channel keys for different users. This file is line-based and must have the following syntax: <user>:<nick>:<key> <user> and <nick> can contain the wildcard character "*". Please not that these channel keys are only in effect, when the channel has a regular key set using channel mode "k"!
RFC 2812, sec. 3.3.1: really check for the last dot
This fixes commit 5a3128243f4b60 and makes the test suite ("make check") run again without errors.
irc.c: reject masks with wildcard after last dot
RFC 2812 says in section 3.3.1 ("Private Messages"): The mask MUST have at least 1 (one) "." in it and no wildcards following the last ".".
irc.c: Fix handling of channels containing dots
commit 2546a13ad2949192eb70bf21e114ec60af287ee4 ('Cumulative Message Patch') broke PRIVMSG to channels containing dots. Fix this by switching evaluation order: Check first if the target matches a existing channel and only do a check for target masks if that failed. PRIVMSG with host/server masks is described in RFC 2812, section 3.3.1. Makes one wonder how a server is _really_ supposed to tell the difference between hostmasks and channel names. Sigh.
Update ngircd.spec file
- Change Copyright to License - Update URL - Make BuildRoot use %{_tmppath} macro - Add basic BuildRequires - Compile with zlib and openssl - Install all docs in standard document location Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
remove unneeded LOG_DEBUG when not compiling with DEBUG support
when ngircd is build without DEBUG enabled, LOG_DEBUG messages are always discarded. To avoid the extra code, ngircd has a LogDebug() wrapper which gets removed by the compiler when compiling without DEBUG defined. Update a few functings which were using the Log(LOG_DEBUG, .. interface directly without #ifdef DEBUG guards. text data bss dec hex filename 127748 1900 28280 157928 268e8 ngircd.before 126836 1896 28280 157012 26554 ngircd.after
documentation: gnutls does not support password-protected privkeys
already mentioned in man page and sample config file, but for completeness also document it in doc/SSL.txt.
