/*
 * UnrealIRCd Changes File - (C) Carsten Munk 1999-2005 &
 *                               The UnrealIRCd Team
 *                              
 * $Id$
 *                              
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 1, or (at your option)
 * any later version.           
 *                              
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *                              
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *                              
 */                             
                                
[Unreal 3.2.1]
- Replaced tre.dll/tre.lib, previous versions caused a crash (eg: if you included
  spamfilter.conf).
- Fixed a problem when compiling with GUEST enabled. Reported by dvzion (#0001758)
- Fixed a documentation typo reported by Konc
- Fixed a little problem in ./unreal to move ircd.pid.bak to ircd.pid of starting failed.
  Fixed by fez (#0001739)
- Made it so chg* command usage is not logged from U:lines. Reported by diskman1 (#0001718)
- Changed int_to_base64() warning so it has less false positives (#0001797).
- Fixed a bug where if set::ssl::options was empty, a crash could occur. Reported by
  spider312 (#0001799)
- Include openssl/md5.h and openssl/ripemd.h if compiled w/SSL, this seems how it
  should be done and also makes unreal w/SSL able to compile on OpenBSD (3.5).
- Added module support for Windows!
  To module coders: 
  -Building your module on Windows is almost exactly the same as on *nix
  nmake -f makefile.win32 custommodule MODULEFILE=thefile

  -Also, as I'm sure most module developers will begin distributing .dll files for their
  modules, it is important to note that just like the modules on *nix, the dlls will need
  to be recompiled each time a new version of Unreal is released. This is simply due to
  the potential for binary incompatibility which at this point can not be avoided.

  -Most modules already do this, but it is now a requirement for Windows support. At the
  very minimum, the Mod_Test function must have the DLLFUNC specifier in order to work
  Unreal will automatically add DLLFUNC to the other functions, but it does not hurt if
  you use it for all of them.

  NOTE: It is expected that there will probably be a few bugs to work out with this, so
  please consider testing it! And module coders, please report any problems you experience!
- Modulized cloaking:
  - Currently there are 2 cloaking modules: 'cloak' and 'oldcloak'.
  - You MUST load at least 1 of them (like: loadmodule "src/modules/cloak.so";).
  - 'oldcloak' is just the <=3.2 cloaking algorithm.
  - 'cloak' is the new, recommended, and much more secure cloaking algorithm that uses
    md5 internally and requires 3 keys of 5-100 characters (10-20 is fine) consisting of
    mixed lowcase (a-z), upcase (A-Z) and digits (0-9) [eg: "AopAS6WQH2Os6hfosh4SFJHs"].
  - Note that 'oldcloak' is only ment for use during the upgrade process (it will give
    a warning if you use it), you should switch to the much more secure 'cloak' module
    as soon as all your servers are upgraded.
  - Module coders can code 3rd party cloak modules that use other algorithms or cloak
    in a different way (have a look at src/modules/cloak.c).
- spamfilter: Added Bloodhound.Exploit.6 sig
- Compile fixes for win32 modules with ssl/zip/curl
- Changed 'Services operator' in /whois (back) to 'Services administrator', this was
  requested by many people and seems to be the best after all (#0001634).
- Local opers can now also join +O (operonly) channels (#0001694).
- Changed the way MSG/NOTICE <prefix>#chan works:
  - It now goes to <prefix> and higher, so '/notice +#chan hi!' goes to +vhoaq
  - You need at least voice in order to be able to msg/notice +#chan, %#chan or @#chan
  - You need at least ops in order to be able to msg/notice &#chan or ~#chan
  - Any multi-prefix targets will be converted automatically (eg: ~&@#chan to @#chan).
  - internal: use of the CHANOPPFX macro is now deprecated.
  All of this was done to make it a bit more 'safe' and userfriendly (#0001812).
- Fixed a remote include bug that would cause unnecessary blocking
- Fixed a /credits typo
- Imported TRE 0.6.7 for win32
- Imported TRE 0.6.7 for *nix and made use of tre_version to report the version of TRE
  in use at startup
- Fixed a Win32 module bug
- Added set::spamfilter::virus-help-channel-deny. This allows you to block any
  normal joins to the virus-help-channel. This way you could prevent users into
  accidental (or tricked) joining of the virus-help-channel and becomming infected.
  This feature is disabled by default. Requested by bleepy (#0001811).
- German doc updates (week 20).
- Added optional parameter to SVSJOIN to deal with channel keys. Reported by 
  DukePyrolator (#0001822).
- Added zlib+SSL version check on boot to make sure the runtime version is the same
  as the 'compiled for' (header) version. If they mismatch, UnrealIRCd could crash,
  so a big warning is posted if it happends.
- Improved the above: made it work on windows and also added a check for curl.
- spamfilter.conf: Added yet another sig for a site that causes Backdoor.Delf.lq
  infection (reported by nexus), also changed LOI trojan and Bloodhound.Exploit.6
  action to gline.
- Fixed a win32 module bug that broke strcasecmp/stricmp
- German doc updates (week 21)
- Fixed a permanent modules bug: custom allow/except/ban/deny types were lost
  after /rehash. Reported by AngryWolf (#0001837).
- Fixed a problem with NICK collisions not using NICKv2 (#0001773) reported by thilo
- Added NICKIP (#0000605 & #0001376) 
- Compile warning cleanups
- Added release notes (no, we won't release 3.2.1 anytime soon.. just updating ;p).
- Added various extra messages to make it a bit more easier for people who are
  upgrading (win32 commands.dll, cloaking mod).
- Made win32 ssl<->non-ssl modules binary compatible.
- Added ssl/non-ssl check in Mod_Version on *NIX.
- Added set::options::flat-map: This makes all servers look like they are linked
  directly to the server you are on (/map, /links), thus you cannot see which server
  is linked to which ("hopcount"). This can make it a bit harder for kiddies to find
  any 'weak spots' (which server to attack/[D]DoS). Obviously opers will always
  see the real map.
- unreal32docs.html: added flat-map and set::restrict-usermodes "s"; security tips.
- Fixed a compile error regarding AF_MAX (#0001839) reported by Rocko
- Imported TRE 0.6.8 for *nix
- Added NICKIP to doc/technical/protoctl.txt
- Imported TRE 0.6.8 for windows
- Redid the win32 version to use a dynamically linked libc. This solves memory issues
  arising from the fact that dlls do not share the same heap as the exe. As a side effect,
  however, there is now a dependency on msvcr70d.dll. This DLL does not come with any
  versions of Windows except 2003. It also comes with any .NET application and the .NET
  framework. Unreal will automatically download th DLL if it is needed. Reported by Bugz 
  (#0001833)
- Fixed some other win32 crashes due to modulizing: WHOWAS, STATS [some], SVSMOTD.
  All caused by missing "MODVAR"s. Reported by Troco (#0001841).
- Fixed SSL problem caused by a fix of 2 days ago. Reported by Fury (#0001842).
- And one more.
- Made socket errors correctly reported under Win32. Thanks to Microsoft for deciding 
  that having a way to get a socket error string was unnecessary.
- Fixed a NICKIP bug regarding passing along IPs (#0001846) reported by Troco
- And another one, should be fixed now.
- Added snomask +S to the documentation (#0001835) reported by medice.
- Made a bunch of TKL parameters case insensitive (#0001766) reported by medice.
- Made Unreal create the tmp/ dir at startup, rather than configure (#0001824) suggested by
  LinDevel
- Added /dns c to clear the DNS cache (#0001852) suggested by samson.
- Seems I forgot to del_Command() SPAMFILTER and TEMPSHUN.
- Made the win32 socket error reporting also handle regular system errors (#0001851) 
  reported by Troco
- Added a doc/translations.txt which describes the (current) translation process
  and requirements a bit.
- Fixed a synch bug, reported by Troco (#0001857).
- Split up the /who oper and user help messages
- Added /who +i (search by IP) and /who +I (show IP), oper only.
- Made it so /who +m doesn't default to /who if a user uses modes they aren't allowed to
  use (#0001858) reported by Bugz
- Added a couple donators to /credits
- Module coders: if CmdoverrideAdd() is called for an override that is already in place, it
  now sets MODERR_EXISTS as errorcode and returns NULL (previously it added duplicates).
  In the past module coders had many issues with PERM mods... you had to use weird tricks,
  but now you can (and should!) just override on INIT and on HOOKTYPE_REHASH_COMPLETE.
- Moved register_user declaration to h.h, updated call in m_pingpong.c (due new 'ip' field).
- Usermode +v ('receive dcc send rejection notices') is oper-only now for privacy reasons.
- Added dcc allow { }, which allows one to make exceptions over deny dcc { }.
- Added deny dcc::soft and allow dcc::soft item, if set to 'yes' it allows someone
  to explicitly override it per-person via /DCCALLOW (see next).
- Added DCCALLOW system, taken directly from bahamut.
  With this system you can block certain (or all) DCC SENDs and then allow the user to
  'override' this limit for every user he/she trusts via '/DCCALLOW +User'.
  This is an attempt to stop (or at least limit) the spreading of viruses/etc.
  See '/DCCALLOW HELP' for more info.
- Added example dccallow.conf which filters everything except some known
  'safe types' (jpg, jpeg, png, gif, etc). Note that the purpose of this file
  is NOT to get a complete list, rather to limit it to a few 'known safe' entries.
- Added set::maxdccallow: max number of entries of the DCCALLOW list (default: 10).
- Various (non-critical) fixes for dccallow reported by Rocko (incorrect nick in deny msg,
  added set::maxdccallow in docs, added bmp/vob/log/ to dccallow.conf).
- Made extbans desynchs a bit more friendly: if a bantype is unknown for the server
  it will just accept it if it's from a remote server, and also ops/etc will be allowed
  to REMOVE any unknown extbans (but not add new unknown ones).
- Added extended ban type ~n (nickchange ban), if a user matches this (s)he can not
  change nicks (eg: +b ~n:*!*@*.aol.com) unless (s)he has voice or higher.
  This can be useful as an overall measure for some +m chans (+b ~n:!*@*) or against
  specific 'good' people that are just nickflooding due to a wrongly configured script.
- Added set::restrict-extendedbans by which you can disallow normal users to use
  any extendedbans ("*") or disallow only certain ones (eg: "qc").
- Made the negative TS message a bit more annoying if time is off more than 10 seconds.
- Minor doc tweakers, reported by AngryWolf (#0001871).
- Win32: Readded /J compiler flag (was accidentally lost in December). This could cause
  some weird issues. Reported by Troco (#0001877).
- Fixed compile problem with debugmode + ipv6
- Added CIDR support (#0001296) suggested by many people.
  - Imported the latest CIDR functions from Hybrid 7.0.1 (and fixed numerous bugs)
  - Implemented CIDR support for ban ip, ban user, allow, except ban/tkl/throttle, and TKL
  - Note: This needs testing
- To be able to use /ADDLINE you now need the (new) 'can_addline' operflag (oper::flags),
  reason for this is that it's such a powerful/dangerous command.
- Fixed find_qline crashes regarding except tkl 'type qline', reported by Gilou (#0001882).
- Fixed some CIDR bugs causing things not to match.
- Fixed a CIDR bug when compiled without IPv6 support
- Fixed an SVSNICK bug that could lead to duplicate users in very rare circumstances
  (#0001874) reported by Jiuka.
- internal: Added GetIP() which we will now use instead of all the Inet_ia2p() stuff
  because it's slightly faster (already replaced all of them in src/s_kline.c).
  GetIP(acptr) will return the ip for local users and remote users that support NICKIP,
  it returns NULL for remote users that are on non-NICKIP servers (or have non-NICKIP
  servers along their path).
- internal: tkl_add_line now returns aTKline *
- Added some more hooks:
  - HOOKTYPE_TKL_ADD [aClient *cptr, aClient *sptr, aTKline *tk]
  - HOOKTYPE_TKL_DEL [aClient *cptr, aClient *sptr, aTKline *tk]
    NOTE: 'NULL, NULL, tk' is used for *lines that are removed due to expiring
  - HOOKTYPE_LOCAL_KILL [aClient *sptr, aClient *target, char *comment]
- Added support for the ELIST 005 token with MNUCT options
- Made Mod_Version required (this should be no problem since it's done automatically).
- Added HOOKTYPE_LOG [int type, char *timebuf, char *logbuf]
- Updated the release notes.
- Fixed a CIDR bug reported by poisoner (#0001892)
- Documented numerics in use by other IRCds
- Converted several notices to numerics (#0001599) suggested by olene
- Added a donator to /credits
- Fixed '/stats P' negative usercount bug (#0001691).
- Made IPv6 bans work the way they should again, reported by al5001 (#0001876).
- Added new logtype 'spamfilter' to log spamfilter matches
- Updated example.conf: added all new flags we added in the example block, removed
  old confusing comment on SEGV logging, config.h: ripped out lPATH since that define
  isn't anywhere used and is only confusing.
- Made the new numerics use nicknames (#0001896) suggested by Dukat.
- Fixed a problem where the tmp directory was created in the current directory rather than
  the correct path (#0001898) reported by AngryWolf
- Updated HOOKTYPE_TKL_ADD/HOOKTYPE_TKL_DEL to cptr, sptr, tk, parc, parv, else it was
  impossible to tell *who* removed a *line. Again, parc/parv are 0/NULL for expires.
- Fixed "quickly-rehashing + autoconnect linkblocks = crash"-bug. This involved fixing
  multiple reference count bugs, one related to sptr->serv->conf, and another one related
  to sptr->serv->class. Both caused problems when someone did a /rehash when a server
  was in the process of connecting (so it might also happen when connfreq was hit and you
  did a /rehash). Original bug was reported by sh0 (#0001872).
- spamfilter.conf: Added sig for a mIRC decode worm, submitted by nexus.
- Some release notes updates.
- Changed version to 3.2.1-pre1 and updated protocol # to 2304.
- Updated wircd.def
** internal 3.2.1-pre1 release **
- Various (>15) small fixes for unreal32docs.html, reported by AngryWolf (#0001906).
- Added spanish docs, translated by Trocotronic.
- Fixed serious crashbug due to quick-rehashing bugfix! Basically if you did a /REHASH and
  the clientcount for a class reached 0 (due to quits) it would crash.
** internal 3.2.1-pre2 release **
- Added hungarian docs, translated by AngryWolf.
- Fixed a problem with the win32 installer as a result of MSVCR70D.DLL, reported by
  aquanight
- Updated /Credits and added a donator.
- Made release notes a bit more scary + some minor english-only doc updates
- Changed version to 3.2.1
- Moved the 3.2 changes to Changes.old
** 3.2.1 release **
- Fixed a win32 module problem where file not found errors would display random characters,
  reported by STING
- Fixed a bug where the allow-userhost-change force-rejoin setting was not applied to users
  who /oper and receive an oper-host (#0001901) reported by hypnetric.
- Removed the /hs alias pointing to HelpServ for Anope since this conflicts with HostServ
  (#0001709) reported by DukePyrolator
- Fixed ban bug: halfops were also prevented from doing nickchanges if banned, plus..
  +b ~n:*!*@* also made nickchanges impossible for voiced(&halfop'ed) people (so like half
  of the purpose of it was defeated @$#&@#). Reported by Rocko.
- Fixed a bug where an ident in a vhost {} was never sent out to other servers and added
  user@host support for set::hosts (#0001834) reported/suggested by bleepy.
- Fixed defizzer module. Reported by Rocko and netrixtardis.
- Removed the * and ^ flags from /whois if PREFIX_AQ is not enabled (requested by many people)
- Updated the /who docs to use correct English
- Added documentation for the /who and /whois flags (#0001881) reported by AngryWolf and Bugz.
- Added src/win32/win32.c for generic win32 helper functions
- Renamed src/win32/win32gui.c to src/win32/gui.c
- Reorganized much of the Windows code
- Fixed a whois bug when PREFIX_AQ is undefined, reported by Shaun
- Moved the RTF win32 code to a seperate file
- More win32 code cleanups
- Added src/win32/editor.c (woops), (#0001932) reported by Troco
- Fixed a problem with /who incorrectly showing the ? flag to opers even when the user should
  be visible (#0001888) reported by Bugz and aquanight
- Added SAPART and SVSPART reasons. Note, to fully work it requires all servers to upgrade,
  and due to a bug in older versions, it could cause problems if linked to 3.2 or earlier
  (#0001859) suggested by Bugz
- Fixed a minor issue where Unreal registered itself as an NT service incorrectly
  (#0001950) reported by rocafella
- Possibly fixed a bug that could cause Unreal to eat 100% CPU at startup on Windows.
  (#0001635) reported by eggburt. Thanks to STING for helping to debug this.
- Implemented a new modules Makefile written by fez (#0001930).
- Added oper::modes to specify modes to be set for a particular oper (overrides 
  set::modes-on-oper), suggested by parker182 (#0001899).
- doc/example.conf now simply refers to unreal32docs.html for oper flags (#0001973)
  reported by vonitsanet and AngryWolf.
- Fixed crash-on-first-connect if SSL was enabled. This seemed to happen on Mac OS X,
  Sun Solaris, Opteron@Linux and perhaps others (#1982, #1984, #2110), reported by bit,
  lion and liverbugg.
- Fixed a bug if me::info was set to "".
- Added a missing error message for ModuleGetErrorStr. Additionally added error checking to
  ensure NULL is returned when an invalid error code is specified (#0001986) reported by
  AngryWolf.
- Applied patch from slePP for bug #0001252: if IPv6 was enabled then in some cases names
  were not properly resolved. Original bug reported by kormat.
- Fixed bugs regarding HOOKTYPE_SERVER_QUIT: was sometimes called twice and could cause
  crashes due read-after-free. Reported by SET (#0001988).
- Fixed possible crash if /rehash'ing and a servername was just resolving (due to
  /connect or autoconnect) and was not present in the cache. Reported and traced by sh0
  (#0001976).
- Fixed compile bug at *NIX caused by ModuleGetErrorStr fix.
- Improved doc/compiling_win32.txt a lot: now VC7 only, and has instructions on:
  compiling modules and their (binary) compatability, zip links (zlib), ssl (OpenSSL)...
  Remote includes (curl and c-ares) instructions still need to be added.
- Made 'Install as a service' unchecked by default, this should help beginners a lot.
- Updated doc/compiling_win32.txt again with curl build instructions.
  Also linked to a page with an unreal dev package which contains zlib+ssl+curl
  precompiled. This basically means many people no longer need to compile zlib/ssl/curl
  anymore themselves (which is a pain to do and takes a lot of time).
- Windows: the 'notice' parameter in the usermsg callback was always 0 due some windows/vc
  weirdness, this also affected spamfilter (so any spamfilters added only at notice
  and not at msg on windows would not work). Now using the real 'notice' parameter.
- unbroke spamfilter not working for msgs/notices (oops..).
- Made zip/non-zip modules on win32 binary compatible. Since it was nowhere documented
  that you should pass the ZIP_LINKS etc options to 'nmake -f makefile.win32 custommodule'
  many people didn't do this which caused odd problems when reading certain clientstructs.
  Module coders: in the meantime, for 3.2.1 mods, use something like:
  nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" 
   ZLIB_LIB_DIR="c:\dev\zlib\dll32" custommodule MODULEFILE=m_mymodule
  For 3.2.2+ these additional parameters will no longer be needed (but wouldn't harm either).
- Some doc/example.conf clarifications, mainly for modules @ win32.
- Made /whois show the user's modes to opers regardless of +e
- Added snomask to the /whois umode output
- Added a patch by rocafella to fix a crash when installing Unreal on Win2003 (#0001949).
- Moved the Command API functions to a separate file.
- Redesigned the 005 token:
  - Now renamed to RPL_ISUPPORT.
  - Replaced KNOCK and MAP tokens with new CMDS token (see doc/technical/005.txt)
  - Implemented most tokens from the isupport draft (STATUSMSG, EXCEPTS, CHANLIMIT,
    CHANNELLEN, MAXLIST).
  - Removed MAXBANS.
  - Made the isupport system dynamic and provide an API for modules to add tokens, may need
    testing.
  - Added an M_ANNOUNCE flag for CommandAdd to add the command to the CMDS token, may need
    testing.
- Fixed some compile warnings.
- Fixed a bug where bans were not matched against IPs in all circumstances (#0002045) 
  reported by heper.
- Fixed a bug with IP based except tkl {} lines did not validate the ident portion of the mask
  (#0002049) reported by Rocko.
- Fixed a problem where a local TKL could be sent to remote servers when it is being changed
  (#0002048) reported by AngryWolf.
- Added documentation for link::ciphers to unreal32docs.html (#0002019) reported by Bugz.
- Updated documentation to reflect that cmode +M allows voiced users to talk, not just
  registered users (#0002020) reported by crazy.
- Made it so WATCH will not respond with an erroneous reply if the parameter was simply + or -
  (#0002017) reported by GouraudShading.
- SVSO now removes +v (#0002023) reported by w00t and aquanight.
- Exported the isupport functions for use in Windows modules.
- Added a new snomask, +o to show oper-up notices (oper only), (#0001965) suggested by 
  vonitsanet.
- Added a /userip command that works just like ircu's.
- Fixed a typo in the *nix Makefile reported by Troco (#0002059)
- Added french docs, translated by Kolibot & Babass.
- Changed some stuff to use the release version of MS libraries.
- Updated installer for msvcr70.dll
- Fixed prefix bug caused by previous 'fix'/behavior change. Reported by aquanight (#0002067).
- Updated doc/technical/token.txt and resolved 2 token conflicts. SVSWATCH is now Sw and
  SVSJOIN is now BX (#0002073) reported by trystanscott.
- Fixed a bug regarding chanmode +mu where the <IRC> messages were not properly relayed
  to all servers. Reported by Aenox (#0002079).
- Added salted passwords. Salts are useful because it "protects" against stored-plaintext
  attacks (eg: rainbow) and prevents cracking of several passwords at once.
  This change means /MKPASSWD will now just generate a different string than before.
  Do note however, that the old syntax/encrypted passwords will still work and _will continue
  to work_ in the future, for at least the whole 3.2* series.
  If you are concerned with security and have some time, then converting your passwords
  is probably a good idea... Just in case your configuration file gets stolen one day ;).
- MD5 password encryption is now always available on *NIX, even if SSL is disabled.
- Temporary fix for ircsprintf %lu 1..6 issue.
- Fixed a problem with +u for some clients that have a strict interpretation of the RFC.
- Added TRE 0.7.0, fixes #0001952 reported by Praetorian
- Fixed an (unimportant) cloak typo / made it a few nanosec faster. Reported by Martin Brulisauer.
- Fixed resolver not working in FreeBSD jail, reported & patch provided by urkel (#0002097).
- Added a %n specifier to command aliases that is replaced by the user's nickname,
  requested by many people.
- Added the ability for an alias {} to send to a channel (#0001686) requested by JasonTik
  - As a result, alias[::format]::nick is now called alias[::format]::target to avoid
    confusion. ::nick is maintained for backwards compatibility.
- Fixed a problem where IsupportAdd did not return a value.
- Module coders: Added HOOKTYPE_REMOTE_JOIN, HOOKTYPE_REMOTE_PART, HOOKTYPE_REMOTE_KICK (all
  work just the same as the HOOKTYPE_LOCAL_* variants).
- Module coders: HOOKTYPE_REMOTE_CONNECT is now also called during net-merge. You can use
  IsSynched(sptr->srvptr) to find out if it's called due to a net merge (0) or a connect (1).
- Added spamfiler 'user' (u) target. This regex is checked against nick!user@host:realname
  when a user connects. This makes it easy to ban drones with simple patterns.
  For example: '/spamfilter add u gzline 86400 Drone[0-9]+!.+@.+:Drone[0-9]'
  would kill any drones that have both a nick and realname with 'Drone' followed by digits.
- If a nick is qlined, the user is now lagged up to limit qline floods a bit (#0001335).
- Made docs a bit more clear on spamfilter targettypes.
- Fix for too broad regex in badword::word causing the IRCd to hang, reported by Flop
  (#0002101).
- IPv6: Fixed hostnames in link::hostname not working, reported by Jasmin (#0001990).
- Fixed OOB read/write on user quit (did no harm on Linux&FreeBSD).
- Fixed some tiny memory leaks (~100 bytes) on rehash.
- Updated chinese&japanese GBK nick code, fix supplied by Xuefer (#0002051).
- Added release notes (unfinished).
- Added file: include/macros.h and a new macro, ARRAY_SIZEOF.
- Added the ability to specify multiple types in a tkl except, suggested by Bugz (#0002085).
- Added spamfilter 'away' ('a') target (#0002057).
- Fixed a qline duplicate msg bug I think
- Windows version can now hold ~4096 connections instead of ~1024
- help.conf: clarified MKPASSWD documentation, reported by hypnetric (#0001926).
- Some modeskip handling for future versions
- Fixed serious heap corruption bug if remote users were using qlined nicks, thanks to
  Gilou and Trankill for making me able to trace this issue down (#0002032).
- Fixed qline notices again: now gives msg #1 for local qlined-nick attempts, and
  another msg in case of a remote client (eg: oper) using a qlined nick.
- Added some future SJOIN skip stuff.
- Updated version to 3.2.2-pre1 already.
** internal 3.2.2-pre1 release **
- Fixed some doc & release notes typos. Reported by Rocko, HiT.
- French doc updates, hopefully synched now.
- (revert of badsyntax fix)
- Forgot to mention away spamfilter target in helpop, reported by Rocko.
- Changed version to 3.2.2
** 3.2.2 release **
- Fixed a typo in the makefile for USERIP
- Made the WATCH command work for WebTV users (#0002121) suggested by White_Magic.
- Some text updates... docs: now 3.2.2-CVS, also got rid of double version to avoid
  confusion. credits: fixed typo.
- Added updated auspice.conf from Rocko since previous one was outdated (#0002147).
- Recoded the config parsing code 
  - The new system is much faster, for the programmers out there, the
    old system averaged O(MN) where N was the number of sub-directives for a block, and
    M was the number of sub-directives actually contained in the block in the config file.
    The new system averages O(N), so the number of sub-directives no longer has a significant
    impact on performance.
  - Added duplicate config entry detection (#0002126) suggested by brain2
  - May have a few bugs (easily fixed)
- Corrected numerous -Wall warnings
- Fixed a bug with /rehash and classes due to the config parser rewrite
- Modified the module symbol dependency code to do more accurate searching for the module
  that contains the necessary symbol (#0002123) suggested by Xuefer.
  - Unreal will now prepend the pathname to the module and append the appropriate extension
    (.so or .dll) to the end)
  - The new module system version is "3.2.3" to allow for backwards compatibility
- Documented the default behavior of snomasks when /mode nick +s is used (#0002141) suggested
  by Bugz.
- Added "const" to the functions in match.c, (#0002116) suggested by Xuefer.
- Made ./Config better handle command line arguments
- Removed NAZIISH_CHBAN_HANDLING as it didn't do anything
- Added -advanced flag to ./Config to configure advanced options (#0002145) suggested by
  Bugz. As a result, some config.h options are now in ./Config -advanced.
- Small fix for above
- Added the ability to specify a botmotd and opermotd in a tld {} (#0000176) suggested by
  swissSolaris.
- Fixed crashbug on /rehash due to config rewrite, also made DEBUGMODE working again.
- Removed an excess space from the SAMODE notice when a mode without a parameter was set
  (#0002134) reported by Bugz.
- Fixed small memory leak on /rehash (post-3.2.2).
- Fixed botmotd crash due to last change (post-3.2.2).
- Updated the Donation file
- Added a 'B' flag to /who output for bots, and allowed normal users to /who +m B
  (#0002096) suggested by White_Magic
- Added support for using \\ in the config file to indicate a \ (#0002178) reported by
  TimeFX
- Added documentation for set::options::fail-oper-warn (#0002166) reported by Snake
- Removed an extra ) in the Throttle disconnect message (#0002165) reported by Snake
- Fixed a bug where the "looking up your hostname" message could still be displayed even
  if hostname resolving was disabled (#0002161) reported by Xuefer
- Made typing /kline, /shun, /zline, and /gzline correctly report the correct /stats flag,
  and these commands now produce the same output as the respective /stats flag they emulate
  (#0002149) reported by Snake
- Renamed some calls from report_error() to report_baderror() since otherwise the errors are
  hardly ever seen (unless you have +s +j set). For example a bad link::bind-ip only caused
  "Couldn't connect to xxxxxx" without any meaningful error message. Additionally, errors
  sent to report_baderror() are now logged.
- Win32 installer: Apparently 'install as a service' was still not the default, reported
  by fez (#0002191, #0002189).
- Fixed the crule parser to treat - and : as valid 'word' characters rather than separators
  (#0002188) reported by diskman1.
- Fixed bug in remote version reply, reported by DukePyrolator (#0002180).
- Added set::dns::bind-ip (rarely ever needed, but might be useful for paranoid people).
- Some unreal32docs->security section improvements.
- Fixed a minor bug in the new config system when displaying link {} and set::hosts errors
  (#0002194) reported by AngryWolf.
- Renamed RPL_INVITELIST/RPL_ENDOFINVITELIST to RPL_INVEXLIST/RPL_ENDOFINVEXLIST
- Using /invite with no parameters now lists the channels you are invited to but have not
  yet joined (#0002190) suggested by sac.
- Added some missing operflags to /stats O and SVSO (#0002193) reported by Bugz.
- If a user is +b on a channel, and set::allow-userhost-change force-rejoin is used, a
  part/join is not sent in order to prevent flooding (#0001933) suggested by Z3l3zT.
- Rewrote some of the previous change to deal with some strange issues found by aquanight
  - Introduced two new macros DYN_LOCAL and DYN_FREE to allow creation/deletion of dynamically
    sized arrays in the most efficient manner (C99 variable length, alloca, or malloc)
- Changed the +z cannot join message to be a bit more descriptive (#0002148) suggested by cust.
- Added a config.h options, IPV6_COMPRESSED to make Unreal use compressed IPv6 addresses where
  possible (#0002107) suggested by Neo-Vortex.
- Fixed alloca warning @ Linux (post-3.2.2)
- Numeric audit: 15 small changes (int/long mismatches etc). This might have fixed some
  bugs on architectures where 'long' and 'int' have different sizes (eg: opteron).
- Added a set::gline-address which works like set::kline-address (#0001298) suggested by
  Bugz.
- Added missing documentation for spamfilter away target (#0002205) reported by Dukat.
- Fixed dcc spamfilter problem reported by TimeFX and Deadalus (#2177, #2204).
- Fixed Oper Override not giving a 'special join notice' if +z is set along with another mode
  (eg: +i/+k), reported by tabrisnet (#0001487).
- help.conf: Fixed a typo, updated *CMDS indexes a bit, reported crazy (#0002208),
  added long flags to OFLAGS.
- OperOverride INVITE notices are now also global (if you have the eyes snomask set) (#2212).
- Module coders: New function: sendto_snomask_global().
- Speedup sendto_snomask/sendto_connectnotice/sendto_fconnectnotice code.
- spamfilter.conf: fixed mIRC exploit sigs
- Fixed all spamfilters in configfile not working due to configrewrite (post-3.2.2).
- Module coders: sendto_snomask* now only sends to opers, sendto_snomask_normal* can be used
  to send to normal users w/the snomask set.
- Fixed dcc filtering a bit more.
- Made usermode 'g' operonly since it didn't do much, reported by DukePyrolator (#0002024).
- Fixed tkl except { } not working (post-3.2.2).
- Fixed bug where servers behind ulines were not ulined, causing for example juped servers to
  show up if flat-map was enabled, reported by GSF19 (#0002230).
- Some doc/ updates: removed: Unreal31_to_32.html & example.settings, updated: Authors &
  translations.txt.
- Added a basic regex tutorial to unreal32docs.html (#0000920)
- Updated wircd.def
- Made CIDR no longer accept bitmasks with less than 16bits for /*line commands (#0002240)
  reported by aquanight.
- Made the (?) kill message not show IP addresses (#0002227) reported by neothematrix.
- Added some error checking to /sapart (#0002253) suggested by Troco.
- Imported TRE 0.7.2 for Windows
- Imported TRE 0.7.2 for *nix
- Got rid of wma/wmv in dccallow.conf, better to require an explicit select here due to
  recent DRM exploits (spyware etc).
- Fixed /restart reasons, reported by SouL-FoRTuNe.
- Partial (incomplete!) fix for alloca warnings during compile (especially w/SSL).
- Fixed serious crashbug that can be triggered by users, released a hotfix and a seperate
  version called 3.2.2b (which is just 3.2.2+patch+version change to '3.2.2b',
  nothing else).
- Fixed 'make install' error due to example.settings remove.
- Fixed a minor typo in the "now an oper" announcement (#0002284) reported by Rocko.
- Made SVSMODE -b and -e remove bans/excepts placed on IPs (#0002270) reported by Snake.
- Fixed a couple of problems introduced with the ./Config -advanced changed (#0002239).
- Made the win32 installer include the dccallow.conf (#0002269) reported by Ron2K.
- Made the win32 installer work with the latest version of Inno Setup (5.0.6).
- Made /sajoin support multiple channels and using 0 (#0002231) suggested by acemi.
- Fixed a problem where doing ./unreal restart multiple times would not actually restart
  the ircd (#0002120) reported by SineSwiper.
- Made it so +f notices are sent to %#chan, not @%#chan (#0002248) reported by aquanight.
- Hopefully fixed the last of the alloca warnings (#0002202) reported by Stoebi.
- Fixed a problem with set::htm::incoming-rate being interpreted incorrectly (#0002266)
  reported by tabrisnet.
- Fixed a resolver cache bug regarding CNAME's. Thanks to insiderZ.DE for tracing down
  this issue.
- Fixed a bug related to the sajoin recode regarding notices displayed (#0002293) reported
  by Troco.
- Reworded a cloak-key error message to make it clearer (#0002297) reported by Bugz.
- Fixed a bug where /whois notices were not sent to users who are +R if the sender is -r
  and on a remote server (#0002288) reported by Freadon.
- Made /stats E include tkl except stats as well (#0001524) suggested by Cnils.
- Added an options member to the ExtbanInfo structure. This currently supports one flag,
  EXTBOPT_CHSVSMODE. When set, this extban will be removed when an SVSMODE -b [nick] is
  executed (#0002222) suggested by Snake.
- Fixed a bug where specifying a reason to SVSPART would cause it to fail (#0002210) reported 
  by tabrisnet.
- Moved channel mode +G to extcmode to make room for invex.
- Added debug code to trace proto-check bugs in DEBUGMODE [IsToken() etc]
- [Module coders] Added new function: do_cmd(cptr, sptr, cmd, parc, parv) which is an
  uniform method to call any other commands. For more info, see description in src/packet.c.
  This will be used for any further modulization of commands that need to call other
  commands, like NICK (will be done soon).
- Added invite exceptions (+I). This prevents users from needing a /invite in for a +i
  channel (#0002044) suggested by medice.
- Updated help.conf's +f documentation for the new syntax
- Fixed some problems with the /stats help and documentation (#0002299) reported by Rocko.
- Corrected the help.conf documentation for /invite (#0002306) reported by White_Magic.
- Fixed a documentation inconsistency with me::numeric (#0002290) reported by Bugz.
- Fixed a problem when compiling Unreal with GUEST support (#0001758) dvzion.
- Fixed a win32 GUI problem where the tray menu's config submenu was not updated when new
  files were loaded or files were unloaded (#0002084) reported by Troco.
- Made m_template.c use CommandAdd() and CMD_FUNC()
- Modulized a lot of commands and related subfunctions: NICK (750 lines), USER (200),
  MODE (2300), WATCH (250), JOIN (600), PART (250), MOTD (100), OPERMOTD (100),
  BOTMOTD (100), LUSERS (100). More will follow soon (probably including more subfunctions
  related to existing commands).
- Various (important) fixes to above, also made win32 compile work again.
- And some more.
- Made unreal_copyfile try hardlinking first, if that fails.. it will try to copy
  (perhaps this should be a different function?). Anyway, this means less diskspace
  is needed (~1.5mb or more), and it also makes it a bit easier for RBAC (#2300).
- Made a new function DoMD5() which is ssl/non-ssl independent. Also made the cloaking
  module and the auth functions use it. Hopefully I didn't break anything ;). Suggested
  by Bugz (#2298).
- Fixed mode #chan +O set by locop causing a desynch, reported by Unim4trix0 (#0001946).
- Added spamfilter topic support ('t' in /spamfilter, or 'topic' in conf), suggested
  by Z3l3zT (#0001929).
- Updated makefile to fix compile problem, reported by vonitsanet (#0002317) [?].
  Also made loading m_*.so work again.
- Added unreal_copyfileex() which works just like unreal_copyfile() but has an additional
  param to try hardlinks first.
- Win32 crash fixes due to modulizing
- Made channel mode +c block RGB color codes.
- Fixed a bug with channel alias{}'s where using the format syntax caused a crash (#0002323)
  reported by Snake.
- Made channel mode +S strip RGB color codes.
- Added channelmode +j (jointhrottle), syntax: /mode #chan +j X:Y, and then it will
  throttle the number of joins per-user to X in Y seconds. Idea from Angrywolf (who
  wrote a module that did this before). This needs testing :).
  It's enabled by default but can be #undef'ed in include/config.h (line 449).
- Added a feature to +b ~c, ~c:[prefix]<#channel>, prefix can be +/%/@/&/~ and will
  check if the user is voiced/halfoped/etc.. Especially useful for +e ~c. Idea from
  Bugz (#0002198). Obviously all servers need to be upgraded to make this work.
- Fixed SVSNOOP bug where remote servers still thought the opers had privileges, reported
  by Zell (#0002185)
- Docs: log { } from 'optional' -> 'recomended'
- If no log { } block is present a warning will be printed out and we will fallback
  to a default of logging errors to ircd.log. Suggested by w00t (#0002327).
- Fixed shuns not working as target in spamfilter and ban version { }, reported by Bugz
  (#0002223).
- Fixed a bug where shuns placed on IP's did not take effect to currently connected users.
- Fixed a small doc bug regarding shun in spamfilter, reported by KnuX (#0002338).
- Added greek docs, translator: GSF.
- Some help.conf/005.txt updates, reported by Ron2K (#0002354).
- No longer cutoff nick upon illegal character -- just reject the whole nick. The nick is
  still cutoff if the nick is too long. Basically this is the same way as Hybrid does it
  so it should work ok :).
- Added nick character system. This allows you to choose which (additional) characters
  to allow in nicks via set::allowed-nickchars. See unreal32docs.html -> section 3.16
  for a list of available languages and more info on how to use it.
  Current list: dutch, french, german, italian, spanish, euro-west, chinese-trad,
  chinese-simp, chinese-ja, chinese.
  If you wonder why your language is not yet included or why a certain mistake is present,
  then please understand that we are most likely not experienced (at all) in your language.
  If you are a native of your language (or know the language well), and your language
  is not included yet or you have some corrections, then contact syzop@vulnscan.org or
  report it as a bug on http://bugs.unrealircd.org/
- Added swedish support for nicks, supplied by Tank.
- Various updates to unreal32docs from Ron2K (#0002354).
- set::allowed-nickchars:
  - Renamed 'euro-west' to 'latin1' since that's more descriptive/fair ;)
  - Added 'hungarian' [supplied by AngryWolf]
  - Added category 'latin2': just Hungarian for now
  - Added 'catalan' [supplied by Trocotronic]
  - Added 'greek' [supplied by GSF]
  - Added category 'latin7': alias for 'greek'
  - Added category 'gbk': alias for 'chinese'
- Removed 2 unneeded characters from 'catalan'.
- Added NICKCHARS= in PROTOCTL. This indicates which languages are accepted in nicks.
  If 2 servers try to link and the allowed nick characters do not fully match, then
  the link will be rejected. Note that this will not prevent you from 3.2.2<->3.2.3/CVS
  charsets mistakes, but only with linking CVS/3.2.3+ servers. Suggested by Troco (#0002360)
  This might need some additional testing, but initial results are positive :).
- NickChars:
  - Got rid of 'latin7', tiny mistake ;)
  - Removed e' accent from German (used in borrow-words only), reported by Dukat.
  - Added 'swiss-german', which is just German without es-zett, reported by Dukat.
  - Added 'turkish', supplied by Ayberk Yancatoral.
  - Build in some additional checks (especially for Chinese).
  - Fixed a bug in chinese character range (affecting 3.2*)
  - Relaxed nick character checking from remote servers (rely on NICKCHARS= PROTOCTL
    to deal with problems). This is useful to prevent any kills in case we slightly
    change the characters that are allowed in a language.
  - Added 'polish' (latin2), supplied by k4be.
  - Added 'hebrew' (iso8859-8I / windows-1255), supplied by PHANTOm.
- Added French example.fr.conf and help.fr.conf, translated/maintained by Babass.
- Fixed a doc typo, reported by SDF_of_BC.
- NickChars: Updated polish a bit, and added polish-w1250 which is unfortunately more
  common than real latin2 (iso-8859-2), supplied by k4be as well.
- NickChars: Added 'icelandic', supplied by Saevar.
- Updated wircd.def
- Fixed a bug where USERIP would say USERHOST in the not-enough-parameters numeric
  (#0002366) reported by vonitsanet.
- Fixed a bug causing SVSNICK not to send out a snomask +n notice (#0002359) reported by
  Rob_.
- Fixed a bug where SAJOIN would list channels multiple times in the notices (#0002325)
  reported by vonitsanet.
- Fixed a bug in mode-skipping (eg '+qk a b' if not +q) and error msgs, reported by brain2
  (#0002372).
- Fixed bug where chanmode +f #t (per-user text kick[ban]) was also affecting halfops,
  reported by seneces (#0002333).
- Fixed doc bug reported by Dukat (#0002374). Also fixed 2 error msgs related to
  the nickchars system printing out incorrect set:: directives.
- spamfilter.conf and dccallow.conf are now also copied upon make install, reported by
  TommyTheKid (#0002313).
- Made CHGIDENT, CHGHOST and CHGNAME use more numerics (where possible) (#0002358).
- Fixed halfop trying to set chanmode +G/+T/+j not getting an error message, reported
  by Ron2K (#Ron2K).
- Module coders: using extcmode_default_requirechop is now depricated, check src/extcmodes.c
  ctrl+f extcmode_default_requirechop for more details (solution: copy+paste & fill in modechar).
- Nicks with ~ are now also not cutoff anymore but rejected like any other illegal char (#0002074).
- Fixed bug in +G where with not-really-matching-words color was needlessly stripped,
  reported by SpeedFire (#0002375).
- Changed the 'is a Secure Connection' msg/numeric in /whois from RPL_WHOISSPECIAL to
  a slightly changed RPL_WHOISSECURE, namely: ':%s 671 %s %s :is using a Secure connection',
  I'm sure some client coders will be unhappy with this, but the current way is brok in 2 ways:
  - RPL_WHOISSPECIAL is meant for 1 line of additional whois info, usually an IRCOp title or
    description. Having a dedicated numeric for it allows for client-side interpretations
    and/or translations.
  - The 'is a Secure Connection' was incorrect English, this has been reported numerous times.
  The PRO's of this change are clear, the only CON is that in-window-/whois's are now
  likely not to show this line properly in-window but rather in the status window, until client
  coders implement this numeric.
  If you wonder why we didn't use RPL_USINGSSL, that's because this numeric collides with
  RPL_STATSDLINE (which we are already using for >5 years).
  If you wonder why we didn't use the RPL_WHOISSECURE numeric as-is (even though I haven't
  seen it in use anywhere), then that's because we wanted to minimize display problems in
  the transition period and the extra parameter would not be used by us anyway.
- If a locop now has can_override/can_gkline/can_gzline we will print out a warning and
  convert it to globops. This is also what we always did for can_globalroute/can_gkill
  (well, except the warning). Giving such NETWORK (GLOBAL) privileges to a LOCAL operator
  does not make any sense and is therefore no longer allowed.
- NickChars:
  - Added 'russian-w1251', supplied by Roman Parkin. There are like 7 standards
    in Russia (and like 2-3 main ones), so I didn't dare to call this one 'russian' ;).
  - Added 'czech-w1250' and 'slovak-w1250' (both might miss a few characters).
  - Added 'windows-1250' group which contains czech-w1250, slovak-w1250, polish-w1250
    and hungarian.
  - Hungarian characters show both fine in w1250 and latin2, hence hungarian is included
    both in 'windows-1250' and 'latin2'.
  - Fixed bug: polish was not included in latin2
- Fixed various OperOverride issues:
  - Opers with can_override can now +qa/-qa even if they are not netadmins,
    and they can also (un)set L/u.
  - Fixed several SAMODE bugs, such as not completely working for non-netadmins and
    not working if you were halfop'ed, etc.
  Bugs reported by pak, aquanight, niphler, Bugz, and more.
  If there are still any bugs left, please report them on http://bugs.unrealircd.org/
  NOTE: some of these enhancements will produce desynchs if your net is not 100%
        on current CVS / Unreal3.2.3 and an oper tries to use these 'new features'.
        So use with care on mixed-version nets.
- Fixed /(G)ZLINE [nick] placing the *line on *@host instead of *@IP, reported by
  Snake (#0002246).
- A warning is now sent to the oper if (s)he tries to add a (G)ZLINE on *@host.
  (G)ZLINES should have an ipmask, not a hostmask, because they are processed BEFORE
  any dns lookups are done. Therefore any (g)zlines placed will probably work
  (but not necessarily) for like an hour (or whatever TTL), but after that the
  (ab)user can get in again so this is usually not what you want ;).
  I suppose I'll add a FAQ entry about this.
- Made badwords (+G) now work with hardcoded word boundaries. Also made the fastbadwords
  system accept more characters. Basically what this means is that the (fast) badwords
  system can now be used to properly block words with accents and things like that, just
  the way you block English words. Bug reported by MJ12Helios (#0002311).
- Fixed 'russian-w1251', was not working ok at all.
- Made it so halfops can -h themselves, and chanadmins can -a themselves, reported
  by fez (#0001503).
- Made spamfilter 'u' also check nickchanges, reported by Gilou (#0002251).
- Updated doc/technical/token.txt, reported by webfox (#0002373).
- NickChars: Added 'romanian', supplied by crazytoon.
- Added 3.2.3 release notes (expected to be changed later on).
- Updated russian-w1251 (added 2 chars).
- Made the (G)ZLINE warning only happen on add, as it should. Reported by crazy.
- Made some (incorrect) -Wall warnings dissapear.
- Renamed version to 3.2.3-pre1, for Thursday. I'll keep the doc version numbers
  at 3.2.2-CVS to avoid confusion with the online semi-realtime docs ;).
** internal 3.2.3-pre1 release **
- Fixed a bug with /invite with no parameters (accidentily broken when +I was added)
  (#0002383) reported by trystanscott.
- Fixed a bug where /SAJOIN user 0 caused a desynch, reported by trystanscott (#0002384).
- Merged NICKCHARS= in PROTOCTL for now, since a seperate one is not (yet!) needed,
  reported by SolutechUK and psadi (#0002386).
- Fixed various (major) problems that the '-h yourself' caused, reported by Trocotronic
  (#0002387).
- Fix for above, also reported by Trocotronic.
** internal 3.2.3-pre2 release **
- Fixed a couple of typos in doc/example.conf (#0002393) reported by AngryWolf.
- Added documentation about channel mode +j (#0002392) suggested by Dukat.
- Added doc/help.de.conf and doc/example.hu.conf
- Fixed +s/+p and +c/+S desynch issue during netmerge, reported by Ron2K (#0002391).
- Fixed a bug where an unknown operflag would cause a crash.
- Windows versions will now be compiled with zlib 1.2.2 and curl 7.13.1.
- Made windows installer also install doc\technical\*
- Removed oldcloak cloaking module, everyone should be using the new cloak one by now.
- Updated release notes (translated docs, zlib, doc\technical, sp/cS desynch).
- Made +g get removed when an oper sets -o (#0002399) reported by Ron2K.
- Made it so the win32 version shows channel modes in /list (#0002397) reported by Ron2K.
- Fixed /SAMODE with no can_override not always working with +G/+j/+T (extcmodes), reported
  by Ron2K (#0002398).
- Added doc/example.de.conf
** internal 3.2.3-pre3 release **
- Some spelling fixes in unreal32docs.html, reported by alex323 (#2412).
- Updated the list of donators
- /SAMODE could cause 'fishy timestamp' if digit parameters were used (eg: SAMODE #chan +l 5),
  this has now be fixed by sending an explicit TS 0.
- Fixed an important channelmode +j memory corruption bug that would cause crashes, reported
  by Bergee (#0002416).
- Some clarifications on /RESTART, remote restarts were well never supported, so the docs
  are now updated on that (no code changes).
** internal 3.2.3-pre4 release **
- Corrected small doc typo in unreal32docs, reported by arbiter.
** 3.2.3 release **
- Fixed incorrect badword { } in conf causing a crash (should give an error).
- spamfilter.conf Gaggle worm sigs were broken causing odd things to match, this is because
  \\ now needs to be escaped as \\\\ due to the 3.2.3 conf change... didn't think of updating sigs.
- Clarified some nickchar stuff in the docs
- Added 'danish' nickchars, supplied by klaus (#0002436).
- Module coders: Added HOOKTYPE_LOCAL_SPAMFILTER: catches (local) spamfilter matches.
- Fixed chanmode G showing up twice in 005, reported by Snake (#0002466).
- Fixed a TKL crash on incorrect *line, reported by nanookles1234 (#0002524).
- Redid include dependencies in Makefile, this makes things safer because on any .h change it
  would force a recompile of all files, but it could mean things will be a bit slower for us
  coders unless we tweak it later on.
- Changed whois a bit to print less useless results.
- Added several indicators to the "detect binary incompatible modules"-system such as detecting
  of a ziplinks module on non-ziplinks (on windows this is ok however), nospoof module on a
  a server without nospoof server, etc. Hopefully this will help some people preventing odd
  crashes because they did not recompile or (re)install modules properly.
- Added './unreal backtrace', so far this has only been tested on Linux and FreeBSD.
- Fixed a bug making ./Config not load the previously stored settings on Solaris 10 and
  probably other Unixes, reported by lion-o (#0002474).
- Cosmetic bug in set::modes-on-join: now rejecting +I in it. Reported by Ron2K (#0002508).
- Moved all TKL code and register_user to modules (using efuncs), that means 20 functions
  and 2000 lines total that can be hotfixed if needed ;). The effort involved in moving all
  this sucks a lot though :/. This might need some more testing to make sure it doesn't break
  anything.
- Updated support OS list in documentation.
- Fixed various major bugs due to TKL move from 13h ago.
- Fixed 2 problems caused by TKL move: 1 windows crash, 1 problem with loading m_*.so,
  reported by Trocotronic (#0002553, #0002554).
- Added some TSCTL logging (this reminds me we need to add new log levels for 3.3 ;p).
- Attempt to fix bug #2431: 3.2.3 broke CNAME delegation for reverse dns. I'm sorry it took
  so long, but this stuff just plain sucks...
- Made '?*' work correctly in wildcard matches ('1 or more characters'), reported by
  Bugz (#2585).
- Added -fno-strict-aliasing.. this might well be temporary, but we get tons of strict-
  aliasing warnings, so it sounds good to disable this type of optimization for now.
- Fixed problem with crash-on-link if compiled with GCC 4, reported by jonneyboy (#2573)
  and PHANTOm (#2590).
- IPv6: Added configure check for in6addr_any to fix Fedora Core 4 compile problem,
  reported by wheatie80 (#2594).
- Added -Wno-pointer-sign (if available) to get rid of those stupid warnings that are
  enabled by default even without -Wall (!?) on GCC4.
- Fixed a bug where allow channel::channel generated a warning when specified multiple times
  (#0002427) reported by matridom.
- Fixed ~c not working properly with * and ?'s in channel names.. Now you just need to
  escape them like in all bans (eg: to ban #* you need to +b ~c:#\*). As an additional
  bonus, real wildcards are now accepted and processed (eg: +b ~c:#*sex*, just don't
  forget to specify the #). Reported by PhantasyX (#2605).
- Sidenote on above: ~c:*chan* is not supported (use ~c:#*chan* instead) because it would
  cause "hidden bans", therefore it now prints a message (which is useful anyway), but
  does accept such remote bans. In 3.2.5 or so we could enable support for it, it's
  not that important though... ;)
- Added ifdefs for mass closing of file descriptors on start, can now be disabled by
  adding -DNOCLOSEFD as a compile option. Useful for valgrind w/--db-attach=yes, mpatrol,
  and some other debugging tools (not useful for anyone normally running a server).
- Fixed a read-after-free: sptr->serv->aconf was freed but not NULL'ed in exit_client,
  causing close_connection to read from it (when deciding on doing a quick reconnect).
  Could have caused a crash, although nobody ever reported one...
- Removed useless strncpyzt with dest==src.
- Temporary workaround for spamfilter bug: action 'viruschan' in combination with the
  'u' (user) target can cause severe problems (crashes, etc). For now, we have disabled
  'viruschan' in combination with 'u'. A real fix will require quite some work, sorry.
- Fixed crash with invalid set::network-name (eg: high ascii), reported by galahad
  (#0002584), now printing an error instead (the network name is limited by the 005 spec).
- Added Bulgarian example.bg.conf, translated by Peace.
- Spamfilter: regexes (and reasons) are now more limited in size, this is to combat "I set
  a spamfilter, but cannot remove it" problems. In practice this means - depending on the
  length of your spamfilter reason - regexes will be max ~300 characters.
  Spamfilters set in the .conf can be slightly longer (which still causes them to be
  truncated in '/stats f', but they don't have to be removed anyway so it's kinda
  acceptable if it's really needed). This should fix bug #2083, reported by White_Magic.
- Fixed a bug where an invalid /*line could cause a crash, reported by Gilou (#2629).
- (5 minutes later..) Small update for above, fix was incorrect for ipv6.
- CMDLINE_CONFIG behavior change: command line configuration is now still permitted
  if #undef'ed (which is the default) if uid==euid && gid==egid, since it doesn't make
  any sense to disable it then and is in fact just plain annoying.
- Added FAKELAG_CONFIGURABLE option in include/config.h, this enables an option called
  class::options::nofakelag, which disables "fake lag" for a certain class (that is:
  the artificial delay introduced by the ircd to prevent flooding is turned off,
  allowing the user to flood at full speed).
  IT'S USE IS DISCOURAGED UNLESS YOU REALLY KNOW WHAT YOU ARE DOING.
  Sorry, option is not in ./Config -advanced since I don't get autoconf working, but it's
  such a scary option that this might as well be a good idea to keep in config.h anyway.
  This feature has been suggested for several years (and refused), but the final
  suggestion (with implementation specific hints) came from Gilou in bug #0002207.
- Fixed win32 makefile, now compiles fine.
- Fixed (important?) reference count bug regarding sptr->serv->conf. I don't know what
  effects this caused (memory corruption?), but it didn't look good ;).
- Fixed an invalid badword block in the conf causing a crash, reported by Monk (#2639).
- [Internal] Code cleanup for spamfilter target/bantype routines
- Added 'warn' target which is basically the same as 'block' except it does not block ;).
  It also sends a numeric to the user saying the command has been processed, but a copy
  has been sent to ircops. I feel this is a good idea for privacy reasons (anti-spy),
  though I don't know how users will react to this. If you are using this on your network
  and get users bothering you about it (or before that ;p), it's probably a good idea
  to explain it somewhere on your site or FAQ :).
  Example usage:
   /spamfilter add p warn - Testing_mirc_decode_filter \$decode\(.*\)
  [WARNING] The numeric text is likely to change in the next few weeks (early-cvs-commit).
- If a class block was removed and any other blocks would be referencing the class block
  (such as: allow::class, oper::class, link::class), then this would cause a crash.
  Reported by Mike_ (#0002646).
- Changed the way we build most of the .so's: the .o files of individual modules that were
  generated (for linkage by commands.so), are now used to generate the .so files of the
  individual modules as well (eg: m_setname.o -link-> m_setname.so). This reduces compile
  time ('make') on my machine by 33%, so it's quite noticable ;).
- Added doc/technical/serverprotocol.html created by aquanight (updates will follow soon).
- Documented set::channel-command-prefix a bit more, and also changed the default from
  "`" to "`!." which seems much more reasonable / widespread :).
- Some m_restart cleanups, suggested by w00t (#2652).
- Removed all old resolver code and switched over to c-ares (+our caching routines).
  This should get rid of some annoying untracable (and usually rare) crashbugs in the
  old resolver. Besides that, it makes things look more clean and understandable.
  This should be the fix for the following bugids (all the same issue): #2499, #2551, #2558,
  #2559, #2603, #2642, #2502, #2501, #2618, #2616.
  Feedback and testing is very much welcomed (syzop@unrealircd.com).
- Fixed SSL + new resolver problem, would cause an "interesting flood" of messages / 100% CPU.
  Reported by Trocotronic (#0002659).
- Fixed a problem with entries in the hosts file (such as, usually, localhost), this would
  cause an unresolved host and a 30s delay for the user, even though resolving succeeded.
- When OPEROVERRIDE_VERIFY is enabled, we now allow opers to still join any channels listed
  in set::auto-join or set::oper-auto-join, even if they are +s/+p. Suggested by ultrotter
  (#0002644).
- Added 4 UNREAL_VERSION_* macro's that can be useful for 3rd party modules to find out the
  unreal version that the user is using. I presume this can be helpful (although nobody ever
  suggested it ;p). The macros (#define's) are:
  UNREAL_VERSION_GENERATION    The generation version number        eg: 3 for 3.2.4
  UNREAL_VERSION_MAJOR         The major version number             eg: 2 for 3.2.4
  UNREAL_VERSION_MINOR         The minor version number             eg: 4 for 3.2.4
                               This can be negative for unstable,
                               alpha and beta versions.
  UNREAL_VERSION_TIME          Year + week of the day (starting     eg: 200541
                               on Monday), this is updated on
                               the CVS server every week.
  The first 3 are for nicely identifiying the version, the 4th can be useful in case
  you want to support CVS and/or want some more control.
- Fixed crash bug (due to new resolver) if not using 1 general *@* / *@* allow block,
  reported by Daniel.
- Fixed issue that could cause an alias to be added that would override a command.
- Fixed OpenBSD crash on /REHASH. Thanks to Peter Laur (OpenBSD.se) for providing us
  a shell account to trace this issue down.
- Couple of source code cleanups (svsnick, a *line msg, kill, and some useless l_commands
  code), suggested by Nazzy and Requi3m.
- Fixed extbans no longer working properly in CVS, fix provided by Nazzy (#0002681).
- Made it so you no longer can change your nick to a banned one in a channel, suggested
  by vonitsanet (#0002388), partial patch provided by Nazzy.
  This option can be turned off by setting set::check-target-nick-bans to 'no'.
- Removed useless (unused) WATCH code that was still present in the core.
- Made it so coadmins can use /ADCHAT (makes sense, since they already *received*
  adchats). Reported by RandomNumber (#0002557).
- Fixed serious flood of notices to opers if link::options::dnscache was present.
  Reported by firstof9.
- Added proper "not enough parameters" message for /SETNAME and cleaned up some whitespace
  in the function, reported by Robby22 (#0002696).
- Fixed set::static-part set to 'no' not working properly. Reported by Robby22 (#0002698).
- Fixed crash in new resolver, reported by firstof9.
- [CVS Only] Refixed name<->ip mapping check in new resolver, reported by Darko.
- Reverting "Changed the way we build most of the .so's" feature, this caused m_*.so
  to be build incorrectly. So now back at normal compile speed :p.
- Added option to apply spamfilters to aliases as well (such as /MS, etc). To do so,
  you have to put 'spamfilter yes;' in every alias block you want to get filtered.
  This is so you can have for example /MS filtered (due to heavy spam), while keeping
  /NS and /CS unfiltered. Reported by Homer (#0002496).
- The memoserv aliases (/MS and /MEMOSERV) now have spamfiltering enabled by default.
- Made the "strict aliasing"-warning-disabler use $CC instead of gcc.
- Made ./Config better react to errors (no longer print a "everything is a big success"
  kind of message when in fact everything went wrong).
- Made ./Config (configure) exit on openssl or zlib not found errors, instead of
  silently continueing and then causing trouble later on. Also now printing _a bit_
  more helpful error message.
- Made the link::options::quarantine actually do something... People that get global
  oper privileges on quarantined servers will be instantly killed. Bit ugly perhaps, but
  then it actually does what it should (prevent opers on quarantine from getting GLOBAL
  oper privileges). This "fixes" #2510, #2163 and #1968.
- Fixes for an amd64 crash problem, reported by Peter Laur (OpenBSD.se).
- Redid some net synching code to make it more efficient (#2716).
- Fixed spamfilter crash problem: the action 'viruschan' is now no longer incompatible
  with target 'user'. Reported by Monk (#0002570).
- Fixed invalid servername in quarantine kill, reported by pinstrate (#0002743).
- Fixed bug in chinese-* charset implementation that would cause crashes, reported
  and patch supplied by Xuefer (#0002744).
- Added new charsys languages: belarussian-w1251 and ukrainian-w1251. Patch provided
  by Bock (#0002724).
- Fixed memory leak in new resolver.
- Made the charsys mismatch during linking a warning instead of an error (temp. fix,
  until a good solution is implemented without false positives).
- Crashbug fix for above
- Fixed some more memleaks, thanks to valgrind.
- Updated the list of donators.
- Fixed (well, workaround) win32 /RESTART bug that caused it to popup a window instead
  of actually restarting the server properly (#0002734).
- If you now use /(G)ZLINE usermask@something instead of /(G)ZLINE *@something you get
  an error, since specifying usermask should not be done and is useless, since a (G)ZLINE
  takes place BEFORE ident lookups.
- Did the same for /(G)ZLINE *@hostmask (should be *@ipmask), this already was a warning
  in 3.2.3, and is an error now in 3.2.4.
- Little /STATS v tweak: should display 'v' in output, not 'V'. Reported by Robby22 (#2700).
- Fixed complex command aliases not working properly, patch from Nazzy (#2722).
- Made it so banned users cannot change the topic, suggested by aquanight and Stealth (#2233).
- Made the "max bans per channel" setting dynamic. This can be changed by setting
  set::maxbans in the configfile, note that you probably also want to enlarge set::maxbanlength
  as well (see docs) or else you will hit that limit first.
- Changed the default maxbanlength from 1K to 2K, which means people can set more bans because
  in pracitce the 60 (maxbans) limit was never met because the maxbanlimit was set so low.
- Empty (but existing) include files no longer cause an error. Reported by w00t (#0002460).
- Nick Character System: Silently not advertising danish if using latin1, circumventing link
  problems if using latin1.
- Removed small comment from docs, which no longer applies (sorry translators ;p).
- Updated /CREDITS (forums/mainsite hosting and update of current active supporters).
- Updated makefile.win32: apparently libcurl.dll is now libcurl_imp.dll (import library)
- Updated unrealinst.iss: made it easier for me to have 2 curl versions, this is so we can
  ship the SSL version of unreal with a curl that supports SSL (https, etc).
- Preperations for pre-1 (version change, etc)
- Updated wircd.def (for developers).
- Added doc/help.ru.conf, translated by Slyder.
** internal 3.2.4-pre1 release **
- set::maxbans / set::maxbanlength were reported as duplicates when they were not, reported
  by Jason and trystanscott (#0002753).
- Made it so bans on normal users will prevent them from speaking with +mu, reported by Nazzy.
- Made set::maxbanlength also count the "to be set" ban in, otherwise you could exceed the
  limit by (max) NICKLEN+USERNAME+HOSTNAME+2, reported by Trocotronic (#0002762).
- Switched over to an older match() routine based on hybrid, this one is a bit less optimized
  but is actually understandable and has less bugs. This fixes +b ~c:#c\*t not properly
  matching #c*t, reported by Jason (#0002752). Initial results look good, but this needs
  some good testing ;).
- Removed some old config.h stuff + clarified some text, reported by Jason (#2765, #2766).
** internal 3.2.4-pre2 release **
- Made it so a set::maxbanlength and/or set::maxbans of 0 denies all bans properly, and
  fixes the first-ban-can-be-as-long-as-you-want bug, both reported by Trocotronic (#2762).
- Fixed SVS2SNO not always notifying the user of the snomask change, reported by decoder
  (#0002767).
- Curl users using https/ftps/etc: UnrealIRCd now ships with a 'curl-ca-bundle.crt' which
  contains the (root) certificates of most major Certificate Authorities. It is basically
  the default curl ca-bundle.crt plus cacert's certificates.
  The 'curl-ca-bundle.crt' will be copied to the installation dir if needed.
  It will from now on be used by Unreal for all remote includes (curl) related certificates.
  If you want to use https but don't want to buy a certificate, we suggest you to apply for
  a free certificate at CACert (www.CACert.org). Or, alternatively, add your own certificate
  (PEM encoded) to curl-ca-bundle.crt, see 'SSLCERTS' in the curl package for more info.
** public 3.2.4-rc1 release **
- Fixed(?) bug due to match() rewrite: we now use our old rules with escaping again, due to
  the switchover we were accidently using different ones which caused funny kill messages
  like "You were killed by a.b.c (a!a.b.c (SOMENICK[N\A](?) <- d.e.f))." This also broke
  some bans in pre2/rc1. Bug reported by HERZ (#0002772).
- Fixed localhost crash (if no dns record for 127.0.0.1), reported by Trocotronic (#2773).
** public 3.2.4-rc2 release **
- Sometimes if an oper was connected trough SSL and had the junk snomask (+s +j) set it
  would cause a crash. Reported by chasingsol (#0002777).
- Updated help.ru.conf (corrections by CS-Help / Bock)
- Updated example.bg.conf (by Peace)
- Added Dutch unreal32docs.nl.html, translated/maintained by Mark.
- Redid glob matching. Escaping is now ripped out for normal bans (as it should be), this
  means no longer weird issues with +b *\* etc not banning nicks with \ in it.
  ExtBan ~c/~r get special treatment and will use our match_esc [match with escaping]
  routine, that way you can ban channels such as "#f*ck" via "+b ~c:#f\*ck".
  Fix triggered by bugreport of vonitsanet (#0002782).
** public 3.2.4-rc3 release **
- No changes (except version number)
** 3.2.4 release **
- Fixed amd64 problem regarding /*LINE always saying 'The time you specified is out of range',
  reported and test shell provided by Tauop.
- Updated example.bg.conf, the one shipped with 3.2.4 had several errors.
- The '?' wildcard was completely broken in 3.2.4, reported by tabrisnet (#0002797).
- Added unreal32docs.ru.html, translated by Bock.
- Version number NOT changed.
** Fixed 3.2.4 release **
- Updated autoconf/configure.in to make newer autoconf's work (developers only), reported
  and patch provided by Xuefer (#0002798). Also rebuilt ./configure from configure.in with
  autoconf 2.59 from my own machine.
- Updated autoconf/configure.in again (does not produce different ./configure output)
- When set::options-show-connect-notice was enabled the "*** Looking up your hostname..."
  message was not being shown (all others were). Reported by fbi (#0002820).
- Updated win32 compiling instructions; mention the free MS stuff that can be used to compile
  UnrealIRCd (untested though).
- Added CGI:IRC host spoofing support. This means you can mark specific CGI:IRC gateways as
  "trusted" and the IRCd will show the users' _real_ host/ip everywhere on IRC, instead of the
  host/ip of the CGI:IRC-gateway.
  To do so you must set 'realhost_as_password' to 1 in your cgiirc.conf. And add the
  CGI:IRC gateway(s) you fully trust to set::cgiirc::hosts.
- Fixed win32 compile problem due to CGI:IRC support, reported by therock247uk (#0002821).
- Redid whole CGI:IRC support. Configuration is now moved to cgiirc { } blocks.
  We now support the webirc ('webirc_password' in CGI:IRC) method, which is kinda superior
  to the older method ('realhost_as_password').
  See the Unreal documentation (section '4.36 - Cgiirc Block') for details on how to configure.
- Changed quoting color in unreal32docs.. looks better now IMO (only English docs updated).
- Fixed *BSD compile problem caused by changes of above, reported by 3rror (#0002823). 
- Added error message if c-ares failed to initialize, might help in case something is buggy
  (either with Unreal or the OS/environment).
- Fixed (serious) bug in CGI:IRC code, IP's were often not right, reported by 3rror (#2824).
- Fixed bug in currently unused code, reported by DeadNotBuried (#0002835).
- Modulized NAMES command (can now be upgraded on the fly, if ever needed).
- Added NAMESX support, seeing both mIRC (6.17) and XChat support this. What this does is
  send all rights of all users on the channel in the NAMES reply (eg: @+Syzop if the user is +ov)
  instead of only the highest one (@Syzop in previous example). We only do so if the client
  explicitly requested this via a NAMESX in a PROTOCTL message (eg: 'PROTOCTL NAMESX').
  Note that there is a glitch: since most clients only send the PROTOCTL NAMESX after they
  see NAMESX listed in the 005 announce message this has the effect that if there are
  set::auto-join channels present (where users are automatically joined to by the server) the
  extended NAMES reply will not be sent for those channels, because from the IRC server' point
  of view the join happened before the PROTOCTL and hence it does not know the client wanted
  NAMESX at that point (the result is not catastrophic: the old-style NAMES is sent for those
  channels). Anyway, for all non-autojoin channels this works great. So still worth adding IMO.
  Originally suggested in #0000606.
  Side note: this does not mean we dropped the idea of (also) having a challenge-response
  system for good ;).
- Updated win32 makefile due to m_names modulization, reported by Trocotronic (#0002838).
- Actually committed src/modules/m_names.c... This tends to help with the compiling process.
- Fixed possible netsplit problem (#0002790).
- Partially redid m_message, moved some stuff to a subroutine, etc to avoid duplicate code
- Rephrased/editted part of example.conf and unreal32docs to make it a littttttle bit easier
  for beginners / try to mention the FAQ a bit more explicitly.
- CGI:IRC: gzlines, zlines, throttling, and unknown connect floods are now all checked for
  clients connecting trough a CGI:IRC gateway that is in cgiirc { }. This might also fix a bug
  where (g)zlines were not applied to CGI:IRC clients, reported by devil (#0002850).
- Changed default PREFIX_AQ behavior to ON instead of OFF. Since basically all major IRC
  clients support it now (mIRC, xchat, epic, eggdrop, Klient, PJIRC, irssi, CGI:IRC, etc).
  It has always been weird that win32 had it ON by default and *NIX OFF, anyway.
  Naturally this change will be mentioned clearly in next release notes.
- Fixed (unimportant) DNS resolver problem if using some LAN domains with digits at end,
  reported by Bock (#0002843).
- Added minidump support for crashes to aid debugging a bit.
- Added chained SSL certificates support, patch provided by justdave (#0002848).
- Local opers may now use /TRACE (local only), suggested by GSF19 (#0002365).
- Removed some odd code causing a 'my port is' message to appear in (f.e.) syslog, reported
  by rsc (#0002853).
- Fixed CHROOTDIR compilation problem, reported by toshio (#0002854).
- Improved CHROOTDIR documentation in include/config.h
- Added error if CHROOTDIR is defined but IRC_UID isn't (in include/config.h).
- Hide stats request if requested by an U-lined client. Suggested by vonitsanet (#0002865).
- Made it so if the channel is +m but -t, you need at least voice (+v) to change the topic.
  Reported by aquanight (#0002233).
- Made the windows installer better compress things (SolidCompression=true), suggested
  by Trocotronic (#0002877).
- Added support for URL redirections in curl (if version >=7.15.1), suggested by Trocotronic
  (#0002879).
- Made doc/compiling_win32.txt a bit more ugly (mention that only vstudio 7.x actually works
  at this moment).
- c-ares (currently, a forked off version) enhancements:
  - '/quote dns i' now shows the nameserver settings (which is taken from /etc/resolv.conf
    on *NIX, and from the registry on Windows)
  - We no longer depend on a C++ compiler (was useless c-ares dependency caused by libtool)
  - '/REHASH -dns' now rereads the resolver data from resolv.conf/registry, no IRCd restart
    needed anymore. It's currently kinda experimental however, but I *think* it will work ok.
  Unfortunately the above features required some ugly hacks if curl was enabled, so if you
  use curl (Remote includes), feel free to test on your OS (Linux, but especially FreeBSD
  and the other *NIXes) to see if things still compile (make clean; ./Config && make).
- Made the IRCd calculate the cloaked host only once upon connect, and store (cache) it.
- When checking if a user is banned, we always check the cloakhost too. Previously we could
  not do this if the user had a /VHOST (=a minority of the cases, but still...). In short,
  this is some extra protection to combat ban evasion.
- Performance of is_banned() *slightly* improved (just 1-2 usec, but 7 usec if no bans).
- [Module coders] For extban routines, we now offer a routine extban_is_banned_helper(buf)
  which can be used instead of the ban_realhost/etc static chars stuff, see
  extban_modeq_is_banned for a (real-life) example of how this is used.
- [Services coders!] Added PROTOCTL CLK (requires NICKv2) which adds an extra field in the
  NICK command (when a user connects) right before the infofield (gecos).
  The added field contains the cloaked host, that is: the masked host if +x would have been
  set. This field is ALWAYS sent, regardless of whether the user is actually +x or not.
  Services can then store this field in memory, to know the host of the user if the user
  is set +x (+x-t). This is a (better) alternative to PROTOCTL VHP, with no race conditions,
  and avoids some other VHP problems.
  VHP will stay supported though... so it's not mandatory to switch over.
- Fixed set::maxdccallow setting to <=0 still allowing one entry to be set, reported by
  RSCruiser (#0002883).
- Fixed Microsoft Visual Studio 2005 (8.x) unable to compile, and, after fixing that, causing
  a lot of crashes. Both are now fixed. Reported by Zell, Yamake, and others (#2875, #2704).
  Fix provided by Xuefer. This also gets rid of some annoying and useless compile warnings
  as well. Also thanks to Zell for his help.
- Fixed null pointer config parser crash, reported by alkalinex (#0002894).
- Added compiler version checking to "module binary incompatability"-check. This should fix
  some more odd problems from people (eg: people switching from GCC 3.x to 4.x and wondering
  why they are crashing or getting other errors).
- Module coders: For cloaking, added a new callback type CALLBACKTYPE_CLOAK_EX (which is an
  enhanced version of CALLBACKTYPE_CLOAK). This passes 'aClient *sptr, char *host' instead
  of only 'char *host' to the cloaking module, which can be useful if you need to cloak on
  something other than IP/host. Suggested by fez (#0002275).
  Module may still provide only CALLBACKTYPE_CLOAK though, in fact this is what the official
  cloaking module does. So no updating of cloaking modules needed.
  If you do write a module with the new *_EX callback, you only need the *_EX one and not
  the CALLBACKTYPE_CLOAK as well (though it's currently np if both are present).
  A side-effect of this "extra cloaking" callback is that we needed to change make_virthost()
  which now has an extra parameter in front, and another side-effect is that calling the
  CALLBACKTYPE_CLOAK may not work since only *_EX might be available. To my knowledge there
  are very few modules (only 1 I know) that will have a problem due to this, so sounds like
  an affordable tradeoff.
- Updated sendnotice() so it sends a proper notice if the user is in pre-connect stage.
- Fixed bug with chinese-* charsets not getting detected properly by config parser.
  Reported and patch provided by Xuefer (#0002891).
- Made it so me::numeric can be changed (when not linked to any servers) so no server restart
  is needed anymore (#0002896).
- set::ssl::egd does not require a parameter per-se (bug caused few days ago), reported
  by Trocotronic (#0002899).
- (multiple?) IPv6 listen blocks could cause a crash in config parser. Reported by Robby22
  (#0002868).
- Added error checking to (main) setuid/setgid calls.
- Fixed implicit declaration compiler warning if compiling for ipv6.
- Fixed some small memory leak on rehash.
- Removed spamfilter-oversized-checking when trying to REMOVE one.. duh.. reported by satmd
  (#00029160).
- Allow *lining of literalident@* such as clones@* (but not *clones@*), this is also as
  far as we want to go with regards to relaxing "too broad" checking... Just continue to use
  services AKILL for (other) "too broad cases", as many people (correctly) do. Change
  suggested by salama (#0002911).
- Made empty command aliases work (no more "no text to send" error) if the alias finds it ok,
  which basically means if it allows .*. If you want to require a parameter, use .+ (or
  anything other in regex that requires at least one character). Suggested and patch provided
  by Nazzy (#0002722).
- Fixed oper count bug which happened on /mode, this was our fault (can't blame services in
  this case ;p). Reported by KnAseN and many others (#0002581).
  There might still be other operator count bugs, but these are triggered by a different bug
  and may or may not be caused by services.
- Added MINIMAL time synchronization support. This is enabled by default and will try to
  synchronize the IRCd clock (TSOffset) with a few good time servers. It currently only does
  this on-boot, but it will hopefully help a lot of people with most of their time differences.
  I still keep recommending anyone who can to run proper time-synchronization software such as
  ntpd/ntpdate on their servers.
  To disable time synchronization (eg: because you are already running ntp), you can simply
  set set::timesynch::enabled to no.
  The boot timeout for the timeserver response (=causes boot delay) can be configured via
  set::timesynch::timeout and is set to 3 seconds by default (range is 1s-5s), there should
  be no reason to change this.
  The time server can be configured by setting set::timesynch::server, the default is to
  use 3 time servers on 3 continents (US, EU, AU) which should be sufficient for anyone but
  if you got a good one near you you can use that one instead.
  The time protocol we use is (S)NTP v4.
- Fixed some compile warnings for Windows
- Updated windows compile instructions again.
- Updated release notes
- Added 'real' aliases, this are aliases that map to real commands, so you can for example
  map the command '/GLINEBOT <x>' to 'GLINE <x> 2d Bots are not allowed on this server, blabla'.
  See the documentation on the alias block for more information. doc/example.conf contains an
  example as well (search for "glinebot").
- Modulized: badwords system (src/badwords.c is now gone) and StripColors/StripControlCodes
  to m_message, multiple netsynch routines to m_server, send_list to m_list, a certain mode
  routine to m_svsmode, all /MSG IRC.. webtv stuff to src/modules/webtv.c which is compiled
  with m_message.
  This means another ~1500 lines of code are now in modules (and thus can be upgraded on
  the fly), which brings the total of modulized lines at 32K.
- Fixed compilation error on FreeBSD and others caused by timesynch, reported by tigra
  (#0002921).
- Fixed win32 compile problem cause by timesynch.
- Updated release notes: more modulization and real command alias support.
- Fixed crash in /STATS Z (possibly rare), reported by yasinbey (#0002929).
- Win32 makefile/installer updates for new curl/ssl
- Updated versions everywhere, bumped protocol to 2308
** 3.2.5-rc1 release **
- Added doc/example.ru.conf, translated by Bock.
- Deal with unsupported regexes added by remote servers (possible crash otherwise)
- Fixed crash problem on win32 if TKL times were <0. Obviously it's hard to protect from such
  invalid server traffic, but figured in this case it might be a good idea since *NIX does
  not crash.
- Made a note about possessive quantifiers, they are scary :P.
- Made the "voice needed when channel is +m but -t" actually work, reported by Trystan and
  Ron2K (#0002940).
- #undef STRIPBADWORDS did not work, reported by penna (#0002944).
- Made the resolver no longer check /etc/hosts, since that's how it used to be and should be.
  Saves some useless file reads.
- Fixed compile (well, configure) problem on FreeBSD if compiling with remote includes
  enabled. Reported by psadi (#0002941).
- Added translated Turkish docs (doc/unreal32docs.tk.html), translated by tt` and Timaeus.
- Fixed problem with IRCd using old link block settings if using a low connfreq, this made it
  for example near-impossible to remove autoconnect for such a server. Reported by mixx941
  (#0002836).
- Fixed problem if c-ares library is already installed system-wide, reported by Trystan.
- Updated release notes a bit (will be updated more later): backrefs (\1) in regexes are
  kinda scary, or at least at the moment.
- Removed PATCH5 from module version incompatibility system, so it can be used if we ever
  need to update stuff and not enforce modules to recompile.. Might be useful one day ;p
- Updated list of donators
** 3.2.5-rc2 release **
- Updated release notes, bleh.. I forgot :P
- Got rid of qline notice that could happen if using services holds (semi-race condition),
  reported and bugfix provided by tabrisnet (#0002950).
- Made opers with can_override able to change the topic again if not chanop and banned/+m-t,
  reported by vonitsanet (#0002952).
- Disable /RESTART if running chrooted since that won't work anyway, reported by kayelem
  (#0002956).
- On certain (newer?) FreeBSD's you get "make: Permission denied" after ./Config, but when
  you do 'cd ..' and then 'cd -' again, make works just fine. This is going to be the most
  stupid workaround in history... Reported by vonitsanet and others (#0002926).
** 3.2.5-rc3 release **
- Updated doc/technical/005.txt
- Mass version change (no code changes)
** 3.2.5 release **
- c-ares resolver: upgrade from 1.3.0 to 1.3.1. This mainly fixes compile problems,
  including one reported by frigola on an old Sun Cobalt RAQ3.
  It will probably also fix an issue with the just released curl 7.15.4, if compiling
  with remote includes.
  TODO: Update win32 (not urgent)
- Added HOOKTYPE_SILENCED: this is called whenever a message did not get delivered to a user
  because the user was on the silence list.
- Added OpenBSD 3.9 to the supported OS list.
- Made it so undefining SHOW_SECRET (not the default) properly hides +s channels from ircops
  (except netadmins), as it should. Reported and patch supplied by Jason (#0002965).
- Fixed tld::options:: not working properly, reported by DelGurth (#0003003).
- Fixed problem with oper as chanadmin kicking himself causing an operoverride notice,
  reported by Bock (as part of #2889).
- Fixed desynch problem with +Q, reported by tabrisnet (#0002992).
- Updated doc/coding-guidelines
- Added bugs.* url to /info, was still showing some email address.
- Fixed forgotten operoverride logmessage (kick if chan +Q), reported in #2889.
- Fixed operoverride message if oper is +h and -h's himself, reported by Bock (#2889).
- Fixed SVSMODE -b [user] not always removing all bans (specificly, bans on the cloaked
  host when you have a vhost), a code cleanup was also done. Based on patch from tabrisnet.
  Reported by Rob (#0002981).
- MARK: 3.3* was forked off from here
- Removed server numeric output from /MAP for normal users (still visible to ircops).
- Renamed unreal32docs.tk.html to unreal32docs.tr.html
- Module coders: Added HOOKTYPE_POST_SERVER_CONNECT (1 param: cptr) which is called when
  a server connects, just like HOOTYPE_SERVER_CONNECT but this is actually called *after*
  all clients and channels are synched. Obviously needed for some modules which must synch
  data that refers to clients/channels that would otherwise not exist yet on the other side.
- The server SSL certificate and private key can now be reloaded without requiring a server
  restart, simply use: /REHASH -ssl
- Small compile fix for above
- Fixed /SAJOIN able to join insecure users to +z channels, reported by phedny (#0002601).
- Fixed SSL crash problem due to previous SSL change.
- Fixed some bugs in webtv code that could have caused trouble in the future (off by one),
  reported by Ilja van Sprundel.
- Module coders: Fixed CALLBACKTYPE_CLOAK_EX, it was not working properly at all.
- Fixed bug in MODE #channel showing extended channel mode parameters when not in #channel.
- Made 'MODE #channel b' and friends show bans to ircops even when not in channel.
- Fix for channel mode +f: It incorrectly didn't eat a paramter on unset (ouch!), even
  though it always acted like it did in the MODE line sent to the channel. This bug caused
  desynchs in some cases. Bug reported by Korfio (#0003048).
- Fixes to SVSNICK: case-change no longer causes a collision, don't return the value from
  exit_client (which would be FLUSH_BUFFER), fix QUIT not being sent back on collision.
- Fix for above so it doesn't -r the client.
- Fixed small memory leak in resolver (~40 bytes when connecting to a server)
- Made Unreal use the original name in case of a CNAME, instead of the forwarded name,
  reported by jerrcsnet (#0003054).
- The "looking up your hostname" message was always sent, regardless of show-connect-info.
- Kick non-SSL users when the channel turns out to be +z during netmerge, reported by
  Ron2K (#0002942).
- Windows 2003: Fixed UnrealIRCd unable to boot if no DNS server is configured, we now
  fallback to set::dns::nameserver in such a case. Thanks to Romeo (reporter, #0002802)
  and Bock for tracing this down.
- Fixed cloak cutoff problem with long hosts.
- Added doc/help.tr.conf (Turkish), translated by Diablo.
- Added doc/example.tr.conf (Turkish), translated by ironic.
- Fixed zlib version check: 1.x is compatible with all 1.*, etc. (#0002966).
- Fixed a couple of add_Command/del_Command lines in m_chgname and m_helpop trying to
  add the same token twice. Didn't cause any trouble, normally, though...
- Updated ukrainian-w1251 and belarussian-w1251 charsets: some characters were previously
  included that shouldn't. Reported by avb (#0003102), patch supplied by Bock.
- Made it so that when 'java' is enabled for a listen block, then the 2nd parameter to
  NICK is not seen as a password on this port. Patch from afolentes (#0003097).
- Fixed some unitialized pointer things for win32 w/ssl on keyprompt, no idea if it
  helps, though. Would appreciate it if another code looks into this. -- Syzop
- Fixed SVSO - not removing coadmin (+C). Reported by Muisje (#0003077).
- Fixed deny link {} blocks being ignored by autoconnect. Reported by a couple people,
  also see #0003084.
- Fixed m_names.so not being build (a problem for people not using commands.so),
  reported by aegis (#0003085).
- Using SVSMODE (or SVS2MODE) to set -x will now actually remove the vhost from memory,
  instead of letting it magically reappear whenever +x is set. This means services can
  now properly "unvhost" a user by sending a "SVSMODE User -x+x" (then any existing vhost
  will be removed and user will have a cloaked host). Reported by avenger and others
  (#0002933).
- [internal] Made a spamfilter_build_user_string function that will build the spamfilter
  user target string (nick!user@host:info), insteaf of doing it at like 5 places.
- Spamfilter target 'u' (user): the host field (nick!user@HOST:realname) is now escaped
  with brackets if it's an IPv6 address, eg: blah!blah@[1:2:3:4:5:6:7:8]:hello, reported
  by aquanight and others (#0003010).
- Win32: SSL private key prompt should now no longer crash. Patch provided by Alexey
  Markevich (#0002866).
- Win32: we now no longer crash if no access to write to service.log, suggested and
  patch by Xuefer (#0002886).
- Services timestamps are now always treated as an unsigned long (0..2^32-1), instead
  of accidently as signed long during netsynchs. This bug caused issues with values
  larger than 2147483647. Reported by avenger (#0002980).
- If the 'crypt' algorithm is used, then passwords were/are truncated to 8 characters.
  We now print a warning when this happens (both on the IRC command and command-line).
  Suggested by JasonTik (#0002953).
- Win32: Fixed a few compiler warnings, suggested by Zell (#0002890).
- Moved a couple isatty() calls to DEBUGMODE (#0002945).
- Made win32 compile again, reported by Bock (#0003106).
- Moved failed oper snotices to snomask +o, and are sent out to all servers. Also now
  shows the uid attempted (like [FAILEDAUTH] does) for incorrect host or maxlogin.
- Fixed set::allowed-nickchars causing a segfault for some unknown charsets, reported
  by avb (#0003069).
- Cutoff webtv whois at MAXTARGETS (#0003004).
- loadmodule now reports proper errors when the actual file can't be found, instead of
  blaming it on the temp file, reported in #3015.
- Fixed 'SVSMOTD !' not deleting the services motd in memory, reported by avb (#0003110).
- Snomask N: Don't show nickchanges for U-lines, reported by seneces (#0002636).
- Fixed set::dns::bind-ip directive seen as duplicate, reported by aegis (#0003074).
- set::dns::* block is now no longer mandatory. All info has always been read from
  /etc/resolv.conf (*NIX) or the registry (Win32), and the set::dns block is ignored
  (except for set::dns::bind-ip, but that's a special case). Suggested by many including
  djGrrr to make things slightly more logical (#0003019).
- As a consequence of the above, set::dns blocks were removed from doc/example*conf.
- Added two more characters to Catalan charset, reported by rmh (#0002995).
- Added set::pingpong-warning [yes|no] which decides whether to send the "** If you are
  having problems connecting due to ping timeouts, please type /quote pong .." message
  to each client when NOSPOOF is enabled (usually on Win32). The default is NO.
  Previously this message was always sent if NOSPOOF was on, which often caused
  confusion among users. The message was intended for non-confirming clients, but these
  should be fixed by now, and those that were not fixed (self-made bots/etc) did often
  not understand the message anyway. Anyway, you can still turn it on ;). (#2680).
- /INVITE's from people on the silence list are now (silently) ignored, suggested by
  White_Magic (#0002478).
- Fixed a couple of typos and other one-line-text fixes at various places: reported by
  aegis (#3081), DanPMK (#2818), tabrisnet (#2974, #2970, #2467), penna (#2721),
  Brad (#2488), vonitsanet (#2467).
- Made OpenSSL version dynamic, reported by buildsmart (#0002975).
- Rejecting fake +z modes in conf, reported by rve (#0002532).
- Changed some minor Makefile stuff
- Fixed belarussian-w1251 charset.. accidently copied a "'" which caused an internal
  error, reported by Bock (#0003114).
- Added information about extbans to help.conf (/HELPOP ?EXTBANS). Patch from Bock
  (#0003113).
- Made SAPART work for mulitple channels, just like SAJOIN. Reported by Snake and
  SeigHart, patch provided by Bock (#0003064). This also fixes SAPART now being
  announced to all opers globally, just like SAJOIN.
- Finally fixed /RESTART issue on windows for good, should now always restart correctly.
  Patch provided by BuHHunyx and Bock (#0002734).
- Fixed charsys config error message sometimes saying stuff about set::accept-language,
  which should be set::allowed-nickchars (the former does not exist). Reported and
  patch provided by avb (#0003122).
- Fixed compile bug on Solaris due to missing INADDR_NONE, fix provided by Schak
  (#0003125).
- Fixed bug where omitting class::connfreq would result in a huge connection attempt
  flood when autoconnect was enabled. We now set class::connfreq to 60 if it's not
  specified. Reported by Milliways (#0003018).
- Improved description of link::hub/leaf/leafdepth in unreal32docs.html reported by Bugz
  (#2623), also fixed typo (leafdepth, not leaf-depth), reported by monas (#3083).
- c-ares resolver: upgrade to 1.3.2.
- upgraded windows c-ares (areslib.lib) as well.
- fix for above
- Added release notes for 3.2.6
- Fixed help.conf typo
** 3.2.6-rc1 release **
- Get rid of some old stuff in release notes
- Added donators since 3.2.5
- Setting set::pingpong-warning didn't work, reported by vonitsanet, patch supplied by
  avb (#0003131).
- Don't show silence list to others
- Improved detection of bad set::modes-on-oper and oper::modes, now rejecting things like
  'o', 'z', and more.
- Fix from above fixes an /OPER announce problem reported by Bock (#0003135).
- Fixed SSL bug where an outgoing connect (either autoconnect, or /connect), would not
  show any error message when it failed. Error information has also been slightly
  improved. Reported by vonitsanet (#0003138).
- Updated SVSNLINE syntax in help.conf (the remove-syntax).
- Post-3.2.5 CVS-only bug: Fixed spamfilter on user target not working properly when
  changing nicks (was still trying to match on the old nick), reported by vonitsanet
  (#0003143).
** 3.2.6-rc2 release **
- Fixed possible crash with using quarantine, reported by Sephiroth (#0003151).
- Showing even more SSL server errors now, hopefully all of them, also changed the
  error notice a bit so it's much more like non-SSL server link errors. Reported by
  vonitsanet (#0003150).
** 3.2.6-rc3 release **
- Updated release notes, mass-change of version number, no code changes.
** 3.2.6 release **
- Fixed bug where SVSO was unable to give various operflags such as q, d, X, reported
  by prodigy2k7 (#0003203).
- /WHOIS now shows the ident of local users - if ident enabled and they had an ident -
  instead of always "*" in the 'is connecting from' line. Suggested and patch provided
  by djGrrr (#0002888).
- Added ability to enable "no fake lag" for a user through through services via the
  new commands SVSNOLAG/SVS2NOLAG (syntax: SVSNOLAG [+|-] NickName). Obviously, care
  should be taken when giving such access to a user since he/she will be able to flood
  at full speed and could possibly take down the entire IRCd (well, everyone on it).
  Suggested by avb, coded by djGrrr.
- Fixed SDESC not messaging +s +s clients on local server when it is used, reported by
  dre, patch provided by djGrrr.
- Fixed SAPART causing a flood of notices from all servers, fun. Reported and patch
  provided by djGrrr.
- Changed password length from 32 to 48, is allocated dynamically anyway.
- Fixed file descriptor leakage on rehash. This resulted in [number of modules loaded]
  file descriptors being leaked upon every /REHASH.
  So if you, for example, had 3 modules loaded and rehashed 30 times, it would cause
  the ircd to consume 90 useless file descriptors (which often means 90 less file
  descriptors being available to clients).
- Fixed #0003171 reported by danieldg (typo) doc/technical
- #0003146 reported by vonitsanet, regarding Modes O,S (etc) not rejected for modes-on-connect
  fixed by djGrrr
- #0002932 reported by therock247uk, patched by WolfSage, regarding Local
  opers can /chghost /chgident /chgname on someone thats on another server on
  the network.
- #0003212 patched by Grunt, regarding /userip <someone_else> seemingly
  shows your own (cloaked) IP.
- #0002846 reported by alex323, patched by WolfSage, regarding local ircop cannot issue CLOSE command
- #3272 patched by w00t, regarding remove restrictions on NOTICE/PRIVMSG $* for opers.
- Fixed SVSKILL sending an illegal (wrong direction) QUIT right after, #0003307
- xx reported and fixed by WolfSage (addmotd, addomotd in help.conf)
- #0003159 reported by aegis and Bock, regarding typos in documentation
- #0002560 reported and patched by w00t, regarding a typo in /SAMODE
- #0002844 reported by RandomNumber: make spamfilter actions case insensitive
- help.conf updates... #0002420 reported by KnuX fixed by WolfSage
- #0003264 reported by Robby22 regarding help.conf typo
- Updated c-ares to version 1.4.0
- Updated tre to version 0.7.5
- help.conf updates. Missing some ;'s.
- #0003027 reported by Trocotronic, regarding doing -l <para> on SJOIN,
  and not -l as supposed. This may have caused desyncs
- #0003368 patched by Stealth giving users access to do /module on remote
  servers
- #0002533 reported by Dodge_Ram, patched by WolfSage, regarding notices
  not being sent when /*line and /shun are used to request stats
- Now using #0003028, with more intelligent accept() handling. The IRCd
  will now attempt to accept() up to LISTEN_SIZE (possibly saving CPU
  through this under load, and speeding up connection).
- IRCd now also sets the &me fd as being non blocking (wasn't before, that
  was odd..)
- #0003139 reported by vonitsanet, improving error messages on /connect
  when trying to /connect to a server with wildcards (* and ?) in the link
  block. We also raise an error if link::options::autoconnect is used
  together with wildcards in hostname.
- #0002040 reported by aquanight, removing dependancy on +l for +L. This
  will be backwards compatible as well, SJOIN doesn't care (TM) and mode
  doesn't either in case of a server sending it. So this will be just a
  client protocol modification. 
- Fixed SVSKILL sending an illegal QUIT
- #0003216 patched by djGrrr, regarding when you run ./Config for a second
  time after settings are saved in config.settings, the SSLDIR and ZIPLINKSDIR
  defaults are basically completely ignored.
- #0002420 reported by KnuX fixed by WolfSage
- #0003147 reported by vonitsanet, fixed by djGrrr regarding making
  spamfilters work in case of /setname
- Added oper CIDR
- #0001317 reported by thilo regarding removal of (username) being
  appended to topics set by U:Lined servers, patched by WolfSage
- #0003382 reported by stealth regarding nested C-style comments messing
  up example.conf parsing
- #0003092 reported by tabrisnet, patched by WolfSage, regarding
  documentation says
  link::bind-ip is optional, but not specifying it produces an error
- #0003232 reported by vonitsanet patched by djGrr, regarding /map is not
  shown u:lined servers to local opers and /links does
- #0003363 patched by adrianp, changing IRC_UID and IRC_GID into
  defines IRC_USER, IRC_GROUP which is a string specifiying what user name/
  group name that should be changed into, instead of a hardcoded gid/uid.
  This should make it easier for packaged binary releases to work (even
  though this probably means Debian will take us in, ick .. Can't we pull
  a new fight with debian-legal again?)
- #0003244 reported by CuLpA about grammar errors in webtv outputs
- Entering 3.2.7 RC1 phase
- Applied patch to fix some win32 problems reported by Bock, fixed by fez 
- #0003405 repoted by Stealth regarding wildcards and autoconnect being an 
  ||
- Fixed irc_uid|gid being defined on win32
- Win32 library updates from Bock
- #0003429 reported by Bock about appearing to accept multiple auth blocks.
- Fixed fixed #003244 fix.
- Applied #0003422 help.conf patches by Bock
- Applied #0002999 patch by Bock, fixing a fd leak.
- Applied #0003144 patch by Bock, fixing win32 install and such
- Applied #0003392 patch by Bock, adding some stuff to help.conf
- Entering 3.2.7 RC2 phase
- Fix, fix #0003421 patch
- Fixed wolfsage eff-up in c-ares.tar.gz, not running make distclean
- Updated /info
- Updated release notes
*** 3.2.7 release ***
- Fix aquanight's email
- #0003351 reported by Mareo regarding m_addmotd.so and m_svslusers.so 
  not being created
- Fixed bug in SJOIN, possibly causing things like odd bans showing up in
  some circumstances. Reported by Hurga, patch provided by fbi.
- Now allowing '1.2.3.4' ips again in IPv6 mode as well (instead of enforcing
  '::ffff:1.2.3.4' ips in the conf, they are now auto-converted to that).
  Based on patch from tabrisnet.
- Fixed issue where the cgiirc block did not work with IPv6, reported by
  djGrrr, fixed by previous change.
- Fixed CHROOTDIR, which was broken in 3.2.7: IRC_USER/IRC_GROUP did not work
  properly when CHROOTDIR was in use (#0003454).
- Fixed oper block bug where ip masks in oper::from::userhost did not always
  work succesfully (ex: 192.168.* worked, but 192.168.*.* didn't). Issue was
  introduced in 3.2.7, reported by tabrisnet (#0003494).
- CGI:IRC + IPv6: Fixed cgiirc block hostname never matching ipv4 cgiirc
  gateway properly (..again..), this was previously reported by pv2b.
- CGI:IRC + IPv6: Fixed issue where all cgiirc ipv4 clients were rejected with
  the message 'Invalid IP address', reported by stskeeps (#0003311), nate
  (#0003533) and others.
- Document CHROOTDIR in unreal32docs, reported by Beastie (#0002446).
- Fixed Mac OS X issue where "access denied" errors were encountered when 
  trying to read unrealircd.conf. All due to strange chmod() behavior. We now no
  longer try to set permissions on Mac OS X. Patch provided by Tibby (#3489).
- Hopefully fixed 'Overflowed unzipbuf increase UNZIP_BUFFER_SIZE' issue,
  reported by Monk (#0003453). It should be large enough now. Also changed the
  way we deal with this when it happens (if it ever happens again..): we now
  close the server connection, instead of trying to continue, because continueing
  is too dangerous.
- Remove part reason when user is banned, suggested by vonitsanet (#0003354).
- Fixed set::modes-on-join: could crash or disfunction with certain
  parameter mode combinations.
- Minor source cleanup in src/modules/m_map.c, suggested by fez (#0003540).
- Usermode modules now no longer have to be permanent (#3174), this was
  simply a bug that was introduced when adding remote includes support years
  ago.
- Channelmode modules without parameters (like: +X, but not: +X 1) no longer
  have to be permanent. Channelmodes with parameters still have to be PERM
  however, and there are currently no plans to change it.
- Fixed bug (in all Unreal versions) with parameter channelmodes, any 3rd
  party module which adds an extra parameter chanmode could cause crashes.
- Added set::level-on-join: which level should the user get when (s)he's is
  the first to enter a channel. Currently only 'none' and 'op' are supported.
- unreal32docs.html: doubt it will help much but at least this makes it a
  little bit more clear (#3548), chatops vs globops.
- ChanMode +S/+c: reverse is now stripped/blocked as well, because it's
  similar to color, and is just as annoying (..if not worse).
- So called 'smart' banning is now disabled by default, this means you can
  now set a ban on *!*@*h.com and then later add one on *!*@*blah.com without
  any trouble. Previously the second one was rejected due to the former
  already matching it. To change it back edit the include/config.h setting
  SOCALLEDSMARTBANNING.
- Fixed (G)ZLINE check.. it was incorrectly rejecting many IPv6 bans.
  Reported by guigui (#0003572).
- Backport from 3.3 away notification from Oct 2006, this is v0, a further
  patch will follow soon and the numerics will be changed.
- Ok, finished away notification in WATCH. It now shows the away reasons too.
  This new feature (away notify) is announced in 005 (ISUPPORT) as: WATCHOPTS=A

  Format is: WATCH A +UserOne +UserTwo
  
  New numerics to cope with away notification in WATCH are:
  RPL_NOWISAWAY: to indicate the user is away _when adding_ it to WATCH list
  RPL_GONEAWAY:  user was not away, but is now
  RPL_NOTAWAY:   user was away, but is no longer away
  RPL_NOWISAWAY: user was away, and still is, but the reason changed
  Example:

  WATCH A +Target
  Request to add user 'Target' to the watch list with away notification

  :maintest.test.net 609 MySelf Target ~blih test.testnet 1204309588 :not here atm
  Reply to watch add: user is online and away, reason is provided

  :maintest.test.net 599 MySelf Target ~blih test.testnet 1204309588 :is no longer away
  User is back (no longer away)

  :maintest.test.net 598 MySelf Target ~blih test.testnet 1204309722 :lunch
  State change: user is now away, reason is provided

  :maintest.test.net 597 MySelf Target ~blih test.testnet 1204309738 :shopping, bbl
  User is still away, but reason changed.

  The syntax for each numeric is:
  <nickname> <username> <hostname> <awaysince> :<away reason>
  In case of 599 (RPL_NOTAWAY) it is:
  <nickname> <username> <hostname> <awaysince> :is no longer away

  For the record, this is all based on a draft from codemastr from 2004, which was
  implemented in Unreal3.3 (devel branch) in 2006. Today, in 2008 it was updated
  with away reason support and backported to Unreal3.2. Because away notification
  hasn't been used until now (due to it only being in Unreal3.3) we felt it was
  safe to break some numerics.
- Upgraded c-ares to 1.5.1, thanks to aegis for the partial patch (#0003671).
  This also fixed a curl compile/run issue, reported by static-x (#0003545).
- Added slow spamfilter detection. For each spamfilter, Unreal will check,
  each time it executes, how LONG it takes to execute. When a certain threshold
  is reached the IRCd will warn or even remove the spamfilter. This will prevent
  a spamfilter (regex) from slowing down the IRCd too much, though it's still not
  a guarantee that it will never go to a halt (eg: in case it takes several
  minutes to execute a regex or loops forever).
  Warning can be configured via set::spamfilter::slowdetect-warn (default:
  250 milliseconds) and automatic deletion of spamfilters if it takes too
  long is set through set::spamfilter::slowdetect-fatal (default: 500 ms).
  NOTE: slow spamfilter detection is currently not available on Windows.
  NOTE 2: to disable slow detection you can set the warn and fatal settings
  to 0 (zero). OR to really disable all code, remove SPAMFILTER_DETECTSLOW
  from include/config.h and recompile.
- Added another Mac OS X hack, such as one that should help against
  'error setting max fd's to 9223372036854775807' which prevents the ircd
  from booting up. Reported by btcentral and Bock. This hack might not be
  totally correct though ;).
- Limit watch status requests to one per time, more will often flood you off
  and is stupid/useless. Reported by ash11.
- The OS version output is now taken from uname() at runtime instead of
  'uname -a' at compile time. This fixes bug #1438 and #3320 reported by
  Mouse and Monk, where because of previous behavior the IRCd sometimes would
  not compile in certain environments.
- configure script is now generated by autoconf 2.61 (was: 2.59), hopefully
  that won't cause any issues, perhaps it even helps to fix some bugs...
- #0001740 reported by Trocotronic, making the IRCd send ERROR : to all
  links with possible reason for RESTART; like /die does it. [Backport, sts]
- Added set::ssl::server-cipher-list, #002368 requested by Beastie
  [Backport, sts]
- Added set::ssl::renegotiate-bytes, set::ssl:renegotiate-timeout, #0002971
  suggested by tabrisnet. Gets activated when >0. Please set sane values.
  [Backport, sts]
- #0002475 reported by aquanight on detecting \'s in module filenames on
  win32 and not do ./module for it [Backport]
- #0002172 reported by Stealth, patched by WolfSage, fixing if you have an
  admin block, and forget a semicolon on a line, Unreal will proceed to use
  the block with no error, but the information will be incorrect/incomplete.
  [Backport, WolfSage]
- #0002833 reported and patched by tabrisnet, implementing UHNAMES
  [Backport, only slightly modified for speed]
- #0001924 - requested by syzop: Added ./unreal gencloak, which generates
  random keys 10 ~ 20 characters in length (*NIX only). [Backport, aquanight]
- #0003313 reported by Stealth, regarding not erroring/warning when me::name
  is bigger than HOSTLEN, from now it will error on config read. [Backport, sts]
- /REHASH -all not case sensitive
- Win32 makefile: removed /MAPINFO:LINES, since visual studio 2005 and up
  don't support this and will fail to compile UnrealIRCd. This fixes #3680,
  reported by therock247uk.
- Upgraded c-ares to 1.6.0 (also now using pkg-config).
  If you get a "undefined reference to `clock_gettime'" error, then you
  might consider installing 'pkg-config' on your system, and then simply re-run
  ./Config and make, should fix things.
  TODO: testing! testing! i'd like to be sure this c-ares is stable!
- Win32 compile fixes.
- Upgraded c-ares on windows to 1.6.0 as well.
- Win32: build w/manifest. Looks like Unreal@Win32 now actually works again :).
- except ban { } is now also effective against Z:lines. It already protected
  when the user was connected, but not once he/she tried to reconnect, this
  is now fixed. Reported several times, last by Stealth in #0003377.
- Fix crash if settime/expirytime is out of range in TKL, set by another server.
  Should never happen except when using faulty services or when something else
  got horrible wrong (like a date which is 40 years ahead). Reported by
  Darth Android (#0003738).
- Fix NAMES with UHNAMES support, screwed it up at 'Win32 compile fixes' a
  few lines up...
- Fix OOB read caused by UHNAMES support.
- Added some countermeasures against crash-on-boot, #0003725 and #0003653,
  reported by Ablom2008 and mist26.
- Win32: rebuild TRE for Vstudio 2008 (and ditch C++ / MSVCP... dependency).
- Added release notes (not finished yet).
- Added set::watch-away-notification which can be set to 'no' to disable
  WATCH away notification. The default is 'yes' (=enabled).
- Fixed crash which could happen when rehashing while linking to a server,
  this could be #0003689 reported by Monk.
- New HOOKTYPE_LOCAL_NICKPASS: the 2 parameters are: sptr (client) and nsptr
  (NickServ client, NULL if not present). You can return 1 (HOOK_DENY) to
  make the IRCd not send IDENTIFY to NickServ. Suggested by tabrisnet
  (#0003739).
- A notice is now sent when listing spamfilters through /SPAMFILTER just
  like /stats f. Bug #0003752 reported by Strawberry_Kittens, similar to
  #0002533.
** 3.2.8-rc1 release **
- Added documentation for set::spamfilter::slowdetect-warn,
  set::spamfilter::slowdetect-fatal, set::ssl::server-cipher-list,
  set::ssl::renegotiate-bytes, set::ssl::renegotiate-timeout,
  set::watch-away-notification and ./unreal gencloak. Reported by Bock
  (#0003764).
- set::ssl::renegotiate-bytes: fix when specifying a value such as 10m.
- './unreal gencloak' now actually works
- Fix typo in user mode q notice, reported by Strawberry_Kittens and others
  (#0003761). Patch provided by Stealth.
- Fix for Mac OS X compile problem (in setpgrp), reported by Bock / Jckf
  (#0003767).
- Possible fix for MAC OS X compile problem
- Bump docdate..
- Fixed OperOverride bug: if you are halfop you couldn't -q/-a, reported
  by Strawberry_Kittens (#0003758).
- Added note to release notes regarding Suse 10.3 on amd64 causing a crash
  on-boot. #0003725, #0003653, #0003791.
- Updated regex documentation in unreal32docs, it had some incorrect
  statements regarding wildcards. Reported by james2vegas (#0003800).
- Added some big warnings regarding big timeshifts. 
  In the IRCd world correct time is very important. This means that time
  should be correct when the IRCd is booted, either by running ntpd/ntpdate
  on the system or some other synchronization software, or by using the
  built-in timesync feature.
  Whenever the clock is adjusted for more than a few seconds AFTER the IRCd
  has booted, it can lead to dangerous effects ranging from unfair timestamps
  for nicks and channels (and hence the possibility to takeover channels),
  to even completely stalling the IRCd (negative timeshift) or making it so
  nobody can connect anymore due to throttling (positive timeshift).
  We now try to 'fix' the worst effects such as the IRCd freeze and
  throttling. This does not fix the whole problem, so I've added some big
  warnings when the clock is adjusted, including an annoying one every 5
  minutes if the clock was set backwards, until the time is OK again
  (catches up with the original time).
  This fixes #0003230 reported by Stealth, and #0002521 reported by durrie.
- Throttling time is now more accurate, especially with larger time values
  such as 3 connections per 60 seconds. Previously that -could- result in
  3 per 90 seconds due to timer inaccuracy (which was max <time>*1.5), now
  it would be max 65 seconds (max 5s inaccuracy, lower with lower times).
- Smallll fix for time shift protection
** 3.2.8-rc2 release **
- Some text fixes regarding time shift feature
- Fix for compile problem on FreeBSD (and possibly other OS's):
  - When pkg-config is present but does not recognize --static, use
    default c-ares library options.
  - Set default c-ares library options to -lcares on FreeBSD and others.
    Set to -lcares -lrt on Linux (previously was -lcares -lrt for all).
  Thanks to goldenwolf for the bugreport (#0003803) and providing a test-
  shell to trace this issue down.
** 3.2.8-rc2 *NIX downloads replaced **
- 'link xx with SSL option enabled on non-SSL compile' was incorrectly
  printed out as a warning, when in fact it's an error (and was treated as
  such). Same for ZIP on non-zip compile. Reported by Stealth (#0003833).
- Fixed harmless (but silly) message which happened on every IRCd boot
  (time jump message).
- Updated credits (donations)
** 3.2.8 release **
- Fixed (serious) security issue regarding allow::options::noident,
  reported by meepmeep (#0003852).
** 3.2.8.1 release **
- Fixed compile issue on Solaris regarding c-ares (-lrt), reported and
  test shell provided by fraggeln (#0003854).
- Improved automatic SSL detection on Solaris (/usr/sfw), reported by
  fraggeln (also #0003854).
- Don't do show-connect-info on serversonly ports
- Fixed crash on Linux (with a 'new' dynamic linker) when a module has
  been updated and then reloaded. From now on we just copy to a tempfile,
  and never hardlink. (bug #3557).
- Print out an error if a user uses standard ./configure stuff instead of
  ./Config. Won't catch all cases, but will definitely catch most problems.
- Update some urls
- Added ./configure option called --with-system-tre by which you can specify
  a path to the TRE library (instead of using the TRE we ship with Unreal).
  Patch provided by ohnobinki (#0003842).
- Applied another patch from ohnobinki which adds --with-system-cares
  (#0003847).
- Comitted Windows Installer fix that was put in 3.2.8.1, fixing
  #0003845 and #0003809 (MS Visual Studio Redistributable package automatic
  installation).
- Fix /VERSION output on Windows, especially for Vista and newer Windows,
  patch from BuHHunyx and Bock (#0003846).
- Fixed issue where a negative time offset (either caused by ircd.tune or
  timesynch) made autoconnect not work for the duration of the offset
  (eg: -60 would make autoconnect wait 60 seconds after boot, instead of
  autoconnecting almost immediately). Reported by aragon (#0003853).
- class name 'default' is reserved. Using it caused the ircd to crash
  on-boot, reported by Dragon_Legion (#0003864).
- Fixed IPv4 ip's in link::bind-ip on IPv6 builds. This caused issues ranging
  from not binding to that ip when linking, to not being able to link at
  all. Also fixed a very small memory leak upon /REHASH. Bug reported by
  Mr_Smoke (#0003858).
- Applied patch from k4be (#0003866) which introduces a new packet hook
  (HOOKTYPE_PACKET). Replacing the 'text to be sent' to a client is
  supported, which allows character(set) conversion in a module.
  Note that modifying an incoming message by the hook is not supported.
- Applied patch from ohnobinki (#0003863) which makes run-time configuration
  of files (tune, pid, motd) possible.
- Fixed bug reported by mut80r (#0003867) where locops didn't get a
  proper vhost when set::hosts::local had a 'user@host' syntax instead of
  just 'host'. Also fixed a bug with regards to +x on-oper with locops.
- When an incorrect command line argument is passed, the IRCd will no longer
  boot. Previously it said 'Server not started' but started anyway.
  Reported and patch provided by ohnobinki (#0003870).
- Added special caching of remote includes. When a remote include fails to
  load (for example when the webserver is down), then the most recent
  version of that remote include will be used, and the ircd will still boot
  and be able to rehash. Even though this is quite a simple feature, it
  can make a key difference when deciding to roll out remote includes on
  your network. Previously, servers would be unable to boot or rehash when
  the webserver was down, which would be a big problem (often unacceptable).
  The latest version of fetched urls are cached in the cache/ directory as
  cache/<md5 hash of url>.
  Obviously, if there's no 'latest version' and an url fails, the ircd will
  still not be able to boot. This would be the case if you added or changed
  the path of a remote include and it's trying to fetch it for the first time.
  To disable this new behavior, check out REMOTEINC_SPECIALCACHE in
  include/config.h.
- set::level-on-join now also supports voice, halfop, protect and owner.
  Requested by katsklaw (#0003852). Partial patch provided by katsklaw and
  morpheus_pl.
- Added initial support for "stacked" extbans. Please see the Changelog item
  further down (250 lines or so) for more information, as it was heavily
  reworked later on and the API was changed.
- Misc fix for disabling stacked extbans, should've done stuff in our autoconf
  stuff instead of hacking configure directly :P .
- Made the timesynch log output more clear and understandable.
- Added an 'UnrealIRCd started' log message on startup.
- Added support for STARTTLS. This allows users to switch to SSL without
  having to use a special SSL-only port, they can simply switch to SSL on
  any port. This is currently only supported by few clients (such as KVIrc 4).
  This functionality can be disabled by setting set::ssl::options::no-starttls,
  for example if you don't want to offer SSL to your users and only want it
  to be used for server to server links.
  Naturally, the IRCd must be compiled with SSL support for STARTTLS to work.
- Fixed SSL_ERROR_WANT_READ in IRCd_ssl_write()
- Use RPL_STARTTLS/ERR_STARTTLS numerics
- Removed log target 'kline' from documentation, as it didn't do anything
  (use 'tkl' instead). Reported by nephilim and Stealth (#0003849).
- Server protocol: added PROTOCTL EAUTH=servername, which allows us to
  authenticate the server very early in the handshake process. That way,
  certain commands and PROTOCTL tokens can 'trust' the server.
  See doc/technical/protoctl.txt for details.
- Server protocol: between new Unreal servers we now do the handshake a
  little bit different, so it waits with sending the SERVER command until
  the first PROTOCTL is received. Needed for next.
- Server protocol: added PROTOCTL SERVERS=1,2,3,4,etc by which a server can
  inform the other server which servers (server numeric, actually) it has
  linked. See doc/technical/protoctl.txt and next for details.
- When our server was trying to link to some server, and at the same time
  another server was also trying to link with us, this would lead to a
  server collision: the server would link (twice) ok at first, but then a
  second later or so both would quit with 'Server Exists' with quite some
  mess as a result. This isn't unique to Unreal, btw.
  This happened more often when you had a low connfreq in your link blocks
  (aka: quick reconnects), or had multiple hubs on autoconnect (with same
  connfreq), or when you (re)started all servers at the same time.
  This should now be solved by a new server handshake design, which detects
  this race condition and solves it by closing one of the two (or more)
  connections to avoid the issue.
  This also means that it should now be safe to have multiple hubs with low
  connfreq's (eg: 10s) without risking that your network falls apart.
  This new server handshake (protocol updates, etc) was actually quite some
  work, especially for something that only happened sporadically. I felt it
  was needed though, because (re)linking stability is extremely important.
  This new feature/design/fix requires extensive testing.
  This feature can be disabled by: set { new-linking-protocol 0; };
- Made ./Config description about remote includes a bit more clear.
- When you now answer Yes to Remote includes in ./Config and $HOME/curl does
  not exist, it now asks you if you want to automatically download and
  install curl (which is done by ./curlinstall).
  This has been tested on Linux, further testing on f.e. FreeBSD is required.
- Fixed a /RESTART issue on Linux: Unreal did not properly close all file-
  descriptors. Because of this, Unreal did not restart properly as you would
  get an "Address already in use" error. This only seemed to happen when
  logging to syslog, or when there was something wrong with syslogd.
  Reported by Mouse (#0003882).
- Fixed a similar issue with syslog (and debugmode) and closing fd's as well:
  the first port we listened on would not open up, ircd did not log any error.
- Added set::uhnames setting which can be used to disable uhnames by setting
  it to 'no', the default is 'yes' (on). Requested by Robin (#0003885) as
  UHNAMES may increase the time of the nick list being loaded from 1 to 4
  seconds when joining several channels with more than 1000 users. As this 
  problem is only present on some networks, we keep UHNAMES enabled by default.
- Added patch from ohnobinki (#0003888), only slightly edited, which improves
  curl detection, added checks to see if curl actually works (print out a
  clear curl error during configure, instead of getting an error during
  'make'), and we now error when using --enable-libcurl without
  --with-system-cares if the system curl depends on c-ares. This is because
  this can cause ABI incompatability between curl's c-ares and our c-ares,
  which leads to odd issues such as:
  Could not resolve host: www.example.net (Successful completion)
  And possibly other weird issues, perhaps even crashes.
- Patch from above is (temp.) reverted, Unreal wouldn't compile without curl.
- Reverted the revert and updated one line to fix the fix.
- Fix for --with-system-cares, reported and patch provided by ohnobinki
  (#0003890).
- Another c-ares fix for Solaris 10, this time it had to do with
  PATH_SEPARATOR, the exact error was: error: PATH_SEPARATOR not set.
  Reported by j0inty, patch provided by ohnobinki (#0003887).
- Updated pkg-config m4 macro (now 0.23) for configure, patch from ohnobinki
  (#0003889).
- Better document /REHASH flags. No longer document some flags as they are
  redundant and confusing. Also removed an old statement saying k-lines would
  be erased on rehash which is not true. Documented '/rehash -dns'.
  Reported by ohnobinki (#0003881).
- We now no longer treat \ (backslash) in *MOTD and RULES files as special.
  Previously this caused some really odd behavior. Backslashes are now
  treated as-is, so no special escaping is necessary. Reported by DelGurth
  (#0003002).
- Removed old dgets() and crc32 function (code cleanup)
- Updated ./Config description for NOSPOOF, it already said it protects
  against HTTP POST proxies, now added some extra text to say it also
  protects against the Firefox XPS IRC Attack. Also made NOSPOOF enabled by
  default on *NIX (this was already the case on Windows).
- Updated ./Config description for DPATH. Seems quite some people answer
  this question wrong, and when that happens, you only get some obscure
  error when running './unreal start'.
- Fixed 'unreal' script to give a better error if it cannot find the IRCd
  binary.
- Made '/REHASH -motd' really rehash *all* MOTD, OPERMOTD, BOTMOTD and RULES
  files. Reported by bitmaster (#0003894).
- IPv6: it seems some recent Linux dists decided to make IPv6 sockets
  IPv6-only, instead of accepting both IPv4&IPv6 on them like until now.
  FreeBSD (and other *BSD's) already did that move a few years back,
  requiring server admins to sysctl.
  We now make use of a new option to explicitly disable "IPv6-only".
  This should work fine on Linux.
  Whether it provides a complete solution for FreeBSD, I don't know, testing
  is welcome! In theory setting net.inet6.ip6.v6only to 0 should no longer
  be needed, but you might still need to enable ipv6_ipv4mapping.
- Fix stupid issue where current CVS would no longer link TO an earlier
  Unreal server (eg: outgoing connect to a 3.2.8 hub). Reported by ohnobinki
  (#0003901).
- Update Unreal.nfo with information about new support network setup (#0003904)
- Remove the ``Compile as hub/leaf'' concept as I'm quite sure this doesn't
  actually do anything (#0003891)
- Clarify/expand alias block documentation, especially for alias::type=command;
  (#0003902)
- Fix -DDEFAULT_PERMISSIONS=0 support. Previously, support.c:unreal_copyfile()
  would create files with no permissions, breaking loadmodule. (#0003905)
- Remove m_addline from commands.so
- Removed ugly ``files {} got initialized!'' message.
- SVSMODE now triggers HOOKTYPE_UMODE_CHANGE and HOOKTYPE_REMOTE_CHANMODE.
- Added chmode +r to HTML documentation.
- ./Config now remembers extra/custom ./configure parameters.
- Fixed bug in CVS where the ban exempt (+e) handling was reversed: if a
  non-matching +e was present, one could walk through bans. Reported by
  tabrisnet (#0003909). Bug was caused by stacked extbans.
- Partially fixed bug where IPv4 addresses were randomly mishandled by the
  cgiirc code, resulting in the sockhost/hostmask being set to something like
  ::ffff:127.0.0.1, which confused the s2s protocol. Reported by tabrisnet
  (#0003907). Also, reject incorrectly formed hostnames from WEBIRC command.
- More strict sockhost (hostmask) checking in m_nick.c:_register_user(). Fixed
  some bad string handling as well. See comments in bug (#0003907).
- Throw out old USE_POLL code which 1. has no buildsystem support and 2.
  has comments which claim it doesn't work.
- Removed extraneous apostrophe from a module loader error message.
- Added error message for unknown directives in the "files" block
- Remote MOTD support. Not adequately tested. Required restructuring of the
  asynchronous download callback and handler. (#)
- Added some consts throughout url.c, etc.
- Fix segfault where the an include directive specifies a URL and cURL follows
  redirects, resulting in a different resultant URL. The remote includes code
  would look for the an include block using the resultant URL and assume that
  it would be found. The new code searches differently, has new checks, and
  ignores the resultant URL.
- Removed duplicated m_motd() and friends that were both in modules and s_serv.c.
  The copies in s_serv.c (core) were overriding the in-module functions.
- Forgot to commit the REMOTEINC_SPECIALCACHE stuff to config.h which means
  it wasn't actually enabled until now...
- Fix typo
- Fix files::shortmotd to by accepted by unrealircd like the docs say it is.
- Fix remote includes download handling which I broke for remote includes ;-).
- Recursively add more consts.
- Rename configure.in to configure.ac and modernize AC_INIT.
- Handle bad flags in set::ssl::options better (#0003896).
- When removing a SHUN, check if users who were blocked by this SHUN are still
  blocked by another SHUN. Previously, if multiple shuns covered a single user,
  removing one of these shuns would mark the user as un-SHUN-ed. (#0003906)
- Fixed race condition / reference count issue where an outgoing server connect
  would cause the IRCd to crash. Reported by Monk (#0003913).
- Replaced some coders@lists.unrealircd.org references with bugs.unrealircd.org
- Fixed desynchronized prototype.
- Fixed a few trivial compilation warnings.
- Move configure.ac to the project's root.
- Separate m4 macros into *.m4 files (it is much easier to run aclocal now).
- Remove unused DOMAINNAME macro and --with-hostname= options as the DOMAINNAME
  macro isn't used anywheres and its use shouldn't be encouraged.
- autogen.sh to bootstrap the buildsystem. We now maintain setup.h with autoheader.
- --disable-blah now does the opposite of --enable-blah. The same for --with-blah
  and --without-blah. (This makes Gentoo users happier).
- Attempt to make up for Windows not having mode_t and not complying to POSIX.
- Fix references in src/win32 to aMotd to now be to aMotdFile.
- Fix references to motd and friends in src/win32. (#0003918)
- Remove include/nameser.h and reference to nameser.h from s_bsd.c. The associated
  functionality has been provided by c-ares for a long time.
- Remove remaining nameser.h references from Makfiles.
- Prevent stacked bans (like +b ~q:~q:~n:~c:#chanel) from crashing unrealircd due
  to over-recycling a static buffer. Discovered by syzop.
- helpop documentation for stacked extbans.
- Updated doc/coding-guidelines
- Fixed some odd behavior with SVSMODE and +z/-z, reported by TehRes (#0003498),
  fixed a strange SVSMODE +d <non-number> bug where it would act as a +x too.
- The patch from #0003888 made ./Config favor the curl in /usr, even if it
  was not compiled with c-ares, which is clearly a bad idea as then the
  entire IRCd can hang for several seconds or more...
  We now check if they support asynch DNS, and skip them if they don't.
- Remove extraneous `I' from configure.ac, run ./autogen.sh. (#3930)
- Added some checks in ./Config which (often) ensures that the self-compiled
  curl version is new enough and is not using a c-ares which is binary
  incompatible. If the self-compiled curl version is (too) outdated, then we
  now suggest to rename it and have the installer re-download and compile
  it automatically. This avoids some potential crashes.
- Give more clear error to users who use ``make custommodule'' without
  MODULEFILE. (#3935)
- Support compiling with a bundled c-ares again, the hacky way. (#3931)
- The configure.ac change silently changed the nospoof parameter in
  ./configure. This meant that the answer to NOSPOOF in ./Config was ignored
  and it was always enabled.
- Initialize ARG parameter properly in ./Config, otherwise everything fails.
- Fixed similar bug like nospoof with ./Config, but now with prefixaq.
- Same for IPv6
- Now define _SOLARIS, USE_LIBCURL, and ZIP_LINKS in setup.h instead
  of the Makefiles. This means better automatic rebuilds if the latter
  settings change.
- Updated unreal32docs:
  - Remove browser compatibility listing.
  - Added information about ``oper::password::auth-type sslclientcert''
    and the same for link::password-receive::auth-type.
  - A little bit more of interlinking and using id="" instead of <a
    name="" />
  - Some minor tweaks
- Fix the detection for curl-without-c-ares a little (#0003940).
- Add an extban of the schema +b ~j:*!*@* which _only_ prevents a user
  from joining a channel. (#3192)
- Fix src/Makefile's lack of depencencies for modules.c, related to
  #3938.
- Fix a few compiler warnings with some double-casting and another
  const. (#3939)
- Define intptr_t in win32's setup.h. (#3939)
- Upgraded c-ares to 1.7.3. API seems compatible with
  c-ares-1.6.0. (#3932)
- Force compilation with bundled c-ares to statically link using more
  sed hackery in configure.ac.
- Remove extras/c-ares before each time c-ares is compiled.
- Uniform naming for 'stacked extbans' in Changelog/etc.
- Make extended bans documentation more clear by splitting the extbans in
  two groups: one that specifies ban actions (~q/~n/~j) and one that
  introduces new criteria (~c/~r). Also added documentation for ~R which
  does not exist yet, but will soon...
- This is actually an update of earlier code from CVS, but now it works ok:
- Added support for "stacked" extbans. Put simply this allows extban combinations
  such as ~q:~c:#test to only silence users on #test, for example. This feature
  is enabled by default, but can be disabled during ./Config -advanced.
  This feature was suggested by Shining Phoenix (#0003193), was then coded
  by aquanight for U3.3, and later on backported and partially redone by Syzop.
  Module coders:
  In an extban ~x:~y:something where we call ~x the 1st, and ~y the 2nd extban:
  Since stacked extbans only makes sense where the 1st one is an action
  extended ban like ~q/~n/~j, most modules won't have to be changed, as 
  their extban never gets extended (just like ~c:~q: makes no sense).
  However, you may still want to indicate in some cases that the extban your
  module introduces also shouldn't be used as 2nd extban.
  For example with a textban extban ~T it makes no sense to have ~n:~T.
  The module can indicate this by setting EXTBOPT_NOSTACKCHILD in
  the ExtbanInfo struct used by ExtbanAdd().
  For completeness I note that action modifier extbans are indicated by
  EXTBOPT_ACTMODIFIER. However, note that we currently assume all such
  extbans use the extban_is_ok_nuh_extban and extban_conv_param_nuh_or_extban
  functions. If you don't use these and use EXTBOPT_ACTMODIFIER, then things
  will go wrong with regards to stack-counting.
  Module coders should also note that stacked extbans are not available if
  DISABLE_STACKED_EXTBANS is defined.
- Added extended ban ~R:<nick>, which only matches if <nick> is a registered
  user (has identified to services). This is really only useful in ban
  exemptions, like: +e ~R:Nick would allow Nick to go through all bans if he
  has identified to NickServ. This is often safer than using +e n!u@h.
- Added Extended Invex. This is very much like extended bans, in fact it
  supports some of the same flags. Syntax: +I ~character:mask
  Currently supported are: ~c (channel), ~r (realname) and ~R (registered).
  This can be useful when setting a channel invite only (+i) and then
  setting invite exceptions such as +I ~c:#chan (or even ~c:+#chan), while
  still being able to ban users.
  Because action modifiers (~q/~n/~j) make no sense here, extended invex
  stacking (+I ~a:~b:c) makes no sense either, and is not supported.
  Suggested by DanPMK (#0002817), parts based on patch from ohnobinki.
  Module coders: set EXTBOPT_INVEX in the ExtbanInfo struct used by
  ExtbanAdd() to indicate that your extban may also be used in +I.
- Invex (+I) now always checks cloaked hosts as well. Just like with bans,
  it checks them also when the user is not currently cloaked (eg: did -x, or
  is currently using some VHOST).
- Fixed client desynch caused by (un)banning, reported by Sephiroth (#2837).
- IPv6 clones detection support (#2321). allow::ipv6-clone-mask determines
  the number of bits used when comparing two IPv6 addresses to determine if
  allow::maxperip is exceeded. This allows an admin to recognize that most
  IPv6 blocks are allocated to individuals, who might each get a /64 IPv6
  block. set::default-ipv6-clone-mask defaults to 64 and provides default
  value for the allow blocks.
- Upgrade to tre-0.8.0, adding hack similar to the one for c-ares to
  ensure that the bundled tre is compiled against even when a system
  libtre is installed. (#3916)
- Install ircdcron scripts. (#2620)
- Autogenerate ircdcron/ircd.cron based on ./configure settings.
- Get rid of any setsockopt(IPV6_V6ONLY) errors in ircd.log (#3944).
- Actually initialize m_starttls when it's included into commands.so.
- Prepend a `0' to the begining of --with-permission, working around a
  Mac OS X bug and hiding the fact that chmod()'s params are octal
  from users. (#3189)
- Warn users against running UnrealIRCd as root without setting
  IRC_USER. (#3053 reported by Stealth)
- Remove snomasks upon deopering when it seems like the user shouldn't
  have snomasks. (#3329)
- Fix /msg IRC WHOIS response for persons with secure connections. (#3947)
- Fix segfault by checking if RESTRICT_USERMODES is NULL in the code
  for bug #3329.
- Don't use sys/errno.h, as it's not POSIX and breaks on QNX-6.5.0. (#3955)
- Fixed another compile problem on QNX, reported by chotaire (#3955 too).
- Fixed incorrect messages regarding clock going backwards on QNX 6 and
  later, reported by chotaire (#0003956).
- Reverted an IPv6/Config fix I did on July 17. Reported by chotaire (#3958).
- Document the badword block more explicitly and clearly. (#3959)
- Add the m_nopost module written by syzop and compile it into
  commands.so. This module was written to help IRCd maintainers deal
  with some sort of ``XPS'' attack in which javascript-initiated HTTP
  POST form submissions were able to act as dummy IRC bots. These
  simple bots were the cause of much spam. Note that enabling NOSPOOF,
  which was the default on Windows and is now also the default on *NIX,
  already stops the troublemakers from getting on IRC. However, the nopost
  module kills them right away, rather than have them idle for 30 seconds
  which could consume all your connections, preventing (legit) users
  from being able to connect (#3893).
- Add a modules section to the documentation. This was created to put
  all documentation specific to the m_post module in one, easy to find
  place. The documentation on m_post is likely incomplete, however.
- Fixed notices to opers about server delinks not being broadcasted to all
  other servers if they were on SSL links. Reported by chotaire (#0003957).
- SSL errors are now more descriptive. In some cases, like server to server
  links it was still showing 'Underlying syscall error', this has now been
  replaced to show the actual (surprise!) underlying syscall error instead.
  Reported by vonitsanet, patch from ohnobinki (#0003157).
- Fix ordering of ``9. FAQ'' and ``10. Modules'' in HTML docs.
- Always display the real host of successful OPERing up. Reported by
  Josh. (#3950)
- Fixed braindamage in stacked bans.
- Add m_nopost to makefile.win32 in the hopes that it may work (#3961).
- Document spamfilter 'warn' action in unreal32docs.
- Fix missing OperOverride notices for +u and +L if not chanowner, reported
  by Mareo (#0003358), partial patch from goldenwolf.
- Updated doc/compiling_win32.txt with current free MS SDK information,
  patch from goldenwolf.
- And another m_nopost makefile.win32 fix.
- Some small updates to the extended channel mode system: it now has minimal
  support for 'local channel modes'. This is really only meant for channel
  mode +Z (upcase z), see next.
- Added Channel Mode Z which indicates if a channel is 'secure' or not.
  This mode works in conjunction with +z (lower case z).
  If +z is set ('only secure users may join'), then the IRCd scans to see
  if everyone in the channel is connected through SSL. If so, then the
  channel is set +Z as well ('channel is secure').
  Whenever an insecure user manages to join, the channel is -Z. And whenever
  all insecure users leave, the channel is set +Z.
  The 'insecure user being present in a +z channel' can be because:
  - An IRCOp joined the channel, and he's not secure
  - When servers link together and a user on the other side is not secure
    This only happens on net merge (equal time stamp).
    On different time stamp, we still kick insecure users on the new side.
  - At the time when +z is set, there are insecure users present.
  This feature was implemented after a heavy discussion in bug #3720 by fez
  and others, and was suggested by Stealth.
  Tech note: +Z/-Z is handled locally by each server. Any attempt to
  remotely set +Z/-Z (eg: by services) will be ignored.
- As mentioned above, +z can now be set even if any insecure users are
  present. Previously, this was not permitted. Now, as soon as the last
  non-SSL user leaves, the channel will be set +Z.
- An oper not connected through SSL previously had to /INVITE himself
  to a channel and then /JOIN the channel with the key 'override'.
  This 'override' key is no longer required, a simple JOIN will suffice.
- Sorted channel modes in /HELPOP ?CHMODES
- Re-enabled 'fishy timestamp' errors in MODE. For some reason this was
  commented out, even though the (more annoying and less useful) code in
  JOIN was enabled so that did not make a lot of sense. It also now logs to
  ircd.log (or whatever you configure). This enables people to easier find
  the cause of any timestamp issues (which usually is badly coded services).
- Win32 installer: Make it so a user can no longer accidentally check both
  'install as service' and 'encrypt SSL certificate', as they are
  incompatible (a service cannot ask a user to enter a password).
  Reported by HotFusionMan (#0003848).
- Win32 installer: Fixed long outstanding problem with some Vista / Windows 7
  installations, which has to do with file permissions of the Unreal3.2
  folder. Symptoms were error messages such as:
  Unable to create file 'tmp/10D9D743.commands.dll': Permission denied
  But also failing to create SSL certificates, nothing being logged, etc.
  This is now fixed by setting write access on the Unreal3.2 folder to the
  user running the install, unless the user chooses not to use this new
  option (it can be unchecked), in which case the user is warned that he
  should take care of this himself.
  Reported by various persons, special thanks to Bock and goldenwolf for
  helping us to track down this issue (#0003943).
- Little tweak to +Z: when the last insecure user parts and the channel is
  set +Z (secure), the parting user saw the MODE too, which was silly.
  Reported by Robby22 (#0003720).
- Added '/REHASH -global' command which will rehash all servers on the
  network. You can also specify options like '/REHASH -global -motd' to
  rehash only the MOTD/RULES/etc. Just like /REHASH <servername> this is a
  NetAdmin-only command. This command is fully backwards compatible with
  older UnrealIRCd version in the sense that it will also REHASH old
  Unreal's. Suggested by 'P' in #0001522.
- Clarified the difference between 'except ban' (which exempts from KLINE
  and ZLINE) and 'except tkl' (which can exempt from GLINE, GZLINE, SHUN,
  QLINE and GQLINE). Reported by Digerati (#0002535).
- Added except tkl::type 'all', which exempts from all TKL types (except
  KLINE).
- Added set::options::allow-insane-bans which makes it possible to set
  really broad bans such as *@*.xx. Needless to say this can be very
  dangerous. Reported and patch provided by Stealth (#0003963).
- Windows: When trying to load a module (DLL) windows can give us the
  mysterious error 'The specified module could not be found' even though the
  file exists. This usually means that it depends on another DLL, but
  apparently Microsoft decided not to mention that in the error message.
  We now append some small text when such an error happens, saying that it
  could be because of a missing dependency. Reported by Phil.
- Fixed Windows compile problem with current CVS due to m_issecure,
  reported and fix provided by therock247uk (#3970).
- Added release notes.
- Error on zero sendq in class::sendq, reported by jonbeard.
- Fix return values in src/auth.c on Win32.
- Win32: Attempt to move to 100% winsock2 (the include, to be precise),
  this means includes have to be in a very particular order (!)
- Win32: #define _WIN32_WINNT 0x0501 and force our own inet_ntop/pton,
  otherwise you get an ntop runtime error on XP and earlier.
- Win32: Get rid of c-ares includes and library in our tree, and use the
  DLL instead of static LIB, just like we do for ssl and zlib.
- Win32: Get rid of TRE lib and includes
- Win32: reorder includes to fix winsock errors with curl
- Win32: show missing /INFO in GUI
** 3.2.9-rc1 release **
- Enable parallel building of modules.
- Fixed bug with curl not finding libcares, reported by katslaw.
- Added workaround for 'curl-config' depending on 'bc'.
- Fix typo 'alias::spampfilter' in German docs, reported by seraphim (#3978).
- Fix missing #include <stdint.h>. Fixes compile error on OpenBSD
  reported by CuleX (#3977).
- Fix invalid use of 'wc -l' when detecting the AsynchDNS feature of
  libcurl which breaks compilation on FreeBSD; instead use 'grep
  -q'. Reported by Jobe (#3981), solution proposed by satmd.
- Fix bundled TRE compilation error on OpenBSD with pkg-config-0.21
  where pkg-config can't find 'tre.pc'. Reported by CuleX. (#3982)
  Also properly escape the sed expression used in the pkg-config call.
- Fix remote MOTDs for URLs whose path components contain
  subdirectories, in the process much simplifying my remote MOTD
  code. Reported by goldenwolf (#3986).
- Windows installer: if an SSL certificate already exists, then don't check
  the 'create SSL certificate' by default. Patch from goldenwolf (#3965).
- Update doc/compiling_win32.txt a bit (#3975).
- Updated credits a bit (#3980).
- Fix set::ssl::options::no-starttls not being recognized.
- Fix pointer handling in remote MOTD code, fixing a crash on REHASH
  reported by goldenwolf (#3992).
- Bump server protocol version to 2310, due to the various changes and so
  you can use deny link { } blocks if you want to deny older versions than
  this release.
- Fix documentation about channel mode +t and halfops, thanks warg (#4007).
- Fix empty/nonexistent short MOTD being shown instead of the full
  MOTD on user registration. Thanks WakiMiko (#4011).
- Module coders: Added HOOKTYPE_HANDSHAKE which is called before the client
  handshake, IOTW: as soon as the connection is established. This can be used
  to do things prior to accepting any commands, such as sending some text.
- Moved from cvs to hg (thanks binki!), this means cvs from this point in
  time should no longer be used (the lastest CVS version will not compile,
  this has been done on-purpose).
  The new way to access the development version of UnrealIRCd is:
  hg clone http://hg.unrealircd.org/unreal
  If you get something like 'hg: command not found' then you need to
  install mercurial. Most *NIX systems have such a 'mercurial' package,
  but if you don't, or you are on Windows or Mac OS X, then grab it at
  http://mercurial.selenic.com/
- Updated doc/compiling_win32.txt a bit.
- The unreal32docs translations in Greek, Spanish and Dutch are marked as
  out of date.
- CRLF conversion of unreal32docs.gr.html
- Zip links: once a link was zipped, the error message when closing the
  connection was never actually sent (due to buffering). Hence, things like
  the /SQUIT reason was never seen on the other side (just 'server closed
  the connection'). This has now been fixed.
- Fix compile failure introduced by last change when zip links are
  disabled.
- Check that the automatically-generated cloak keys fit unrealircd's
  own criteria before printing them out. (#4017)
- Added aliases/atheme.conf, provided by katsklaw (#0003990).
- Support installing the ircd binary for people who set
  --with-spath=<dpath>/bin/ircd.
- Add missing quotation to doc/help.fr.conf (#4026 by MewT).
- Remove temporary message (Unreal3.2.1) regarding cloaking modules.
- Add a self-documented and commented files {} block to example.conf.
- Another fix-for-fix of zip links buffering from a few weeks ago.
  Reported by fbi (#0004030).
- Win32: fix rehash from the command line not working, reported by Platzii
  (#0004028).
- Update curl-ca-bundle.crt
** 3.2.9-rc2 release **
- Updated credits (donations)
- Updated credits (supporters, coders)
** 3.2.9 release **
- Automatically regenerate Makefile if ./config.status --recheck was
  run.
- Fix compilation issue when disabling stacked
  extbans. https://bugs.gentoo.org/389949
- Attempt to make Makefile rules more parallelism friendly.
- Fix compilation issues with bundled tre and ./curlinstall-ed curl
  caused by over-generic regexes. Reported by warg.
- Fix version string in configure.ac.
- Include CMDS=STARTTLS in ISUPPORT/numeric 005 to let clients discover STARTTLS
  support through VERSION, before or after registration (#4064).
- Added patch from nenotopia to use more modern LUSERS numerics (#3967).
- Fix small error in oper block documentation, reported by Stealth (#2318).
- Config parser failed to check for invalid set::ssl options, reported
  and patch by fbi (#4035).
- Tweak: send actual channel name and not user supplied channel in KICK,
  reported and patch by Stealth (#3298).
- Services coders: Added support for ESVID. Instead of a number you can
  now store a string (of max NICKLEN size) as service stamp. See
  protoctl.txt and serverprotocol.html in doc/technical for more information.
  Patch from nenotopia (#3966).
- Show account name in /WHOIS, for ESVID-capable services packages, patch
  from nenotopia (#3966).
- Added extended ban ~a:<account name> which matches users who are logged
  in to services with that account name. This works only on services that
  support ESVID. Patch from nenotopia (#3966).
- Updated extended ban documentation in help.conf and unreal32docs:
  new bantype ~a, and some text about extended bans & invex (+I).
- Throw up an error if a password in the configuration file is too long
  (max 48 characters), reported by JasonTik, based on patch from
  WolfSage (#3223).
- Enforce matching of unrealircd version and PACKAGE_VERSION macros. Now the
  UNREAL_VERSION_GENERATION, UNREAL_VERSION_MAJOR, UNREAL_VERSION_MINOR, and
  UNREAL_VERSION_SUFFIX macros are autogenerated from PACKAGE_VERSION (#4014).
- Make default service stamp 0 (zero) again, instead of '*' which was
  introduced by ESVID changes a few days ago. This makes anope happy,
  and also means nothing will change in a non-ESVID scenario.
- Fix misuse of stdarg.h macros when calling vsyslog() (#4065 by Jimini).
- Ditch vsyslog() as it's only a waste of CPU, inspired by #4065.
- Add CAP support. Currently implemented are: multi-prefix (NAMESX), and
  userhost-in-names (UHNAMES). Patch from nenotopia (#4018, #4066).
- Fix issue with CAP & NOSPOOF. Patch from nenolod (#4077).
- Advertise 'tls' (STARTTLS) capability in CAP. Patch from nenolod (#4081).
- New user mode +I (IRCOp only) which hides idle times to other users,
  suggested and patch supplied by Nath & binki (#3953).
- Added remove_oper_modes(), which works just like remove_oper_snomasks(),
  and ensures that the user does not have any ircop-only user modes after
  de-opering. This (only) fixes the just added +I umode case, but could
  also prevent future bugs.
- Get rid of networks/ directory, and all references to it. Suggested by
  katsklaw and others (#4056).
- Added doc/example.es.conf, translated by Severus_Snape.
- Make the accept code check if the fd is within bounds instead of relying
  on OpenFiles to be correct. This fixes a crash when f.e. 3rd party modules
  have files open but don't increase OpenFiles. Might also fix a curl crash,
  though nobody ever reported one.
- Moved nospoof to config file, suggested by and patch from nenolod (#4078).
  This means ping cookies are now controlled by set::ping-cookie [yes|no].
  The default is 'yes' (enabled).
- Even when 'M' was listed in set::oper-only-stats you could still do a
  '/STATS m'. Unlike other stats characters, case insensitivity was not
  checked for this one. Reported by and patch from Apocalypse (#4086).
- Added patch from Adam for poll() support (#1245).
- Various changes/fixes/enhancements to poll patch
- UnrealIRCd now supports poll() instead of select().
  There are some minor speed benefits if you have more than 1K or 2K
  clients, however the main noticeable difference is that on Linux you can
  now easily enter a higher maximum connection count than 1024 in ./Config,
  without having to edit system header files.
  Of course, you still need to be allowed to use the # of sockets (type
  'ulimit -n' on the shell).
  Support for this is experimental at this stage, but enabled by default
  so it can receive all the testing it deserves. If all goes well, it will
  be the default for 3.2.10.
  Stress testing is very much welcomed!
- Speed optimization: First, moved a large part of vsendto_prefix_one into
  vmakebuf_local_withprefix. Then use this new function - which creates the
  buffer-to-be-sent - at the top of functions like sendto_channel_butserv
  and sendto_common_channels and send the prepared buffer in the loop that
  comes after it. This means we only prepare the buffer once and then send
  it many times, rather than both building and sending it XYZ times.
  Benchmarking connect-join-quit of 10k clients:
  100 users per channel: no noticeable speed improvement
  1000 users per channel: 18% faster
  10000 users in one channel: 50% faster
  As you can see, unfortunately, for a typical irc network there isn't much
  speed improvement. However, if you have a couple of 500+ user channels or get
  attacked by clones then you may see some improvement in speed and/or lower
  CPU usage.
- Minor documentation typos, thanks warg (#4094).
- Call m_cap_Init() when m_cap is loaded through commands.so. Reported by
  nenolod.
- Fix for speed optimization a few lines up, was accidentally using ident
  username (which might have been 'unknown') instead of effective username.
- Added support for SASL, patch from nenolod (#4079).
- Fix crash in AUTHENTICATE (SASL commit from an hour or so ago).
- Tweak SASL code to conform to current coding style.
- Some more SASL fixes, and more...
- Split up PROTOCTL line, since with the addition of ESVID we exceeded
  MAXPARA when using ZIP links.
  This caused an odd charset warning upon link.
- Poll I/O engine: get_client_by_pollfd() may return -1 when there's a race
  condition. Don't abort, instead just skip those clients.
  This fixes a crash I had on /SQUIT.
- Fix win32 installer: apparently it sometimes complained about not having the
  Visual C++ 2008 redistributable package installed when this was not true.
- Win32 compile fix
- Print out a warning when we can't write to a log file. When booting this
  goes to the boot screen. When we are already booted it's sent to all
  IRCOps with a limit of max. 1 message per 5 minutes.
- Refuse to boot when we can't write to any log file.
- Remove old no-stealth configuration directive from documentation,
  reported by katsklaw, patch from warg (#4036).
- Added 'away-notify' client capability, which informs the client of any AWAY
  state changes of users on the same channel. Patch from nenolod (#4097).
- Add support for account-notify client capability (#4098). This capability
  can be used to request passive notifications for accountname changes.
- If set::options::dont-resolve is enabled, then use only the IP information
  from a WEBIRC message, reported by Ismat (#4103).
- Moved sendto_connectnotice, and thus the call to HOOKTYPE_LOCAL_CONNECT,
  so it gets called after the broadcast of NICK to other servers.
- Fix bug caused by new I/O engine (both with and without USE_POLL):
  queued data on the receive queue (eg: due to fake lag) was not processed
  unless we got new data from the client.
  Now, better document this. Also, avoid calling dbuf_put with 0 length.
- Add support for server-enforced mode locks (MLOCK), suggested in #3055
  back in 2006. This allows the IRCd to enforce MLOCKs that are set by
  services, which eliminates clashes between users setting modes and
  services enforcing it's mlock on channels.
- Fixed another SASL crash bug. Always use HookAddEx, not HookAdd!
  Crash occured after the first quit of a user after a REHASH.
  Reported by Dave (#4108).
- SASL now needs to be enabled explicitly by setting a set::sasl-server.
  If this is not set, then SASL is off and not advertised.
  If the specified server is not connected, then SASL is off as well.
  This prevents unnecessary delay (and the inability for some clients to
  get online) when SASL is not in use or when the SASL server is down.
- Changed numeric 307 (RPL_WHOISREGNICK) to 'is identified for this nick',
  reported by fbi (#3399).
- Win32 installer (SSL): Uncheck 'create certificate' checkbox when
  server.cert.pem exists, and check it if the file doesn't exist.
  You can still change the setting, just the default is correct now.
  The code for this was already there but was not working correctly
  causing users to go through the generation process upon each install.
- Win32 installer: Latest InnoSetup no longer supports Windows 95/98,
  so update Minversion to make the .iss compile.
- Module coders: added HOOKTYPE_AWAY (sptr, away-reason).
- Add optional oper::require-modes setting to the oper block. Any
  attempt to /OPER by someone who doesn't have one of the listed
  usermodes is rejected. This can be used to restrict oper blocks to
  registered nicks (+r) or secure clients (SSL, +z) (#4008 by
  katsklaw).
- Clarify that hiddenhost-prefix must be the same on linked servers for
  bans to function properly (#4090, patch from warg, reported in #4043
  by maxb).
- Add /SILENCE to HTML documentation (reported by Severus_Snape in
  #4072, patch from warg).
- Show "Ping timeout: XYZ seconds" instead of just "Ping timeout".
  Patch from darkex (#3960).
- Install server.*.pem files, patch from katsklaw (#3988).
- The ./Config script will now ask whether to generate an SSL
  certificate when it does not exist (defaults to Yes), instead of
  always generating one.
- Added missing Mod_Header to m_sasl.c
- Remove old reference to networks/ directory from Windows installer
- Disable sending of UHNAMES when HTM (High Traffic Mode) is ON,
  suggested by driew (#3900).
- Add 'class' option to allow/deny channel so you can allow/deny
  users based on their class. Patch from fspijkerman (#4125).
- Use poll() in the remote includes functions when USE_POLL is
  defined (#4091).
- Fix bug where recursive includes would hang the IRCd, patch from
  binki with some minor modifications, reported by warg (#3919).
- Upgraded to c-ares 1.9.1. Updated configure & other files.
- Disable USE_POLL on Windows, since it doesn't work with XP and has
  no advantage anyway. Reported by nenolod (#4129).
- Various updates to makefile.win32 and .iss file, found during
  building new versions of zlib, openssl, and curl.
- Added set::options::disable-cap, which can be used to disable the
  new CAP support (#4104).
- Added auth method 'sslclientcertfp' which provides an alternative
  method to authenticate users with SSL client certificates based
  on SHA256 fingerprints. This can be used instead of the already
  existing 'sslclientcert' so you don't have to use an external file.
  One way to get the SHA256 fingerprint would be:
  openssl x509 -in name-of-pem-file.pem -sha256 -noout -fingerprint 
  Suggested and patch supplied by Jobe (#4019).
- Added documentation on the new sslclientcertfp
- Moved documentation on authentication types to one place and refer
  to it from each section (oper::password, vhost::password, 
  link::password-receive, etc).
- Windows: fix MOTD file always showing a date of 1/1/1970, reported
  by maxarturo (#4102).
- Update version to 3.2.10-rc1
- Bump version number in all translated docs as well (did not change
  the 'last update' date, though).
- Removed unreal32docs.es.html (outdated since 2006-12-22),
  unreal32docs.gr.html (outdated since 2006-12-02), and
  unreal32docs.nl.html (outdated since 2009-01-18, possibly 2007-07-12).
  These translations are out of date for many years and are causing
  problems for the people who are reading this out of date information.
  If you want to update these translations, or (maybe better) redo
  the translation of unreal32docs in these languages, then send an
  e-mail to syzop@unrealircd.com.
  Note that for all these languages we have had people in the past
  offering to help out, but in the end we never heard back from them,
  so please ONLY contact us if you: 1) are serious, and 2) have
  sufficient time available to work on this project.
  That said, users in your language will greatly appreciate your work!
  Of course, if you want to translate documents in any other language
  then you are welcome to contact us as well.
- Remove wircd.def, needs to be re-generated almost each build anyway..
** 3.2.10-rc1 release **
- Use our own (v)snprintf if not available.
- Use a more robust method of learning the server origin for a SASL
  agent. Fixes crash reported by Adam.
- Argh.. silly Windows symbol crap.
- Import unreal32docs Spanish translation by Karim Benzema.
- From now on, we'll use a generated Changelog based on the history 
  of our version control system (Mercurial), so we don't get merge
  conflicts when porting changesets between branches.
