The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download | Blog | Stats
Personal tools

ChangeLog/1.2 Alpha

From the makers of InspIRCd.

Jump to: navigation, search
1.2.0a4

   *  1.2.0a4+Angus (Yummeh!)
   * Add module that allows hiding of MAP and LINKS as per ircu, e.g. ":server.name NOTICE nick :The /MAP command has been disabled, visit: url", URL is configurable in the config file, blocks LINKS and MAP for non-opers.
   * More useful error reporting that give closer line numbers, so long as you can read them
   * Config reader strictness: check for escape sequences (\" etc) outside of a quoted section and deny it
   * Make checks more strict
   * Bitch when we find stray characters outside of a tag, this will track down a lot of config errors that arent noticed till the end of the file at present
   * Allow 0-9 in tag/key names, and special check for > and \n
   * Check for invalid characters in keys, will catch config errors earlier and closer to the actual error line. Valid values in key names are [A-Za-z_]
   * Fix #551
   * Remove this debug line, eliminating its pointless warning
   * Fix bug from std::string porting, thanks ThunderHacker
   * Add patch for bug #549, conf file update from jackmcbarn
   * Abort on matchlist.length() > 450
   * If we have > 10 matches to a command, abort and dont try and show the list. This stops "/." listing a massive amount of commands too long to show, and keeps things within common sense.
   * On ambiguous abbreviation, list all possibilities and eat the command (numeric 420, unused and as close as i could get it to numeric 421, unknown command)
   * m_abbreviation completed.
   * Allow changing of command string and parameter vector within OnPreCommand, allowing for m_abbreviation and other fancy stuff., Add basic skeleton module for it
   * Fix for bug #548 reported by jackmcbarn, away message not unsetting
   * Only prepare epoll for 25% of maxfds initially; it will grow beyond that as necessary, but it's pretty unusual to be loading your server that much. Should save some kernel memory, too
   * Remove limits on assigning of oper types. Theres no practical reason to restrict these to nicklen length
   * Improve debug output on a few key methods of epoll socketengine, a must when coding for the socket engine.
   * Add ProtocolInterface::Introduce() to prevent confusion over event ordering, and allow for more flexible protocol use
   * Forward port r9825: Fix bug found by the atheme migration testing: +V should never affect INVITE from a remote issuer
   * and another rev bites the dust..thanks dz
   * fix. thanks jackmcbarn and special.
   * make the +J msg a little more coherent
   * removed duplicate quotes. Thanks jackmcbarn
   * If Chuck Norris and InspIRCd met in a dark alley, Chuck Norris would get his first black eye. Ever., and lots more
   * Apply patch to fix ipv6 builds, contributed by danieldg, thanks :-)
   * Finally get the headers right on this module.
   * revert this 1 revision back, since it fell victim to collateral damage of the latest refactor spree.
   * Eliminate string joining craq
   * Dont increment maxmodes at finalisation, it isnt used in the same way
   * All the limits were one less than specified in the config, so now we postincrement them all in configreader, this means we can just use them without all that +1 hackery in the code., This DOES mean that from a protocol perspective the figures look a little odd, but they always did.
   * Add parsing of <limits> tag and finish documenting it, make all the values match sensibly by starting them all 'max' rather than some starting with it, some ending with it...
   * Example conf now with <limits> tag
   * Give modestacker a serverinstance
   * First phase of conversion to dynamic limits on all the lengths, configured via the <limits> tag, (the tag isnt there yet, these all just run on defaults in the class constructor)
   * Kick the client in the balls if they try STARTTLS after client registration
   * Fix memory leak if we send STARTTLS twice, thanks special and psychon
   * NEVER use the two-param assign unless you want your string padding to len bytes with \0!
   * Don't copy vars (faster) and also avoid a crash (non-const -> const)
   * Fix uuid generation to not generate ten character uuids, thanks nenolod
   * Fix user->host not being assigned correctly for new connections
   * Why are we using .compare() when we can use == ?
   * Collision tweaks
   * Implement Bug #533, Oper type-specific autojoins for m_operjoin via <type:autojoin>
   * Clean this up a bit, and log about ignoring link blocks due to missing attributes
   * update to tell them to try a LAN or a WAN IP, depending on how the box is setup, it matters.
   * Remove some of this, this isn't (strictly speaking) an issue now
   * Forward port r9782: show IP (not unknown) for unauthed connections
   * A few minor fixes, some copy constructor stuff, misnamed channelmanager constructor, add files to vc8 project, configreader tidyups
   * Add note to check other server on this message
   * char -> std::string conversion
   * Debug on out of range FD.
   * Listening bufferedsockets dont have an OnRawSocketClose event as theyre never 'opened'
   * Fix to give the proper target ip on connect, cookies to w00t and Jason
   * More correctly state the lookup arrays as unsigned char, not char
   * Convert channel::name to std::string, this was a beastie!
   * Convert channel banlist members to std::string
   * Convert connection::host
   * Fix logic being backwards (so every user was always away and an oper, except when they weren't an oper, and weren't away ...)
   * Fix crash i introduced into m_ident with a sloppy ->insert()
   * Fix users being unable to register (aquanight, what the fuck were you smoking? )
   * Some logging/preventative code for Jason's issue.. it shouldn't crash now (fingers crossed) if it tries to do something naughty, but it will log about it instead. I know this is buttfucked code, but it's highly temporary.
   * Don't background process quitting users (there's no point), half fixes Jason's issue..
   * Make User:: nick/ident/dhost/fullname and some other things std::string instead of char*/char[] (MODULES DO NOT COMPILE)
   * Fix some unneeded .c_str() usage in m_spanningtree
   * Fix for Jason's bug.. this needs more thought, though. I'll probably whip up something tonight.
   * check for GetDisabled should be before the match() commands, because its not worth wasting cpu time on match if its disabled anyway
   * Show count of total num of classes, for Jason
   * Fix two occurances of match() on a const char* here
   * I dont know who said we keep going when we get a match, because thats just silly. we stop at the first connect block that matches all critera of the connection.
   * Remove .c_str()'s in match() calls that are no longer needed as match() natively takes std::strings
   * Fix bug found in <connect> code, <connect:limit> was checked after finding a class that matched, not during - meaning that if they were locked out by <connect:limit>, they were given no second chance to be matched by a future <connect> (and that <connect> deny would not apply to them if necessary etc). Also tidy this up a *lot*, remove some of the nesting by (ab)using looping. This is a lot more understandable for me now.
   * Log all snomasks to "snomask" log type, level DEFAULT. This means your log gets all the snomasks in it, but you can filter them out with "-snomask". This allows a user to redirect them to a channel with m_chanlog
1.2.0a3

   *  Make FD_SETSIZE larger. We wont ever have this many users via select() on windows, this is to test out some stuff mainly.
   * Check for windows drive letters on the start of paths and treat them the same as paths that start with /, this makes insp more friendly for windows filesystems
   * Fix the format of +p channels in /list (both in core /list and in m_safelist), thanks jrm
   * Microsoft, in their "infinite wisdom" decide to have no sensible naming convention at all for windows api structs so have taken the struct name 'ACL' in winnt.h. Therefore we have to rename ours to HTTPACL
   * add HostServ as IRCservices has it as an option and add the names inside anope.conf so they know its being specified..
   * add "Bug tracker" to the default motd everything else is there, why not that
   * httpd connection close fixes (these need to be backported to 1.1 at some point?) and acl tweaks to make http auth work
   * Add support for blacklists and whitelists, just http password auth to go (the most complex part)
   * Skeleton ACL module, and hooks for it. This will provide ip restrictions, passwording etc for httpd modules
   * Patch ReadFile() not to bork on one line files, and ensure it works ok with win32 (it does)
   * Fix wildcard matching in win32, seems that incrementing an iterator dereferences it internally on win32, so iter++ when iter == container.end() drops an assert. YES, an assert. No fucking throw, making it a fucking pain to debug (no bt on assert, program exits)
   * Show keys to opers correctly
   * Dont obscure channel keys in the stats
   * Show +sp channels to opers correctly
   * update svn ignore to create less noise on conflicts and failed patching.
   * Improve this not to use pointer maths directly, use an iterator
   * Fix for bug #532 reported by dantheman, thanks
   * Add a 'sanitize' function to sanitize special characters in the output, <, > and & etc
   * Add ident, port, ip to user info in <user> tag
   * Give tons more information in the xml feed, should be enough to construct just about any stat i can think of right now. let me know if you need more info in the feed
   * Fix for last nights blockcaps tweak to make it a little more accurate
   * Fix LoadConf always reading 1 extra byte of random garbage.
   * Add *.diff and *.patch to ignores
   * Same fixes to make this module scale much better. Dont connect on each query, keep open and send a byte like MySQL module.
   * Fixes to make this module scale much better. Dont connect on each query, keep open and send a byte like MySQL module. Now with cleanup of bufferedsocket thanks to w00t <3
   * Don't stringjoin here, we don't for any other commands (cban, *line) so I'd like to stay consistant. This also won't confuse any third party apps. This is my fault, I hated colons when I first started working on insp. ;p
   * Don't route after nuking the user from orbit, there's no point (minor)
   * Add test suites for edge cases and in the process, spot a crash in the new code and fix it (empty mask in the match() functions makes it bomb)
   * Convert CIDR matching and wildcard matching to operate on std::strings
   * Fix crash if OnCheckBan is called and there is no list, the if was reversed.
   * Port from hottpd: Split src/socket.cpp out into src/cidr.cpp
   * Fix segfault on rehash and tweak the connect code.
   * Add defaults for SQLHost since comparing depends on them being initialised. Add also overload for operator!= for SQLhost.
   * Fix restart code, by getting run path and argv before calling Cleanup()
   * Add call to protocol interface to get useful info on the server map. Return a std::list of classes each of which has a server name, parent server name, user and oper count, and latency in millisecs
   * Make this nicer, rely on the last write event after the Write() that sends all the data, not on a timer
   * Remove the timeout stuff, it is not stable and not really required, we are not emulating apache here but making a bare minimum of compliance to pass along xml etc., Personally i only really care about compliance with irc RFCs
   * When searching by servername without wildcards, conceal +i users no matter what craq the spec was on
   * Rename to m_connectban
   * Prepare to rename this, change it's purpose from quitban to connect ban (was I smoking crack?)
   * Masterful rewrite of User::AddBuffer to remove a string copy (and make more efficient) thanks to some nifty string manipulations. This should provide benefit on highly loaded nodes. This has *not* been thoroughly tested considering it's criticality, but I have spent the past ~4 hours writing and testing it, and it seems ok.
   * Add support for /nick 0: changes nick to UID, which can come in useful for circumstances when trying to connect while your nick is in use. Also supported by various others (ircd etc?). This also moves validation checking up a bit, avoiding two calls to IsNick in an obscure circumstance (hooray).
   * Make u_listmode more sensible and make it properly use WriteNumeric, and a few other misc fixes found during today
   * Fix broken m_alias, cant preallocate and then push_back, because then its maxparams + size
   * Fix bad throws and some other stuff in this module
   * Removed the verbosity in 'make clean' to fix issues with OpenBSD and possibly others
   * Okay, this was good in theory, but totally and utterly fucked in implementation. Rip out automatic global snotice code. It's not going to be *that* difficult to trigger global snotice with protocol interface now anyway I guess. We need to re-add calls to protocol interfaces in places like failed oper and so on.
   * Don't propegate SETHOST, ChangeDisplayedHost sends out hostchange anyway
   * Un-break this so remote users still get RemoteMessage okay if targetted at a specific user, remove comment also as it's using PI now anyway
   * Don't re-propegate CHGHOST unnecessarily
   * Add sanity checks to LoopCall to prevent miscalls like this by broken 3rd party modules
   * fix LoopCalls to not send param count thus avoiding a crash in command parser
   * Calling wrong loopcall overloaded method, due to hasty search and replace earlier
   * and no need to cast parameters to std::string here
   * parameters are already std::string no need to cast here
   * fix some unitialised vectors and tidy up a bit.
   * Conversion complete, distclean compiles cleanly again. (If everything works is another story)
   * Remove extra documented moduledir (reported by smartys). And move quietbursts documentaion from <option> section to <performance> section.
   * < MAXPARAMETERS for the size() check here can now be <= instead
   * Update comments for new api
   * Fix unused HandleServer to use new system too, and update comments to match api
   * Conversion of command handler params from "const char* const* parameters, int pcnt" to "const std::vector<std::string>& parameters". All of core is converted, but cant test it till the modules are converted., IMPORTANT: The mode parser public calls have had to be tweaked a bit to also use the string vector. Note that this makes a LOT of our core a bit messy and paves the way to convert a lot of stuff from the mess, of .c_str() calls to using std::string params directly.
   * Comment and improve check for access to ~/.inspircd/startup.log
   * Make creation of ~/.inspircd properly check for EEXIST
   * Patch from jackmcbarn, revamps the helpop example full conf
   * Optimize MODE #chan b etc, avoid a 256 byte memset for duplicate mode checks
   * Convert to SimpleUserModeHandler and SimpleChannelModeHandler
   * Some modules throw CoreException, this is wrong wrongitty wrong! Throw ModuleException instead.
   * #define NO_CLIENT_LONG_LONG, makes mysql.h ANSI C++ compliant so that we can get rid of $NoPedantic. Test compiles ok.
   * Backport fix for stripcolour not stripping colour codes, reported by jackmcbarn - thanks. Also make rebasing neater, output to current console/output window of visual studio, not a new console
   * Extra support for freebsd openssl, allow user to pick between ports and base version if they have both, default to ports version in interactive, require a flag in ./configure
   * More stuff so that freebsd users can still use the ports version of openssl if they want
   * Detect openssl on freebsd with the openssl binary, so we can find the base version as well as the ports version
   * Add some stuff from the freebsd port based on ideas by Matthew Seaman which allow inspircd to use the base version of openssl on freebsd
   * Remoteconnect and remotequit should be local-only snomasks
   * Fix from yesterday, properly fix timedbans, much neater
   * Show command line on warnings for darix (probably)
   * Remove debug (This also fixes a bug that peavey and i found regarding the already_sent not being wiped properly on first use)
   * Fix bug found by peavey, which much frustrated him and w00t. He leiks mudkipz. Also fix bug #522 reported by Casey
   * Fix quietbans and hidesplits etc, cull list's sending a seperate quit message to normal users was broken
   * Remove OnRehash of m_chanprotect: bad idea, and it's broken anyway.
   * Fix stray /MD that should be /MP
   * Fix to use dll in debug build
   * Add VC9 projects. I cant maintain these, i will be reliant on patches from other users that do use this compiler
   * Merge in large patchset from GreenReaper, useful fixes for freeing a ton of different things on shutdown for tidyness, and a few stack corruption fixes in the mode handler
   * Remove the craqy self-restarting loop in trunk, and use proper safe iterators to avoid it
   * Patch to fix timedbans crash reported earlier today, thanks for the headsup wonderwal
   * Add hand-crafted resource script, contains version information and icon definition
   * Fix RemoveCommands to remove all commands (this function had some really odd removal logic?)
   * fix text in validate methods where option was moved to either performance or security.
   * Extract and run the vs redistributable to $TEMP, not to install dir. saves us 2.6 megs on install space
   * Eventlist one item too short, makes this module not publish its 005 feature
   * Bundle vcredist_x86.exe here too
   * Make the CAPAB sender in spanningtree more readable
   * Add GreenReaper and Skip to contributors
   * Apply patches to remove 200-odd dll limit on windows, made by GreenReaper, lots of thanks!
   * Add operator new[] and delete[], otherwise we can and will get crashes on using a C++ allocated array outside the place where its allocated. Thanks for finding this (indirectly) GreenReaper
   * Remove SpanningTreeProtocolInterface::SendOperNotice - it was translated to a SendSNONotice 'A' anyway, and only used by SAMODE, which duplicated it with a SendSNONotice 'A' also anyhow o.o - this means OPERNOTICE is now gone from protocol 1200, and SNONOTICE should be used instead.
   * Fix format fuckup I introduced (that warning shows one example of when it's useful here)
   * Remove completed XXX: override is now only checked locally, snotices are automatically broadcast globally, and all is well in the universe once more.
   * Add potential for local-only snotices and use them for the ones that should be local. Individual messages cannot be made local-only, but I can't think of circumstances where this is necessary. Let's write it when it *is* necessary.
   * Remove use of SendSNONotice to send to remote servers, this is done automagically now
   * Remove debug from snomask flushing, and send ALL snotices globally automagically (this probably means that calling SendSNONotice calls can be removed from places where they were added individually. XXX this needs fixing in two places: some snomasks are entirely local (local connect/quit) and some individual snotices may wish to be local only (though I can't think of any right now)
   * m_override now has a 'requirekey' option, that requires a special key of 'override' before permitting operoverride to prevent accidental abuse, fixes bug #516 reported by Jason. This isn't quite complete.
   * Implement our own dllmain. if this works and gets rid of error at 70 modules, i will backport it
   * Rebase modules a meg higher than command objects so they dont collide
   * Automatic rebasing of load addresses for .so files on windows, thanks to GreenReaper for the hints and tips
   * Change that allows the m_override module to not announce a key override for a user that specified the right key
   * ahh shit, remove windows specific code i left laying around
   * Fix the problems GreenReaper found with the windows select engine, this has never worked properly in trunk! -- This needs tidying up, its on my todo either tonight if im awake enough, or tomorrow evening
   * Fixes for ValidateHostname
   * Chain ValidateServerName onto ValidateHostname so that the servername gets hostname validity checks (prevents servernames with spaces etc)
   * Deprecate a few more config options.
   * Nuke the ability to define <options:loglevel> from orbit
   * See configreader.cpp line 764 to see how to declare deprecated items. This is reasonably well thought out so i see no issue with leaving items here a very long time
   * Move options vlaues netbuffersize, maxwho, maxconn, softlimit, quietbursts, nouserdns into performance tag
   * TRUNK CONFIG BREAKAGE WARNING: Move a bunch of options tag values into a new tag called 'security'. See example conf
   * Set the required prefix for ops to @, thanks
   * end a sentence.
   * remove "nicks" from SAMODE so people don't get confused
   * revert, proper fixed in 9495 by brain
   * trunk doesnt seem to like < and > in a quoted section, because someone REMOVED the if check by mistake!
   * Only restrict set with <class:usermodes/chanmodes>, not unset
1.2.0a2

   *  1.2.0a2+TexasLonghorn
   * Make run-cc handle containers of std:air, and also filtering for std::{vector,string}::iterator
   * Remove comments about coming up with a better way that has been come up with.
   * Sane-ify the STL filtering and coloring in run-cc.
   * add a hint to users for using an IP instead of *
   * Cast these to shut up compiler
   * Eliminate now-pointless label
   * Whack code duplication
   * Whack gotos here too
   * Fix 4-space indents :<
   * Port a bunch of methods of InspIRCd to functors. IsChannel, IsSID, Rehash.
   * Mapping for mkdir() to _mkdir() for windows
   * Fixes for default log. It is now called ~/.inspircd/startup.log unless overridden by -logfile commandline param. The name of the log is more indicative of what it stores, and the location is more sane and fits in with standards., If the home directory cant be found from either HOME or USERPROFILE env vars, then the startup.log is dumped to the current directory., Removed -nolog from ./inspircd debug, antique setting.
   * Fixes for bug #515, update existing in-use connect tags on the fly in rehash
   * Trunk fix for bug #505 reported by nenolod
   * In visual studio, CRT crashes when strftime() is given an invalid format specifier and %F/%T are not supported! -- reported along with stripcolor bug by jackmcbarn, thanks
   * Fix crash in m_stripcolor on windows when the colour code is the first item on a line
   * Replace here too
   * Don't move newconfig to ServerConfig::config_data until its been validated by all the validation funcs in the core config table
   * Remove 'default log' and <options:loglevel> (wtf?)
   * nuke loglevel from <options> description, and tidy some indenting.
   * Patch from voidzero, bug #517
   * Patch from Brain fixing broken stuff
   * Much faster way of checking if the user is 4in6, avoid strncmp in User::GetIPString(), do it in User::SetSockAddr()
   * Provide an optional param translate4in6 to User::GetIPString() and default it to true. This hides the 0::ffff: on all info about an ipv6 user connecting over ipv4, making glines on them and bans etc work better., Certain parts such as dns lookup need to set this to false to determine wether to use ipv4 or ipv6 reverse lookup.
   * Fix for bug #503 reported by Stealth (at last)
   * Add correct stuff so that /taxonomy can show the cloaked hosts for users in their metadata
   * Calculate hosts on connect so theres no way around a ban on your cloak, even if you never cloak yourself even once
   * Comment small API change (returning -1 from OnCheckBan to explicitly deny the ban)
   * Fix for bug #513
   * This now passes all the RIPEMD160 test vectors and is a complete and usable module
   * Fix ripemd160 warnings
   * Add m_ripemd160 on behalf of Brain. Adds ripemd-160 hashing to our collection of providers. Will doc later.
   * AddClient -> AddUser, to be consistant
   * Move QuitUser into UserManager class, and unstaticize it. This prepares for some benchmarking lulz on object pooling I plan to do today, as well as making more sense now we *have* a manager class
   * Apply brain's patch for binary safety of hash providers, and remove rehash from windows project (manually applied that due to linefeed shit)
   * Send usermodes on whois if user is self or opered
   * Fix authentication logic, someone forgot to change an || to an &&, because we use continue now the logic is reversed, we continue if auth method one fails AND auth method two fails, (instead of if auth method one fails OR auth method two fails), Also, fix bug where credentials of outbound server are leaked on successful auth to other ircds behind it
   * Allow remote users to bypass Q:Line (why on earth wasn't this the case)
   * Don't check Q:Lines here, it will affect change to UID
   * Don't check Q:Lines if server is enforcing a nick change (I forgot we had a way to check this). 'Bug' (it's not really a bug, just admin stupidity) found by Kein.
   * Fix a bug with /SHUN deletion (it didn't work)
   * CBan rewritten to use the XLine API. Untested as yet.
   * Changes needed to get open-linking working.
   * This comment is slightly out of date: we do write to opers now.
   * No longer deprecated, just may not be used
   * add a couple of parenthesis to the password comparison, because i couldnt easily make out the order of precedence, clarify it a bit
   * Allow for open link networks (<link:name> to *) and tidy up checks here. XXX someone check my work here because this was quite untidy, so I'm not 100% I got all the logic ops correct.
   * Remote REHASH stuff, this drove me nuts but should probably work now.. thx brain
   * Finally apply my patch simplifying RSQUIT. Fixes bug #452, reported by Mark. This won't be backported.
   * REG_ALL check is not required, since OnUserConnect is triggered after NICK/USER recieved, but we don't want to bother trying to SHUN remote users too, so check IS_LOCAL in the connection event
   * SHUN: check SHUN on connect, extend user with shunned metadata if they match, and disallow any commands if metadata exists instead of constantly rechecking bans per-command.
   * When map says 0ms, make it read "<1ms" instead of 0, 0 doesnt make ANY sense at all, transfer of data is not instant! Also tidy up headers for this file, we include far more of spanningtree than we actually use
   * Fix for bug #510
   * Hosts vector not cleared on rehash, made rehashing for changes impossible
   * Hook events properly.
   * Add a factory to produce shuns, don't autoapply to userlist, etc.
   * Add extra stuff for w00t, AutoApplyToUserList method for XLineFactory
   * Use SHUN, not S, try match on std::string for removal
   * Unrestrict users before REG_ALL
   * Show server kills with correct origin, UNLESS hidden server in whois is set
   * This should probably be tested, but makes a whole lot more sense like this (users.cpp)
   * Show SID on /map
   * remote MAP reply is backwards
   * Use server names for introduction of servers, not SIDs
   * We were lucky this one didnt bring down the whole devnet (see cmd_part.cpp diff)
   * Convert this to use the new XLine API, this results in fairly significant lessening of code complexity.. also now more up to date with our recent coding style.
   * Add m_shun from third party to 1.2, update it to compile (currently untested..) and fix a printf-bug in the process
   * Updates to NeoStats aliases, again by TamCore (thanks )
   * Patch from Brain: set MAX_DESCRIPTORS for all socket engines (I missed this)
   * Fix fake direction in TOPIC, you cant use a uuid as a command origin in the send functions
   * Its ok to allow remote map to non-opers now, found the real culprit
   * Fix bug where OPERTYPE does not propogate more than one server in distance due to it being propogated with a nick prefix.
   * The map matrix must be static. For some reason it blows up when it is not. This fixes the display oddities, as far as i can tell.
   * Initialise this so WriteCommon() knows what it's dealing with (thanks, valgrind)
   * Initialise var (another valgrind warning)
   * Stupid, stupid :| use the correct variable to find existing channel (this caused my spurious CoreException crash, Brain)
   * Remote /MAP (that now doesn't confuse clients ;p)
   * Fix this up to convert deque to const char* const for w00t
   * For some reason there was a FinishBurst in the encap command, which was sending spurious end of burst messages
   * Mark ping answered when we get a two form reply
   * Make ping warnings and lag check global across all servers on a network. This means a lot of pings travelling around with a lot of servers, but hey, it's useful info.
   * Add NeoStats example aliases (thanks TamCore)
   * Fix bug #509 reported by Casey: bans were not applied on non-opped users (1.2 only)
   * More missing docs.
   * Fix a silly bug we never thought was a bug, in m_messageflood - the message that got a user kicked was always allowed through (appearing *after* they were kicked). Was a return 1 in the wrong place.
   * Some documentation fixes (misnamed module, missing modules, etc). Fixes bug #508 - thanks Casey
   * Add protocolinterface.* and privmsg.cpp
   * Windows fixes
1.2.0a1

   *  Remote includes via executable: <include executable="wget -q -O - http://www.mynetwork.com/conffile.conf">
   * Snomask compression: multiple snotices will be compressed into two lines (helps prevent flooding off of opers)
   * Connect class limiting: limit the maximum number of users concurrently allowed in a <connect> class.
   * Permanent channels (channel mode +P - NOTE: m_blockcaps now uses mode +B ). This will require support from your Services package to work *properly*.
   * Flood control: we now have fake lag
   * We now have /rline: for regex bans on nick!user@host realname patterns.
   * XLine database: meaning that merging parts of a network with lots of bans will not take forever most of the time
   * Smart ban expiry: bans are only expired when needed, meaning that you have no wasted CPU
   * Network user counts should now work correctly on reload of m_spanningtree
   * SAPART now has an (optional) reason
   * Part prefix and postfix: same as quit prefix and postfix, except for parts
   * Connection throttling per IP: If a configurable number of quits are recieved from an IP, that IP may be zlined for a configurable duration
   * Channels may now be marked as exempt from m_filter(_pcre) - for help channels etc
   * Hashed passwords may be used in <die> and <restart> and other places
   * m_password_hash now finds hash providers when they are loaded, meaning no need to restart
   * Optional timed /invites: /invite foo #chan 60s - invites expire after given duration
   * Bad channels now have a redirect option
   * Support for CAP: a feature negotiation protocol for clients
   * Support for SASL: an authentication mechanism for services
   * Support for STARTTLS: A method to start an SSL connection *after* connecting to IRC
   * Overhauled logging (logging may now go to channels, modules may now do things with logging, and multiple logfiles are supported)
   * Ports are no longer bound by port number (7000 may be SSL on one IP, plaintext on another)
   * SQLAuth allows the nick to be specified in the password
   * Oper-only modes may disallowed/allowed per oper type
   * WATCH now notifies clients when someone goes /away
   * ~ and & prefixes for +qa are now fully configurable (may be turned on or off and set to whatever you want per server)
   * Changing the kernel FD limit no longer requires a recompile, just a restart
   * Netbursts now compress mode changes to one line
   * Extended channel bans, currently +b n: and +b q: are supported