/*
 * UnrealIRCd Changes File - (C) Carsten Munk 1999-2005 &
 *                               The UnrealIRCd Team
 *                              
 * $Id: Changes,v 1.1.1.1.2.24 2006/12/22 21:10:28 syzop Exp $
 *                              
 * 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 bitch at 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 **
