Version 3.0
-----------
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.
