+1.0.6
+
+ * Fix for bug which can lock up ircd if someone adds a timed ban when the banlist is full
+ * Fix for issues related to bug #127
+ * Added some detail to the socket() and bind() log messages
+ * Fix to not hide invisible users non-common channels in whois (rfc doesnt state this)
+ * Made all the private methods of InspSocket protected instead
+ * Remove numeric which makes some clients (Xchat, more?) think their nick is in use. Apparently it's not needed
+ * Exclude LUSERS lines with zero counts (NO WE WONT CHANGE THE SPELLING OF connection(s)!)
+ * Prevent notice loop on NOTICE $*
+ * Allow PRIVMSG and NOTICE targets of $<servermask> to the module events (this wasnt trivial and is almost a damn feature)
+ * Fix NOTICE $* to go between servers
+ * Remove dependency on gnu make
+ * Remove hook on sigsegv, hopefully dump cores, finally.
+ * Special checking for muppet providers that make their reverse resolution resolve back to the same reverse resolution., *WHY* DO PEOPLE IN CONTROL OF THE RDNS RECORDS EVEN *ALLOW* SUCH LUNACY?!
+ * Only attempt forward lookup if the user still exists
+ * Update m_antibear to use a different hook for ADDED goodness.
+ * Fix the dns issue with 1_0_stable. The issue is easier to resolve here than in trunk
+ * Removal of all gcc2 checks (there sure was a lot of craq in here)
+ * Removed #ifdef stuff, this should be fine on both 3.3 and 3.4
+ * Don't allow SAQUIT, SANICK, SAPART and SAJOIN on ulined clients smile.gif
+ * Different way of dealing with netsplits, seems we're getting duff data in the hash somehow by trying to track these seperately
+ * Fix sometimes-leaking dns sockets when user quits between the two lookups (forward and reverse)
+ * Being as -modupdate already existed and just didnt work, this counts as a fix. Congrats epinephrine its your lucky day smile.gif
+ * Removed a bunch of SSL debug messages that popped up every time a user on SSL did anything. Now we're going to find some massive bug in m_ssl_* and have to add them all back in...
+ * Check for stdint.h
+ * Make configure detect stdint.h - this will be used for a fix later and to move opersha256 out of extra/ at last
+ * Update docs to indicate use of _ in opertpes translates to space when displayed
+ * Spacify() function translates _ in opertypes to spaces (only when displayed, however)
+ * Fix the only mangled comment thats important, the tree diagram in here wink.gif
+ * FEAR THE POWER OF VIM AND THE ALMIGHTY "%s/ /\t/g"
+ * Fix for +f not propogating +b out to other servers (including services) using new send_mode event
+ * Backport of send_mode system from trunk - for preliminary info on this search the source file for send_mode.
+ * Made Add*Line automatically apply the new line
+
+1.0.5
+
+ * Added docs for connflood
+ * Someone made silence require 1 parameter, so no way to list the silence entries tongue.gif
+ * Add m_connflood, pippijn's connect throttle module (now we are offering another paid unreal feature for nothing)
+ * Enhance m_antibear with numerics 931 and 437
+ * Add an fflush() call after logging, hopefully fixes the issue with delayed logging on low activity. Reported by Rob from Anope.
+ * Tweak to IS_LOCAL macro to exclude invalid fd's that are > MAX_DESCRIPTORS
+ * Stability fix for netsplits after failed or desynced remote kills
+ * Made CullList::Apply return something other than 0, and added myself to the list of developers on startup - Special
+ * Allow hosts in <bind> and <link> -- see FIXME for minor issue to be fixed in 1.1 (probably not major enough to fix in 1.0)
+ * Allow binding by hostname again in <link> and <bind>
+ * Remove references to hostnames in <link> tag, use ip's instead
+ * 'inspircd' target missing from OSX makefile
+ * We can re-enable special's security fix now - note this is good for boxes with one or more static ip's and still doesnt resolve the issue for smelly dynamic-ip users (well boo hoo)
+ * Added BindAddr() smart binding, ensures that outbound ports always bind to the first server ip given rather than INADDR_ANY unless of course none are available or the only ip is localhost...
+ * Temporarily revert special's security improvement until we have bind= and mask=
+ * Extra safety for user lists to not keep bad pointers hanging about
+ * Dont allow /REMOVE of a uline, dont allow /REMOVE of a user who isnt on the channel (*slaps* Om)
+ * Pointer safety for Write* functions (check the local user exists in the fd_ref_table as a safety measure before attempting to use their user pointer)
+ * Speed, craq, and double space fix for samode's notice
+ * m_services_account: Allows ircu-alike account support for services use. It owns you.
+ * Added support for OSX back, based upon particularly weighty patch from BuildSmart
+ * Fix for potential oper flood - connections on server ports from IPs that don't match any link blocks are immediately dropped
+ * Backport of ./inspircd restart fix
+ * Don't allow non-ulines to kick ulines from channels - return numeric 482 if this is attempted (you are not a chanop) with different text
+ * Fix permanent CBANs
+ * Fix to send KILL message through to a user when theyre remote killed
+ * Sync m_check with trunk
+ * Added FindMatchingLocal and FindMatchingGlobal exports
+ * Stuff in m_opermd5 Now uses stdint.h
+ * Updated m_sql to use mysql_config
+ * Added helper script for mysql rpath
+ * Tidied up SQLQuery::Sanitise
+
+1.0.4
+
+ * Random-Crash-On-Netsplit bug is finally fixed!
+ * Backport of epoll/kqueue failure checking
+ * Fixed broken kline matching when a new user connects (reported by LeaChim)
+ * Fixed crashbug with knock on non-existent channel
+ * Fixed output corruption when host is exactly 64 chars long
+ * Fixed crash when attempting "/OS RAW PUSH non-existent-nick :::nick!ident@host KICK #chan nick :any reason" (yes, REALLY.)
+ * Let ulines do NOTICE/PRIVMSG $* without oper again, so that OS GLOBAL on services packages is fixed smile.gif
+ * Add validation for channel name in m_operjoin, throws an exception aborting the module loading if the name is invalid
+ * Fixed EAGAIN missing check when writing to a socket
+ * Fixed m_sql and sqlauth etc to automatically cope with the server going down
+ * Fixes for cygwin compilation
+ * Added signal/raise in the sigsegv handler to re-raise the signal, so we get coredumps
+ * Changed instances of MAXBUF to MAXQUIT to prevent some output corruption
+
+1.0.3
+
+ * Obscure bug of the week: InspIRCd crashes when given more than 64 client ports to bind in the config file (yes, *REALLY*.)
+ * Removal of ancient TRUE/FALSE #defines (C-ish stuff)
+ * Removed lowercasing of servername on validation
+ * Case insensitive server names
+ * Commented a lot of stuff that hasnt been commented since 1.0.2
+ * Const refs (this is about the last of them in the core api)
+ * Fixed a missing reference to chanrec::modes
+ * Renamed to chanrec::modes, Renamed IsCustomModeSet to IsModeSet, GetModeParameter will now return the channel limit (as a string) for a request for mode 'l' and the channel key for a request for mode 'k'.
+ * changed binarymodes to use the custom_modes entries
+ * Adding to the buffer was clearing it first, reverting the buffering to a pre-alpha-6 kind of way of doing stuff (erk)
+ * Removal of shellscript kludge :)
+ * Work out revision id without src/svn-rev.sh!
+ * Complete removal of all stl stuff here
+ * Completely removed the deque
+ * Put some error checking back in here
+ * Temporarily removed output buffering as an experiment
+ * Changes to ./inspircd to hopefully work on freebsd as well as linux..
+ * Different way of using substr
+ * Deque doing some reallllly odd stuff
+ * deprecated covariant return type flux capacitor flopcircuit removal with reference pointer.
+ * Removed lots of claptrap debug in a well tested old section of code
+ * Start of conversion to const refs for std::strings in module api - A LOT OF STUFF WONT WORK YET
+ * Tidyup by making some thing sprintf only once rather than n times (where n is number of targets), String reference stuff for one function
+ * Only calculate the names list when a local user joins (this was being calculated for remote user joins, then thrown into the bit bucket)
+ * Doh @ null chars in an sprintf!
+ * Tweaked to use the same system as nenolod's NAMES patch for FJOIN
+ * MUCH FASTER squit! (and a TON more stable, too)
+ * Check if we're running -svnupdate on an svn version
+ * added added "./configure -svnupdate rebuild"
+ * Added ./configure -svnupdate
+ * Removed 8-space indents
+ * Commented all the new config stuff
+ * Now requires inspircd.h for ConvToStr templated function
+ * Tidyup and move ConvToStr to a publically accessible place
+ * Moved more stuff into right places
+ * Tidyup of commented out reminder code
+ * Mass tidyup of ServerConfig::Read and stuff
+ * Another const reference conversion, and remove redundant declaration of userrec* Find() from globals.h
+ * Test stuff for improved multi-tags in core
+ * Added MultiConfig for multiple-occurance config items
+ * patch <inspircd-userlist-ptr-safety.diff (Thanks nenolod)
+ * Missing a changeover
+ * Revert to string but return a reference, should be about the same speed
+ * Faster CullItem/CullList using strdup rather than copying a std::string
+ * Update docs to indicate hostname can be used in <bind> tag
+ * Support for hostnames in <bind> tag (so long as the hostname resolves to a locally bindable ip)
+ * Tidyup of config reader lowlevel reading
+ * Set bitfields on servermode
+ * Align names that are output on startup using \t htabs
+ * Moved typedefs etc into the header where they belong
+ * Tidyup of ServerConf::Read about half done (works)
+ * More const references, this is nearly it apart from the module API..
+ * Remove unused variable giving compile warning
+ * Convert more by-values to const references, optimise ConfigReader a bit
+ * Changing by-value parameters to const references
+ * Mostly formatting cleanup, rename a 'Ptr' to a more meaningful 'chan', remove some pointless nested if()s checking the same thing at each other
+ * Tidyup to pass some stuff by reference (much faster, no copy involved)
+ * Improved to avoid strlen
+ * Changed to unsigned char to get rid of warnings
+ * Improved strhashcomp with no allocations
+ * Typical. 0 and 1 to choose from, and i pick the wrong one. (back to front binary)
+ * UM_WALLOPS had value 3 which was a combination of UM_SERVERNOTICE and UM_INVISIBLE :/
+ * Added userrec::modebits - fast way of checking if user has +swi rather than an icky strchr
+ * Fix printf format to get rid of compile warning (using %d for a long, change to %ld)
+ * Correctly use iterators and pointer to ucrec
+ * Better calculation of LUSERS
+ * Changed LUSERS to show global current to not include unregistered connections
+ * Don't show channels where all users are invisible and therefore usercount is 0
+ * Add 'you are a nub' messages to /squit and /connect stubs
+ * Update to Start() credits, now refers users to /info output
+ * More cleanup, moved Om and myself to core team
+ * Calling a method of a null object due to refactoring and HasUser - fixed, (Thanks Douglas)
+ * Reformat according to coding guidelines.
+ * These modules were using deprecated Server::IsOnChannel. They arent any more smile.gif
+ * Removed deprecated Server::IsOnChannel (was a C++-ish wrapper to the C-ish has_channel, no longer needed)
+ * Removed has_channel(userrec*,chanrec*), the new preferred way of doing it is channel->HasUser(userrec), Yeah its the other way around to the old way, but somehow, seems less backwards to me (its also faster)
+ * Removed declarations of ancient and misspelled functions :/
+ * cmode was declared here too - declaration removed.
+ * cmode now returns const char* as it returns a pointer to a literal string and shouldnt be messed with
+ * Got rid of all that ugly char* cast crap (todo: change docs to reflect change)
+ * Fixed #defines to be enums (tidier), Removed UCMODE_PROTECT/UCMODE_FOUNDER
+ * Allow for fallback of older ircds without TS in BURST command
+ * Actually, 64., (256-64-128) = 64 chars printable alphabet (roughly)
+ * chanrec::custom_modes only needs 96 values not 190, (256 - 32 - 128)
+ * Stupid, retarded, idiotic bug here where any PONG after the first one gets you kicked. Never picked it up cause with Xchat's lag meter the server never actually PINGed me :"
+ * Changed m_sqlauth to allow more advanced encryption types
+ * Checks for timestamps, boot server off and abort if time delay > 10 mins (the safe value used by inspircd)
+ * Removed unneccessary temporary casts to char* when casting a userrec, Expanded on comment re. WriteOpers
+ * It's neat. It's tidy. It has no spaces, and almost matches our guidelines...
+ * More optimisations, memory saving, use the char* loop everywhere else seems to love so much, use short rather than int to save a little more ram
+ * Made this readable, removed spacing, etc.
+ * Avoid some ugly casts and save (well..system dependant..) about...3 bytes of ram! tongue.gif
+ * Speed up and deuglify the second part of CompressModes(), stop it searching for a character three times when it only needs to once, stop it allocating an ugly static char[2] it didn't need, and stop it creating a std::string it didn't need either
+ * Server::DumpText - Dump a *stringstream* to a user with a std::string prefix, splitting at 512 boundaries., Much more useful than cannibalizing a specialized function
+ * For the record, it's 17 lines - not 5.
+ * Made split_chlist available for external use from commands.h
+ * What MUPPET made stdin, stdout and stderr FILE* pointers rather than ints?!
+ * close stdin, stderr and stdout rather than freopen to /dev/null
+ * Took out space in version identifier that might break stuff
+ * Safety checking (a really really clever trick btw) in CullList, to make sure that the user we're removing IS the user that was marked for deletion X seconds ago, even if the user has since quit, to be replaced by another unfortunate wretch who was given the same pointer address (eeep)
+ * Buffer flush time now under 0.5 secs
+ * Flush user buffers more often (every 30 iterations), Run whowas hash maintainance every hour
+ * Tweaks to socket engine, faster buffer flush and hopefully more stable
+ * true and false transposed in new code
+ * Check for write errors in inspsocket (this is probably causing excessive cpu use when we have a large buffer to flush but a write error has occured (which we missed))
+ * Fixed timedbans (new mode parser didnt like being passed const char* elements as it likes to change them inplace)
+ * Improved userlist to avoid strlen
+ * Tidying, strlen, strcasecmp where not needed.
+ * TOPIC optimizations, fixes to mode setting with new custom_modes system
+ * Checking of user/nick/pass without strncmp! (compare object pointers in the command map!)
+ * Fixed to work properly with new refactoring
+ * Faster custom mode set/unset
+ * Added a 'max depth' to stop recursive issue
+ * Fixed issue with parameterless module modes
+ * Optimisation of optimisation tongue.gif ty w00tie
+ * Different way of displaying squit server group
+ * More work on /check.. now gives basic information on a user, no channel list yet - and port number doesn't display.
+ * No need to be inline in the include
+ * Fixed wtf-ery of Modules::SendTo - did i write this before WriteServ???
+ * Initial revision of /check - doesn't do anything yet
+ * Improved ProcessParameters (removed strlen)
+ * Changed return to break in mainloop for better efficiency
+ * Tidied (and COMMENTED) CommandHandler::LoopCall() -- commit so that i can test on brainbox
+ * Tidied GetMaxBans to leave the ConfigReader subsystem alone
+ * Removed unneccessary backticks from a copy/paste
+ * Added the beginnings of some function documentation
+ * Sorted out some silly indenting left over from an if() that died a death years ago
+ * I dont think there are any more non-essential strlcpy's left in here.
+ * Removed another strlcpy -- a lot of copying stuff that doesnt need to be copied if we're careful., Obviously in the past, we werent so careful and mucked up/polluted params as we dealt with them! :p
+ * Mode-code rewrite. Might act weird, needs proper testing (that is what svn builds are for, after all)
+ * Tidied up ProcessLine, instead of a ton of strlens use a tiny bit of char* voodoo
+ * Fixed to not show real server name if you have hiding of servernames in WHOIS
+ * Put it in alphabetical order and hope nobody noticed
+ * Add m_blockcaps to example config
+ * Add block caps module, I'm kinda between the extremes of 'Brain' and 'normal' here. Aka it compiles but I have nfi if it works tongue.gif
+ * Hopefully speed this up, it was strlcpy()ing every line even when +c wasnt set, and copying wasn't neccessary anyway
+ * Make install depends on make as requested by ol (also means i can build and install insp in one step again if i want)
+ * Colon before the reasons in STATS, so that it doesnt munge up the reason in certain clients
+ * Sped up introduction of nicks using vector::resize() rather than the craq++ loop (wtf was i thinking doing it that way?), Removed 'client connecting notices dont show locally during burst' -- this is silly as it doesnt work remotely and is pretty much pointless
+ * Fix for bug first noticed by zephyrus where you could send -j+ntr to a channel which has +ntrj, and see the mode change "-j+" - now strips off any trailing + or - chars
+ * More verbose when setting g/z/k/q/e lines from other servers. With the new system which prevents lag during bursts this won't flood opers quite so much to the point where they quit (i hope) :p
+ * Unknown command error now tells the opposite server WHICH command is bad so that people dont have to go sleuthing to find it
+ * Tidyup of m_hostchange to not use configreader on each connection!
+ * Tidied up m_override to avoid use of configreader during free-running
+ * Changed m_censor to avoid reading config several times for each pm
+ * Fix for MODE #chan +o- nick or +o-- nick, etc
+ * Fix to prevent recursive call to DoBackgroundTimer
+ * Added IS_SINGLE, see comment in include/inspircd.h
+ * Added a sleep on startup to stop it mucking up the display
+ * Changed output on startup
+ * Strdup's to stop corruption of oper classes
+ * speed up HasPermission by factor of hundreds, avoid using EnumConf and ConfValue outside of rehash *AT ALL*
+ * is_uline was an inefficient piece of crap - fixed.
+ * More efficient AddClient, initializes two identical buffers at once ;)
+ * Added stuff to log() to make it recalculate the time using asctime() less often
+ * Made host fields more correct 64 in length with 63 copies
+ * Improvements to TreeSocket::Split
+ * Made extensive use of charlcat to cut down on strlcat usage
+ * Added charlcat which appends a single char to a char* string (range checked)
+ * Changed definition of CallHandler and CallCommandHandler for the ability to return false on bad command., This allows us to terminate server links that send commands we dont know (e.g. admin loads module A after linking, we dont have module A, when it sends module A's command, abort)
+ * Extra checks that should prevent desyncs if you stuff up your type/class tags between servers
+ * Make ./inspircd ignore SIGPIPE and start running without the user having to type 'run' / 'r'
+ * Changed to require seperate 'make install' step
+
+1.0.2
+
+ * Clarify an error message on KICK
+ * Allow removal of mode with new check
+ * Dont allow +J 0 or +J < 0
+ * Removed regexp check on epoll
+ * Fix for missing 'end of list' numeric
+ * Changed encryption to work with yield system
+ * Added checking for +sp channels to safelist that someone left out *nonchalant whistle*
+ * Documented cloak keys and prefix
+ * Changed to throw exception when theres no cloak key
+ * Changed loglevel of cloak key errors to SPARSE
+ * Added configurable cloakkey and cloakprefix
+ * Extra error output when fails to bind a port
+ * When quitting large amounts of users, use InspIRCd::DoOneIteration to prevent too much lag
+ * Add comment stressing the importance of certain elements of this file
+ * Changed some stuff to give a more accurate revision id
+ * With small sendq's, this can still exceed the sendq, so now we've reduced the amount it fills
+ * Extra output during sync to know if we're receving the other end's netburst or not
+ * Improved speed (not using strlen, take loop count)
+ * Made this safer, dont try and yield back when sending channel list or user list (our iterator may become invalid while we're using it!)
+ * Yields back to user processing to give users a chance to issue commands during heavy server congestion
+ * Moved the contents of the mainloop into a function called InspIRCd::DoOneIteration()., We can then use this to 'yield' if incoming server text is taking too long to process
+ * Moved to irc::string for commands in server-server so that whiney newbs can get os raw to work and fuck their networks over
+ * Whoops, overriding EVERY command!
+ * Added m_operwho, allows opers to list everyone
+ * Fixed Server* Srv stuff in these too, although by default these arent available to win32 builds
+ * How did this random stray '1' get in here before the brace?
+ * Server* Srv marked static or moved to private member of module class in all modules, paves way for removal of static-build-munging-regexp that breaks +eI
+ * Fix for segfault if name of file left off commandline
+ * Added ability to provide -logfile parameter on commandline
+ * Lowercase the servername automatically
+ * Auto-lowercase all server names read in from <link> tags so that people cant get the case of servernames confused (passwords are STILL case sensitive)
+ * Added m_safelist (yes om, i kept alpha order)
+ * Now sends out warning when oper on a remote server tries to execute a command that the local class tags say they shouldnt be able to access. Helps detect desyncs caused by muppeted configs, or just plain nefarious goings on.
+ * One character brain-wave fix (had idea at work)
+ * Nothing to see here, nothing, at all.
+ * Wrong address being bound by InspSocket when binding to a specific ip
+ * Decide that it wasn't quite appropriate :(
+ * Add entirely pointful smiley to comment
+ * Look-behind for missed timers up to 2 minutes (if your ircd has hung for 2 minutes, or your clock drift is > 2 mins, you have bigger fish to fry, like dead network or TS split)
+ * Removed bit of logging that said the timer was ticking -- we know it works now :)
+ * listusers has to be global now (ugh)
+ * Moved timer stuff from OnBackgroundTimer to InspTimer derivative
+ * Use ::AddTimer not AddTimer, or it calls this->AddTimer and loops
+ * Now copies libIRCDtimer.so
+ * Added timers.cpp/.h to makefile generation
+ * First revision of new timer code, not in the makefile yet (so it wont build till im done)
+ * Force burst to end if a remote server pings us, or answers a pong, if this is the case it just "forgot" to send an ENDBURST!
+ * Improved calculation to account for server name on start of numeric, plus spacing
+ * Perm elines (<exception> tag) not being applied - fixed
+ * SAFELIST 005 token is now part of m_safelist not the core 005
+ * Cleanups on module unload or user /QUIT
+ * Added m_safelist. This was originally w00t's code, but i bastardized it (just a little), WARNING: It's not finished yet and shouldnt be used, it might crash at this point in time if a user /quit's while listing., YOU HAVE BEEN WARNED! WITH A SPORK!
+ * Changed triggering time of OnBackgroundTimer to 5 secs (from 8)
+ * Added m_safelist helper functions GetChannelCount and GetChannelIndex
+ * Oh yae, Oh Yae, back in old days of yore, Ye Brain doth set the nick buffer as NICKLEN+1 to ease understanding by newbs who didnt know what thou null terminator was., And yae, at a date later hence, Ye Brain then setteth ye buffer back to NICKLEN again., Alas, neither Ye Brain nor Ye trusty followers hath then setteth back the rest of the core to NICKLEN-1, and verily, chaos ensued. :p
+ * Added which word is blocked to the numeric
+ * Added 'is a registered nick' to whois
+ * Made error more understandable on 'file not found'
+ * MAXMODES wasn't being enforced
+ * Enforce 64 char dns limits
+ * Added second form of find() taking const char*, which is faster in the core where char* is used more often
+ * Improved speed of Find() by passing reference to std::string instead of std::string itself
+ * It didn't, there was more strlcpy
+ * Fix to stop new code treating all KICK messages as server KICKs
+ * Fix for hide-ulines in /links
+ * Configure no longer allows gcc 2.x compilers AT ALL >:)
+ * AIEEE fucking overloaded operators
+ * Added + and == operators between std::string and irc::string., Its too late at night to wrestle with the = operator, this can wait for another time.
+ * Removed the 'one of' check for <dns>
+ * <dns:server> is now optional
+ * Throws exception on failed GetIOHook()
+ * Added check for if the servername contains a '.', if not append one on rehash, Added retrieval of nameserver from /etc/resolv.conf if <dns:server> is not defined.
+
+1.0.1
+
+ * Server::AddExtendedMode and Server::AddCommand will now throw exceptions when adding a bad mode or already existing command. If the module constructor does not handle this exception, this will abort the module's constructor, forbidding loading of modules which are unable to function (smart eh)
+ * Added exception handling for module loading
+ * Fixed case sensitivity issue in m_censor
+ * Don't allow invalid channel names in /mode #chan +L #chan
+ * Added MAXPARA=32 to 005 (no other ircd has this, or allows a larger MAXPARA but its worth advertising this feature in case a client chooses to support it in the future)
+ * Update mode lists, fix mode lists, and alphabeticalise mode lists (:/!)
+ * Experimental speed improvement to sending encrypted lines
+ * Extra logging to log bad opertypes coming in from remotes
+ * Checking to prevent dodgy opertypes (opertypes must follow the same syntax as nicks now)
+ * Extra checking and exception handling in InspSocket::Write
+ * Fix for bug reported by TDC
+ * Moved custom_mode_params to per-channel
+ * Sped up disabled commands check
+ * Removed a whole lot of strchr's looking for mode +o where we can do if *user->oper
+ * All the messing with these files someone did and they didnt notice we listed gcc2 as supported :p
+ * - More formatting changes
+ * - Made some notes about potentially restructuring things a bit
+ * - Useless loop removed, - Intenting cleaned up, - command_parse stuff (really) needs proper going over and at least commenting what stuff does.
+ * - Fixed some HORRIBLE indenting. Tabs, please., - Fixed channel keys being case insensetive., - Added a 'XXX' fixme.
+ * - Moved example configuration from docs/ to conf/.. Why did we have two example confs?
+ * - Docs update, b4 was a LONG time ago.
+ * - Minor documentation updates here, someone really needs to sit down and rework it a bit ;p
+ * - Manually bump revision ID, apparantly it's stopped doing it itself...
+ * - Oops, missed two includes
+ * - Check for +K before bothing to assemble knock message
+ * - Nazi stylistic changes.
+ * - Incorrect
+ * - Anal tidy of some comments
+ * - Let's stop using that nasty strchr() in a loop
+ * - Made note of some potential improvements in m_part. Brain, please review when you get a chance.
+ * - And in SAPART
+ * - Use IsValidChannelName() in SAJOIn
+ * Fix to compare against signed/unsigned warning
+ * Force initialization of fd to -1
+ * Error checking for out of range buffer reads (this shouldnt happen, read is being passed a max buffer size of 65536 but returning 6 million?! We check for it now.)
+ * Tidied up formatting of %f's
+ * Added RPL_MAPTOTL at request of Whitewolf
+ * Guess origin where server is lazy with PING/PONG and doesnt specify one, prepend the command's source :p
+ * remote ping added
+ * Remove code duplication by using core function. Remove global Server*..one step on the road to losing the bloody regexp :<
+ * s/No such channel/Invalid channel name
+ * Make use of IsValidChannelName() - as a side note, we perhaps shouldn't be returning 403 in CBAN...
+ * m_join: Use IsValidChannelName()
+ * Added bool IsValidChannelName(const char *) - it doesn't seem to blow things up...
+ * Add m_blockamsg to example config
+ * Initial commit of the /amsg blocker module
+ * Correct copying of confs (may generate some nonfatal errors)
+ * Renamed inspire.* inspircd.*, Removed obsolete server_tokens.txt
+ * Added anti-n00b warning to stop direct inclusion of the file with <include>
+ * Instantly apply lines when not synching
+ * Tweak to allow @%+ to all exist on a user at once during burst
+ * Extra checks to not set the ssl marker twice on re-handshake (nonfatal but wasteful)
+ * Check for >8 params in NICK
+ * Altered SVSNICK to echo back NICK message, grrrr, sodding ircservices-based services packages.
+ * Fixed 'eggy complains when not included' bug that causes segfault in brain
+ * Newline stripping for asctime()
+ * Added remote TIME
+ * Added PUSH command
+ * Added anti-retard check to prevent retarded flood settings
+ * Added a sanity check that was left out, prevents crash on invalid fd (e.g. via excess flood on oper or connect)
+ * Typo in some code that should usually be #ifdef'ed out anyway, but we still want this to work sometimes, maybe.
+ * Fix crashbug, copying MAXLEN into a MAXGECOS+1 field != cunning
+ * Added comment about the craqness of ServerConfig::Read()
+ * Checks to not propogate invalid or already-existing Xlines
+ * Increased how often socket timeout checks occur which will mean flushing write buffers more often
+ * Updated block numeric to read COLOUR >:)
+ * Finally FIXED ALL THE CRAQPIPE INDENTING (and lack of), *MESS THIS UP SO BAD AGAIN, AND I MOLEST YOU WITH A SPORK*
+ * Fixed cosmetic 'need to be halfop to change modes' when kicking
+ * Match bans against user::ip4 in add_channel
+ * Potential fix for CS Testnet bug, thanks to Special for helping with this one.
+ * Properly count remote opers in /LUSERS
+ * 005 update, removed duplicate WALLCHOPS reported by ThaPrince, added VBANLIST
+ * Avoiding assignment of std::strings unless neccessary to speed up bursts
+ * Faster ADDLINE code
+ * Slightly more efficient write buffers
+ * Tidying of snotices (adding '***' to start of WriteOpers texts)
+ * Fixed WHOIS to respect +i channels, optimized in case where source == target by hortcircuiting operators
+ * Added max and current local/global usercounts to /lusers same way as most other ircds
+ * Now errors when sent SERVER on a non-server port
+ * Modified ./configure to symlink ssl modules instead of cp'ing them, this makes updating easier in the future
+ * Force initialize host to "" just in case it isnt (it should be however, as its constructor is called, but we know what ass-u-me did)
+ * Allow remote bans from servers to be represented as servers in the banlist
+ * Removed some debug notices that were mistakenly in the DEFAULT loglevel
+ * Fixed /LINKS to show flat even in tricky mIRC.
+ * Make ulines /swhois silently
+ * Documented <options:tempdir>
+ * Added support for changing tempdir via <options:tempdir>
+ * Yeah, this thing only uses 1 param, but requires 2? :p
+ * Made devoice not oper-only (Congrats to the original coder!)
+ * Fixed missing speech marks and stuff (vim and syntax highlight for the win)
+ * Added more up to date helpop.conf from Custodis <tballen@bhcnetworks.com>
+ * Fixed two unneccessary strlcpy's in the wildcard matching that just were there to lowercase it... we can do this inplace
+ * Fix to allow empty but defined away message (yes, really)
+ * Bugfix to cmd_modules, we've added some event types since it was written, could potentially overflow if issued when new ones used, Made cmd_away compile again
+ * Propogation of away messages across network (we dont bounce the numeric back for every privmsg like other ircds, we burst them and keep them synched by broadcasting AWAY)
+ * Fixes for (unlikely and theoretical) desync in TOPIC, Fix to not bother trying to write away response if user is not local
+ * Fix to prevent use of aliases before reigstering connection
+ * Add .c_str()'s to m_sqloper in call to OneOfMatches(), and change prototype of OneOfMatches to take const char* instead of char*. Either that or case all the .c_str()'s to lose the const :"
+ * Bug in code for syncing cbans
+ * Commented on new return value of OnUserPreKick for explicitly allowing kicks
+ * Re-organized order of cmd_kick stuff (OnUserPreKick) to make override kicks work nicer
+ * First-revision UNINVITE
+ * Allow remote users to INVITE regardless of channel membership or op status, to prevent desync possibility
+ * Make the alternative hosts be in alphabetical order sad.gif
+ * Update example <oper> to demonstrate multiple hostnames
+ * Allow space seperated hostlist in <oper:host> e.g. <oper host="foo@bar baz@qux blarp@flerble" name="blah">
+ * Added "char status" parameter to OnUserPreNotice and OnUserPreMessage for NOTICE @#chan etc., Tidied up craq++ in modules (copy and pasting OnUserPreNotice into OnUserPreMessage?! why not just call one from the other!)
+ * Stop trying to set an empty swhois if the <type> doesn't specify one
+ * When rehashing by sighup and adding/removing modules, don't attempt to write a user because there isnt one :p
+ * Added gnutls_rpath.pl. This works out the lib dir and does:, -Wl,--rpath -Wl,/lib/dir and outputs it, the $LinkerFlags of gnutls, ssl module use it in backticks during link, so you dont get missing lib error
+ * Only send 320 numeric if the SSL user is on our port
+ * Add support for configured swhois lines
+ * Add operators >> and << for irc::string and i/ostreams. m_cban utilises this
+ * Optimized: strchr(x->modes,'o') has the same effect as (*x->oper) but *x->oper is potentially hundreds of times faster :p
+ * Learnt how to speel Optimization, Removed redundant referance to value not in use.., Fixed 'First Build' Optimization flag not being set.
+ * Fixed Brain's bug, showing 'Using SSL Module' regardless of if you say yes or no.
+ * I R SECURE CONNECTION! (fix)
+ * Check for time going BACKWARDS (yes. really.)
+ * Added "FNC WALLVOICES WALLCHOPS" to 005 numeric,, WALLVOICES and WALLCHOPS are actually specified by STATUSMSG but this is, specified here to make it work with more clients. FNC = forced nick changes possible
+ * Added '%' to STATUSMSG
+ * Bugfix #69
+ * Tidyup op/halfop/voice list on part/quit
+ * Tweak module help for m_conn_waitpong
+ * Stop uncloaked hosts showing to non-opers
+ * Altered format of OnUserMessage
+ * Allow for NOTICE and PRIVMSG from outside chan with a remote client
+ * Added extra 'looking up your hostname lollerskates' output :p
+ * Why are we using the users hostname to connect back to port 113? we can use ip here, and save ourselves a lookup
+ * Added remote routing notices for RCONNECT
+ * Added RCONNECT
+ * Added <options:hideulines>
+ * Added <options:flatlinks>
+ * Added ircu-like hidewhois feature that allows hiding of server name in whois with arbitary string like '*.network.net'
+ * Added m_globalload.so to module list
+ * Added hidesplits to example conf
+ * <options:hidesplits> ircu-style quit munging for netsplits
+ * Removed steeeenking dll message, attempted to hide 'target is same' with launcher install
+ * Added numeric 396 ("x :is now your hidden host") from hybrid/ircu
+ * Removed bool return of DoBackgroundUserStuff()
+ * Extra comments re. nonblocking DNS and use of IP addresses in constructor to speed up connect time
+ * When socket fails to construct, we now check the GetState() of the socket object to detect this condition., If we dont, we can end up leaking fd's and RAM on failure. We dont use exceptions here as these operations can, occur very often.
+ * More nonblocking dns stuffs
+ * Fixes to set correct resolver address before looking up host
+ * Nonblocking dns for InspSocket class (used by server to server)
+ * Broadcast SPYLIST and SPYNAMES usage to all opers
+ * Document m_spy here (yes Om, i kept alphabetical order!)
+ * Users are gonna erupt in flamewars over this... and google will love us >:)
+ * Major update, reordering and adding missing modules
+ * Tidied up a kill message
+ * Clean up ghosts on nick collision
+ * *TEST* nick collision code for NICK change in server link
+ * Only access-check local user kicks
+ * Should always allow remote modechanges (FJOIN not effected as its not sent as a MODE)
+ * Allow async dns to compile -- but its still experimental and should not be used on a production network!
+ * Excempt ops kicking themselves from +J
+