About

InspIRCd is a modular Internet Relay Chat (IRC) server written in C++ for Linux, BSD, Windows and Mac OS X systems which was created from scratch to be stable, modern and lightweight.

As InspIRCd is one of the few IRC servers written from scratch, it avoids a number of design flaws and performance issues that plague other more established projects, such as UnrealIRCd, while providing the same level of feature parity.

InspIRCd is one of only a few IRC servers to provide a tunable number of features through the use of an advanced but well documented module system. By keeping core functionality to a minimum we hope to increase the stability, security and speed of InspIRCd while also making it customisable to the needs of many different users.

InspIRCd was designed primarily for use on the ChatSpike IRC Network but has been released under version 2 of the GNU General Public License so that the IRC community as a whole can benefit from our work.

If you have any questions about InspIRCd then you can contact our development team by visiting the #InspIRCd channel on ChatSpike.

To begin, take a look at our installation guide followed by our configuration guide.

News Atom Feed
v2.0.12 released!

InspIRCd v2.0.12 has been released, you can download it here.

This version brings major performance and stability improvements, upgrading is strongly recommended.

A slowdown issue has been fixed that caused problems mainly on big servers with a large number of clients. However, smaller servers will also benefit from the fix.

To reduce load time, m_ssl_gnutls is now also able to load DH parameters from a file. Specify the filename in the <gnutls> tag, e.g.: <gnutls dhfile="conf/dhparams.pem"> You can generate the primes using the following command: certtool --generate-dh-params --bits 2048 --outfile dhparams.pem

Git shortlog:

Adam (1):

  Fix m_ssl_gnutls and perhaps some other things on Windows by recognizing WSAEWOULDBLOCK

Peter Powell (1):

  Fix ModuleManager error caused by a lack of arguments.

attilamolnar (30):

  Minor update to example configs
  cmd_invite Check if the inviting user is on the channel before potentially telling him the target is already on it
  cmd_stats List opers without iterating the whole userlist
  Fix LUSERS not working in a PURE_STATIC build
  Don't attempt to unload or reload modules that are waiting to be unloaded
  Remove some uline checks that ran after an IS_LOCAL() check
  m_spanningtree Create new TreeServers for incoming connections only when they've accepted our credentials, not when they send SERVER
  Do not enable SO_LINGER on our sockets
  Close listening sockets regardless of the return value of shutdown()
  m_kicknorejoin Minor improvements
  m_kicknorejoin Limit time to 30m by default
  m_kicknorejoin Store and compare uuids instead pointers
  m_callerid Fix bookkeeping error introduced when unserializing callerid_data
  m_callerid Ignore duplicate entries when unserializing callerid_data
  m_spanningtree Fix IS_LOCAL() check in OnRehash handler
  m_callerid Allow messaging yourself while +g regardless of the ACCEPT list
  m_ident Invalidate cache after changing User::ident
  Fix uuids getting truncated in the nick hash in UserManager::AddUser() if nickmax is < 9
  Immediately stop processing whenever we detect and handle a RecvQ overrun
  Don't crop the channel name if it's too long in Channel::Channel()
  m_permchannels Workaround for alphabetical module initialization order
  Log some internal errors on DEFAULT loglevel instead of DEBUG, log detected errors in m_callerid
  m_filter Fix memory leak on unload
  m_filter, m_rline Remove rlines and filters when the regex engine changes or becomes unavailable
  m_rline Switch to OnUserRegister hook to disconnect banned users earlier
  Add config option to disable somaxconn range() check
  m_spanningtree Fix crash when connecting to a remote server that has the same name as we do and also there is a link block with our server name and their password
  m_ssl_gnutls Add ability to load DH params from file
  Move SocketEngine::IgnoreError() code into socketengine.h and add test for EWOULDBLOCK
  Release 2.0.12
v2.0.11 released!

InspIRCd v2.0.11 is now available, downloads can be found here.

This is mainly a bugfix-only release, however the Windows version does contain major improvements: a new build system by Adam, and a brand new services wrapper by ChrisTX.

This release also solves build problems on OpenBSD and Solaris.

For a list of fixed issues and improvements see the bug tracker.

A shortlog since the last release:

Adam (4):

  Fixed m_ssl_gnutls build on Windows; gnutls.h uses ssize_t which is defined in gcrypt.h
  Replace Windows build system and installer with cmake
  Link win32_memory too inspircd too
  win: Made config, modules, data, and log paths configurable.

ChrisTX (1):

  Win32: Rewrite the service wrapper

Daniel Vassdal (1):

  Added support for EXTERNAL

Peter Powell (14):

  Fix property list arguments.
  OpenBSD does not have KERN_MAXFILESPERPROC.
  Fix the poll socket engine on BSD's other than FreeBSD.
  Include <list> in base.h to prevent build errors on OpenBSD.
  Replace a GNUmake idiom with the portable equivalent.
  Fix warning: "const type qualifier on return type has no effect".
  Fix OpenSSL detection on distributions which modify the version number.
  Use GNU install on Solaris.
  Use a better server name in m_httpd.
  Use the preprocessor to detect whether hash_map is available.
  Remove unused variables detected by Clang 4.2.
  Fix multiple escape bugs in m_httpd_stats.
  Reorganise configuration files
  Update Doxyfile for the latest version of Doxygen.

Robby- (1):

  cmode_b: Correction to the maxbans conditional     It was possible to set one more ban beyond the configured limit.

ShutterQuick (1):

  Modified m_timedbans to behave more like setting mode +b manually.     It now accepts extbans. 

attilamolnar (41):

  Fix errors in socketengine_ports so it compiles on Solaris
  m_ldapoper Fix typo spotted by @lordsith49
  m_banredirect Remove unnecessary hooks, cleanup
  m_banredirect Deny the join to the redirect channel if it has a redirecting ban set that matches the user
  m_messageflood Ask to be the last to handle OnUserPreMessage/OnUserPreNotice
  m_maphide Ignore unregistered users
  m_spanningtree Fix rare desync when a KILL crosses a message that has the killed user's prefix and modifies global state
  m_chanhistory Fix durations containing 'S' being rejected
  m_ssl_gnutls Fix build with GnuTLS 1.x
  Fix exactly <limits:maxchan> long channel names being truncated
  cmd_invite Correct error message when the user has no privs to invite and no halfop prefix is available
  cmd_invite Send invite announcements to halfops and higher when <security:announceinvites> is 'dynamic' regardless of the channel being +i or not
  m_ssl_gnutls Fix null pointer dereference in case gnutls_xxx_get_name() returns NULL
  cmd_lusers Convert to a module
  cmd_lusers Refresh max local/global user counters after a user connects
  cmd_lusers Use of size() instead of counting elements
  cmd_lusers Be smart and know how many invisible users are there without iterating the userlist
  m_dnsbl Fix connecting users timeouting when a dnsbl result is in the dns cache
  Stop user initialization when the user is marked as quitting after OnSetUserIP
  Either store the Resolver in DNS::AddResolverClass() or delete it before returning
  Fix m_dnsbl not checking cgiirc users when the cgiirc address is elined
  m_connectban Switch to OnSetUserIP hook to handle cgiirc users properly, ignore e-lined users
  Remove dead code from DNS
  m_ssl_openssl Make it clear that a CA file is not mandatory
  m_connflood Ignore e-lined users
  m_permchannels Load channels from the config only at module load time and only when there are no linked servers to avoid desync
  m_spanningtree Fix incoming channel modes being lost for 0-user permanent channels on the losing side of a netmerge
  Add support for mandatory tags in included config files
  Fix infinite loop when all DNS request slots are in use
  m_timedbans Notice halfops and above when a timed ban is placed
  Initialize the FakeClient pointer in InspIRCd::InspIRCd()
  Accept -c as a command line argument (equivalent to --config)
  m_xline_db Major enhancements
  m_xline_db Fix pointless excessive stack usage in ReadDatabase()
  cmd_lusers Fix miscounting
  Fix premature overwriting of OLDTIME that resulted in time drifts never being detected
  m_ldapoper Fix memory leak
  m_ldapoper Make the module actually work
  Update doc and fix the description of m_allowinvite
  cmd_kill Send snotice to servers when both the oper and the victim are on the same server
  Release 2.0.11
v2.0.10 and v1.2.10 released!

InspIRCd v2.0.10 and v1.2.10 have been released with lots of bugfixes (including fixes for crashes) and small improvements. Upgrading is strongly recommended, the download links are here.

New features to 2.0.10:

  • m_filter can now strip colors from the text before processing (new flag: c)
  • m_ldapauth allows setting vhosts, and can filter on arbitrary LDAP attributes (see the updated config for details)
  • m_operlog now logs to snomask r if enabled in the config

Thanks to all the people for their work who contributed to this release.

A git shortlog since the last release:

Adam (5):

  Compare the result of ldap_search_ext_s to LDAP_SUCCESS....
  Add myself to the Other Contributors list
  Issue #346 - fix m_permchannels.cpp and m_xline_db.cpp saving their databases on Windows due to rename() failing if the destination file exists
  Don't send quitting users in RPL_NAMREPLY, fixes desyncing clients who join a channel after a user has quit but before they are culled
  Make the select() socketengine suck significantly less

Adrien Bustany (1):

  m_ldapauth Allow filtering on arbitrary LDAP attributes

Boleslaw Tokarski (1):

  Allows to use user->ident string instead of user->nick for NickServ.

ChrisTX (4):

  Windows: In-depth cleanup (see details)
  Replace printf(_c) with iostream
  m_ssl_gnutls: Resolve deprecation warnings properly
  Resolve two warnings clang complains about

Peter Powell (12):

  Fix for #268.
  Fix configure system loading cache file too late.
  Fix typo in m_filter.
  Temporary fix for HASHMAP_DEPRECATED on clang.
  Fix ModuleManager failing when:
  Fix m_ssl_gnutls when using non-standard include/lib paths.
  Fix m_ssl_gnutls under GCC on recent versions of GnuTLS.
  Silence OpenSSL deprecation warnings on OS X.
  Fix GnuTLS certificate generation on OS X.
  Fix the list of files to be removed by make.
  Fix invalid argument warnings on clang.
  Fix #380 on BSD make.

Robin Burchell (6):

  ldapauth: Rework required attributes code to use only one exit path.
  ldapauth: Add missing verbose logging to required attributes.
  ldapauth: Allow setting virtual hosts on identification with m_ldapauth.
  ldapauth: fix memory leak
  ldapauth: RAII returned ldap message.
  ldapauth: register both extensions

Steven Van Acker (4):

  use documented "value" attribute instead of undocumented "newhost"
  wrong order of arguments to Host()
  unhook --uid from --system in configure script
  added warning that autoconnect is now a separate tag

attilamolnar (92):

  Update modules.conf.example with m_ircv3
  Move simple user and channel mode handlers into a single file
  Fix unregistered users getting global notices, also fix certain commands working on unregistered users, spotted by @Adam-
  Remove superfluous std::string()s
  m_cgiirc, m_dnsbl Remove unnecessary includes
  Fix broken build
  m_ssl_gnutls Cast pointer difference to an unsigned int before displaying it
  Remove no-op call to IncreaseOSBuffers() from BufferedSocket::BeginConnect()
  m_chancreate Fix snonotices not being sent when remote users create channels     Fixes #318
  Remove IncreaseOSBuffers() completely
  m_ident Allow the usage of an overriden IsIdent() instead of using a hardcoded version of it     Fix long idents being accepted regardless of Limits.IdentMax
  m_filter Cleanup, remove empty and useless functions
  m_filter Use an enum for filter actions instead of a string
  m_filter Change exemptfromfilter to be a set
  m_filter Remove redundant flags field from FilterResult     Change FillFlags() to return the character it did not understand, 0 if all ok
  m_filter Don't move the filter to the beginning of the vector when a match occurs
  m_filter More cleanup and optimizations     Fix a typo
  Fix KILL accepting SIDs, get rid of potentially unsafe snprintf and strlcpy
  Make better use of User::GetFullRealHost()
  Fix /RESTART not closing file descriptors     Fixes issue #262 reported by @MistrX
  m_nickflood Make code more readable, unset +F when the module is unloaded     See 21c3232b8e0bb41727f2d65a0b2d5304587cf6be and fae560cddc389b88c9cd34afdccf9035f4d11c5b
  m_nickflood Fix a case when channels were locked regardless of elapsed time since the last nick change     Fixes #330 reported by @Shawn-Smith
  m_topiclock Prefix ModDesc with $
  m_nicklock Fix typo
  m_ircv3 Fix away-notify not sending AWAY messages when somebody joins who is away
  m_ircv3 Attach to OnRehash
  m_ojoin Fix giving +Y only instead of +Yo when <ojoin:op> is on and the user is already in the channel
  Fix warnings in configreader.cpp on FreeBSD     Fixes #348 reported by @netkurd
  m_operlog Add tosnomask config option, to log all oper actions to snomask 'r'     If enabled, the commands can be logged to channels with m_chanlog and also other +s +r opers can see them     Fixes #325 reported by @SeLEct-
  Move ServerConfig::ProcessColors() into class InspIRCd, as a helper function     Change signature to accept a file_cache reference so modules can use it easily
  m_opermotd Add support for replacing \u \b etc. with color codes     Fixes #322 reported by @MistrX
  Fix typo in doc and remove some whitespace
  m_ssl_openssl Remove unused variables
  m_ssl_gnutls, m_ssl_openssl Set error message for the socket to "Connection closed" whenever the ssl connection is closed
  m_spanningtree Refuse bogus NICK messages     If the new nick looks like an uid verify that its the correct uid
  m_spanningtree SVSNICK needs 3 parameters
  m_operprefix Remove unused hooks, move module initialization to init()
  m_operprefix Switch to OnUserPreJoin hook to give +y to joining opers, switch to OnPostOper for giving +y initially
  m_operprefix Enhance compatibility with m_hideoper using a ModeWatcher     Prioritize after m_opermodes, so we know when it sets +H on somebody
  Remove usage of the deprecated ConfigReader
  Remove calls to ListModeBase::OnCleanup (deprecated, empty function)
  Remove usage of deprecated CallCommandHandler() and IsValidModuleCommand()
  m_globalload Fix wrong error message being sent when the module given to /gunloadmodule is not found
  Change empty string assignments to .clear() or remove them entirely
  m_remove, m_services_account Don't check whether nicks are u-lined, checking the server is enough
  ServerConfig::ServerName is a std::string, don't call .c_str() on it when passing it to Channel::WriteChannelWithServ, etc.
  m_remove Cleanup
  m_securelist Update description
  m_jumpserver Fix wrong nickname in the numeric when redirecting all users immediately, cleanup
  m_customtitle Minor cleanup
  m_nokicks Remove u-line check, OnUserPreKick doesn't run in that case
  m_ssl_gnutls Dynamically detect the number of certificates in the certfile     Remove the "certcount" setting, as it's no longer needed     When finished reading the certs, resize the buffer to the actual number of certs read
  Remove TAXONOMY from opers.conf.example, it doesn't exist in 2.0     Fixes #369 reported by @DjGolia
  Simplify UserManager::AddLocalClone()/AddGlobalClone()
  m_check, m_namesx, m_timedbans Minor cleanup
  m_noctcp Make extban 'C' work as intended
  m_spanningtree Remove redundant params.size() checks
  Have FindUUID(const char*) call FindUUID(const std::string&), not the other way around
  Change empty string assignments to .clear() or remove them entirely     Part 2 of ba5c0db795824c3fc1ad48ce332d7bdc440cb77f
  cmd_rehash, m_spanningtree Fix REHASH messages duplicating at each hop     Fixes #375 reported by @JDowny
  Reorder local user initialization steps
  m_dnsbl Add usednsbl option to connect classes     Don't touch users in classes where it's off
  m_cgiirc Remove dead code, warn when a <cgihost> block has an invalid type value, misc. cleanup
  m_cgiirc De-duplicate code, recheck elines after ip/host changes     Fixes #350 reported by @MistrX
  m_cgiirc Don't resolve IPs when <performance:nouserdns> is true
  m_cgiirc Don't apply resolved host or send notifications when the user is quitting (matched a line)
  m_cgiirc Fix wrong announcement when the host in WEBIRC is too long
  Add a typedef for LocalUserList
  Make LocalUserList an std::list
  Attach to events and register services in init()
  Dynamically determine the size of the eventlist[] passed to Attach()
  Register all commands, modes and extensions using AddService()
  Register a few extensions that weren't registered
  Throw an exception when attempting to register an extension with a name that already exists     Previously this silently failed
  Fix DLLManager leak when an exception is thrown in init()     This also caused the dlopen()'d library to stay open forever
  m_remove Fix potential desync caused by committing the PART before getting acknowledgement from the target server
  Properly shut down stdin
  Fix typos in ebdaf368e137fc933e648ee88a08a4f83e796f87
  Fix broken RetrieveLastError()
  Fix thread handle leak in StartServiceThread()
  Unbreak m_geoip
  Fix expired xlines being treated as live ones in XLineManager::AddLine()
  Change a few signed counter variables to unsigned so they roll over later
  m_cban, m_rline, m_shun Don't broadcast when user is a local user
  m_svshold Fix crash when called with 2 params, only triggerable by u-lines
  Fix unsafe iteration in DelMode() when unloading m_permchannels
  Remove ServerLimits::Finalise(), it's completely wrong
  Add IS_SERVER() and REG_ALL checks to (mostly oper only) commands taking a target nickname
  m_ident Reject invalid and error replies
  Add a flag to Command that controls whether an empty last parameter is allowed or not
  m_callerid Fix memory leak in CallerIDExtInfo::free()
  Release 2.0.10

newuser1 (1):

  Fix incorrect substr usage

Changes in 1.2.10:

Adam (7):

  Fixed Windows build
  m_callerid, m_dccallow Fix crash caused by allowing unregistered users and SIDs to be on callerid/dccallow lists     (cherry picked from commit 37d7160b3a2434abcb4b39898bb86fa314fc3e5b)
  Backport of relevant changes from 02859be56d43bcece02aab350e02bc95ed1bf446.     Fix undefined behavior caused by referencing the buffer returned by     std::string::c_str() when the object is temporary.
  Place linker flags after the module source, fixes linking extra modules on some systems
  Fixed crash in m_silence from users giving invalid input
  Add myself to the Other Contributors list
  Release 1.2.10

Chin Lee (2):

  Fix issue #120 reported by @swilde
  Check whether it is empty parameter before checking its value

Robby- (2):

  Module description updates
  m_check: Include IP and gecos in host/IP-mask lookup results

Shawn Smith (1):

  Backported #239 to fix issue #229

Sir Poggles (3):

  fgets(): refer to the buffer size (no literals)
  Make sure LDLIBS appears after the other objects
  Fix set-but-not-used and var shadowing warnings

attilamolnar (37):

  m_spanningtree Use iterators in loops instead of subscript operator
  m_spanningtree Call ProtocolInterface::PushToClient when writing to remote client instead of sending PUSH commands manually
  m_spanningtree Fix various bugs related to protocol interface and ENCAP handling
  m_spanningtree Fix potential crash in SVSPART handler, don't broadcast incoming SVSJOIN/SVSPART but send it to the destination only, and don't pass it anywhere if they were talking to us
  m_spanningtree Remove no-op instructions and simplify code
  m_spanningtree Fill a parameterlist in OnAddLine/OnDelLine instead of printf'ing parameters
  m_spanningtree Remove low level stuff from SpanningTreeProtocolInterface::SendUserPrivmsg/Notice, use utility functions like the rest of the protocol interface
  m_spanningtree Kill duplicated code in OnUserMessage/Notice, put code shared with the protocol interface into the utility class
  Fix generating invalid UIDs after current_uid is 000Z99999
  Count the actual number of sent/received bytes in SocketEngine instead of the buffer size passed to the send/receive functions
  Output "Commands(HASH_MAP)" in /stats z as it's a hash_map not a vector
  Only return prefix modes from ModeParser::ModeString()
  m_cban, m_svshold Only attach to hooks we have a handler for
  m_callerid Fix module sending no metadata due to not being attached to appropiate hooks
  m_alltime Use the dedicated function of the protocol interface to send notices to remote users
  m_opermodes Get rid of the duplicated s2s message caused by SendGlobalMode
  Don't touch the terminating NULL in IncrementUID
  Add testsuite tests for UID generation
  Remove unused channelmanager
  Don't forward SVSJOIN/SVSPART at all if the destination is the same as the source
  Use socketengine functions for sending and receiving data instead of plain send() and recv() so /STATS z displays correct bandwidth usage
  Silence the MODE too if a join was silenced by a module not just the JOIN
  m_spanningtree Interpret ENCAPs also if they were targetted to our SID (retain old behavior)
  m_md5 Backport "zero the whole MD5Context not only part of it" by @gholms
  Remove sorcery with HandleInternal in NICK handler
  Fix remote users never getting their invites removed
  Deduplicate channel cleanup code, simplify User::PurgeEmptyChannels()
  Fix pending invites not being removed when a channel was deleted or had its TS lowered
  Remove pending invites from the invite list of channels when a user quits
  Fix /NICK 0 not working on registration, allow changing to uid using /NICK <uid>
  Fix last character being chopped off in motd/rules
  m_hideoper Hide hidden opers in /stats P
  m_shun Fix out of bounds vector access leading to crashes when hiding part reason for a shunned user
  Fix crash in ADDLINE handler when the command had no parameters
  m_xline_db Fix memory leak when adding a loaded xline fails
  Fix maxbans not being enforced
v2.0.9 released!

InspIRCd v2.0.9 is now available, in addition to the usual bugfixes there are some new features as well:

  • It is now possible to customize which cipher algorithms are used by the SSL modules
  • CGI IRC users can no longer evade m_dnsbl
  • The directory where various data files (pidfile, xline db) are placed is now customizable using configure
  • A new regex module based on std::regex
  • A brand new module to support server-side topic locking (better services integration)
  • m_knock can now send a numeric to the channel when someone /KNOCKs instead of a notice, like ratbox (and friends)
  • Extban 'U' that keeps unregistered users out of a channel but not registered ones (see #247 and helpop)
  • The "Welcome to network!" notice can be disabled

Upgrading is strongly recommended, tarballs can be found at the usual place.

Once again, if you think you've found a bug then please report it here. Feature requests can also be submitted at the same place.

Thanks to all the people who contributed to this release:

Adam (4):

  Fixed Windows build
  Fix bug #291 - fix rehashing bind tags not changing them between servers/clients and ssl/nonssl
  Fixed crash in m_mysql if a module is unloaded while executing     a query and there is only one query in the queue to be executed.
  Fixed issue #303 - fixed Windows build

ChrisTX (8):

  m_spanningtree: Resolve issue #250
  listensocket: Fix the two aliasing warnings     m_ssl_gnutls: Fix three warnings:     1. libgcrypt will emit a warning to stdout during runtime that it has not been properly initialized     2. Resolve a warning about invalid narrowing inside a { } block. This is not valid as of C++11.     3. Resolve a warning about a wrong format specifier being used
  configreader: Replace ConfValue here with a ConfigTagList enumeration, as it isn't guaranteed that bind or link tags are unique which causes Issue #270
  m_regex_stdlib: A regex provider for the C++11 container std::regex
  Windows: Replace the unused function hack with explicit instantiation
  Windows: Use the WinAPI for DNS server retrieval
  Replace hardcoded paths with configurable ones
  Windows: Fix broken build     Resolves a mistake made in c2f7fc047c2e5bbb899c820590ce07fee593b28f

Peter Powell (4):

  Don't hard code the branch version.
  Fix Windows build that was broken by 9b66dd6.
  Avoid global namespace pollution.
  Remove references to removed FINGERPRINT command.

Robby- (2):

  m_ssl_openssl: Show the SSL cipher used after connecting.     Previously only a fingerprint was shown when one was available, else nothing was shown at all.
  m_ssl_openssl: Allow the list of available ciphers to be customized.     This patch was contributed almost 10 months ago via IRC, by spender.

Shawn Smith (2):

  Added ExtBan U to match only Unregistered users     Enhancement requested in Issue #247
  Updated version lines to be more descriptive and remove references to other IRCds

attilamolnar (71):

  m_ssl_openssl Use the system default cipher list if no cipher list is specifed
  m_noctcp Fix /me not being allowed on +C channels     Fixes #260 reported by @JDowny
  m_ssl_gnutls Add a config option that can be used to set the value of the SSL token in ISUPPORT
  m_ssl_gnutls Move common session initialization code into a function
  m_ssl_gnutls Advertise only one ssl port by default in ISUPPORT     Fixes #261 reported by @Shawn-Smith and others
  m_ssl_gnutls Compile with -Wno-deprecated-declarations     Fixes #246 reported by @SeLEct-
  m_namesx Handle colons in channel names properly     Fixes #258 reported by @FxChiP
  Don't hardcode conf/inspircd.conf as the config file, allow the configure script to override it (configure asked for the path but the ircd used the hardcoded path regardless)     Fixes #264 reported by @ampt
  Remove negative BanCache entries only when the AddLine is successful instead of removing them before checking anything
  m_connflood Cleanup
  m_uninvite Notify remote users properly
  m_opermotd Add support for viewing opermotd on a remote server (as advertised)
  m_hostchange Store host change action as an enum value instead of a string, stop using pointers and std::map for no reason, warn about config problems
  m_hostchange Remove string copy
  m_hostchange No reason to prioritize after m_cloaking
  m_ssl_gnutls Allow setting the priorities to use on the ciphers, key exchange algorithms, compression methods and macs
  Update example configs     Document m_chanhistory settings     Note that m_censor adds usermode +G as well     Add geoip /STATS G to helpop
  m_ssl_openssl Port ISUPPORT changes from m_ssl_gnutls to fix #261
  m_namesx, m_uhnames Don't convert the command name to irc::string in OnPreCommand()
  Remove sprintf from the two implementations of ModeHandler::RemoveMode
  m_messageflood Perform at most one std::map::find() per message if we aren't kicking the user
  m_messageflood Make code more readable     Remove unnecessary checks     Use std::string::find() and ::substr() for finding the delimiter and splitting the parameter
  m_messageflood Unset +f when the module is unloaded
  m_spanningtree Handle ? wildcard as well when processing an incoming ENCAP
  m_spanningtree Specify the uuid of the remote user when sending server NOTICE/PRIVMSG to him
  m_spanningtree Add missing aposthrope to connection failed server notice
  Change "allowmismatched" to "allowmismatch" in example config     Fixes issue #279 reported by @lethality
  Remove reference to m_ziplinks from modules.conf.unreal and modules.conf.charybdis     Fixes #285 reported by @hoggeh
  Add a config option to enable/disable the welcome notice sent to clients after successful registration     Fixes #284 reported by @hoggeh
  m_knock Don't concatenate the knock reason, the command parser does it for us
  Remove unnecessary string copy in XLineManager::InvokeStats
  Remove unnecessary cleanup in XLineManager destructor
  Remove unnecessary assignment in BanCacheManager::RemoveEntries
  m_svshold Broadcast SVSHOLD commands sent by servers without ADDLINE     Fixes #293 reported by @DrRenX
  Don't allow banned users to NOTICE a channel when security:restrictbannedusers is on     Fixes #297 reported by @killerrabbit
  Set errno to EINPROGRESS on Windows when the connect() call does not complete immediately, to simulate unix behavior     This makes code that checks errno to determine whether connect() has succeeded or not work properly on Windows     Fixes #298 reported by @butaman
  m_knock Add support for sending a 710 numeric when a KNOCK succeeds, add a config option to choose between behaviors     Fixes #287 reported by @ElementalAlchemist
  New OnUserSetIP() hook
  Call OnUserSetIP() whenever the IP of a local user changes, set ident,host,dhost in LocalUser constructor
  m_dnsbl Switch to OnUserSetIP hook
  m_dnsbl Display <unknown> as the user's nick when annoucing the dnsbl result and the user has an empty nick
  m_cgiirc Register the "waiting" extension
  m_cgiirc Take actions after a successful WEBIRC in the OnCheckReady hook, stop using OnUserConnect
  m_shun Convert enabled commands to uppercase so they match correctly even if they're lowercase in the config
  m_blockamsg, m_sslinfo Don't convert the command name to irc::string in OnPreCommand()
  Instruct users to verify that std::regex is supported on their setup before using m_regex_stdlib
  Fix undefined behavior caused by referencing the returned buffer by std::string::c_str() when the object is temporary     Thanks to @ChrisTX for pointing this out     Fixes #257 reported by @helloall
  m_httpd Accept POST requests only when the value for Content-Length is greater than zero
  Fix more undefined behavior caused by referencing the returned buffer by std::string::c_str() when the object is temporary
  Make ConfigReader::GetSID() return a const reference to a string instead of a string
  m_spanningtree Return const references from several TreeServer getter functions
  m_spanningtree Only allow uuids in SVSJOIN, METADATA and OPERQUIT
  m_spanningtree Use iterators in CAPAB handler and when generating reply to spanningtree related /stats, use std::find() in TreeServer::DelChild()
  m_spanningtree Netburst: Remove unnecessary variables from DoBurst()
  m_spanningtree Netburst: Prefix SERVER and VERSION lines with SIDs instead of server names
  m_spanningtree Netburst: Remove unused parameters and variables
  m_spanningtree Remote WHOIS handler: Find target with FindNickOnly (don't accept uids, like in cmd_whois)
  m_spanningtree OPERTYPE handler: Return when finished processing instead of changing execution path with a flag
  m_spanningtree Utils: Remove unused functions
  m_spanningtree Remove empty RedoConfig()
  m_spanningtree Simplify OnMode and OnSetAway handlers
  m_spanningtree Fill a parameterlist in OnAddLine/OnDelLine
  m_services_account Fix possible recursion when checking 'U' extbans
  Check if the mask is long enough before accessing it when checking extbans
  Change User::SetClientIP() to be virtual
  Fix (d)host starting with ':' for some IPv6 clients
  Windows: Remove modules.conf.charybdis and modules.conf.unreal with the uninstaller
  m_cban, m_rline, m_shun Broadcast these commands as some services implementations send them (even though they shouldn't)
  Update .gitignore
  New module to support server-side topic locking and server-to-server SVSTOPIC command     SVSTOPIC can either set the topic, the topic setter and the topic timestamp to the given parameters or can nuke the topic entirely on a channel (like it was never set)     It is for ulines only
  Release 2.0.9
v2.0.8 released!

InspIRCd v2.0.8 is now available, mainly it's a bugfix release with almost no new features except the backported +L usermode from 2.1 by @Shawn-Smith.

Upgrading is strongly recommended.

Adam (2):

  Updated example config path in Windows NSI script
  Fixed Windows build, int32_t is already defined in stdint.h.     Add GnuTLS support for Windows.     Made NSIS script include extra DLL files if supplied and     include the conf/aliases and conf/modules example configuration files.     Added make_gnutls_cert.bat to generate GnuTLS certificates on Windows.     Fixed typo in gnutlscert.pm.

Alyx (1):

  Add CHANNELLEN to isupport

Justin Crawford (1):

  Added color codes to /rules, moved the parsing to ServerConfig and cleaned the code up a bit

Peter Powell (4):

  Update Doxyfile for the latest Doxygen.
  Explicitly deprecate some config changes.
  GnuTLS requires pkg-config as well.
  Fix Doxygen syntax errors.

Shawn Smith (4):

  Backported usermode +L from insp21. Stops forced redirection given by cmode +L
  Updated the version lines on several modules.
  Fix to show ERR_NEEDMOREPARAMS for cmd_userhost and cmd_ison
  Improved the SimpleModeHandlers

attilamolnar (39):

  Remove leftover #ifdefs and #includes from cmd_*.cpp
  m_delaymsg Remove unused code
  m_delaymsg Stop sending +d mode change to users when a remote user joins a channel with +d on it
  m_delaymsg Don't bother with remote users
  m_spanningtree Fix crash in SVSPART handler when the given channel doesn't exist
  #include <stdint.h>, add header guard to extensible.h     Fixes #102 reported by @kshade
  cmd_stats Remove unused preprocessor stuff (it has been living in stats.cpp for a while)
  m_ldapoper Say what the module actually does in the description
  m_setname, m_chgname Disallow empty GECOS, spotted by @Robby-
  m_inviteexception Read invitebypasskey setting once and store it instead of reading it at every invite check
  m_inviteexception Remove useless check
  m_globops Don't concatenate, the command parser does it for us as maxparams for the command is 1
  m_stripcolor Removing a character from a string while iterating it is slightly less complicated
  m_swhois Switch to OnPostOper hook instead of using OnPostCommand
  m_mlock Remove unnecessary iteration
  m_shun Display shun target correctly in the error message when adding a new shun and it exists
  m_lockserv Remove obsolete comments and unnecessary string clear()s
  m_lockserv Don't lock/unlock when already locked/unlocked, update messages
  m_satopic Use WriteGlobalSno instead of writing the same thing with SNO->WriteToSnoMask and PI->SendSNONotice
  m_setname, m_chgname Unify notices and annoucements
  m_spanningtree Add function to easily determine whether a server was introduced to the network, use it to determine when to send SQUIT
  cmd_commands Don't show server only commands to users
  Use std::set instead of std::map in irc::portparser
  Don't manage memory manually for the commasepstream in irc::portparser
  Fix allow_overlapped having the opposite effect in irc::portparser
  Close files opened with popen() with pclose() instead of fclose()
  m_chanlog Use std::multimap::equal_range for iteratation instead of ::find and then checking each key after it
  m_halfop, m_chanhistory Remove redundant ModeParser::DelMode() calls, the modes are deleted automatically on unload
  m_chanhistory Read the boolean config entry with getBool()
  Change debug message in Invitation::Find() to output expiration time as a string to avoid warnings
  Revert m_xline_db Get the xlines from the core, don't maintain a seperate list (reverse-merged from commit 183b182b3d6c0c32f4d10e131a55adbf54b8be01)
  Move STATS handler back to cmd_stats so it's hotpatchable again
  m_ident Close the socket and mark as done when received something instead of doing it in two places before returning
  m_ident Fix casting User pointers to LocalUser pointers blindly
  m_blockamsg Remove redundant null pointer and IS_LOCAL() check
  Use less memory when rehashing built-in hashmaps
  Use SimpleUserModeHandler/SimpleChannelModeHandler where possible
  m_services_account Simplify mode handlers
  Release 2.0.8
« Previous
Next »
Page 1 of 3