InspIRCd Changelog

What's new in InspIRCd 2.0.22

Aug 15, 2016
  • This release fixes the issues discovered since 2.0.21, containing important stability and correctness related fixes and better support for newer compilers (GCC 6.x). There is a new config option that can be used to hide server notices for KILLs done by U-Lined servers (services). A desync issue has also been fixed which caused some channel bans to be not synced on burst for empty non-permanent channels in some cases.
  • Many third party libraries shipping with the Windows installer has been updated: OpenSSL to 1.0.1t, GnuTLS to 3.4.14, OpenLDAP to 2.4.44, PCRE to 8.39 and GeoIP to 1.6.9.
  • Fix dccallow to work with files with spaces in their names.
  • Don’t show snotices for kills from ulined clients.
  • Fix bursting channel bans.
  • Remove embarrassing negative comments about some clients from the code.
  • Fix for GCC 6 rightfully optimizing out the NULL check of ‘this’ in ConfigTag::readString().
  • Stop processing the new connection in UserManager::AddUser() when an internal SocketEngine error happens and the user is quitted.
  • Don’t exit on rehash if the pid file cannot be written.
  • m_ssl_gnutls, m_ssl_openssl After a read schedule another read if data remains in the buffer of the SSL library.
  • m_ssl_openssl Verify DH params being non-NULL before setting it on the context.
  • Fix more incorrect std::string::operator[] usage.
  • m_censor Fix possible incorrect cast of dest.
  • Minor spelling errors in m_spanningtree.so
  • Quote paths in the makefile.
  • Fix GCC 6 warning about null checking this.
  • Fix ‘cron’ and ‘restart’ in the helper not forwarding arguments.
  • Partially revert “Quote paths in the makefile”.
  • Delete modules cautiously when doing a deinstall.
  • Fix extraneous quotes in makefile template.
  • Add configuration for building with Travis-CI.
  • Fix a minor warning in m_hideoper on some systems.
  • Fix 005 not showing some modes with the same rank as others.
  • GCC should never assume that this can not be null.
  • Force link sqlite3 on OS X when doing Travis builds.
  • Fix challenge auth when using m_hash_gnutls instead of m_sha256.

New in InspIRCd 2.0.21 (Aug 15, 2016)

  • This is a bugfix only release, fixing issues discovered since 2.0.20. An issue has been fixed in m_namedmodes which allowed non-opers to obtain the key (+k) of a channel. This release also features build system fixes, more aggressive DNS cache pruning, increased default DH bit size to 2048 when generating DH params via configure, increased compatibility during CAP negotiation with some clients and various documentation enhancements.
  • Note for Windows users: the GnuTLS library which ships as part of the InspIRCd Windows installer has been upgraded to the 3.4 branch because the 3.2 branch of GnuTLS which we used previously is no longer maintained. GnuTLS 3.4.x is not compatible with Windows XP.
  • Update m_ssl_gnutls to use libgnutls-30 for gnutls 3.4.
  • Fix incorrect std::string::operator[] usage.
  • Fix a few documentation problems.
  • m_operprefix Unset mode on unload.
  • m_ircv3 Fix AWAY being sent on join to the joining user if it has away-notify enabled and is away.
  • m_dccallow Add config option to control max entries on a list.
  • Garbage collect DNS cache more often.
  • Cap TTL of DNS cache entries.
  • Limit DNS cache size.
  • m_callerid Free old extension data before unserializing the new data.
  • m_namedmodes Only show chan key to members and opers with channels/auspex.
  • Fix exposing the opers hostname in KILL when using hidekills.
  • Fix configure overwriting the cache settings on startup.
  • Fix various issues with the nationalchars module.
  • Fix system-wide installation of the data and log directories.
  • Fix mistakenly using Clang instead of GCC on older FreeBSD versions.
  • Show a better warning when certtool/openssl are missing.
  • Log STDOUT and STDERR in the launchd script.
  • Fix checking whether kqueue is available.
  • Switch strlcpy test to use a test file too.
  • Switch test to use a test file too.
  • Add missing copyright headers to test files.
  • Fix “make -jX debug install” causing linker errors.
  • Fix compilation with Microsoft Visual C++ 14.
  • Generate a 2048-bit dhparams unless explicitly specified.
  • Fix CAP REQ to be atomic like the standard dictates.
  • Work around irc::spacesepstream not stripping extraneous spaces.
  • Fix hidden operators being shown in LUSERS.
  • Replace deprecated tmpnam() call.
  • Fixed a build warning.

New in InspIRCd 2.0.20 (Aug 15, 2016)

  • This release fixes an issue with STARTTLS handling which can potentially cause a crash. Only servers using m_ssl_gnutls with STARTTLS enabled are affected, m_ssl_openssl is unaffected. To mitigate this problem, disable STARTTLS by setting .
  • Moreover, an option was added to the m_restrictmsg module to allow sending messages to users on ulined servers, which is useful if m_restrictmsg is used with services.

New in InspIRCd 2.0.19 (Aug 15, 2016)

  • This release fixes the issues discovered since 2.0.18, containing multiple important stability and correctness related improvements, including a fix for a bug which allowed malformed DNS records to cause netsplits on a network. Triggering this issue is non-trivial and it may not occur in all circumstances, but all users are advised to upgrade. If that’s not possible, disabling DNS lookups for connecting users (nouserdns setting) mitigates the problem.
  • Rebuild clone counts on rehash.
  • Allow setting a limit of less than 64 entries for non-ban listmodes via.
  • Remove formatting from the IRC link in README.md.
  • Fix a couple of helpop issues.
  • Validate module reload callback before use in PURE_STATIC builds.
  • Don’t submit a reload worker if the module doing the reload is scheduled for unload.
  • Reject empty mode parameters in ModeParser::Process() instead of relying on ModeHandlers to do it.
  • m_httpd On module unload close all connections hooked by the module being unloaded.
  • m_check Fix non-standard format specifier %s passed to strftime() causing problems on systems not supporting it.
  • Fix User::age being incorrectly used in some places instead of signon.
  • Fix signon time of clients being off by dns_timeout seconds.
  • Fix harmless uninitialized variable usage on startup if the config is incorrect.
  • Increase penalty for some core commands.
  • Always penalize clients executing a command which fails before running the handler, even if the command has 0 penalty.
  • Fix elines not matching elined users when rechecking elined status.
  • m_hideoper Fix wrong /WHO output for hidden opers if the channel name contains ‘*’.
  • Update year in resource file for Windows.
  • Don’t bind ports after an unsuccessful rehash.
  • m_operprefix Fix force joined opers not being given the operprefix mode.
  • Fix numeric ERR_NOTREGISTERED not containing the user’s nick.
  • m_abbreviation Fix typo in numeric text.
  • threadengine_pthread Throw CoreExceptions instead of CoreException pointers.
  • m_spanningtree Fix TreeRoot UserCount being possibly wrong if loaded after startup.
  • cmd_userhost List 5 users in the reply even if the query (incorrectly) contains more than 5 nicks.
  • Remove outdated ircservices and neostats config examples.
  • m_timedbans Store Channel pointer in struct TimedBan.
  • m_timedbans On channel destruction remove all timed bans belonging to the channel from internal bookkeeping.
  • m_timedbans Extract IsBanSet() to a function.
  • m_timedbans Notice user when trying to set a ban that’s already set.
  • Reject replies to DNS PTR requests that contain invalid characters.
  • m_sasl Add missing validation for server-to-server SASL message.
  • Revert c8b344ea748d62d9f37cacd4dd785f15b186725c to fix regression.
  • cmd_userhost Fix +H hidden opers being shown as opers.
  • m_dccallow Validate tokens before use.
  • m_sasl Update description, SASL is no longer exclusive to Atheme.
  • Updated inspircd init script template to make it chkconfig compatible.
  • cmd_list: Give +s precedence to +p.
  • Add missing oper-only commands to oper class blocks.
  • Make some config strings a bit more professional and use RFC reserved TLD’s everywhere.
  • Fix modulemanager not being able to download modules (again!).
  • Fix a snotice in m_spanningtree incorrectly using an unsigned long.
  • Don’t load Data::Dumper in the configure script.
  • Fix a blank error message when trying to load a module with a path.
  • Fix modules not being versioned on Windows.
  • Fix erroneous error messages in configure.
  • Fix a minor crash when a user has no class after OnCheckReady.
  • Fix various Clang warnings.
  • Upgrade Doxyfile from 1.8.3.1 to 1.8.9.1.
  • Fix various Doxygen warnings.
  • Fix building when VERBOSE is already set in the environment.
  • Remove non-existant extban M: from docs.

New in InspIRCd 2.0.18 (Aug 15, 2016)

  • Several new config options are now available for OpenSSL making it possible to disable SSLv3 among other things. For details please see the updated OpenSSL wiki page.
  • Do not use the result of the dns cache when the query type of the result is different from the type of the query.
  • Remove IPv6 address compaction.
  • Fix watch away numerics.
  • Fix m_banredirect causing bans added for hosts being rewritten as nicks.
  • m_sqlite3 Fix cleanup of unsuccessful database connections.
  • Don’t try to set a mode in Channel::SetDefaultModes() if it needs a parameter but does not have one.
  • Reject parameters that begin with a colon in Channel::SetDefaultModes().
  • m_ssl_gnutls Re-set DH params when the gnutls_certificate_credentials_t struct is reallocated.
  • m_ssl_openssl Clear the error queue before every SSL_* call.
  • m_ssl_openssl Enable single (EC)DH use and disable SSL v2.
  • m_ssl_openssl Disable session caching and session tickets.
  • m_ssl_openssl Allow configuring raw OpenSSL context options.
  • m_nationalchars Rebuild core hashmaps when the national_case_insensitive_map changes.
  • m_nationalchars Rebuild the hash map in m_watch when the national_case_insensitive_map changes.
  • m_spanningtree Rebuild serverlist and sidlist when receiving a specific Request.
  • m_nationalchars Ask m_spanningtree to rebuild its hashmaps when the national_case_insensitive_map changes.
  • m_ssl_openssl Add user-friendly config options for setting a few OpenSSL context options.
  • m_ssl_openssl Return an error from the IOHook read and write functions if the handshake returns 0.
  • m_ssl_openssl Remove bogus errno assignment from CloseSession().
  • m_ssl_openssl Free the ssl_cert object as soon as the session is closed instead of waiting for the next VerifyCertificate() or new connection.
  • m_ssl_openssl Reset data_to_write for new sessions.
  • m_ssl_openssl Fix debug message.
  • m_ssl_gnutls Refcount GnuTLS objects, free them when they are no longer in use instead of at /rehash ssl time.
  • Add interface to SSL modules that allows other modules to obtain the raw SSL session of a socket.
  • Initialize all fields of issl_session on module load in SSL modules.
  • m_delayjoin Only send JOIN on mode change if the mode being changed is a prefix mode.
  • Update tag documentation.
  • m_ssl_gnutls Add compile time option for allowing sha256 certificate fingerprints.
  • m_ssl_openssl Add compile time option to enable ECDH.
  • m_ssl_openssl Add compile time option that allows disabling renegotiations.
  • Set the parameter of -b to the banmask actually removed.
  • Check the return value of getnameinfo() on Windows in insp_inet_ntop() and return NULL if it fails.
  • Fail AAAA DNS queries if inet_ntop() fails.
  • m_delaymsg Add option to disallow NOTICEs too.
  • Remove some dead code found by Coverity.
  • Fix listmodes when the config does not specify a wildcard size entry.
  • Fix pkg-config not being used for OpenSSL on non-FreeBSD systems.
  • Add a work around for trampling over PKG_CONFIG_PATH.
  • Fix unit-cc not loading configure cache when building files.
  • Fix hash_map.h on non-GNU C++ standard library implementations.
  • Fix various warnings when building with LLVM 3.5.
  • Avoid calling methods on NULL pointers wherever possible.
  • Replace dodgy use of const char* and memcpy with std::string.
  • Kill some logically dead code detected by Coverity.
  • Add a workaround for compiling modules with Windows line endings.
  • Fix some small bugs in the makefile template.
  • Use clang++ on FreeBSD 10 instead of g++.
  • Use gnutls_rnd instead of gcry_randomize on newer GnuTLS versions.
  • Fix an off-by-one on registration timeout handling.
  • Revert “Fix an off-by-one on registration timeout handling.”

New in InspIRCd 2.0.17 (Aug 15, 2016)

  • This is a bugfix-only release, bringing several improvements and fixes for the Windows version, better compiler support and stability and correctness related improvements.
  • An issue has been fixed that caused m_joinflood to wrongly lock down channels on netbursts in some cases.
  • Change Windows libraries to be dynamically linked.
  • Do not export callers.
  • Fix m_permchannels and m_xline_db on Windows.
  • m_hideoper: Hide hidden opers from /stats P. #874.
  • Update aliases/anope.conf.example.
  • m_watch Be more strict when checking whether the watch list of a user is full.
  • Filter out newlines from error messages on Windows.
  • Change FormatMessage() usage in DLLManager::RetrieveLastError() to match SocketEngine::LastError().
  • m_ojoin Remove pointless FindChan() call.
  • Ignore NULL callbacks in ModuleManager::Reload().
  • m_auditorium Handle NULL return from Channel::GetUser() in OnSendWhoLine().
  • Allow uppercase letters in IPv6 CIDR masks.
  • m_ssl_openssl Avoid Applink on Windows by calling PEM_read_bio_DHparams() instead of PEM_read_DHparams().
  • Compress the Windows installer with zlib to reduce AV false positives.
  • Fix undefined symbol error on module load if compiled with Clang 3.4.
  • m_spanningtree Set the bursting flag in the FJOIN handler based on whether the source of the FJOIN is bursting or not.
  • m_spanningtree Advertise the availability of m_globops in CAPAB CAPABILITIES.
  • m_cgiirc Call User::InvalidateCache() after changing host and dhost in OnCheckReady().
  • m_spanningtree Fix cleanup of connections when unloading a module that provides an IOHook.
  • m_spanningtree Forward NICK messages when they cause a collision with the new nick param rewritten to the uuid.
  • m_chghost Allow ulined servers to change the host of unregistered users (for SASL).
  • Make sure the DN strings obtained from the SSL mods are always valid.
  • m_spanningtree Always treat the remote client as the winner on nick collision if the nick is used by a (local) client that isn’t fully registered.
  • Update example configuration files, fix typos and case.
  • Update server.cpp.
  • Backport questions from master’s genssl tool.
  • Replace deprecated entry in launchd config with the modern equivalent.
  • Fix copy/paste error in m_denychans.
  • Fix various small problems with configure.
  • Correct the syntax messages of a few modules.
  • Some more helpop config updates.
  • remove unneeded whitespace from the docs/examples
  • Fix harmless loop off-by-ones found by Moonlightning.

New in InspIRCd 2.0.16 (Aug 15, 2016)

  • This is a bugfix-only release, containing several stability related and correctness improvements. An issue has also been fixed that prevented clients using NSS for SSL/TLS such as Pidgin (via libpurple), ChatZilla, Instantbird, etc. from reconnecting to a server using OpenSSL after disconnection.
  • Set a session id on our server ssl context in m_ssl_openssl. It is required for some clients which try to restore SSL sessions.
  • Fix new file descriptor debug log message in socketengine_poll to show the correct events.
  • Fix /who on opers incorrectly showing +i opers to users without the privilege to see them.
  • m_ssl_openssl Fix memory leaks on /rehash ssl, unload and in VerifyCertificate().
  • m_banredirect Fix typo in a message (transfered -> transferred).
  • socketengine_epoll Initialize CurrentSetSize (only used by m_httpd_stats).
  • socketengine_select Reset the values in the timeval struct on *nix before select().
  • Fix NULL dereference on rehash when there is a fatal error in the configuration of connect classes.
  • m_spanningtree Don’t send snotices to servers about remote servers splitting.
  • m_spanningtree Do pointer comparison before deleting one of the pointers in TreeSocket::Squit().
  • Improve detection for non-cidr masks to prevent unwanted matches.
  • cmd_names Allow opers having the channels/auspex priv to view the NAMES list of +s channels from outside.
  • Backport “Refactor Channel::UserList() to use std::string”.
  • Fix NAMES list getting truncated on servers having an excessively long server name.
  • m_operprefix Don’t set +y on the oper if hideoper is being unset due to deopering.
  • m_httpd Fix typo noticed by @SaberUK.
  • m_globalload Don’t pass a callback to ModuleManager::Reload() if reloading m_globalload.
  • m_watch Validate targ before use, noticed while rewriting m_watch for 2.2.
  • Major example configuration and helpop update.
  • Fix typos and update text in the configure script.
  • Add REG_ALL checks to treat unregistered users as nonexistent in more cases.
  • Fix snotice about disabled command usage being sent to the wrong snomask.
  • Fix typo in helpop-full that prevented it from loading and other minor helpop issues.
  • Fix IPv6 address handling in 6aaf7047297b739377e7d509cb914f32447fb281.
  • Fix various problems detected by Clang 3.4.
  • Fix Solaris not being able to find modules without pkg-config.

New in InspIRCd 2.0.15 (Aug 15, 2016)

  • This is a bugfix release addressing minor issues discovered since 2.0.14.
  • One notable change is that m_svshold can now be silent, if set in the config;
  • The issue tracker contains a list of the reported bugs which got fixed in this version.
  • Fix issue #657, fix sending FNAME with spaces.
  • Fix parsing ADDLINE with expiration or creation dates past ~2038 probably.
  • Use case insensitive comparison for server names for (auto)connects, issue #662.
  • Don’t CoreExport reference, fixes m_dnsbl on Windows.
  • m_spanningtree Fix timestamp in AWAY.
  • m_showwhois Require 2 parameters for WHOISNOTICE.
  • m_httpd Close all open http sockets on unload.
  • Fix ConvToStr(char).
  • Work around STB_GNU_UNIQUE symbols not allowing module unmap.
  • m_spanningtree Fix nick TS desync on SVSNICK.
  • Show +i users on a channel to opers having the channels/auspex priv who do /NAMES from outside of the chan.
  • Fix possible use of invalid iterator on module unload.
  • m_mlock Only deny the mlocked mode from being changed instead of denying the entire mode change if it contains a single mlocked mode.
  • m_sajoin Send global snotice when the join happens.
  • m_alias Fix out of bounds string access that happened with certain replace strings.
  • m_dccallow Increase penalty for /DCCALLOW help.
  • Use FindNickOnly() in a few more places if a local user is performing an action to prevent UID walking.
  • m_joinflood Fix remote joins affecting local joinflood state when the channel is locked.
  • m_dnsbl Don’t send snotice when the {G K Z}line already exists.
  • m_services_account Add workaround for wrong host being displayed in numeric when cgiirc users log in using SASL.
  • Update example configs/helpop.
  • m_httpd Add timeout option; remove timed out connections.
  • m_svshold Add config option to hide snotices.
  • m_joinflood Unset the mode on unload.
  • Increase the penalty for a few core commands.
  • m_httpd_stats Be more conservative when escaping data.
  • Bump API version because of 3f4d54eb031f1cd6b016dfe1f768ed86303e3856.
  • Improve support for rarely used compilers, EKOPath in this case.
  • Fix a crash when running as systemd service.
  • Fix a shadow warning created by ConfigTag::create.
  • Fix remote /MODULES bug.
  • Fix ACCEPT propagation bug when it got a nick prefixed with +.
  • Fix m_override refusing to override modes if the user holds halfop or higher in the channel.
  • Allow ranges beginning with 0 in m_channames.
  • Fix OOB error in sa2cidr().
  • Handle SASL failures during SASL_INIT (wrong mechanism, etc.).
  • Support SASL messages other than ‘C’ and ‘D’.
  • Use standard example addresses in configs.
  • Improve error reporting for .
  • Fix m_silence looking for maxentries in instead of .
  • Fix various problems with ModuleManager.
  • Fix the HELPOP database being destroyed when a rehash fails.
  • Fix some logically dead code which was found by Coverity.

New in InspIRCd 2.0.14 (Aug 15, 2016)

  • This is mostly a bugfix-only release, the only new feature is that _permchannels is now able to save list modes (see the updated example config).

New in InspIRCd 1.2.0 (Sep 21, 2009)

  • Support for channel extended bans with many different extended ban types available to use - any channel restriction (like +S for stripping colours) can also apply as an extban
  • Reworked configuration files that are easier to understand and make InspIRCd easier to configure.
  • Limits such as max nick length, max channel length and so on are configurable via the inspircd.conf rather than at compile-time.
  • Support for IRCd-level fantasy commands such as !op in m_alias.
  • Support for hybrid's +g callerid mode.
  • m_shun is now an official module
  • Ability to save all xlines (/cban, /qline, any command level ban) to a xline.db file so if you only have one server, you don't lose all your bans if the server goes down.
  • Support for pluggable regular expression modules including Glob, POSIX, TRE and PCRE.
  • Penalty ("fakelag") system to better discourage users from flooding the server.
  • Availability of privsets for opers and the ability to set what oper-only user modes and channel modes a oper class can set.
  • Support for custom casemapping in nicknames and across the network.
  • Ability to hash more than just oper passwords. You can now have hashed block passwords and restart and die passwords.
  • Support for permanent channels. When a oper sets channelmode +P on a channel, if everyone leaves, the channel stays open, keeps all its channel bans, topic and is still displayed in /list.
  • Many SSL features such as linking using a SSL fingerprint as authentication, opering with a SSL fingerprint as authentication, requiring opers to use SSL to oper up and more were added with the m_sslinfo module.
  • Support for customisable oper prefixing (like '!') in channels.
  • Ability to limit number of users allowed in a connect class with the limit="" option.
  • Support for Regex-based bans with /RLINE.
  • New module, m_connectban, that will zline a user for connect and quit flooding after a certain amount of connects/quits in a certain amount of time.
  • Support for Executable includes to the configuration file which can be used to create remote includes.
  • /invite timers. Ability to set invites that expire a la: /invite foo #bar 5m for a invite that would expire in 5 minutes.
  • Ability to log server notices to channel (m_chanlog)
  • Configurable prefixes for +qa (m_chanprotect). No longer are you required to use ~&, you can change +a's prefix to be ! or some other character if you'd like.
  • A new modulemanager was added for a Package Manager-like system for 3rd-party modules.
  • Support for CIDR range detection of flooding and throttling, meaning distributed attacks are less effective
  • User modes and Channel modes can also now be disabled in the block in the configuration file
  • Lower memory and CPU usage than any previous InspIRCd release.