Version 3.3
-----------
1998/07/10 .6	Fixed missing parameters in log() calls for bad passwords
		    with NickServ RECOVER/RELEASE/GHOST.
1998/07/05 .5	Fixed crashes with ChanServ AKICK.  Reported by
		    McClain Looney <mcclain@stomped.com>
1998/07/05	Fixed encryption compilation error.  Reported by
		    Mauritz Antunes <mauritz@brasnet.org>
1998/06/05 .4	Corrected user +o check in oper-only LIST code.  Pointed
		    out by Joe Dabrowski <shadow@surferdude.com>
1998/06/04 .3	Replaced a couple of findnick() calls with user->ni.
1998/06/04	Fixed dangling pointer problems with dropping/expiring
		    channels.
1998/06/02	Added support for IRC STATS command.
1998/06/02	Removed a leftover extra debugging line.
1998/06/01	Fixed invalid memory access in NickServ RECOVER error
		    response.
1998/06/01	Fixed a typo in NickServ INFO error response.
1998/06/01	Fixed dangling pointer problem when dropping one's nick.
1998/06/01	Fixed dangling pointer problem on leaving channels.
1998/06/01 .2	Fixed invalid memory accesses caused by ChanServ AKICK ADD
		    under obscure conditions.
1998/05/31	Newly registered channels now have a default mode lock of
		    +nt.  Suggested by Mauritz Antunes <mauritz@brasnet.org>
1998/05/31	Added buffering to network writes.
1998/05/31	log()/log_perror() now preserve errno.
1998/05/31	Added option in config.h to limit ChanServ/NickServ LIST
		    command to IRC operators only.  Suggested by Joe
		    Dabrowski <shadow@surferdude.com>
1998/05/29 .1	Fixed stupid bug in chanserv.c trying to access freed
		    memory.
1998/05/29 .0	Fixed bug causing premature NULL to be returned from
		    user/channel iteration functions.
1998/05/29	Fixed problems with handling the channel name "#".
1998/05/29	Put back support for USER message (fixing IRC protocol
		    compatibility).
1998/05/29	Cleaned up a bunch of warnings.
1998/05/29	Added int16 and int32 types.
1998/05/29	Added configure check for gettimeofday().
1998/05/29	Got Services to compile again with -DSKELETON.
1998/05/29	Added support for extended debugging in OperServ SET DEBUG.
1998/05/28	Added buffering to network reads.
1998/05/28	Fixed stupid user handling bug causing hangs after a nick
		    change.
1998/05/28	Times in the log are now recorded with microseconds when
		    debugging is enabled.
1998/05/28	Added extended debugging.
1998/05/28 pre0	Changed NickServ STATUS output to include the word "STATUS"
		    at the beginning of each line.
1998/05/28	Added help file for ChanServ STATUS command.
1998/05/28	Fixed a cosmetic bug in some of ChanServ's error messages.
1998/05/28	Fixed bug introduced yesterday in channel ban handling.
1998/05/27	Added DEBUG option to OperServ SET.
1998/05/27	Made UPTIME a synonym for STATS in OperServ.
1998/05/27	Added hashing to user and channel handling code.
1998/05/27	Removed NS_LAST_SEEN_DELAY define; last-seen times are now
		    updated at every expiration check (linear in the number
		    of users online).
1998/05/27	Massive code cleanup and optimization.
1998/05/27	Services will now reintroduce its pseudo-clients if they
		    are killed.
1998/05/27	Fixed off-by-one error in access level range check for
		    LEVELS command.
1998/05/27	Fixed off-by-one error in check for autokick count limit.
1998/05/27	ChanServ SET MLOCK no longer changes the current setting on
		    a syntax error, and no longer allows the same flag to
		    be locked both + and -.
1998/05/27	Fixed three potential problems (memory leaks / crashes) in
		    ChanServ REGISTER command.
1998/05/27	Took out a potential crash in chanserv.c/get_access()
		    (though the crashing code might have been unreachable).


Version 3.2
-----------
1998/05/18 .4	Join/autokick handling put back more or less the way it
		    used to be, cleaning up code slightly and killing a
		    minor memory leak in the process.
1998/05/15	Stopped misleading messages when killing the Services
		    process with SIGTERM, SIGINT, or SIGQUIT.
1998/05/08	Corrected minor typo in operserv.c.
1998/05/07	Fixed problem with ChanServ not staying in a channel the
		    second time a user tried to enter a FORBIDden channel
		    (also the source of a small memory leak).
1998/05/07	Fixed minor problems with nickname and channel flags as
		    set on registration.
1998/05/07 .3	Changed the default global noticer pseudo-client name to
		    "Global".
1998/05/07	Fixed broken data directory in 3.2.2 distribution.
1998/05/06	ChanServ CLEAR BANS now actually clears all the bans on the
		    channel.  Reported by <joe@brasnet.org>
1998/05/06	Made auto-voice have a default level of 3 for all newly
		    created channels.
1998/05/06	Split ACCESS level of ChanServ LEVELS command into ACC-LIST
		    and ACC-CHANGE, giving the latter a default access
		    level of 1 (to prevent normal users from adding people
		    with negative levels, as reported by <joe@brasnet.org>).
1998/05/04 .2	Deleted/expired nicks are now removed from Services admin
		    list.
1998/05/04	OperServ ADMIN ADD now checks that added nicks are
		    registered.  Pointed out by Matthew West
		    <lonewolf@apotheosis.ml.org>
1998/05/03	Nickname last-seen times are now updated every hour and at
		    client disconnect.
1998/05/03	More fixes and suggestions from Matthew West
		    <lonewolf@apotheosis.ml.org>:
		    - Exempted Services admins from the channel
		          registration limit.
		    - Clone warnings are logged as well as walloped.
		    - Routine to modify new NickServ PRIVATE flag added.
		    - OperServ KICK command now updates internal tables.
		    - More missing/incorrect help files added/fixed.
1998/05/01	Fixed typo in ChanServ SET EMAIL response.
1998/05/01	Made LIST help for Services admins accessible.
1998/05/01 .1	Added code to correct memo notification flags as
		    incorrectly set in previous versions of Services.
1998/05/01	Added an old Changes entry that was missing from this file.
1998/05/01	Changed OperServ to not send RAKILLs on non-DALnet
		    networks.
1998/05/01	Made install-help's rm a bit more selective to avoid
		    wiping out location-specific help files.
1998/05/01	Changed Makefile and configure to use absolute paths to
		    well-known programs like rm and cp.
1998/05/01	Added/corrected several missing/incomplete/incorrect help
		    files and messages.
1998/05/01	Fixes and suggestions from Matthew West
		    <lonewolf@apotheosis.ml.org>:
		    - Memos now have a "new" (i.e. unread) flag.
		    - Added READ LAST and LIST NEW commands to MemoServ.
		    - When reading a memo, the time the memo was sent is
		          displayed.
		    - "Private" flag added to NickServ; nicknames with
		          "Private" set can only be listed (LIST command)
		          by Services admins.
		    - Fixed problem (again) with ChanServ not staying in
		          channels when it is supposed to.
		    - OperServ now sends RAKILL on DALnet-style networks
		          when an autokill expires.
		    - Newly registered nicknames now have memo notification
		          flags set instead of cleared.
		    - Typos in help source files fixed.
		    - Fixed problem in do_match_wild where case-sensitivity
		          parameter was ignored for matches on "*".
		    - "rm -f" corrected to "rm -rf" for Makefile's
		          install-help rule (oops).
1998/04/28 .0	Changed OperServ ADMIN command to allow anyone to list
		    Services admins.
1998/04/26	Added ADMIN command to OperServ for setting Services
		    admins online, and added "root" privilege level
		    (limited to one user defined in config.h).
1998/04/26	Made server message processing more robust and modular.
1998/04/06	Added name/URL fields to nickname and channel records.
1998/04/05	~ at beginning of a username no longer ignored.
1998/04/05	Fixes and suggestions from _Alex <root@alexnet.ml.org>:
		    - Various encryption fixes.
		    - OperServ now properly uses wallops() instead of
		          send_cmd("GLOBOPS").
		    - MOTD code optimized.
		    - Option now available in config.h (WARN_BAD_OPERSERV)
		          to send a wallops when a non-oper tries to use
		          OperServ.
1998/04/05	Added a debugging log line to HelpServ.


Version 3.1
-----------
1998/04/02 .3	Added OperServ RESTART command to cause Services to restart
		    itself (this behavior is also triggered by kill -HUP).
1998/04/02	Added limit on frequency with which NickServ REGISTER
		    command can be used.
1998/04/01	Added secret option to make Services start spitting a
		    stream of quarters from the floppy drive.
1998/03/31	Added limit to number of channels a nickname can register.
1998/03/27	Fixed crash from OperServ AKILL ADD with no parameters.
		    Reported by _Alex <root@alexnet.ml.org>
1998/03/20	Made snprintf() test in configure script stricter to catch
		    snprintf()'s that don't actually check length, i.e. are
		    sprintf() in disguise.
1998/03/20	Fixed(?) problem with ChanServ not staying in channels when
		    supposed to.
1998/03/19	Fixed vsnprintf() replacement to be more consistent in its
		    return values (i.e. always return the amount of data
		    written to the string).
1998/02/22	Miscellaneous fixes from Jeff Downs
		    <downsja@polaris.clarkson.edu>
1998/02/19 .2	Fixed a typo which caused nickname and channel data to
		    not be saved.
1998/02/18 .1	Moved compatibility routines from misc.c into new file
		    compat.c.
1998/02/18	Added workaround for broken include files that don't
		    define needed constants (like NAME_MAX).
1998/02/18 .0	Fixed various bugs in the new features.
1998/02/16	Added "install-help" target to Makefile.
1998/01/26	Added STATS AKILL command to OperServ; added default
		    autokill expiry time.
1998/01/23	Fixed diff-creating script to catch documentation files as
		    well as source files.
1998/01/22	Added memo notification control settings (MemoServ SET).
1998/01/22	Added limit on number of memos a nick can have and how
		    often a user can send out memos.
1998/01/22	Centralized database opening code (moved out of
		    load/save_*_db() into separate routines) and changed a
		    few fatal error conditions to non-fatal.
1998/01/22	Added expiry option to autokill entries; cleaned up other
		    parts of operserv.c.


Version 3.0
-----------
1998/01/15 .10	Minor help text clarifications.
1998/01/14	Fixed excess auto-voicing.
1998/01/13	Nickname SECURE setting now respected by NickServ RECOVER,
		    GHOST, and RELEASE commands.
1997/12/30 .9	Auto-voice is now checked upon entering a channel.
		    Problem reported by <w0nder@mindless.com>
1997/12/30	Fixed clone detection crashes.
		    Patch from <azander@sweetwater.net>
1997/12/09 .8	Setting read-only mode (either via command line or
		    OperServ SET command) now closes the log file.
1997/12/09	Various minor (mostly cosmetic) changes to main.c.
1997/12/06	Crash in MOTD command fixed when MOTD file missing.
		    Reported by Justyn Kemple <dragon@pacific.undertow.com>
1997/12/02	Minor bug in NickServ GHOST command fixed.
1997/11/24 .7	SKELETON compilation problems fixed.  Reported by
		    Aaron Brady <insom@ircnet.ie>
1997/11/24	Autokill code now correctly sends AKILL/GLINE.
		    Reported by Aaron Brady <insom@ircnet.ie>
1997/11/24	Extra conditional removed in version.[s]h.
1997/11/18 .6	Fixed a security hole introduced by a half-written piece
		    of code.  Reported by <jyoung@pionet.net>
1997/11/18 .5	Corrected a typo in configure.
1997/11/18	Replaced an erroneous +o by -o in do_deop().
1997/11/18 .4	Fixed potential compatibility problems with classic IRC
		    servers.
1997/11/16	Several fixes from Jeff Downs <downsja@polaris.clarkson.edu>:
		    - ChanServ CLEAR VOICES used mode -o instead of -v.
		    - ChanServ OP/DEOP commands now update internal data
		          structures.
		    - WALLOPS/GLOBOPS from pseudo-clients now actually come
		          from the pseudo-clients, not Services itself.
		    - Default access level on SECUREOPS channels is now -1
		          rather than 0.
		    - DevNull MODE setting now uses name from config.h.
		    - Excess code in check_akill() removed.
		    - AKILLs are now sent to the network based on the mask
		          from the AKILL list rather than the killed user's
		          mask.
1997/11/16	More USE_ENCRYPTION errors fixed.
1997/11/14	Fixed syntax errors with USE_ENCRYPTION defined.
		    Reported by <twolf@kc.net>
1997/11/12	setpgrp() replaced with setpgid(0,0) for portability.
1997/11/11	OperServ AKILL VIEW now displays the time an autokill was
		    set rather than the current time.
1997/11/10	Fixed another typo in strsignal().
1997/11/10 .3	Experimental support for GLINE command added for those
		    non-DALnet servers which support it.
1997/11/10	OperServ MODE command now properly updates internal data
		    structures.
		    Reported by <guybug@microtec.bbs.net>
1997/11/10	Fixed minor whitespace glitches in source.
1997/11/10	Added missing semicolon that killed compiles on systems
		    without strsignal().
1997/11/08 .2	Took out stupid piece of debugging that prevented channel
		    LEVELS settings from being retained on database load.
1997/11/06 .1	Cosmetic fix for MemoServ error message.
1997/11/06	NickServ ACCESS LIST <nick> now works.
1997/11/06	Memos for a user are now deleted when the nick is dropped.
1997/11/06	Fixed ChanServ STATUS command calling the wrong routine.
1997/11/01 .0	Moved CP_ALL from Makefile to configure.
1997/11/01	Modified configure to work with more Bourne-ish shells.
1997/11/01	Fixed linked list loss in timeout.c.
1997/10/30	Cured a consistent memory leak in process().
1997/10/30	Allowed Services admins to view nickname access lists.
1997/10/29	Added OperServ SET READONLY command.
1997/10/29	Made OperServ SHUTDOWN command work properly.
1997/10/29	Cleaned up main().
1997/10/29	Removed excess "unknown message" loggage for numeric
		    server replies.
1997/10/20	A number of potential buffer overflows fixed.
1997/10/20	READONLY implemented as a command-line option.
1997/10/20	Services will now kill a user after a configurable number
		    of bad password attempts (default 5).
1997/10/20	It is no longer a fatal error for the database files to not
		    exist (and thus be unable be renamed to backup names).
1997/10/05	Finished implementing ChanServ LEVELS command, and cleaned
		    up access level-related code.
1997/10/04	Due to what appears to be a long-hidden bug, all non-nick
		    entries on channel access lists from pre-v3 databases
		    are now removed on startup.
1997/10/02	Caused dropped/expired nicknames to be removed from channel
		    access lists.
1997/10/02	Fixed a minor memory leak related to dropping nicknames and
		    channels.
1997/09/30	Allowed Services admins to view channel access and autokick
		    lists.
1997/09/29	Disallowed registration of channels if a user is not
		    recognized as and has not identified as the owner of
		    the nickname s/he is using.
1997/09/29	Changed wildcard matching for autokills to be
		    case-insensitive.
1997/09/29	Fixed a nasty bug in the wildcard matching routine which
		    could cause many false matches.
1997/09/25	Updated various help files.
1997/09/25	Added STATUS command to NickServ.
1997/09/20	Added (untested) encryption support.
1997/09/20	Made configure script more robust; will now exit upon
		    receiving EOF.
1997/09/20	Fixed problems with using pre-v3.0 channel databases.
1997/09/19	Made ChanServ/NickServ LIST command case-insensitive; exact
		    nickname/channel name matches are now allowed as well.
1997/09/19	Added strsignal() for those systems which do not have it.
1997/09/19	Fixed preprocessor conditionals in extern.h.
1997/09/12	Added code to make ChanServ stay in a channel for a short
		    period of time after kicking a disallowed user from an
		    empty channel.
1997/09/12	Fixed a typo in ChanServ HELP SET MLOCK, and added warning
		    about using MLOCK +k without RESTRICTED option.
1997/09/12	Changed default READ_TIMEOUT to 10 seconds from 15.
1997/09/12	Generalized timeout code and moved it out of nickserv.c.
1997/09/08	Moved Services pseudo-client names to config.h.
1997/09/08	Implemented ChanServ access level customization.
1997/09/08	Limited ChanServ access list additions to registered
		    nicknames for all channels (previously this applied
		    only to SECURE channels).
1997/09/08	Fixed a minor ChanServ bug which could cause access list
		    additions to fail under obscure circumstances.
1997/08/28	Replaced some hardcoded Services pseudo-client names with
		    s_* strings.
1997/08/27	Limited channel access levels to the inclusive range
		    -9999..9999.

===========================================================================

Version 2.2
-----------

1997/08/23 .26	Fixed a minor bug in the configure script which caused
		    compilation errors on systems without strerror().
1997/08/21 .25	Fixed a stupid bug in introduce_user() w.r.t. classic ircd.
1997/08/08 .24	Kludged around duplicate QUIT syndrome of Undernet ircd.
1997/08/06	Added multi-server support to introduce_user().
1997/07/24 .23	Fixed user leak caused by autokills.
1997/07/20 .22	Fixed crashes in ChanServ CLEAR {OPS|VOICES}.
1997/07/19	Added ALL option to OperServ STATS command to display
		    Services memory usage.
1997/07/??	Added initial support for different IRC servers.
1997/07/15	Removed remaining occurrences of #define'd parameters
		    (SERVER_NAME, etc.) and replaced them with runtime
		    variables.
1997/07/15	Added "Topic set by" field to ChanServ INFO command.
1997/07/07 .21	Fixed bug in ChanServ CLEAR USERS command causing crashes.
1997/07/02 .20	Removed last vestiges of domain dependence (global notice
		    and MOTD).
1997/07/02	Made IRC operators and Services ops immune from ChanServ
		    channel restrictions (auto-deop, AKICK, and FORBID).
1997/07/02	Made ChanServ SECURE mode actually work.
1997/06/09 .19	Added ChanServ CLEAR command.
1997/06/09	Fixed up UNBAN command (hopefully).
1997/06/05 .18	Fixed a compilation error in process.c.
1997/06/02 .17	Added workaround for servers that send a prefix with a
		    NICK command for a new user.
1997/05/30	Fixed the missing-character problem again (hopefully for
		    good this time).
1997/05/18 .16	Removed bug causing crashes when deleting AKILLs.
1997/05/18	Made "<unknown>" work right this time.
1997/05/04	Replaced empty string for AKILL setter with "<unknown>".
1997/05/02	Touched up OperServ AKILL VIEW output (now includes the
		    time each AKILL was set as well as who set it).
1997/05/01 .15	Fixed security hole in MemoServ allowing anyone to read or
		    delete another user's memos or send memos as another
		    user.  (Reported by Arnold Hendriks)
1997/04/30 .14	Fixed a nasty little problem which could cause the first
		    character of an input line to be discarded.
1997/04/30	Added OperServ AKILL VIEW command to list the creator
		    of an autokill as well as the mask and reason.
1997/04/30	Fixed up configure, which had been broken on machines
		    where sh != bash.
1997/04/25	Cosmetic fixes to KILL messages.
1997/04/21      Changed AKILL to show who added an autokill in the list.
1997/04/16 .13	Minor cosmetic fix in ChanServ ACCESS LIST.
1997/04/16	Fixed security hole allowing users to add entries to
		    channel access lists at levels higher than their own.
		    (Reported by Jonathan Bobin)
1997/04/06	Fixed bug causing crashes when trying to delete an AKILL
		    which did not contain an "@" character.  Also
		    disallowed adding any AKILLs without an "@" character.
1997/04/05 .12	Fixed potential file descriptor leak in sockutil.c/conn().
1997/04/05	RUNGROUP is now (correctly) no longer defined in sysconf.h
		    if it is empty.
1997/04/05	Fixed bug in install-script (source and destination
		    reversed).
1997/04/05	Cosmetic fixes in configure.
1997/04/01	Added "Secure" option to ChanServ channel information
		    display.
1997/04/01 .11	Separated data installation routine from "make install"; it
		    must now be called separately as "make install-data".
1997/04/01	Fixed a bug which caused Services to crash randomly when
		    the ChanServ ACCESS DEL command was used with an entry
		    number instead of literal mask or nickname.
1997/04/01	Fixed a cosmetic bug which could imply that certain entries
		    existed on a channel access list when they in fact did
		    not.
1997/04/01	Plugged a security hole allowing users to effectively delete
		    higher-level users from channel access lists.
1997/04/01 .10	Corrected error in memo number when reporting a new memo to
		    a user.
1997/03/18	Fixed problem with ChanServ SET SECURE actually setting the
		    Secure Ops flag.
1997/03/16	Clarified help messages for oper forms of DROP command in
		    NickServ and ChanServ.
1997/03/08 .9	Fixed large security hole in ChanServ allowing users to
		    delete other users with higher or equal access levels
		    from channel access lists.
1997/03/06	Nick and channel expiration is now logged.
1997/03/06	Minor beautification work in OperServ STATS output.
1997/03/04 .8	Services now sends KILL command before new NICK command
		    when kill-enforcing a nick.
1997/03/04	Changed default channel-expire period from 21 days to 14.
1997/03/04	Implemented "suicide protection"; users can no longer
		    ghost/recover themselves.
1997/03/01	Fixed failure to remove autokilled users from user list.
1997/03/01	Added note to FORBID help text that DROP command will
		    reverse effect of FORBID.
1997/02/09 .7	Added more debugging output for -debug.
1997/02/04	Fixed bug causing crash on channel MODE +/-v.
1997/02/02 .6	Fixed bug in MemoServ READ command.
1997/02/02	Modified version.sh to recreate instead of modify version.h.
1997/01/19	Fixed cosmetic bug in "listnicks" invocation of Services.
1997/01/18 .5	Fixed big in ChanServ/NickServ LIST introduced by FORBID.
1997/01/18	Fixed minor typo in ChanServ FORBID help text.
1997/01/18	Made nick-kill timeouts a bit smarter about checking for
		    changed/new nicks.
1997/01/18 .4	FORBID command added to disallow certain channels and
		    nicknames.
1997/01/18	Use of log file increased: use of REGISTER, IDENTIFY, and
		    DROP commands for NickServ and ChanServ is now logged.
1997/01/18	Services ops can now drop channels and nicks in READONLY
		    mode.
1997/01/17 .3	Fixed potentially serious bug in ignore code.
1997/01/15	Fixed compilation problem under SKELETON mode (last_check
		    undeclared).
1997/01/15	Fixed crash on OperServ RAW command with no parameters.
1997/01/14 .2	Services now saves databases and quits upon receipt of
		    SIGHUP.
1997/01/14	Fixed Services op recognition.
1997/01/14      Added DEOP command to ChanServ.
1997/01/13 .1	Moved some configuration options from Makefile to
		    configure.
1997/01/12	Moved Services ops definition from operserv.c to config.h.
1997/01/12 .0	Added patch-level version number.
1997/01/12	Added SET IGNORE command to OperServ to enable/disable
		    ignore code.
1997/01/10	Created "configure" script.


Version 2.1
-----------

1997/01/10	Added OP command to ChanServ.
1996/12/30	Added "clean quit" which saves the databases (shutdown).
1996/12/30	Added MOTD command to Services, changed DevNull/EsperNet
		    default modes to +i.
1996/12/22	Added JUPE command to OperServ.
1996/12/14	Fixed MemoServ "READ <num>" behavior.
1996/12/14	Added strspn() to misc.c for systems with a buggy
		    implementation.
1996/12/14	Fixed crash on server PING.
1996/11/24	Added ignore code to protect against denial of service.


Version 2.0
-----------

1996/11/23	Corrected PING/PONG behavior.
1996/11/23	Corrected bug in AutoKick list size limit.
		Fixed null-pointer bug in operserv.c/do_akill().
		Set up main Services to recover from nick collisions (such
		    as when a net-join brings backup Services online at the
		    same time as regular Services).
		Moved NickServ/ChanServ/MemoServ help messages into
		    HelpServ database.
		Added SECURE options to NickServ and ChanServ.
		Added GLOBAL (send global notice) and STATS
		    (network/Services statistics) commands to OperServ.
		Added limit to size of AutoKick list for a registered
		    channel.
		Implemented "read-only" mode for backup copies of Services.
		Fixed channel mode-locking of keys.
		Fixed restoration of blank topics.
		Kludged to get ChanServ SET TOPIC working.
		Fixed ChanServ's failure to record topic changes for
		    registered channels with topic retention set.
		Created HelpServ.

===========================================================================

Version 1.1
-----------

1996/08/29	Added VERSION reply.
1996/08/29	Created this file.
