synced with upstream
authorpk910 <philipp@zoelle1.de>
Wed, 13 Jul 2011 12:20:26 +0000 (14:20 +0200)
committerpk910 <philipp@zoelle1.de>
Wed, 13 Jul 2011 12:20:26 +0000 (14:20 +0200)
OGN commits 307 - 315

ChangeLog
Doxyfile
Makefile.in
configure.in
doc/Makefile [deleted file]
doc/Makefile.in [deleted file]
doc/history/ChangeLog.11 [deleted file]
doc/history/ChangeLog.12 [deleted file]
doc/irc.1 [deleted file]
doc/ircd.8 [deleted file]
ircd-patch

index 49c5f5162025e5be29a3b5e0434a9eca2904f11e..604aacdadd645411a1f496a563807acf2199bb8a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2010-07-05  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * include/patchlevel.h (PATCHLEVEL): bump patchlevel from -rc2 to
+       actual 13
+
+       * ircd/ircd_features.c: bump MAXBANS from 45 to 50, and MAXSILES
+       from 15 to 25
+
+2010-03-28  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/gline.c: Replace CurrentTime with TStime(), and remove the
+       uses of TSoffset, so that all G-line-related times are assumed to
+       be in network time.
+
+       * ircd/m_gline.c: Likewise.
+
+2010-03-08  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_server.c (enum lh_type): New type.
+       (check_loop_and_lh): Use the enum instead of magic integers.
+       Make the error message a little clearer when neither "hub" nor
+       "maxhops" is specified for a server.  Clean up the control flow
+       when we decide to reject the link.
+
+2010-03-08  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/test/ircd_match_t.c (_SC_PAGE_SIZE): Default to
+       _SC_PAGESIZE if that is defined (as it is on some Unixes).
+
+2010-03-04  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/s_bsd.c: use feature_int() to get the integer value of the
+       feature...and don't try to set the TOS to its index!
+
+2010-02-02  Michael Poole <mdpoole@troilus.org>
+
+       * include/patchlevel.h (PATCHLEVEL): Bump to (u2.10.12.)13-rc2.
+
+2010-01-13  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Do not clear keys or limit here --
+       MODE_PARSE_WIPEOUT gets modebuf_flush() to do that for us.
+
+2010-01-06  Michael Poole <mdpoole@troilus.org>
+
+       * Makefile.in: Remove doc/Makefile from the build.
+
+       * configure.in: Do not generate doc/Makefile.
+
+       * configure: Regenerate.
+
+       * doc/Makefile.in: Delete.
+
+       * doc/irc.1: Delete.
+
+       * doc/ircd.8: Delete.
+
+       * libs: Delete.
+
+2010-01-06  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_topic.c (ms_topic): When no topic timestamp is passed,
+       use the current time instead of the channel creation time.
+
+2010-01-06  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_silence.c (m_silence): Only show the silence list for the
+       requesting client and for channel services, to help keep other
+       clients' servers hidden.
+
+2010-01-06  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/gline.c (gline_add): If a forced G-line has already
+       expired, create it in a deactivated state.
+
+2010-01-06  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Gracefully handle the case where a
+       server sends us a too-large oplevel.  Forward oplevels whenever
+       they are in use, not just when the channel is +A.
+
+2010-01-04  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_xquery.c (ms_xquery): Resolving my patches with
+       Entrope's--log extension queries sent to us
+
+       * ircd/m_xreply.c (ms_xreply): Resolving my patches with
+       Entrope's--swap order of findNUser() and FindNServer()
+
+       * ircd/Makefile.in (IRCD_SRC): Resolving my patches with
+       Entrope's--swap order of m_xquery.c and m_xreply.c to maintain
+       alphabetic ordering
+
+2010-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_xreply.c (ms_xreply): swap order of numeric resolution so
+       we can deal with XR directed to users
+
+       * configure: auto-rebuilt with Autoconf 2.63 (was 2.59)
+
+       * ircd/m_xquery.c: need ircd_reply.h; fix a couple of
+       capitalization errors; log XQUERY directed to "me"
+
+       * ircd/m_xreply.c: need ircd_reply.h and numnicks.h (how'd I miss
+       the latter??); fix a couple of capitalization errors
+
+       * ircd/Makefile.in (IRCD_SRC): it'd be nice if we actually tried
+       to compile the two new commands...
+
+       * ircd/s_auth.c: "serv" is passed to find_match_server(), which
+       does a collapse on the pattern, so it can't be const
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/engine_devpoll.c: Make some variables that were local to
+       engine_loop() file-scoped so engine_delete() can see them.
+       (engine_delete): Discard unprocessed events for the deleted
+       socket.
+       (engine_loop): Update to use the new variable names.  Change a
+       frequent debug statement to DEBUG_ENGINE.  Fix the type of the
+       codesize variable.
+
+       * ircd/engine_epoll.c: Same as ircd/engine_devpoll.c, but the
+       debug statement and codesize variable were already fixed.
+
+       * ircd/engine_kqueue.c: Same as ircd/engine_devpoll.c, but also
+       fix a typo in an engine_signal() assertion, and get rid of dead
+       variables in engine_delete().
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_bsd.c (client_sock_callback): Invalidate cli_fd() when we
+       receive an EBADF error.
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/engine_select.c (engine_loop): Remove a bogus assert() that
+       the structure's FD is correct after the event-handling callback
+       returns.  Also fix a warning about the type of the last parameter
+       passed to getsockopt().
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_names.c (m_names): Terminate the buffer used for listing
+       clients who are not in any channel.
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (find_delayed_joins): Move earlier in the file.
+       (modebuf_flush_int): Move the checks for changing between +D and
+       +d to here...
+       (modebuf_flush): ... from here.
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_server.c (check_loop_and_lh): Never return 1 when we kill
+       another server.  Update the squit message text for maxhops and hub
+       violations.
+
+2010-01-03  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/Makefile.in (IRCD_SRC): Add m_xquery.c and m_xreply.c to
+       the build.
+
+       * ircd/m_xquery.c: Add missing include.
+       (mo_xquery): Fix spelling of struct Client.
+       (ms_xquery): Likewise.
+
+       * ircd/m_xreply.c: Add missing includes.
+       (ms_xreply): Fix spelling of struct Client and findNUser().
+
+2010-01-01  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * doc/readme.xquery: documentation for design and use of the
+       extension query mechanism
+
+       * doc/readme.iauth: document X iauth message and X and x server
+       messages
+
+       * include/msg.h: declare XQUERY/XQ and XREPLY/XR commands/tokens
+
+       * include/handlers.h: declare mo_xquery(), ms_xquery(), and
+       ms_xreply() message handlers
+
+       * include/s_auth.h: declare auth_send_xreply() to forward replies
+       to extension queries to the iauth instance
+
+       * ircd/m_xquery.c: process extension queries
+
+       * ircd/m_xreply.c: process replies to extension queries
+
+       * ircd/parse.c: add XQUERY and XREPLY commands to the list
+
+       * ircd/s_auth.c: add support for extension queries to iauth
+       protocol
+
+2010-01-01  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_auth.c (iauth_do_spawn): Add debug output to diagnose
+       which system call might be failing.
+       (auth_spawn): Avoid reading past the end of iauth->i_argv[].  When
+       discarding an existing IAuth instance, use auth_close_unused() to
+       close the sockets and avoid leaking memory.
+
+2010-01-01  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (mode_process_bans): Bypass total ban count and
+       length checks for OPMODEs.
+
+2010-01-01  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_features.c (feature_report): If sd->sd_funcdata is
+       non-zero, report even unchanged features (using prefix 'f').
+
+       * ircd/s_stats.c (statsinfo): Make "/stats f" case-sensitive, and
+       use the upper case variant to report all features.
+
+2009-07-30  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (register_user): Move the default-usermodes call
+       to set_user_mode() to before SetUser(), so that the former does
+       not increment the UserStats fields.  Add back the explicit
+       adjustments to UserStats for invisible and opered clients.
+
+2009-07-05  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (register_user): Use correct parc for
+       set_user_mode().  Do not increment UserStats fields here, because
+       set_user_mode() handles that.
+
+2009-07-05  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_gline.c (ms_gline): Fix the sense of the test for
+       strtoul() when parsing G-line lifetimes -- zero indicates failure.
+
+2009-07-05  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (mode_parse_client): Ignore anything after a
+       colon when the mode is CHFL_VOICE or the mode is being removed.
+
+2009-07-04  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_auth.c (find_conf_client): New function.
+       (preregister_user): Use it to avoid assigning a second conf class
+       on client connection.
+       (auth_ping_timeout): Send the "T" message only if we do not kill
+       the client (and thus send a "D" message).
+       (auth_find_classs_conf): Do not allow IAuth to select a disabled
+       class.  Unlink new conf items from GlobalConfList.
+       (iauth_cmd_done_client): Handle failures from attach_conf().
+       (iauth_parse): Behave decently when a client is killed by the
+       message handler.
+
+       * tools/iauth-test (%handlers): Add entries to help test this.
+
+2009-07-04  Michael Poole <mdpoole@troilus.org>
+
+       * include/channel.h (RevealDelayedJoinIfNeeded): Declare.
+
+       * ircd/channel.c (RevealDelayedJoinIfNeeded): Implement.
+
+       * ircd/ircd_relay.c (relay_channel_message): Only reveal the user
+       if he passes the check_target_limit() test.
+       (relay_channel_notice): Likewise.
+
+       * ircd/m_wallchops.c (m_wallchops): Likewise.
+
+       * ircd/m_wallvoices.c (m_wallvoices): Likewise.
+
+       * ircd/s_user.c (check_target_limit): Micro-optimize to only check
+       the user's channel list for invites if we are about to deny it.
+
+2009-03-25  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd.c (main): Unconditionally set +6 flag on self.
+
+2009-03-25  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_auth.c (iauth_cmd_hostname): Properly assign the spoofed
+       hostname (yea, even as the "real" host) in the hurry state.
+
+       * tools/iauth-test: Add reminder about perl's RTMIN signal and a
+       new handler to exercise the N command in the hurry state.
+
+2009-03-25  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (mode_parse): Add Doxygen comment.  When bouncing
+       a mode from a desynced U-lined server, do not set the modes or
+       send the change as a HACK(4) message.
+
+2009-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/send.c (sendcmdto_match_butone): Move match_it() to the end
+       of the if() to minimize the number of expensive function calls.
+
+2009-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * patches/diffs/antispambot.diff: Forward port a patch by Dianora
+       to add rudimentary spam bot detection to ircu.
+
+2009-02-08  Michael Poole <mdpoole@troilus.org>
+
+       * include/client.h (ClearHub): New macro.
+
+       * ircd/ircd.c (main): Set IPv6 flag on &me if appropriate.
+
+       * ircd/ircd_features.c (feature_notify_hub): New function.
+       (features[]): Register it for FEAT_HUB.
+
+       * ircd/ircd_parser.y (connectblock): Do not default maxlinks to
+       65535 unless "hub" is specified.
+       (clientblock): Reset maxlinks on cleanup.
+
+2009-02-08  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (clean_channelname): Delete this function; it is
+       no longer used, and had the same length-off-by-one bug.
+
+       * ircd/m_join.c (m_join): Use > instead of >= with CHANNELLEN.
+
+       * tests/ircd.conf: Set CHANNELLEN to make it easier to test this.
+
+       * tests/bug-2328334.cmd: New file for regression testing.
+
+2009-02-08  Michael Poole <mdpoole@troilus.org>
+
+       * include/numeric.h (ERR_INVALIDKEY): Define new numeric.
+
+       * ircd/s_err.c (ERR_INVALIDKEY): Give it a text string.
+
+       * ircd/channel.c (is_clean_key): Rename from clean_key(), and make
+       this function responsible for sending error messages to the client
+       when necessary.
+       (mode_parse_key): Update to match the new is_clean_key() behavior.
+       (mode_parse_upass): Likewise.
+       (mode_parse_apass): Likewise.
+
+       * tests/channel-keys.cmd: New file for regression testing.
+
+2009-02-08  Michael Poole <mdpoole@troilus.org>
+
+       * include/gline.h (gline_forward_deactivation): Undeclare.
+
+       * ircd/m_gline.c (mo_gline): Remove the special case to call
+       gline_forward_deactivation().
+
+       * ircd/gline.c (gline_add): Mention if the new G-line is already
+       deactivated.
+       (gline_forward_deactivation): Delete implementation.
+
+       * tests/glines.cmd: Update the expected output to match.
+
+2009-01-12  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_topic.c (do_settopic): Just before sending the topic out,
+       check to see if the user is join-delayed and should be shown.
+
+       * ircd/m_wallchops.c (m_wallchops): Allow this command to expose
+       join-delayed users.
+       (ms_wallchops): Likewise.
+
+       * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose
+       join-delayed users.
+       (ms_wallvoices): Likewise.
+
+2009-01-12  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
+
+2009-01-12  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/gline.c (count_users): Accept "flags" mask to limit count
+       to local users.
+       (gline_add): Pass the flags to count_users().
+
+2009-01-12  Michael Poole <mdpoole@troilus.org>
+
+       * include/gline.h (gline_forward_deactivation): Declare.
+
+       * ircd/gline.c (count_users): Use ipmask-based checks too.
+       (gline_add): Require flags to have exactly one of the GLINE_GLOBAL
+       and GLINE_LOCAL bits set.
+       (gline_forward_deactivation): Implement new function.
+       (gline_find): Only require the GLINE_LOCAL flag to be set in the
+       gline structure; infer GLINE_GLOBAL when it is cleared.  (This
+       matches the value and usage of GLINE_MASK.)
+
+       * ircd/m_gline.c (ms_gline): Default lastmod to the known lastmod
+       time for GLINE_LOCAL_{DE,}ACTIVATE.
+       (mo_gline): Check that expiration times parse as expected.  Reject
+       "*" as a target for GLINE_LOCAL_{DE,}ACTIVATE.  Require reason and
+       expiration time for new G-lines.  Allow deactivation of an unknown
+       G-line without creating it ("so-and-so ... creating new G-line" is
+       a confusing message for a deactivation).
+
+       * tests/glines.cmd: New test script for G-line parsing tests.
+
+       * tests/ircd.conf: Enable CONFIG_OPERCMDS for glines.cmd.
+
+       * tests/ircd-2.conf: Likewise.
+
+       * tests/readme.txt: Add section on command syntax.
+
+       * tests/test-driver.pl: Report line numbers more clearly.
+       Fix (somewhat kludgily) the brokenness of consecutive "expect"
+       lines, as demonstrated by the numeric 219 and 281 expects in
+       glines.cmd.
+
+2008-11-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_kick.c (ms_kick): Properly handle crossing net rider and
+       normal KICKs (in the case where we get the normal kick first).
+
+2008-11-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/match.c (match): Fix an error in backtracking (apparently
+       exacerbated by escapes).
+
+       * ircd/test/ircd_match_t.c: Update headers and make sure we have a
+       mmap() anonymous request flag.
+       (test_match): New function.
+       (do_match_test): Use it instead of calling match() directly.
+
+2008-09-07  Perry Lorier <isomer@undernet.org>
+       
+       * ircd/m_kill.c: Remove the . from the end of the nickname in kill
+       messages to make cut and pasting easier.
+
+2008-03-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_string.c (ircd_aton_ip4): Reject strings with more
+       than 3 dots in them.
+
+       * ircd/test/ircd_in_addr_t.c (test_addrs): Update the expected
+       parsing for a bare IPv4 address to a IPv4-mapped address.
+       (test_masks): Add a test for the ircd_string.c change.
+
+2008-03-20  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * include/client.h: IsLocOp() now checks to see if its MyUser() as
+       well; IsAnOper() uses IsOper() and IsLocOp() instead of directly
+       testing the flags
+
+2008-03-15  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_bsd.c (init_connection_limits): Remove errant apostrophe.
+       Print text error message when unable to set max FDs.
+
+2008-03-15  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (set_user_mode): Check for end of argument list
+       when processing 'r' modes.
+
+2008-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+2008-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_burst.c (ms_burst): surround protocol_violation() and
+       break in braces to do what Jan Krueger was trying to do...
+
+2008-01-03  Jan Krueger  <jast@heapsort.de>
+
+       * ircd/m_burst.c: prevent leaking the next nick into the current one's
+       oplevel. Add protocol_violation when an invalid nick flag appears.
+
+2007-12-28  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/channel.c: add MODE_REGISTERED, mapped to +R; arrange to
+       only have it settable or clearable by remote users or /opmode
+
+       * include/supported.h (FEATURESVALUES2): update to include 'R'
+       channel mode
+
+       * include/channel.h: add MODE_REGISTERED, update infochanmodes to
+       include 'R' channel mode
+
+2007-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_gline.c (ms_gline): if we got an activate or deactivate
+       for a global G-line we never heard of, and we cannot create it
+       because no expire time was sent, manually propagate the G-line
+       instead of trying to call gline_add()
+
+       * ircd/gline.c (make_gline): never allow a G-line to be created
+       with a 0 expire time
+
+2007-12-03  Michael Poole <mdpoole@troilus.org>
+
+       * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.12 release.
+
+2007-12-03  Michael Poole <mdpoole@troilus.org>
+
+       * doc/Makefile.in (DATAROOTDIR): Define.
+       (DATADIR): Likewise.
+       
+2007-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/version.c.SH: correct invalid syntax in shell case/esac
+
+       * ircd/ircd_lexer.l: provide an implementation of yywrap() so we
+       no longer have to link against -lfl
+
+       * configure.in: drop tests on LEXLIB and don't add it to the list
+       of libs
+
+       * ircd/gline.c (gline_add): apply too-many-users test to realname
+       G-lines *only* when the origin is my user (or a user, for
+       remote-local G-lines)
+
+2007-11-28  Michael Poole <mdpoole@troilus.org>
+
+       * include/patchlevel.h (PATCHLEVEL): Bump for pre12 development.
+
+2007-11-28  Michael Poole <mdpoole@troilus.org>
+
+       * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.11 release.
+
+2007-11-28  Michael Poole <mdpoole@troilus.org>
+
+       * tests/test-driver.pl (drv_default): Fix expect for numeric
+       responses that have non-trivial parameters.
+       (check_expect): Simplify (and fix) sender name check.
+
+       * tests/bug-1640796.cmd: Update expect NNN for new POE behavior
+       and part to not try to part the channel named "leaving".
+
+       * tests/bug-1674539.cmd: Update expect NNN for new POE behavior.
+
+       * tests/bug-1840011.cmd: New test script.
+       
+2007-11-28  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
+       (apply_ban): Only block narrower bans if the wider ban is active.
+
+2007-11-24  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_names.c (do_names): Don't try to re-initialize the start
+       of buf[] for each line.  It's done the first time around and that
+       can be reused safely.
+
+2007-11-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_stats.c (m_stats): Properly assign param before it is
+       used in the hunt_server_cmd() call.
+       
+2007-11-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_auth.c (iauth_disconnect): Avoid destroying invalid
+       sockets.
+       (iauth_stderr_callback): Disconnect iauth child if stderr has
+       EOF (in case stdin notification is delayed somehow).
+       
+2007-11-04  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/umkpasswd.c (sum): Typecast buffer to avoid a warning about
+       the parameter type being passed to strlen().
+       
+2007-11-04  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf: Document /LIST M as controlled by list_chan.
+
+       * include/channel.h (LISTARG_SHOWMODES): Define.
+
+       * ircd/hash.c (list_next_channels): Handle it.
+
+       * ircd/m_list.c (show_usage): Document 'M' flag.
+       (param_parse): Recognize 'M' as LISTARGS_SHOWMODES.
+
+2007-11-04  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_list.c (param_parse): Reverse comparison direction when
+       converting from minutes to time_t, and which bound is set (so that
+       T<time_t works correctly).  Also switch is_time cases so that 'T'
+       and 'C' work as documented.  Remove a "break" after a "return".
+
+       (m_list): Remove a "break" after a "return".
+
+2007-10-29  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_lexer.l (YY_INPUT): Redefine to use fbgets().
+       (init_lexer): Return a value to indicate failure.  Use fbopen().
+       (deinit_lexer): New function.
+
+       * ircd/s_conf.c (read_configuration_file): Update extern
+       declarations.  Bail if init_lexer() fails.  Call deinit_lexer()
+       rather than directly munging yyin.
+
+2007-10-29  Michael Poole <mdpoole@troilus.org>
+
+       * include/gline.h: Delete declaration of gline_propagate().
+
+       * include/whocmds.h: Delete declaration of count_users().
+
+       * ircd/whocmds.c (count_users): Move to gline.c as a static.
+
+       * ircd/gline.c (whocmds.h): Remove #include.
+       (gliter): Document boolean trickiness.  Add missing trickiness
+       when gl_flags has bits set besides GLINE_ACTIVE.
+       (make_gline): Get rid of now-unused "after" variable and the
+       comments related to overlapping G-lines.
+       (gline_propagate): Make static.
+       (count_users): Move from whocmds.c as a static function.
+       (count_realnames): New function.
+       (gline_add): Require a force to hit lots of users with a realname
+       G-line.
+
+2007-09-05  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_gline.c (ms_gline): Remove dead branch when 4 < parc < 5.
+       (mo_gline): Consistently use the last argument as the reason.
+
+2007-09-05  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/Makefile.in: Fix dependencies for version.h generation.
+
+2007-08-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/send.c (sendwallto_group_butone): Move a feature_bool()
+       call out of a loop.  Convert HasFlag() uses to appropriate macros
+       from client.h.
+
+2007-08-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_string.c (ircd_aton_ip4): Allow a sequence of *.* at
+       the end of an IPv4 mask.
+       (ipmask_parse): Likewise for *:* at the end of IPv6 masks.
+
+       * ircd/test/ircd_in_addr_t.c (test_masks): Add tests for this.
+
+2007-08-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (register_user): Update inv_clients and opers
+       counts.  Call client_set_privs() for local users.
+       (set_nick_name): Do not call client_set_privs() for remote users.
+       (set_user_mode): Move oper and invisible client checks inside the
+       IsRegistered() section.
+
+2007-08-14  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (DONE_*): Split key changes into _ADD and _DEL.
+       (mode_parse_key): Check both, to properly handle -k+k changes.
+       (mode_parse_upass): Likewise, for -U+U.
+       (mode_parse_apass): Liekwise, for -A+A (in case that ever happens).
+       (mode_parse): Update which "done" flag is checked during a wipeout.
+
+2007-08-13  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (whipser): CNOTICEs should not trigger away
+       messages, only CPRIVMSGs.
+
+2007-08-13  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_who.c (m_who): Reorder responses and change the
+       ERR_QUERYTOOLONG parameter to be consistent with m_whois().
+       
+2007-08-13  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (register_user): Initialize umodev[] in a
+       C89-compatible way.  (gcc 4.1.2 warned about it.)
+
+2007-08-13  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_names.c (do_names): Add NAMES_DEL to comment.  Avoid use
+       of strcat().  Get rid of ms_names(), which was basically a copy of
+       m_names(), and merge the "showingdelayed" changes into m_names().
+       Replace the recursion with iteration.
+
+       * ircd/parse.c (msgtab): Use m_names(), not ms_names().
+
+2007-08-08  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_auth.c (report_iauth_conf): Remove end-of-stats message;
+       m_stats() already does that.
+
+       (report_iauth_stats): Likewise.
+
+2007-08-08  Michael Poole <mdpoole@troilus.org>
+
+       * include/res.h (irc_in_addr_is_ipv4): Fix classification of
+       addresses like 0.0.0.0.
+
+2007-07-21  Perry Lorier <isomer@undernet.org>
+
+       * ircd/s_user.c: Move set_nick_name() to use set_user_mode(),
+       set_user_mode() now interprets +r usermodes properly (and ignores
+       them from non servers).  This fixes a problem where remote users
+       weren't being counted properly anymore.
+
+2007-07-20  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_gline.c: create abs_expire() macro to convert an expire
+       timestamp from the network into an absolute time, if needed;
+       rename expire_off to expire globally, since it now represents an
+       absolute expiration time; use expire - CurrentTime in gline
+       forwarding statements; in ms_gline(), use abs_expire() to convert
+       network expiration timestamp into absolute timestamp; in
+       mo_gline(), add CurrentTime to oper-provided expiration offset to
+       convert to absolute timestamp
+
+       * ircd/gline.c: assume expire and lifetime arguments to
+       gline_add() and gline_modify() are already absolute timestamps;
+       send lifetime parameter as an absolute timestamp, but leave expire
+       timestamp as relative as first part of a 2-phase update
+
+2007-07-12  Perry Lorier <isomer@undernet.org>
+       Reconsider how we manage modes before registration, to avoid stats
+       getting out of sync.
+
+       * ircd/s_user.c (set_user_mode): Add new parameter to set_user_mode to
+       ignore some modes.
+       (register_user): Use set_user_mode to parse default usermode for
+       users.
+
+       * ircd/m_user.c: Add extra parameter to set_user_mode call
+
+       * ircd/s_auth.c: Add extra parameter to set_user_mode call
+
+       * ircd/m_mode.c: Add extra parameter to set_user_mode call
+
+       * ircd/s_misc.c: Verify stats are consistant.
+
+       * include/s_user.h: Change prototype, add flag definitions.
+
+       * ircd/m_lusers.c (m_users): Assert that we're generating sane stats,
+       include "unknowns" in the total user connections to avoid negative
+       wrap arounds.
+
+2007-07-12  Perry Lorier <isomer@undernet.org>
+       
+       * ircd/m_user.c (m_luser): Fix broken RFC 2812 on connect user mode 
+       setting
+
+2007-05-28  Michael Poole <mdpoole@troilus.org>
+
+       * include/numeric.h (ERR_INPUTTOOLONG): New numeric.
+
+       * ircd/s_bsd.c (read_packet): Use it.
+
+       * ircd/s_err.c (replyTable): Give it a format string.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Do not let bursting servers join a
+       user to a channel more than once.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_features.c (feature_set): Report new value of feature
+       for /set.
+       (feature_reset): Likewise, for /reset.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (netride_modes): Return -1 if someone tries to
+       remove modes in the burst.
+       (ms_burst): Check for, and handle, that protocol violation.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_privs.c (mo_privs): Report "no such nickname" for unknown
+       nicks in the list.  (Unfortunately, the nick is lost before ms_privs.)
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/listener.c (show_ports): Actually hide hidden ports from
+       clients that should not see them.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_err.c (ERR_DONTCHEAT): Add apparently missing %s.
+       
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_connect.c (mo_connect): Return an error to a locop who
+       tries to do a remote connect.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/parse.c (msgtab): Make SETTIME consistent with other
+       oper commands, in using m_not_oper for non-opered clients.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_parser.y (pseudoblock): Forbid pseudo commands that
+       are not all alphabetic characters.
+
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * configure.in (maxcon): Check that maximum connections is
+       sufficiently large to avoid underflow in MAXCLIENTS.
+       
+2007-05-20  Michael Poole <mdpoole@troilus.org>
+
+       * include/supported.h (FEATURES2): Remove extra space.
+
+       * ircd/m_admin.c (m_admin): Only check server mask against our
+       name, so that it cannot leak information about other linked
+       servers.
+
+       * ircd/m_version.c (m_version): Likewise.
+       
+2007-04-15  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_gline.c: fix minor typo in code that forwards remote
+       local activations/deactivations: %c takes characters, not
+       pointers!
+       (mo_gline): fix similar typo in code forwarding remote local
+       G-lines by opers
+
+2007-04-10  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_parser.y (iauth): Avoid problems related to MyFree's
+       multiple evaluation of its argument.
+
+2007-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_gline.c (ms_gline): lastmod must be non-zero
+
+2007-04-04  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_conf.c (rehash): Restart resolver after reading the
+       config file; this un-breaks the resolver after /rehash if the
+       ircd.conf contains no "dns server = <ipstring>;" lines.
+
+2007-04-01  J. R. Lenz <ralf@starshadow.com>
+
+       * ircd/s_user.c (register_user): Check for host-hiding when fully
+       registering a user.  [Comment added by Entrope.]
+
+2007-03-31  Michael Poole <mdpoole@troilus.org>
+
+       * doc/readme.iauth (IAuth M): Document new command.
+
+       * ircd/m_user.c (m_user): Recognize RFC 2812 mode request and a
+       saner usermode request.
+
+       * ircd/s_auth.c (iauth_cmd_usermode): New command.
+       (iauth_parse): Dispatch to it.
+
+       * ircd/s_user.c (set_user_mode): Only broadcast usermode changes
+       for registered clients.
+
+       * tools/iauth-test (127.0.1.3): Test the new M command.
+
+2007-03-31  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_mode.c (m_mode): Check and report target/source
+       violations before calling set_user_mode().
+       (ms_mode): Likewise.
+
+       * ircd/s_user.c (set_user_mode): Remove those checks from here.
+
+2007-03-31  Michael Poole <mdpoole@troilus.org>
+
+       * include/ircd_events.h (struct Generators): Convert elements to
+       be struct GenHeader*.
+       (timer_next): Update to match.
+
+       * ircd/ircd_events.c (timer_enqueue): Update to match.
+       (signal_callback): Likewise.
+       (timer_init): Remove a typecast with something slightly safer.
+       (timer_run): Update to deal with new type of Generator.g_timer.
+       (signal_add): Likewise.
+       (socket_add): Likewise.
+       
+2007-03-28  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_asll.c (ms_asll): Count hits and report at the end, so
+       that a client is told whether any match (and has a hint that only
+       directly linked servers are checked).
+       (mo_asll): Likewise.
+
+2007-03-26  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_stats.c (m_stats): Move check for STAT_FLAG_LOCONLY (and
+       the assignment to "param") to the hunted server.
+
+2007-03-26  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_auth.c (iauth_parse): Check for missing arguments when
+       parsing the iauth message.
+
+       * tests/bug-1685648.cmd: New file to test this.
+
+       * tests/iauth-test: New file to exercise the code path.
+
+       * tests/ircd.conf: Use the iauth-test helper program.
+
+2007-03-26  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_silence.c (forward_silences): Do not try twice to process
+       silences that were both added and deleted.
+
+2007-03-26  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_parser.y (portblock): Restore old behavior for Port
+       blocks with no host listed.
+
+2007-03-26  Michael Poole <mdpoole@troilus.org>
+
+       * doc/readme.iauth (iauth I): Fix example and syntax.
+
+2007-03-18  Michael Poole <mdpoole@troilus.org>
+
+       * acinclude.m4 (unet_NONBLOCKING): Properly quote function name.
+       (unet_SIGNALS): Likewise.
+       (unet_CHECK_TYPE_SIZES): Likewise.
+       (AC_LIBRARY_NET): Likewise.
+
+2007-03-18  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_gline.c (mo_gline): add permissions checks I kept
+       forgetting to add--remote local modifications require
+       FEAT_CONFIG_OPERCMDS and PRIV_GLINE, local G-lines require
+       PRIV_LOCAL_GLINE, and global G-line changes (excluding local
+       activation/deactivation) require FEAT_CONFIG_OPERCMDS and
+       PRIV_GLINE
+
+2007-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (CRule): Document the support for multiple
+       server masks in a single CRule block.
+       (Port): Document the optional additional field for vhost entries.
+       Document the support for multiple vhost entries in a single Port
+       block.
+
+       * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
+       (USE_IPV6): Likewise.
+       (portblock): Iterate over hosts rather than using the single host.
+       (portitem): Add portvhostnumber alternative production.
+       (portnumber): Check port number here.  If valid, combine address
+       family and port number in "port" variable.  If a port-less item
+       exists in "hosts", set its port number.
+       (portvhost): Prepend mask to "hosts" list.
+       (portvhostnumber): New production.
+       (cruleblock): Iterate over hosts rather than using the single
+       host.
+       (cruleserver): Prepend server mask to "hosts" list.
+
+2007-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/listener.c (add_listener): Only try to create IPv6 sockets
+       for IPv6-compatible addresses; likewise for IPv4.
+
+2007-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (Operator): Update documentation to mention
+       more than one host entry is allowed.
+       (Motd): Likewise.
+
+       * ircd/ircd_parser.y (hosts): New file-scope variable.
+       (free_slist): New helper function.
+       (operblock): Iterate over hosts instead of using the single host.
+       (operhost): Prepend the mask to hosts.
+       (motdblock): Iterate over hosts instead of using the single host.
+       (motdhost): Prepend the mask to hosts.
+       (motdfile): Fix possible leak of "pass" string (the filename).
+
+       * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
+       string; operblock (the only caller) frees it now.
+
+2007-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/list.c (free_link): Only decrement the in-use count of
+       links if we free a link.
+
+2007-03-17  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/s_err.c: update replies to handle new fields in
+       RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
+       G-line lifetime, and local activation status
+
+       * ircd/m_gline.c: update function documentation for ms_gline();
+       move test for server to before mask processing; don't look up
+       remote server too early; add code to process local activations and
+       deactivations early in ms_gline(); implement adding and destroying
+       local G-lines; don't try to locally activate or deactivate G-lines
+       that don't exist; add code to keep track of which fields were
+       available to ms_gline(); implement G-line modification and
+       creation; remove old ms_gline() code; convert
+       sendwallto_group_butone() calls to Debug() calls; reimplement
+       mo_gline() to take into account new syntax
+
+       * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
+       its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
+       G-line expires; add lifetime parameter to make_gline(); disable
+       overlapping G-line check; initialize gl_lifetime from lifetime
+       parameter; initialize gl_state to GLOCAL_GLOBAL; update
+       gline_propagate() to send lifetime parameter; add lifetime
+       parameter to gline_add(); remove some old code in gline_add();
+       figure out lifetime to set on new G-line; remove test for
+       make_gline() returning NULL, since it should never do so now; add
+       modify_gline() for modifying global G-lines; add gline_destroy()
+       for destroying local G-lines; update gline_burst() to send
+       lifetime parameter; update gline_resend() to send lifetime
+       parameter; update gline_list() to add lastmod, lifetime, and local
+       status indicators; update gline_stats() to send lastmod, lifetime,
+       and local status indicators; count BADCHANs in
+       gline_memory_count()
+
+       * include/gline.h: add enum GlineLocalState for keeping track of
+       local state changes to global G-lines; store state in struct
+       Gline; document enum GlineAction; add GLINE_EXPIRE,
+       GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
+       those fields to gline_modify(); add GLINE_UPDATE mask for checking
+       for the above flags; update GlineIsActive() to take into account
+       new gl_state field in struct Gline; add lifetime to gline_add();
+       add gline_modify() for modifying existing global G-lines, and
+       gline_destroy() for destroying local G-lines
+
+       * doc/readme.gline: update documentation to reflect changes made
+       to G-line command syntax
+
+2007-03-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
+       aborting on unrecognized arguments.  It isn't nice to core on
+       "umkpasswd --help"..
+
+2007-03-16  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (Class): Move the "Recommended client classes"
+       comment to a better place (and stop recommending them).  Clarify
+       what maxlinks does.  Make it clear that Operator password entries
+       only support umkpasswd formats.
+       
+2007-03-16  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd.c (parse_command_line): Emit a warning if using -x
+       when DEBUGMODE is disabled.
+
+2007-03-16  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
+       unlimited here, to match attach_conf()'s behavior.
+
+2007-03-16  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to
+       checking for a G-line matching a new user
+
+       * ircd/m_gline.c (ms_gline): rework ms_gline() to handle new
+       command syntax--although it can parse the new syntax, it doesn't
+       yet perform the actions demanded by that syntax
+
+       * ircd/ircd_features.c: trap-door feature FEAT_DISABLE_GLINES to
+       disable G-lines
+
+       * ircd/gline.c: create gliter() macro which performs an iteration
+       over all G-lines in a specified G-line list; initialize record
+       expire in make_gline() (to be redone); check FEAT_DISABLE_GLINES
+       in do_gline(); add and document what happens if GLINE_LOCAL is
+       passed to gline_find()
+
+       * include/ircd_features.h: trap-door feature FEAT_DISABLE_GLINES
+       to disable G-lines; intended use: accidental G-line of *@*
+
+       * include/gline.h: add rexpire (record expiration time) field to
+       gline description structure; add GlineAction enumeration (still
+       undocumented) to describe actions that may be performed on G-lines
+
+2007-03-09  Michael Poole <mdpoole@troilus.org>
+
+       * include/patchlevel.h (PATCHLEVEL): Bump for .pre11 development.
+
 2007-03-09  Michael Poole <mdpoole@troilus.org>
 
        * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release.
index be5217589f0e0b1257f68b62b2277c828aefb2df..f8a3afb496931921cd2c9d008a64f1fe640f3e74 100644 (file)
--- a/Doxyfile
+++ b/Doxyfile
@@ -23,7 +23,7 @@ PROJECT_NAME           = "Undernet IRC Daemon"
 # This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
-PROJECT_NUMBER         = "$Name: u2_10_12_09 $"
+PROJECT_NUMBER         = "$Name: not supported by cvs2svn $"
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
index ff3b25aad1318f1cda4379146af4228b295bd2d9..580ad54eb4a632e6ff6ea3c000b2fd6ddb79f3ce 100644 (file)
@@ -28,8 +28,8 @@ AWK = @AWK@
 @SET_MAKE@
 #### End of system configuration section. ####
 
-SUBDIRS = doc ircd
-IRCD_MAKEFILES = Makefile doc/Makefile ircd/Makefile
+SUBDIRS = ircd ircd/test
+IRCD_MAKEFILES = Makefile ircd/Makefile ircd/test/Makefile
 
 all: build
 
@@ -119,10 +119,10 @@ stamp-h: config.h.in config.status
 Makefile: Makefile.in config.status
        ./config.status
 
-doc/Makefile: doc/Makefile.in config.status
+ircd/Makefile: ircd/Makefile.in config.status
        ./config.status
 
-ircd/Makefile: ircd/Makefile.in config.status
+ircd/test/Makefile: ircd/test/Makefile.in config.status
        ./config.status
 
 config.status: configure
index afc222e7637827af7d3d309f3aaf714a6d404b4e..b4f8b46b2a429ba3bf8b1b289f4fff83ebe7548c 100644 (file)
@@ -762,7 +762,7 @@ if test x"$unet_cv_enable_openssl" = xyes ; then
 fi
 
 dnl Finally really generate all output files:
-AC_OUTPUT(Makefile ircd/Makefile doc/Makefile, [echo timestamp > stamp-h])
+AC_OUTPUT(Makefile ircd/Makefile ircd/test/Makefile, [echo timestamp > stamp-h])
 
 dnl Report configuration
 AC_MSG_RESULT([
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644 (file)
index 878a9f1..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# doc/Makefile for the Undernet IRC Daemon.
-# Copyright (C) 1997, Carlo Wood <carlo@runaway.xs4all.nl>
-
-# 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 2, 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-#### Start of system configuration section. ####
-
-prefix = /var/run/ircd
-top_srcdir = ..
-srcdir = .
-
-INSTALL = /usr/bin/install -c
-SHELL = /bin/sh
-RM = /bin/rm
-
-
-DATAROOTDIR = ${prefix}/share
-DATADIR = ${datarootdir}
-MANDIR = ${datarootdir}/man
-
-#### End of system configuration section. ####
-
-all:
-
-build:
-
-clean:
-
-distclean:
-       ${RM} -f Makefile stamp-m
-
-maintainer-clean: distclean
-
-depend:
-
-install:
-
-uninstall:
-
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644 (file)
index 82f0f31..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# doc/Makefile for the Undernet IRC Daemon.
-# Copyright (C) 1997, Carlo Wood <carlo@runaway.xs4all.nl>
-
-# 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 2, 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-#### Start of system configuration section. ####
-
-prefix = @prefix@
-top_srcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-INSTALL = @INSTALL@
-SHELL = @SHPROG@
-RM = @RMPROG@
-@SET_MAKE@
-
-DATAROOTDIR = @datarootdir@
-DATADIR = @datadir@
-MANDIR = @mandir@
-
-#### End of system configuration section. ####
-
-all:
-
-build:
-
-clean:
-
-distclean:
-       ${RM} -f Makefile stamp-m
-
-maintainer-clean: distclean
-
-depend:
-
-install:
-
-uninstall:
-
diff --git a/doc/history/ChangeLog.11 b/doc/history/ChangeLog.11
deleted file mode 100644 (file)
index cc8a9ca..0000000
+++ /dev/null
@@ -1,4169 +0,0 @@
-2002-01-08  Perry Lorier  <isomer@coders.net>
-       * Fixed the build system -- MAKEFILES is *not* a variable you can
-       just use in a makefile :)
-       * Added "Quit: " prefix to quit messages.
-
-2001-10-14  Perry Lorier  <isomer@coders.net>
-       * Minor fixes to the below
-
-2001-09-21  Perry Lorier  <isomer@coders.net>
-       * ircd/send.c and various: replace sendcmdto_flag_butone with
-       sendwallto_group_butone
-
-2001-09-21  Vampire-  <unknown>
-       * ircd/ircd_string.c: unique_name_vector round II.
-
-2001-09-21  mbuna  <mbuna@undernet.org>
-       * configure.in: Add support for darwin
-
-2001-09-21  Perry Lorier  <isomer@coders.net>
-       * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
-
-2001-09-20  Perry Lorier  <isomer@coders.net>
-
-       * Pullups from 2.10.10.pl16
-       * Added some warnings, and the concept of rate limited snotices
-
-2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: use "%u" to format limit arguments; use
-       strtoul() to process limit arguments in a /mode command--note:
-       most clients seem to truncate the integer, probably because
-       they're using atoi, and perhaps signed ints
-
-2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/numnicks.c: include stdlib.h for exit()
-
-       * ircd/ircd_log.c: include stdlib.h for exit()
-
-       * ircd/ircd_events.c: include stdlib.h for exit()
-
-       * ircd/s_stats.c: remove description of /stats v, since it's gone
-
-       * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
-       /wallops to distinguish wallops from wallusers
-
-       * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
-       in the "handshake" or "connecting" states--I think the latter will
-       never happen, but...
-
-       * doc/Authors: apply delete's Authors patch
-
-       * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
-       Braden's version
-
-       * README: rewrite README
-
-2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_serv.c (server_estab): remove unused variable split
-
-       * ircd/parse.c: add mr_error to the parse table
-
-       * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
-       unregistered connections--if IsUserPort() is true, the ERROR is
-       ignored, otherwise, the message is saved
-
-2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_kill.c (ms_kill): another minor typo *sigh*
-
-       * ircd/s_user.c (send_supported): oops, minor typo...
-
-       * ircd/s_user.c: implement send_supported() to send two ISUPPORT
-       messages containing our feature buffers; make register_user() use
-       send_supported()
-
-       * ircd/s_misc.c (exit_client): make sure not to give away a remote
-       server in the ERROR message sent to the client; if the killer is a
-       server, we substitute our name in its place
-
-       * ircd/m_version.c (m_version): use send_supported() to send the
-       ISUPPORT values to the user
-
-       * ircd/m_nick.c: shave nick collision kills here a bit, too, for
-       the same reasons as for m_kill.c
-
-       * ircd/m_kill.c: shave kills a bit so that the results look
-       exactly the same no matter where you are; if we didn't do this, it
-       would be possible to map the network by looking at the differences
-       between kills originating under various circumstances
-
-       * include/supported.h: split the features into two, so as to not
-       bust the parameter count when sending the features list
-
-       * include/s_user.h: declare new send_supported() function to send
-       the ISUPPORT information
-
-2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
-       source-routed spoofing attacks; this is only available under
-       u2.10.11, so don't even bother, since no one but testers are using
-       the source base
-
-2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
-
-       * ircd/s_err.c: put in a . for reporting link version on /trace,
-       to match what /version does
-
-2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_misc.c (exit_client): servers don't understand what the
-       numeric nick ERROR is supposed to mean, so they ignore error
-       messages, resulting in not knowing why we were rejected; use
-       sendcmdto_one for servers and sendrawto_one for clients
-
-2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
-       a nick collide, a bare BURST may be propagated; adjust the
-       enforced parameter count to accept the bare BURST
-
-2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c: mark a client as having been IP checked
-
-       * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
-       second call to SetIPChecked()
-
-2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
-
-       * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
-
-2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
-       sections so that if neither is used, the declaration of buf will
-       not elicit an "unused variable" warning under NetBSD
-
-       * ircd/m_map.c: include string.h to declare strcpy (fix warnings
-       on alpha)
-
-       * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
-       warnings on alpha)
-
-       * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
-       warnings on alpha)
-
-       * ircd/client.c: include string.h to declare memset (fix warnings
-       on alpha)
-
-       * ircd/channel.c: remove unused functions next_overlapped_ban,
-       del_banid, and is_deopped (fix warnings under -O1)
-
-       * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
-       warnings on alpha)
-
-2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (set_user_mode): clear the snomask if the user
-       isn't supposed to receive server notices anymore
-
-       * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
-
-       * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
-       installation prefix; default devpoll and kqueue to on (they get
-       turned off if the required headers aren't present)
-
-       * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
-       sprintf_irc(); it's a bit hackish, but it'll do for now
-
-       * ircd/support.c: remove unused #include
-
-       * ircd/send.c: remove unused #include
-
-       * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/s_serv.c: remove unused #include
-
-       * ircd/s_misc.c: use ircd_snprintf() and friends instead of
-       sprintf_irc() and friends
-
-       * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
-       ircd/s_err.c, which is the only other file to refer to it
-
-       * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
-       sprintf_irc()
-
-       * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
-       sprintf_irc()
-
-       * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
-       instead of sprintf_irc()
-
-       * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
-       make depend
-
-       * include/ircd_string.h: remove declaration of sprintf_irc() (what
-       was it doing here anyway?)
-
-       * include/sprintf_irc.h: removed unneeded source file
-
-       * ircd/sprintf_irc.c: removed unneeded source file
-
-       * ircd/s_debug.c (count_memory): remove some dead code
-
-       * ircd/s_auth.c: remove some dead code
-
-       * ircd/res.c (update_list): remove some dead code
-
-       * ircd/m_whowas.c: remove some dead code
-
-       * ircd/m_whois.c: remove some dead code
-
-       * ircd/m_who.c: remove some dead code
-
-       * ircd/m_wallusers.c: remove some dead code
-
-       * ircd/m_wallops.c: remove some dead code
-
-       * ircd/m_wallchops.c: remove some dead code
-
-       * ircd/m_version.c: remove some dead code
-
-       * ircd/m_userip.c: remove some dead code
-
-       * ircd/m_userhost.c: remove some dead code
-
-       * ircd/m_uping.c: remove some dead code
-
-       * ircd/m_trace.c: remove some dead code
-
-       * ircd/m_topic.c: remove some dead code
-
-       * ircd/m_tmpl.c: remove some dead code
-
-       * ircd/m_time.c: remove some dead code
-
-       * ircd/m_squit.c: remove some dead code
-
-       * ircd/m_silence.c: remove some dead code
-
-       * ircd/m_settime.c: remove some dead code
-
-       * ircd/m_set.c: remove some dead code
-
-       * ircd/m_server.c: remove some dead code
-
-       * ircd/m_rpong.c: remove some dead code
-
-       * ircd/m_rping.c: remove some dead code
-
-       * ircd/m_restart.c: remove some dead code
-
-       * ircd/m_reset.c: remove some dead code
-
-       * ircd/m_rehash.c: remove some dead code
-
-       * ircd/m_quit.c: remove some dead code
-
-       * ircd/m_proto.c: remove some dead code
-
-       * ircd/m_privs.c: remove some dead code
-
-       * ircd/m_privmsg.c: remove some dead code
-
-       * ircd/m_pong.c: remove some dead code
-
-       * ircd/m_ping.c: remove some dead code
-
-       * ircd/m_pass.c: remove some dead code
-
-       * ircd/m_part.c: remove some dead code
-
-       * ircd/m_opmode.c: remove some dead code
-
-       * ircd/m_oper.c: remove some dead code
-
-       * ircd/m_notice.c: remove some dead code
-
-       * ircd/m_nick.c: remove some dead code
-
-       * ircd/m_map.c: remove some dead code
-
-       * ircd/m_lusers.c: remove some dead code
-
-       * ircd/m_list.c: remove some dead code
-
-       * ircd/m_links.c: remove some dead code
-
-       * ircd/m_kill.c: remove some dead code
-
-       * ircd/m_kick.c: remove some dead code
-
-       * ircd/m_jupe.c: remove some dead code
-
-       * ircd/m_join.c: remove some dead code
-
-       * ircd/m_ison.c: remove some dead code
-
-       * ircd/m_invite.c: remove some dead code
-
-       * ircd/m_info.c: remove some dead code
-
-       * ircd/m_help.c: remove some dead code
-
-       * ircd/m_gline.c: remove some dead code
-
-       * ircd/m_get.c: remove some dead code
-
-       * ircd/m_error.c: remove some dead code
-
-       * ircd/m_endburst.c: remove some dead code
-
-       * ircd/m_die.c: remove some dead code
-
-       * ircd/m_desynch.c: remove some dead code
-
-       * ircd/m_destruct.c: remove some dead code
-
-       * ircd/m_defaults.c: remove some dead code
-
-       * ircd/m_create.c: remove some dead code, along with an #if 1
-
-       * ircd/m_cprivmsg.c: remove some dead code
-
-       * ircd/m_connect.c: remove some dead code
-
-       * ircd/m_close.c: remove some dead code
-
-       * ircd/m_clearmode.c: remove some dead code
-
-       * ircd/m_burst.c: remove some dead code
-
-       * ircd/m_away.c: remove some dead code
-
-       * ircd/m_admin.c: remove some dead code
-
-       * ircd/listener.c (accept_connection): remove some dead code
-
-       * ircd/ircd_reply.c (need_more_params): remove some dead code
-
-       * ircd/channel.c (add_banid): remove some dead code
-
-       * include/support.h: remove some dead code
-
-       * include/querycmds.h: remove some dead code
-
-       * doc/readme.chroot: document how to do chroot operation
-
-2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
-       force bin directory to be created if necessary prior to
-       installation; run make depend
-
-       * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
-       the ${srcdir}
-
-       * Makefile.in: tune to detect Makefile.in changes in
-       subdirectories and to create installation directory indicated by
-       ${prefix}
-
-       * ircd/whocmds.c (count_users): routine to count the number of
-       users matching a given user@host mask
-
-       * ircd/s_err.c: add error messages for ERR_LONGMASK,
-       ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
-
-       * ircd/m_gline.c: look for and advance past '!' flag on G-lines
-       from operators; only set GLINE_OPERFORCE flag if oper has the
-       PRIV_WIDE_GLINE privilege
-
-       * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
-       maximum number of users a G-line can impact before it has to be
-       forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
-       wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
-       operators to use ! to force a wide G-line to be set
-
-       * ircd/gline.c: make make_gline() be called with separate user and
-       host arguments, and not call canon_userhost() directly; implement
-       gline_checkmask() to verify that a host mask is acceptable; move
-       BADCHAN check up in gline_add(), and check passed-in mask under
-       certain circumstances for acceptability; fix call to
-       sendto_opmask_butone() to handle separation of userhost into user
-       and host in gline_add(); update call to make_gline()
-
-       * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
-       FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
-       PRIV_WIDE_GLINE to privtab[] for client_report_privs()
-
-       * include/whocmds.h (count_users): declare routine to count users
-       matching a given user@host mask
-
-       * include/numeric.h: added three new error returns: ERR_LONGMASK
-       -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
-       many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
-       contains wildcards in the wrong places
-
-       * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
-       FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
-
-       * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
-       to signal to gline_add() that the operator attempted to force the
-       G-line to be set
-
-       * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
-
-       * doc/readme.gline: update to document new "!" prefix to a G-line
-       user@host mask
-
-       * doc/readme.features: document GLINEMAXUSERCOUNT,
-       OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
-
-       * doc/example.conf: update to mention new features along with
-       their defaults
-
-2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * doc/example.conf: updated example.conf from Braden
-       <dbtem@yahoo.com>
-
-       * include/supported.h: forward-port from pl15
-
-2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whocmds.c: include ircd_policy.h and implement
-       HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
-
-       * ircd/m_whois.c: forward-port of the idle-time hiding code from
-       pl15; this also required passing parc into do_whois(), which also
-       meant passing parc into do_wilds()--*sigh*
-
-       * include/ircd_policy.h: add a couple more HEAD_IN_SAND
-       #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
-
-2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * tools/wrapper.c: add a wrapper program that can be used to
-       adjust file descriptor limits and root directories; program must
-       be run as root--NOT SETUID!--and given appropriate -u arguments
-
-       * doc/readme.log: documentation of how to configure logging
-
-       * doc/readme.features: documentation of each feature (except for
-       logging)
-
-2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * Makefile.in (config): add a deprecation notice with a pointer to
-       tools/transition
-
-       * tools/transition: shell script to convert old compile-time
-       options into new compile-time options and appropriate F-lines
-
-       * tools/mkchroot: shell-script to prepare the chroot area by
-       copying over all the necessary libraries so they can be found
-
-2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * INSTALL: partial update of INSTALL for u2.10.11 release...
-
-2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/table_gen.c (makeTables): finally got tired of the
-       "overflow in implicit conversion" warning, so just got rid of it
-       by explicitly casting UCHAR_MAX to a (default) char; diffs show no
-       differences in the tables generated
-
-2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (sendcmdto_match_butone): don't let the server crash
-       if a client is in the STAT_CONNECTING status
-
-2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
-       into sendcmdto_one(); define new sendcmdto_prio_one(), which
-       places the message into the priority queue
-
-       * ircd/s_user.c (hunt_server_prio_cmd): definition of
-       hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
-       instead of sendcmdto_one()
-
-       * ircd/m_settime.c: use sendcmdto_prio_one() and
-       hunt_server_prio_cmd() to send SETTIME
-
-       * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
-
-       * include/send.h: removed declaration for unused vsendcmdto_one();
-       added a declaration for sendcmdto_prio_one()
-
-       * include/s_user.h: declare hunt_server_prio_cmd(), which calls
-       sendcmdto_prio_one()
-
-       * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
-       put in the server's priority queue, too...
-
-       * ircd/ircd.c: don't check LPATH for accessibility at all
-
-2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
-       command if we're configured as a hub; send individual server flags
-       in SERVER commands
-
-       * ircd/s_bsd.c (completed_connection): send a +h flag in our
-       SERVER command if we're configured as a hub
-
-       * ircd/m_server.c: implement parv[7] as a mode-like string; +h
-       sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
-       flag for a server; +hs sets both flags; also modify CMD_SERVER
-       format string to send the flags
-
-       * include/client.h: define two new flags, FLAGS_HUB and
-       FLAGS_SERVICE to mark services and hubs as such; define testing
-       macros, setting macros
-
-       * ircd/s_user.c: remove deprecated struct Gline* argument to
-       register_user(); remove GLINE rebroadcast; do not send GLINE
-       acknowledgement parameter to NICK; do not look for GLINE
-       acknowledgement parameter to NICK while parsing
-
-       * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
-       argument to server_estab(); do not send JUPE/GLINE acknowledgement
-       parameters for SERVER or NICK
-
-       * ircd/m_user.c (m_user): remove deprecated argument to
-       register_user()
-
-       * ircd/m_server.c: remove deprecated argument to server_estab();
-       remove documentation comment regarding JUPE acknowledgement
-       parameter to SERVER; remove JUPE rebroadcast
-
-       * ircd/m_pong.c (mr_pong): remove deprecated argument to
-       register_user()
-
-       * ircd/m_nick.c: remove documentation comment regarding GLINE
-       acknowledgement parameter to NICK
-
-       * ircd/jupe.c: use user's real name in JUPE server notices if
-       HEAD_IN_SAND_SNOTICES is defined
-
-       * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
-       setuid code; correct ancient DEBUG vs DEBUGMODE typo
-
-       * ircd/gline.c: use user's real name in GLINE server notices if
-       HEAD_IN_SAND_SNOTICES is defined
-
-       * ircd/channel.c (modebuf_flush_int): make apparent source be
-       local server, not oper's server; use user's real name in hack
-       notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
-
-       * include/s_user.h: remove struct Gline pre-declaration; remove
-       deprecated struct Gline argument from register_user()
-
-       * include/s_serv.h: remove struct Jupe pre-declaration; remove
-       deprecated struct Jupe argument from server_estab()
-
-2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
-       changes required to control remote stats
-
-       * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
-       recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
-       [forward-port from pl15]
-
-       * ircd/m_whowas.c (m_whowas): report server name only if requester
-       is an operator [forward-port from pl15]
-
-       * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
-       my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
-       and obtain the report from the user's server [forward-port from
-       pl15]
-
-       * ircd/m_who.c: add missing include for ircd_policy.h
-       [forward-port from pl15]
-
-       * ircd/m_version.c (m_version): require oper access for remote
-       /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_time.c (m_time): require oper access for remote /time if
-       HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
-       missing semicolon [forward-port from pl15]
-
-       * ircd/m_nick.c (ms_nick): hide the origin of certain collision
-       kills [forward-port from pl15]
-
-       * ircd/m_motd.c (m_motd): require oper access for remote /motd if
-       HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_lusers.c (m_lusers): require oper access for remote
-       /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_burst.c (ms_burst): server-added bans are stored using
-       local server name, to hide remote server names; modes also are to
-       originate from the local server [forward-port from pl15]
-
-       * ircd/m_admin.c (m_admin): require oper access for remote /admin
-       if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/channel.c (add_banid): if a server is adding a ban, use my
-       server name to hide the remote server's name [forward-port from
-       pl15]
-
-       * ircd/Makefile.in: ran make depend
-
-       * include/s_stats.h: hunt_stats() has to have an extra argument to
-       support the forward-port from pl15
-
-       * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
-       HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
-
-       * ircd/engine_poll.c (engine_loop): remove bogus assert that I
-       forgot to check in the events branch
-
-2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/res.c (init_resolver): don't start DNS expires with a 0
-       relative timeout--if the server starts slow, timeouts could be
-       messy...there's probably a better solution, but this'll do for now
-
-       * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
-       headers very well; include stropts.h; define an os_set_tos()
-
-       * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
-       os_generic.c
-
-       * ircd/ircd.c: if there are no C-lines, we don't want to have a
-       timer that expires at the absolute time of 0--it kinda blocks all
-       the other timers!
-
-       * ircd/engine_devpoll.c: some includes for open(); declare errcode
-       and codesize in engine_loop()
-
-       * ircd/list.c (free_client): remove bogus check on timer active
-       flag
-
-       * ircd/s_auth.c: pull out destruction code in
-       auth_timeout_request() into an externally-visible
-       destroy_auth_request(); manage cli_auth pointer in client
-       structure; use it for an extra assertion check
-
-       * ircd/list.c: include s_auth.h for destroy_auth_request(); add
-       debugging notices to show flow when deallocating
-       connections/clients; call destroy_auth_request() when free'ing a
-       client that has an auth outstanding; don't free the connection if
-       the process timer is unmarked but still active
-
-       * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
-       and reset it before calling the event handler for an ET_DESTROY
-       event
-
-       * include/s_auth.h (destroy_auth_request): declare
-       destroy_auth_request(), which can be used to destroy an
-       outstanding auth request if a client socket goes away before the
-       auth exchange is completed
-
-       * include/ircd_events.h: add an active flag to keep track of
-       whether or not particular generators are active, for the
-       convenience of functions using the API
-
-       * include/client.h: add a pointer for auth requests to struct
-       Connection so we can kill outstanding auth requests if a client
-       socket closes unexpectedly
-
-       * ircd/s_bsd.c: cli_connect() could become 0 during the course of
-       the sock or timer callback; take that into account in the assert
-
-       * ircd/list.c: add magic number checking and setting--magic
-       numbers are zero'd on frees to detect double-frees; add back
-       setting of cli_from() to 0 to break the back-link from the struct
-       Connection (duh)
-
-       * ircd/ircd.c: set me's magic number correctly
-
-       * include/client.h: define magic numbers and accessor/verifier
-       macros
-
-       * ircd/list.c: assert that dealloc_client() is called with
-       cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
-       dealloc_client(); don't mess with cli_from(cptr)
-
-       * ircd/s_bsd.c: only attempt to dealloc a connection if the
-       associated client has already been destroyed, or at least delinked
-
-2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/list.c (free_client): only try to delete the socket when
-       the fd hasn't already been closed, avoiding a double-free
-
-       * ircd/list.c (free_connection): make sure the client is really
-       gone before doing away with the connection
-
-       * ircd/s_bsd.c: record that socket has been added in con_freeflag
-       field; queue a socket_del() as soon as the socket is close()'d;
-       use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
-       FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
-       then dealloc the connection if safe; mark socket as dead when
-       there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
-       to client_timer_callback(); dealloc connection if safe upon
-       ET_DESTROY event in client_timer_callback()
-
-       * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
-       the connection if both socket and timer have been destroyed;
-       destroy both socket and timer explicitly and carefully
-
-       * include/client.h: replace the con_timer field with a
-       con_freeflag field, to indicate what still needs freeing; define
-       the freeflags
-
-       * ircd/engine_select.c (engine_loop): duh...sockList[i] could
-       become 0
-
-       * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
-       become 0
-
-       * ircd/s_bsd.c: add some extra assertions to try to track down a
-       corruption problem
-
-       * ircd/engine_select.c (engine_loop): add an extra assert to try
-       to track down a corruption problem
-
-       * ircd/engine_poll.c (engine_loop): add an extra assert to try to
-       track down a corruption problem
-
-       * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
-       to track down a corruption problem
-
-       * ircd/engine_devpoll.c (engine_loop): skip slots that have become
-       empty during processing; add an extra assert to try to track down
-       a corruption problem
-
-       * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
-       entries
-
-2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c (client_sock_callback): client is no longer
-       blocked, so we must mark it as unblocked
-
-       * ircd/engine_select.c: add Debug() calls galore; add handling for
-       SS_NOTSOCK; use a dummy sock variable to keep things from
-       disappearing on us; correct timeout calculation; update nfds for
-       efficiency
-
-       * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
-       remove a spurious "if (sock)" which will always be true; update
-       nfds for efficiency
-
-       * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
-       SS_NOTSOCK (just in case); correct timeout calculation
-
-       * ircd/engine_devpoll.c: add Debug() calls galore; add handling
-       for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
-
-       * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
-       pretty-indent numbers
-
-       * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
-       case--it's not a socket; the check for writability is most likely
-       not needed, but present for completeness
-
-2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
-       no newline flag is set; call read_packet() when the timer expires,
-       regardless of what's in the buffer--read_packet() should be able
-       to deal properly
-
-       * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
-       sent to clients to include the client nickname (duh)
-
-       * ircd/ircd_events.c: don't destroy a timer if it's already marked
-       for destruction; replace a missing ! in socket_del()
-
-       * ircd/engine_poll.c (engine_loop): reference a temporary variable
-       so we don't have to worry about sockList[i] going away
-
-       * ircd/s_bsd.c (client_sock_callback): add Debug messages
-
-       * ircd/s_auth.c: add Debug messages all over the place
-
-       * ircd/ircd_events.c: add and edit some Debug messages; add a list
-       of routines to convert some of the enums and flags from numbers
-       into human-readable strings for the Debug messages
-
-       * ircd/engine_poll.c: hack some Debug messages to use the new name
-       conversion routines in ircd_events.c; add an extra assert for a
-       condition that shouldn't ever happen; apparently recv() can return
-       EAGAIN when poll() returns readable--I wonder why...
-
-       * include/ircd_events.h: declare some helper routines under
-       DEBUGMODE
-
-2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c (client_sock_callback): add an extra assertion
-       check
-
-       * ircd/s_auth.c: add more Debug messages
-
-       * ircd/list.c (make_client): add an extra assertion check
-
-       * ircd/ircd_events.c (socket_events): don't call the engine events
-       changer if we haven't actually made any changes to the event mask
-
-       * ircd/uping.c: add some Debug messages
-
-       * ircd/s_stats.c: document new /STATS e
-
-       * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
-
-       * ircd/s_bsd.c: remove static client_timer variable; in
-       read_packet(), if there's still data in the client's recvQ after
-       parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
-       of client_sock_callback to handle destroying the timer properly;
-       rewrote client_timer_callback from scratch to be called on an
-       individual client
-
-       * ircd/m_stats.c: add /STATS e to report the engine name
-
-       * ircd/list.c: deal with con_timer field in struct Connection
-       properly; correct a core-level bug in remove_client_from_list--if
-       the client is the only one in the list, we try to update
-       GlobalClientList's cli_prev pointer--not good
-
-       * ircd/ircd.c: remove call to init_client_timer()
-
-       * ircd/engine_poll.c: made Debug messages more uniform by
-       prepending "poll:" to them all; corrected an off-by-one error that
-       caused poll_count to be 1 less than the actual count and removed
-       my work-around; added Debug messages to indicate which socket is
-       being checked and what the results are
-
-       * ircd/Makefile.in: ran a make depend
-
-       * include/s_bsd.h: remove init_client_timer(), since we're doing
-       it differently now
-
-       * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
-       engine name
-
-       * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
-       reports for non-opers
-
-       * include/client.h: add con_timer and con_proc fields to struct
-       Connection and define accessor macros--con_timer marks that
-       con_proc contains a valid timer, and con_proc is used to pace user
-       data
-
-       * ircd/s_bsd.c (close_connection): let free_client() destroy the
-       socket
-
-       * ircd/s_auth.c (start_auth): add a Debug call to indicate when
-       auth has begun on a client
-
-       * ircd/ircd_events.c: ensure that event_execute() is called with a
-       non-NULL event; modify event_add() macro to properly zero list
-       bits; modify gen_dequeue() to not try to clip it out of a list
-       it's already been clipped out of; change signal socket
-       initialization to use state SS_NOTSOCK; permit timeout values of
-       0 in add_timer(); add many Debug calls; change socket_del() and
-       timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
-       timer_run() instead of GEN_DESTROY so that event_generate() will
-       pass on the events; remove the switch and replace with a simpler
-       if-then-else tree in timer_run(); don't allow destroyed sockets to
-       be destroyed again, nor their states or event masks to be changed
-
-       * ircd/ircd.c: initialize "running" to 1
-
-       * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
-       messages all over the place; fix a counting problem in
-       engine_add(); turn wait into a signed integer and set it to -1
-       only if timer_next() returns 0; adjust wait time to be relative;
-       don't call gen_ref_dec() if socket disappeared while we were
-       processing it
-
-       * include/ircd_events.h: the pipe for signals is not a socket, so
-       we must mark it as such--added SS_NOTSOCK for that special socket;
-       events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
-       for the benefit of timer_run()
-
-       * configure.in: add --enable-pedantic and --enable-warnings to
-       turn on (and off) -Wall -pedantic in CFLAGS
-
-2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c: change "s_addr" element accesses to "address"
-       element accesses
-
-       * include/s_conf.h: on some systems, "s_addr" is a macro; use
-       "address" instead
-
-2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
-       void in this file; add a missing semi-colon; declare errcode,
-       codesize
-
-       * ircd/uping.c (uping_sender_callback): it's pptr, not uping
-
-       * ircd/s_user.c (register_user): comment out spurious reference to
-       nextping
-
-       * ircd/s_serv.c (server_estab): comment out spurious reference to
-       nextping
-
-       * ircd/s_conf.c (read_configuration_file): comment out spurious
-       reference to nextping and nextconnect
-
-       * ircd/s_bsd.c: comment out some spurious references to formerly
-       global (now non-existant) variables; correct a couple of typos
-
-       * ircd/s_auth.c: pre-declare some functions referenced in the
-       callback; correct a typo
-
-       * ircd/res.c (start_resolver): pass errno value of ENFILE
-
-       * ircd/listener.c (accept_connection): you know your API is messed
-       up when...variables that shouldn't have been global crop up in
-       other files
-
-       * ircd/list.c (free_client): substitution of == for =
-
-       * ircd/ircd_signal.c: include assert.h for assertion checking;
-       check ev_data() to find out what signal generated event
-
-       * ircd/ircd_events.c: some references to the variable "timer"
-       should have been references to the variable "ptr"
-
-       * ircd/engine_select.c: it's struct fd_set, not struct fdset;
-       ev_timer(ev) is already a timer pointer; declare codesize as a
-       size_t to correct signedness issue; use timer_next(), not
-       time_next()
-
-       * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
-       select fd out of struct pollfd in assertion checking; declare
-       errcode and codesize; use timer_next(), not time_next()
-
-       * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
-       use function timer_next(), not time_next()
-
-       * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
-       use function timer_next(), not time_next()
-
-       * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
-       compiled sources; do make depend
-
-       * include/list.h: pre-declare struct Connection
-
-       * include/ircd_events.h (gen_ref_inc): cast to the right structure
-       name
-
-       * include/s_auth.h: duh; missing */
-
-2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: update write events status after sending data or
-       accumulating data to be sent
-
-       * ircd/m_list.c (m_list): update write events status after
-       canceling a running /list
-
-       * ircd/channel.c (list_next_channels): update write events status
-       after listing a few channels
-
-       * ircd/s_bsd.c: extensive changes to update to new events model;
-       remove on_write_unblocked() and the two implementations of
-       read_message(), which have been deprecated by this change
-
-       * ircd/s_auth.c: set the socket events we're interested in for
-       clients; simplify some logic that does the connect_nonb followed
-       by the socket_add
-
-       * ircd/list.c: define free_connection() to free a connection
-       that's become freeable once the struct Socket has been
-       deallocated; fix up free_client() to take this new behavior into
-       account
-
-       * ircd/ircd.c: call init_client_timer()
-
-       * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
-       to register connect-in-progress with events system; declare
-       init_client_timer() (HACK!) to preserve rate-limiting behavior
-
-       * include/list.h: declare new free_connection()
-
-       * include/client.h: add a struct Socket to struct Connection
-
-2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
-       SIGTERM into event callbacks; perform the actions in the
-       callbacks, since they're not called in the context of the signal;
-       set up the signal callbacks in the event engine
-
-       * ircd/ircd_events.c (signal_callback): we're supposed to look for
-       a specific signal; don't generate an event if there is no signal
-       structure for it
-
-       * ircd/ircd.c: nuke nextconnect and nextping and replace them with
-       connect_timer and ping_timer; massage try_connections() and
-       check_pings() into timer callbacks that re-add themselves at the
-       right time; remove ircd.c's "event_loop()"; initialize the event
-       system and the connect_timer and ping_timer
-
-       * ircd/uping.c: correct a couple more typos
-
-       * ircd/s_auth.c: rework to use new events system
-
-       * ircd/os_solaris.c (os_connect_nonb): update to new interface
-
-       * ircd/os_openbsd.c (os_connect_nonb): update to new interface
-
-       * ircd/os_linux.c (os_connect_nonb): update to new interface
-
-       * ircd/os_generic.c (os_connect_nonb): update to new interface
-
-       * ircd/os_bsd.c (os_connect_nonb): update to new interface
-
-       * include/s_auth.h: remove deprecated members of struct
-       AuthRequest, replacing them with struct Socket and struct Timer
-       structures; add flags to indicate when these structures have been
-       released by the event system; remove the deprecated
-       timeout_auth_queries()
-
-       * include/ircd_osdep.h (os_connect_nonb): connect could complete
-       immediately, so change the interface to handle that possibility
-
-       * ircd/uping.c (uping_server): noticed and corrected a typo
-
-       * ircd/listener.c: set up to use ircd_event's struct Socket by
-       adding an socket_add() call to inetport(), replacing
-       free_listener() with socket_del() in close_listener(), and
-       reworking accept_connection to be called as the callback
-
-       * ircd/ircd.c: add a call to IPcheck_init()
-
-       * ircd/IPcheck.c: remove IPcheck_expire(); rework
-       ip_registry_expire() to be called from a timer; write
-       IPcheck_init() to set up the expiration timer (hard-coded for a
-       60-second expiration time)
-
-       * include/listener.h: add a struct Socket to the struct Listener;
-       remove accept_connection()
-
-       * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
-
-2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
-       USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
-
-       * ircd/engine_select.c: include config.h; set FD_SETSIZE to
-       MAXCONNECTIONS, not IRCD_FD_SETSIZE...
-
-       * ircd/engine_poll.c: include config.h
-
-       * ircd/engine_kqueue.c: include config.h
-
-       * ircd/engine_devpoll.c: include config.h
-
-       * ircd/Makefile.in: include engine sources in compilation and make
-       depend steps
-
-       * configure.in: add checks for enabling the /dev/poll- and
-       kqueue-based engines
-
-       * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
-
-       * ircd/Makefile.in: work in the engine sources
-
-2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_settime.c: include ircd_snprintf.h
-
-       * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
-       parens around a construct that had both || and &&
-
-       * ircd/chkconf.c: #include "config.h" to get some important
-       definitions
-
-       * ircd/Makefile.in: revamp ircd makefile for new build system
-
-       * doc/Makefile.in: revamp doc makefile for new build system
-
-       * config/*: Removed old build system files
-
-       * stamp-h.in: a stamp file
-
-       * install-sh: install-sh for new build system
-
-       * configure.in: configure.in for new build system
-
-       * configure: configure script for new build system (built by
-       autoconf)
-
-       * config.sub: config.sub for new build system
-
-       * config.h.in: config.h.in for new build system (built by
-       autoheader)
-
-       * config.guess: config.guess for new build system
-
-       * aclocal.m4: aclocal.m4 for new build system (built by aclocal
-       1.4)
-
-       * acinclude.m4: aclocal.m4 macros for new build system
-
-       * acconfig.h: config.h skeleton for new build system
-
-       * Makefile.in: modify for new build system
-
-2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
-
-       * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
-
-       * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
-
-2001-05-01  Perry Lorier       <Isomer@coders.net>
-       * doc/iauth.doc: Protocol for iauth server. (from hybrid).
-       * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
-               when you have far far too many sockets in use.
-       * {include,ircd}/iauth.c: A start on iauth support.
-
-2001-05-01  Perry Lorier       <Isomer@coders.net>
-       * ircd/s_err.c: Suggested wording change.
-       * ircd/s_user.c: Users aren't target limited against +k users.
-       * ircd/chkconf.c: Made it compile again, who knows if it works, but
-               now I can at least make install
-        * various: Cleanups on m_*.c files.
-
-
-2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_misc.c (exit_client): make netsplit server notice say the
-       right thing
-
-       * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
-       change to make Khaled happy...
-
-       * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
-       (do_whois): duh...
-
-2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
-       turned up no more bugs
-
-       * ircd/ircd.c: use /* */ comments instead of // comments--all the
-       world's not gcc :(
-
-       * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
-       // comments--all the world's not gcc :(
-
-       * ircd/runmalloc.c: finally garbage-collect unused file
-
-       * include/runmalloc.h: finally garbage-collect unused file
-
-       * ircd/<multiple files>: addition of '#include "config.h"' before
-       all other includes in most .c files
-
-       * include/<multiple files>: remove includes of config.h, which are
-       now going into the raw .c files
-
-2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_whois.c (do_whois): display proper server name if the
-       user is looking up himself
-
-       * ircd/m_who.c (m_who): disable match by servername or display of
-       server names by non-opers
-
-       * include/ircd_policy.h: add define for
-       HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
-       of CFV 165
-
-2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c: keep the $R in memory so we can see it clearly
-       when we do a /stats k
-
-       * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
-       users from turning on +s and +g
-
-       * ircd/s_misc.c (exit_client): pull-up of changes to turn off
-       net.split notice
-
-       * ircd/parse.c: pull-up of changes to disable /trace, /links, and
-       /map for users
-
-       * ircd/m_whois.c (do_whois): pull-up of server name masking for
-       /whois
-
-       * ircd/m_user.c (m_user): removal of umode and snomask defaulting
-       functions, pull-up
-
-       * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
-
-       * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
-
-       * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
-
-       * ircd/channel.c (channel_modes): pull-up of channel key display
-       as *
-
-       * include/ircd_policy.h: pull-up of ircd_policy.h
-
-       * include/client.h: pull-up of Set/ClearServNotice()
-
-       * ircd/gline.c (do_gline): report client name in G-line message
-       (pull-up)
-
-       * ircd/s_user.c (register_user): pull-up--show IP address in some
-       server notices dealing only with users; report which connection
-       class has filled up
-
-       * ircd/s_stats.c (report_deny_list): use conf->flags &
-       DENY_FLAGS_IP insteaf of conf->ip_kill
-
-       * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
-       insteaf of conf->ip_kill
-
-       * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
-       K-line by real name
-
-       * include/s_conf.h: use a flags field in struct DenyConf; define
-       DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
-       pull-up of K-line by real name
-
-       * ircd/m_trace.c: pull-up of IP show for user connections
-
-       * doc/example.conf: pull-up of the realname K-line documentation
-
-       * ircd/ircd.c: forward port of pid file advisory locking mechanism
-
-2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
-       all servers, rather than to only servers that have +w/+g/whatever
-       users on them; among other things, this removes that atrocity
-       known as sentalong[] from this function
-
-       * ircd/m_admin.c: must include ircd.h to declare "me"; must
-       include hash.h to declare FindUser()
-
-       * ircd/m_wallusers.c: implementation of WALLUSERS
-
-       * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
-
-       * ircd/m_wallops.c: only send WALLOPS to opers
-
-       * ircd/parse.c: add WALLUSERS command to parser table
-
-       * include/handlers.h: declare wallusers handlers
-
-       * include/msg.h: add WALLUSERS command
-
-       * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
-       flag, send only to appropriate opers
-
-2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/uping.c: refit to use the new events interface
-
-       * ircd/res.c: refit to use the new events interface
-
-       * ircd/ircd_events.c: create timer_chg(), which permits a
-       (non-periodic) timer's expire time to be modified; change the
-       logic in timer_run() so that timers that were re-added while the
-       event was being processed will not be destroyed prematurely
-
-       * include/uping.h: include the events header, declare some extra
-       fields in struct UPing, remove timeout value, and define some
-       flags for marking which cleanup items have yet to be done
-
-       * include/ircd_events.h: add a prototype for timer_chg() to change
-       the expire time of a running timer
-
-2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
-       * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
-       
-2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
-
-       * config/configure.in: Add check for OpenBSD
-
-       * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
-       differs from generic BSD, particularly in its handling of
-       _XOPEN_SOURCE.
-       
-2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
-       have been added by a U-lined server, rather than going through the
-       activate/deactivate logic; propagate G-line removals by U-lined
-       servers as well
-
-       * ircd/gline.c: rename propagate_gline() to gline_propagate();
-       make gline_propagate() return an int 0 (convenience return); only
-       update lastmod in gline_activate() and gline_deactivate() if the
-       current lastmod is non-zero, since 0 lastmod is our flag of a
-       U-lined server having added a G-line
-
-       * include/gline.h (gline_propagate): exporting the G-line
-       propagation function
-
-       * ircd/m_list.c (m_list): duh; permit explicit channel name
-       specification only when /list gets two arguments ("Kev
-       #wasteland") rather than when /list gets more than two
-       arguments--nice braino
-
-2001-01-29  Thomas Helvey <twhelvey1@home.com>
-
-       * ircd/ircd_reply.c (need_more_params): fix bug that allowed
-       unregistered clients to spam opers with protocol violation
-       messages. Note: the bugfix may have eliminated some useful
-       protocol violation messages.
-       Please send protocol violation messages explicitly from the
-       functions they are discovered in, you have much better context
-       for the error there and it helps to document the behavior of the
-       server. This was also a design bug in that it violated the
-       "A function should do one thing" heuristic. Patching this one
-       would have resulted in a continuous spawning of other bugs over
-       the next 3 years, so I killed it. Check around for stuff this
-       broke and readd the calls to protocol_violation in the functions
-       that need to send the message.
-
-2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
-       already existed, then the logic would (attempt to) skip it, but
-       would not free the ban string; now the ban string is free'd and
-       the ban count is decremented, releasing the ban for use
-
-       * ircd/s_user.c: make send_umode_out() take a prop argument
-       instead of testing for the PRIV_PROPAGATE privilege itself; fix
-       set_umode() to use this new argument, calculating it before
-       calculating the new privileges for a -o'd user
-
-       * ircd/m_oper.c (m_oper): pass the new prop argument to
-       send_umode_out()
-
-       * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
-       that we're not actually going to add because they already exist;
-       test that particular bit before adding to the linked list
-
-       * include/s_user.h: add a prop argument to send_umode_out() to
-       indicate whether or not to propagate the user mode
-
-2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
-       it would have written; upper-bound the number to prevent overflows
-       by proxy; also, tune buffer size given to ircd_vsnprintf() to take
-       into account the fact that ircd_vsnprintf() already takes the
-       terminal \0 into account
-
-2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/msgq.c: add an incredibly ugly hack to attempt to track
-       down an apparent buffer overflow; remove msgq_map(), since it's no
-       longer used anywhere; slight tweaks to prevent off-by-one errors,
-       but these can't explain the problems we've seen
-
-       * include/msgq.h: remove msgq_map(), since it's no longer used
-       anywhere
-
-2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (set_nick_name): call client_set_privs() after
-       parsing user modes
-
-2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c (read_message): fix a typo in the select version of
-       read_message()
-
-       * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
-       its argument to be an lvalue, which means we can't use
-       whowas_clean()'s handy-dandy "return ww" feature
-
-       * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
-
-2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c (timer_run): it's possible that the timer got
-       deleted during the callback processing, so don't go to the bother
-       of requeuing it if the destroy flag is set
-
-       * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
-       out of config.h if this is a *BSD; include errno.h (oops);
-       decrement error count after an hour using a timer; use FD_SETSIZE
-       constant instead of IRCD_FD_SETSIZE constant; fill in event
-       processing code
-
-       * ircd/engine_poll.c: include errno.h (oops); decrement error
-       count after an hour using a timer; fill in event processing code
-
-       * ircd/engine_kqueue.c: include errno.h (oops); decrement error
-       count after an hour using a timer; assert events filter is either
-       EVFILT_READ or EVFILT_WRITE; fill in event processing code
-
-       * ircd/engine_devpoll.c: include errno.h (oops); decrement error
-       count after an hour using a timer; fill in event processing code
-
-2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/client.c: fixed feattab; basically, when I changed features
-       to use small integers specifying bit positions, instead of the
-       bits themselves, I forgot to update feattab to not | these
-       privileges together; also fixed a bug in the antiprivs masking
-       loop in client_set_privs()--last index wouldn't get parsed
-
-2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: call event_generate() with new data
-       argument; make it set that field in struct Event; make
-       socket_add() return the value of the eng_add callback
-
-       * ircd/engine_select.c: make engine_add() return a
-       successful/unsuccessful status; add bounds-checking outside of an
-       assert; use accessor macros; use log_write(), not the deprecated
-       ircd_log(); add an assert to engine_loop() to double-check for
-       data structure corruption
-
-       * ircd/engine_poll.c: make engine_add() return a
-       successful/unsuccessful status; add bounds-checking outside of an
-       assert; use accessor macros; use log_write(), not the deprecated
-       ircd_log(); add an assert to engine_loop() to double-check for
-       data structure corruption
-
-       * ircd/engine_kqueue.c: implementation of an engine for kqueue()
-
-       * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
-
-       * include/ircd_events.h: define some accessor macros; add ev_data
-       to struct Event for certain important data--errno values, for
-       instance; make EngineAdd callback tell us if it was successful or
-       not; add extra argument to event_generate(); make socket_add()
-       return the status from EngineAdd
-
-2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: pass initializer information about how many
-       total _filedescriptors_ may be opened at once
-
-       * ircd/ircd.c: use exported "running" instead of unexported
-       thisServer.running
-
-       * ircd/engine_select.c: implementation of an event engine based on
-       select()
-
-       * ircd/engine_poll.c: implementation of an event engine based on
-       poll()
-
-       * include/ircd_events.h: pass the engine initializer an integer
-       specifing how many _filedescriptors_ may be opened at once
-
-       * include/ircd.h: running has to be exported for the engine_*
-       event loops
-
-2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: include some needed headers; add some
-       comments; make evEngines[] const; bundle sig_sock and sig_fd into
-       a struct named sigInfo; rework struct evInfo to have a queue of
-       _generators_, and only when threaded; added a gen_init() function
-       to centralize generator initialization; fix various compile-time
-       errors; rework event_add() for new queueing scheme and checked for
-       compile-time errors; add casts where needed; spell evEngines[]
-       correctly; make engine_name() return const char*
-
-       * include/ircd_events.h: type EventCallBack depends on struct
-       Event, so pre-declare it; put _event_ queue into generators, and
-       only when threaded; give engine data a union to store both ints
-       and pointers; make engine name a const; fix gen_ref_dec() macro;
-       make engine_name() return a const char*
-
-       * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
-       down with the non-static functions; modify event_execute() to use
-       the new gen_ref_dec() to simplify code; make sure event_generate()
-       does not generate new events for generators marked for destruction
-
-       * include/ircd_events.h: the engines, at least, may need to modify
-       reference counts to keep generators from going away while
-       something still points at them, so add reference counter
-       manipulators and export gen_dequeue() for them
-
-       * ircd/ircd_events.c: set up the list of engines to try; set up
-       the signal struct Socket; rename netInfo to evInfo; move static
-       functions near the beginning of the file; do away with
-       signal_signal() (since we no longer keep a signal count ourselves)
-       and call event_generate() directly from signal_callback--also
-       renamed some functions; allow signal_callback() to read up to
-       SIGS_PER_SOCK at once from the signal pipe; add event_init() to
-       initialize the entire event system; add event_loop() to call the
-       engine's event loop; initialize new struct GenHeader member,
-       gh_engdata; remove timer_next(); add socket_add() function to add
-       a socket; add socket_del() to mark a socket for deletion; add
-       socket_state() to transition a socket between states; add
-       socket_events() to set what events we're interested in on the
-       socket; add engine_name() to retrieve event engine's name
-
-       * include/ircd_events.h: add engine data field to struct
-       GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
-       note about states vs s_events; remove signal count; fold union
-       Generator back into struct Event; remove count members from struct
-       Generators; redefine engine callbacks to not take a struct
-       Engine*; add explanatory comments to callback definitions; add
-       some engine callbacks to handle operations; remove struct Engine
-       flag member--can detect single flag from eng_signal member; add
-       event_init(), event_loop(), engine_name(), and the socket_*()
-       functions; make timer_next() a macro to avoid a function call
-
-2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/ircd_events.h: rename to ircd_events.h, since it handles
-       events, not just networking stuff; add signal support; more
-       structural rearrangement
-
-       * ircd/ircd_events.c: rename to ircd_events.c, since it handles
-       events, not just networking stuff; add signal support; more
-       structural rearrangement
-
-2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_network.c: implement timer API; add reference counts
-       appropriately
-
-       * include/ircd_network.h: firm up some pieces of the interface;
-       split out members everything has into a separate structure; add
-       reference counts; add timer API
-
-2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_network.c: static data and event manipulation
-       functions for new event processing system
-
-       * include/ircd_network.h: data structures for new event processing
-       system
-
-2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whowas.c: Completely re-did the old allocation scheme by
-       turning it into a linked list, permitting the
-       NICKNAMEHISTORYLENGTH feature to be changed on the fly
-
-       * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
-       feature instead of old #define
-
-       * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
-       integer feature with a notify callback (whowas_realloc)
-
-       * ircd/client.c (client_set_privs): second memset was supposed to
-       be over antiprivs, not privs; thanks, Chris Behrens
-       <cbehrens@xo.com> for pointing that out...
-
-       * include/whowas.h: new elements for an extra linked list in
-       struct Whowas; a notify function for feature value changes
-
-       * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
-
-       * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
-
-2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
-       compile-time option--now in features subsystem
-
-       * ircd/motd.c (motd_init): rework motd_init() to be called as the
-       notify function for MPATH and RPATH features (should probably
-       split it up a bit, though...)
-
-       * ircd/m_privs.c (mo_privs): if called with no parameters, return
-       privs of the caller, rather than an error
-
-       * ircd/m_list.c: pull usage message into its own function; pull
-       list parameter processing into its own function that does not
-       modify the contents of the parameter; add list_set_default() to
-       set the default list parameter (uses the notify hook); rework
-       m_list() to make use of these functions; removed dead code
-
-       * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
-       we have no notify handler
-
-       * ircd/ircd_features.c: add notify callback for notification of
-       value changes; give mark callback an int return value to indicate
-       whether or not to call the notify callback; fix up feature macros
-       for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
-       string handling in feature_set() to deal with def_str being a null
-       pointer; wrote feature_init() to set up all defaults appropriately
-
-       * ircd/ircd.c (main): call feature_init() instead of
-       feature_mark(), to avoid calling notify functions while setting up
-       defaults
-
-       * ircd/client.c: updated to deal with new privileges structure
-
-       * ircd/class.c: updated so init_class() can be called should one
-       of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
-       DEFAULTMAXSENDQLENGTH be changed
-
-       * include/ircd_log.h: log_feature_mark() updated to fit with new
-       API changes
-
-       * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
-       feature_init() function (found necessary since adding the notify
-       stuff and notifying motd.c during start-up...before we defined
-       RPATH!)
-
-       * include/client.h: move privs around to enable addition of more
-       bits if necessary; based on the FD_* macros
-
-       * include/channel.h: declare list_set_default (actually located in
-       m_list.c *blanche*)
-
-       * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
-       AVBANLEN*MAXSILES) from features subsystem
-
-       * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
-       anything anymore
-
-       * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
-       the features subsystem
-
-       * ircd/s_auth.c (start_auth): NODNS migrated to the features
-       subsystem
-
-       * ircd/random.c: created random_seed_set() function to set seed
-       value, along with some stuff to make ircrandom() a little more
-       random--state preserving, xor of time instead of direct usage,
-       etc.; it's still a pseudo-random number generator, though, and
-       hopefully I haven't broken the randomness
-
-       * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
-
-       * ircd/m_join.c: use features interface to retrieve
-       MAXCHANNELSPERUSER
-
-       * ircd/ircd_features.c: add NODISP flag for super-secret features;
-       add a whole bunch of new features migrated over from make config
-
-       * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
-       CONNECTTIMEOUT, and TIMESEC
-
-       * ircd/client.c (client_get_ping): use features interface to
-       retrieve PINGFREQUENCY
-
-       * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
-       CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
-
-       * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
-       features subsystem, we have to add something explicit
-
-       * ircd/channel.c: use features interface to retrieve
-       KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
-       note that MAXBANLENGTH is now calculated dynamically from MAXBANS
-       and AVBANLEN
-
-       * ircd/Makefile.in: run make depend
-
-       * include/supported.h (FEATURESVALUES): update to reference
-       feature settings
-
-       * include/random.h: add prototype for random_seed_set
-
-       * include/ircd_features.h: add several more features
-
-       * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
-       subsystem
-
-       * config/config-sh.in: feature-ized some more stuff
-
-       * include/motd.h: some new elements in motd.h for motd.c changes
-
-       * ircd/motd.c: motd_cache() now searches a list of already cached
-       MOTD files; saves us from having duplicate caches in memory if
-       there are two identical T-lines for two different sites...
-
-2001-01-02  Perry Lorier <isomer@coders.net>
-       * ircd/motd.c: don't core if the motd isn't found.  Bug found by
-       Amarande.
-
-2001-01-02  Perry Lorier <isomer@coders.net>
-       * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
-       * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
-               to guppy for noticing, and hektik for providing the fix.
-       * misc others: Minor cleanups, added more protocol_violations, ripped
-               out more P09 stuffs, bit more protocol neg stuff.
-
-2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
-       space (*sigh* stupid clients...)
-
-       * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
-       ircd_features.[ch]
-
-       * ircd/s_err.c: get rid of GODMODE conditionals
-
-       * ircd/s_debug.c (debug_serveropts): switch to using appropriate
-       calls into the features subsystem for various serveropts
-       characters
-
-       * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
-
-       * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
-       to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
-       NOFLOWCONTROL conditional
-
-       * ircd/s_auth.c: use features subsystem to determine value of
-       KILL_IPMISMATCH
-
-       * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
-       features subsystem to determine the setting of IDLE_FROM_MSG
-
-       * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
-
-       * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
-       use features subsystem to get motd file names
-
-       * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
-       subsystem
-
-       * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
-       us no good; use features subsystem to figure out if we need to do
-       HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
-       the Debug(()) macro instead; get value of RELIABLE_CLOCK from
-       features subsystem
-
-       * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
-
-       * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
-       subsystem
-
-       * ircd/m_connect.c: get SERVER_PORT from the features subsystem
-
-       * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
-       from getting marked if they were already set to something...
-
-       * ircd/ircd_features.c: add a flag to indicates read-only access;
-       add several new features that used to be compile-time selected
-
-       * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
-       access to motd files (what the heck?); make sure to initialize the
-       feature subsystem before trying to write the config file
-
-       * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
-       use feature_bool() to figure out if we're using the FERGUSON
-       flusher
-
-       * ircd/Makefile.in: MPATH and RPATH are now done differently, so
-       remove the clause that creates empty files of that name; also ran
-       make depend
-
-       * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
-       there is no easy way to bounds-check it at present
-
-       * include/querycmds.h: make sure ircd_features.h is included; use
-       feature_str(FEAT_DOMAINNAME) in calls to match()
-
-       * include/ircd_features.h: many new features that used to be
-       compile-time selected
-
-       * config/config-sh.in: add * to DOMAINNAME; try also using first
-       argument to search in /etc/resolv.conf; removed many compile-time
-       options that now can be configured through the features system
-
-2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * doc/api/log.txt: how to use the logging API
-
-       * doc/api/features.txt: how to use the features API
-
-       * doc/api/api.txt: how to write API documentation
-
-       * include/ircd_features.h: rearranged a couple of features for
-       neatness purposes
-
-       * ircd/ircd_features.c: cleaned up the macros some; rearranged
-       some code to all go into the switch; rearranged a couple of
-       features for neatness purposes
-
-2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/os_bsd.c: Added os_set_tos for BSD users.
-
-2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_features.c: Isomer almost got it right; you need to
-       use F_I(), since it's an integer value, not a boolean value.  The
-       asserts in feature_int would catch you out...  Also made the F_*
-       macros take flags
-
-       * ircd/s_err.c: define RPL_PRIVS reply
-
-       * ircd/parse.c: put new PRIVS command into command table
-
-       * ircd/m_privs.c (mo_privs): message handler to report operator
-       privileges
-
-       * ircd/ircd_features.c: declare new features OPER_SET and
-       LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
-       ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
-
-       * ircd/client.c: simplify client_set_privs() with a table that
-       defines what features to test for; add new client_report_privs()
-
-       * ircd/Makefile.in: compile new m_privs.c; run make depend
-
-       * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
-       an operator's privileges
-
-       * include/msg.h: define new command: PRIVS
-
-       * include/ircd_features.h: create new features OPER_SET and
-       LOCOP_SET for controlling access to /set
-
-       * include/handlers.h (mo_privs): declare message handler for
-       reporting oper privileges
-
-       * include/client.h (client_report_privs): declare function to
-       report what privileges an oper has
-
-       * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
-       report that a user is an oper if the oper doing the /whois had
-       PRIV_SEE_OPERS
-
-2000-12-17  Isomer <Isomer@coders.net>
-       * ircd/listener.c: added support for TOS twiddling as a 'feature'.
-
-2000-12-17  Isomer <Isomer@coders.net>
-       * ircd/os_linux.c: add TOS stuffs
-
-       * ircd/listener.c: add TOS stuffs
-
-2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
-       to indicate a user is an oper
-
-       * ircd/s_user.c: clear privileges setting when deopping; don't
-       propagate +o unless user has PRIV_PROPAGATE privilege
-
-       * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
-       function and replaced how the server option string is generated
-
-       * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
-
-       * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
-       not to indicate the user is an operator
-
-       * ircd/m_who.c: use HasPriv to determine whether or not a user
-       should be displayed in the list of opers
-
-       * ircd/m_version.c: call debug_serveropts() to get server option
-       string
-
-       * ircd/m_userip.c (userip_formatter): use HasPriv to determine
-       whether or not to show oper status
-
-       * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
-       whether or not to show oper status
-
-       * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
-       checks with HasPriv check; remove dead code
-
-       * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
-       checks with HasPriv check
-
-       * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
-       use feature_bool to check if disabled
-
-       * ircd/m_oper.c (m_oper): set oper priviliges
-
-       * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
-       check
-
-       * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
-       can kill
-
-       * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
-       check
-
-       * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
-       use feature_bool to check if disabled
-
-       * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
-       #ifdef conditional with a HasPriv check
-
-       * ircd/m_gline.c (mo_gline): rework permissions checking
-       structure; use feature_bool to check if any part is disabled
-
-       * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
-       check; remove dead code
-
-       * ircd/m_clearmode.c: use feature_bool() to detect if we're
-       disabled; use HasPriv to figure out what we're permitted to do;
-       only allow clearmode on moded channels
-
-       * ircd/ircd_features.c: define various features; use HasPriv to
-       verify permissions to set/reset
-
-       * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
-       conditionals
-
-       * ircd/client.c (client_set_privs): function to set an oper's
-       privileges
-
-       * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
-
-       * include/whocmds.h: deconditionalize several macros and
-       substitute appropriate calls to HasPriv()
-
-       * include/s_debug.h: get rid of global serveropts[]; define new
-       function debug_serveropts() to build that string on the fly
-
-       * include/ircd_features.h: define some features
-
-       * include/client.h: add privs member to struct Connection; define
-       various priviledges
-
-       * include/channel.h: no longer using IsOperOnLocalChannel; remove
-       conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
-
-       * doc/Configure.help: remove help information for deprecated
-       options
-
-       * config/config-sh.in: remove certain deprecated options having to
-       do with what opers can and cannot do--first stage in moving
-       compile-time constants into the .conf
-
-2000-12-16  Isomer <Isomer@coders.net>
-       * ircd/parse.c: detect if the prefix is missing and try and recover
-       instead of coring.
-
-2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_log.c: found and fixed some bugs in the debug logging
-       code that would sometimes result in the log file not being
-       reopened--which meant that a user could connect and get the
-       logging output--oops
-
-       * ircd/Makefile.in: run make depend...
-
-       * ircd/s_stats.c: get rid of report_feature_list()
-
-       * ircd/s_err.c: add the 'bad value' error message, shift error
-       messages over somewhat
-
-       * ircd/s_debug.c (debug_init): call log_debug_init with the
-       use_tty flag
-
-       * ircd/s_conf.c (read_configuration_file): unmark features before
-       reading the config file, then reset unmarked features after
-       reading the config file
-
-       * ircd/m_stats.c: use feature_report() instead of
-       report_feature_list()
-
-       * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
-       special 'mark' flags and use them; add the stuff needed by the
-       features API
-
-       * ircd/ircd_features.c: rework the features API and add gobs of
-       comments to try to explain what some of these complex functions
-       are actually doing
-
-       * include/s_stats.h: get rid of report_feature_list(); use
-       feature_report() instead
-
-       * include/numeric.h: added a new error message and shifted old
-       values over some--this is, after all, an alpha
-
-       * include/ircd_log.h: log_debug_init now takes an integer to tell
-       it if it should be using the tty; added a couple of functions
-       required by the features API
-
-       * include/ircd_features.h: add an enum and some more functions to
-       flesh out the feature API--it should now be possible to put all
-       those compile-time constants in the config file!
-
-       * ircd/send.c: got the direction of the assert incorrect...
-
-       * ircd/send.c: implement the efficiency of flush_connections by
-       creating a linked list of struct Connection's with queued data;
-       also get rid of flush_sendq_except and make sure to yank
-       connections out of the list when their sendQs become empty (notice
-       the assertion in flush_connections!)
-
-       * ircd/s_bsd.c (close_connection): must yank the Connection out of
-       the sendq list
-
-       * ircd/list.c (dealloc_connection): must yank the Connection out
-       of the sendq list
-
-       * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
-       deprecated flush_sendq_except
-
-       * ircd/client.c: define a couple new helper functions for sendq
-       threading--this will make the flush_connections function in send.c
-       considerably more efficient by creating a linked list of
-       Connections that have queued data to send
-
-       * include/send.h: remove flush_sendq_except, as it's not used
-       anymore
-
-       * include/client.h: declare a couple new helper functions for the
-       sendq threading system
-
-2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
-       parse all arguments
-
-       * ircd/s_debug.c (count_memory): modify to report for clients and
-       connections, not local clients and remote clients
-
-       * ircd/list.c: fiddle with the client-fiddling functions to take
-       into account the divorce of struct Connection from struct Client
-
-       * ircd/ircd.c: define a struct Connection for me, initialize it,
-       and link it into the right place (ewww, globals!)
-
-       * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
-       struct Client into struct Client and struct Connection; redefine
-       local-portion accessor macros to go through struct Client to the
-       struct Connection; define struct Connection accessor macros
-
-2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whowas.c: missed a couple of accesses to a struct Client
-
-       * ircd/uping.c: missed a couple of accesses to a struct Client
-
-       * ircd/send.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_user.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_misc.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_conf.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_bsd.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_auth.c: missed a couple of accesses to a struct Client
-
-       * ircd/res.c: missed a couple of accesses to a struct Client
-
-       * ircd/parse.c: missed a couple of accesses to a struct Client
-
-       * ircd/m_whois.c: use new accessor macros for struct Client
-
-       * ircd/m_who.c: use new accessor macros for struct Client
-
-       * ircd/m_wallchops.c: use new accessor macros for struct Client
-
-       * ircd/m_version.c: use new accessor macros for struct Client
-
-       * ircd/m_userip.c: use new accessor macros for struct Client
-
-       * ircd/m_userhost.c: use new accessor macros for struct Client
-
-       * ircd/m_user.c: use new accessor macros for struct Client
-
-       * ircd/m_uping.c: use new accessor macros for struct Client
-
-       * ircd/m_trace.c: use new accessor macros for struct Client
-
-       * ircd/m_topic.c: use new accessor macros for struct Client
-
-       * ircd/m_time.c: use new accessor macros for struct Client
-
-       * ircd/m_stats.c: use new accessor macros for struct Client
-
-       * ircd/m_squit.c: use new accessor macros for struct Client
-
-       * ircd/m_silence.c: use new accessor macros for struct Client
-
-       * ircd/m_server.c: use new accessor macros for struct Client;
-       remove dead code
-
-       * ircd/m_rpong.c: use new accessor macros for struct Client
-
-       * ircd/m_rping.c: use new accessor macros for struct Client
-
-       * ircd/m_quit.c: use new accessor macros for struct Client
-
-       * ircd/m_privmsg.c: use new accessor macros for struct Client
-
-       * ircd/m_pong.c: use new accessor macros for struct Client; remove
-       dead code
-
-       * ircd/m_ping.c: use new accessor macros for struct Client
-
-       * ircd/m_pass.c: use new accessor macros for struct Client
-
-       * ircd/m_part.c: use new accessor macros for struct Client
-
-       * ircd/m_oper.c: use new accessor macros for struct Client
-
-       * ircd/m_notice.c: use new accessor macros for struct Client
-
-       * ircd/m_nick.c: use new accessor macros for struct Client
-
-       * ircd/m_names.c: use new accessor macros for struct Client
-
-       * ircd/m_mode.c: use new accessor macros for struct Client
-
-       * ircd/m_map.c: use new accessor macros for struct Client
-
-       * ircd/m_list.c: use new accessor macros for struct Client
-
-       * ircd/m_links.c: use new accessor macros for struct Client;
-       remove some dead code
-
-       * ircd/m_kill.c: use new accessor macros for struct Client; remove
-       some dead code
-
-       * ircd/m_kick.c: use new accessor macros for struct Client
-
-       * ircd/m_join.c: use new accessor macros for struct Client; remove
-       some dead code
-
-       * ircd/m_ison.c: use new accessor macros for struct Client
-
-       * ircd/m_invite.c: use new accessor macros for struct Client
-
-       * ircd/m_info.c: use new accessor macros for struct Client
-
-       * ircd/m_gline.c: use new accessor macros for struct Client
-
-       * ircd/m_error.c: use new accessor macros for struct Client
-
-       * ircd/m_create.c: use new accessor macros for struct Client
-
-       * ircd/m_connect.c: use new accessor macros for struct Client;
-       removed some dead code
-
-       * ircd/m_burst.c: use new accessor macros for struct Client
-
-       * ircd/m_away.c: use new accessor macros for struct Client
-
-       * ircd/m_admin.c: use new accessor macros for struct Client
-
-       * ircd/hash.c: missed a couple of accesses to a struct Client
-
-       * ircd/gline.c: missed a couple of accesses to a struct Client
-
-       * ircd/crule.c: missed a couple of accesses to a struct Client
-
-       * ircd/class.c: missed an access to a struct Client
-
-       * ircd/channel.c: missed a couple of accesses to a struct Client
-
-       * ircd/IPcheck.c: missed an access to a struct Client
-
-       * include/querycmds.h: fix a couple of stats macros to use
-       structure accessor macros
-
-       * include/client.h: change structure member names to highlight any
-       places in the code I've missed
-
-2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whowas.c: use new struct Client accessor macros
-
-       * ircd/whocmds.c: use new struct Client accessor macros
-
-       * ircd/send.c: use new struct Client accessor macros
-
-       * ircd/s_user.c: use new struct Client accessor macros; removed
-       some dead code
-
-       * ircd/s_serv.c: use new struct Client accessor macros; removed
-       some dead code
-
-       * ircd/s_numeric.c: use new struct Client accessor macros
-
-       * ircd/s_misc.c: use new struct Client accessor macros
-
-       * ircd/s_debug.c: use new struct Client accessor macros
-
-       * ircd/s_conf.c: use new struct Client accessor macros
-
-       * ircd/s_bsd.c: use new struct Client accessor macros
-
-       * ircd/s_auth.c: use new struct Client accessor macros
-
-       * ircd/parse.c: use new struct Client accessor macros
-
-       * ircd/packet.c: use new struct Client accessor macros
-
-       * ircd/numnicks.c: use new struct Client accessor macros
-
-       * ircd/motd.c: use new struct Client accessor macros
-
-       * ircd/listener.c: use new struct Client accessor macros
-
-       * ircd/list.c: use new struct Client accessor macros
-
-       * ircd/jupe.c: use new struct Client accessor macros
-
-       * ircd/ircd_snprintf.c: use new struct Client accessor macros
-
-       * ircd/ircd_reply.c: use new struct Client accessor macros
-
-       * ircd/ircd_relay.c: use new struct Client accessor macros
-
-       * ircd/ircd.c: use new struct Client accessor macros
-
-       * ircd/gline.c: catch some instances of me.<stuff> I missed
-       previously
-
-       * ircd/client.c: use cli_ instead of con_
-
-       * ircd/class.c: use cli_ instead of con_
-
-       * ircd/channel.c: use cli_ instead of con_
-
-       * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
-       of me.<stuff> I missed previously
-
-       * include/client.h: use cli_ instead of con_...seemed like a good
-       idea at the time *shrug*
-
-2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/hash.c: use struct Client accessor macros
-
-       * ircd/gline.c: use struct Client accessor macros
-
-       * ircd/crule.c: use struct Client accessor macros
-
-       * ircd/client.c: use struct Client accessor macros; remove some
-       dead code
-
-       * ircd/class.c: use struct Client accessor macros
-
-       * ircd/channel.c: use struct Client accessor macros; remove some
-       dead code
-
-       * ircd/IPcheck.c: use struct Client accessor macros
-
-       * include/numnicks.h: use struct Client accessor macros
-
-       * include/client.h: first step to divorcing struct Client and
-       struct Connection--define accessor macros and use them
-
-       * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
-       uplink would remove them.  This is because the removal protocol
-       message wasn't being sent to the uplinks.  This is fixed by fixing
-       propagate_gline() to send the proper number of arguments depending
-       on whether or not we're adding or deleting the Uworld gline, and
-       by having gline_deactivate() make sure to turn off the active bit
-       and call propagate_gline() if it's a Uworld gline
-
-2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
-
-       * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
-       anywhere intelligent...
-
-2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (send_queued): call deliver_it with appropriate
-       arguments
-
-       * ircd/s_serv.c: reorder a couple of headers--cosmetic
-
-       * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
-       MsgQ
-
-       * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
-       with appropriate iovec
-
-       * ircd/os_linux.c (os_sendv_nonb): function for calling writev
-       with appropriate iovec
-
-       * ircd/os_generic.c (os_sendv_nonb): function for calling writev
-       with appropriate iovec
-
-       * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
-       appropriate iovec
-
-       * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
-       exactly how much we're trying to write out to the fd
-
-       * include/s_bsd.h: make deliver_it take a struct MsgQ
-
-       * include/msgq.h: add a len_p argument to msgq_mapiov to help
-       detect short writes that indicate possible socket blocking
-
-       * include/ircd_osdep.h: declare os_sendv_nonb()
-
-       * ircd/channel.c (modebuf_mode): don't add empty modes...
-
-2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/send.h: add prio argument to send_buffer to select
-       between normal and priority queues
-
-       * ircd/s_user.c (send_user_info): add prio argument to send_buffer
-       call
-
-       * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
-
-       * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
-       call
-
-       * ircd/channel.c (send_channel_modes): add prio argument to
-       send_buffer call
-
-       * ircd/send.c (send_buffer): add a prio argument to select the
-       priority queue; update send.c functions to use it
-
-       * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
-       msgq_add; add a prio argument to msgq_add to select the priority
-       queue
-
-       * include/msgq.h: remove msgq_prio; add a prio argument to
-       msgq_add
-
-       * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
-       using msgq functions instead of dbuf functions; remove old, dead
-       sendto_* functions; redo send_buffer to take a struct MsgBuf;
-       rework sendcmdto_* functions to make use of the new struct MsgBuf
-
-       * ircd/s_user.c: remove hunt_server; restructure send_user_info to
-       make appropriate use of struct MsgBuf
-
-       * ircd/s_debug.c (count_memory): count memory used by the MsgQ
-       system and report it
-
-       * ircd/s_conf.c (read_configuration_file): use
-       sendto_opmask_butone instead of the now dead sendto_op_mask
-
-       * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
-       calls on sendQ
-
-       * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
-
-       * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
-       msgq_clean
-
-       * ircd/m_version.c: fix spelling in comments marking dead code
-
-       * ircd/m_userip.c (userip_formatter): restructure to make use of
-       struct MsgBuf
-
-       * ircd/m_userhost.c (userhost_formatter): restructure to make use
-       of struct MsgBuf
-
-       * ircd/m_stats.c: use MsgQLength on a sendQ
-
-       * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
-       sendQ; mark a piece of dead code
-
-       * ircd/m_names.c: use send_reply instead of sendto_one
-
-       * ircd/m_mode.c: use new mode; remove old dead code
-
-       * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
-
-       * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
-       dead code
-
-       * ircd/listener.c (accept_connection): use sendto_opmask_butone
-       instead of sendto_op_mask
-
-       * ircd/list.c (free_client): use MsgQClear to clear sendQ
-
-       * ircd/ircd_reply.c: remove send_error_to_client; restructure
-       send_reply to make use of struct MsgBuf
-
-       * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
-       since its no longer used (at least currently)
-
-       * ircd/channel.c: restructure send_channel_modes to make use of
-       struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
-       and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
-
-       * ircd/Makefile.in: add msgq.c to list of sources; run make depend
-
-       * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
-
-       * include/send.h: send_buffer now takes a struct MsgBuf * instead
-       of a char *; flush_sendq_except now takes no arguments, as sendq
-       flushing currently only happens in dbuf.h and sendQ is a struct
-       MsgQ; remove prototypes for a lot of old sendto_* functions that
-       aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
-       no longer needed, and the latter is identical to BUFSIZE in
-       ircd_defs.h
-
-       * include/s_user.h: make InfoFormatter take a struct MsgBuf*
-       instead of a char *; also make it return void, instead of char *
-
-       * include/msgq.h: add msgq_append and msgq_bufleft functions
-
-       * include/client.h: use a struct MsgQ instead of a struct DBuf for
-       sendq
-
-       * doc/Configure.help: Remove help for compile-time options that
-       have gone away
-
-       * config/config-sh.in: remove CONFIG_NEWMODE
-
-       * ircd/m_server.c (mr_server): don't send server IPs in any server
-       notices
-
-       * ircd/msgq.c (msgq_vmake): add \r\n to messages
-
-2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/msgq.h: declare the MsgQ API
-
-       * ircd/msgq.c: implementation of new MsgQ system
-
-2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_features.c: #include was supposed to be for
-         ircd_features.h, not features.h--missed when I had to do a
-         rename because of namespace collision
-
-2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/m_topic.c: Added missing braces that caused all remote
-         topics to be ignored.
-
-2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_create.c: I'm tired of the exit_client warning :)
-       (ms_create): discovered that exit_client() was being called with
-       too few arguments
-
-       * ircd/s_misc.c (exit_client): remove all dependance on
-       FNAME_USERLOG, since that's now gone; log only to LS_USER
-
-       * ircd/s_debug.c: USE_SYSLOG no longer means anything
-
-       * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
-       log to LS_OPER
-
-       * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
-
-       * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
-
-       * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
-       the same purpose as LS_USER and LS_OPER
-
-       * config/config-sh.in: remove no longer relevant log config
-       variables
-
-       * ircd/uping.c (uping_init): use log_write instead of ircd_log
-
-       * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
-
-       * ircd/s_conf.c: use log_write instead of ircd_log
-
-       * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
-
-       * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
-       ircd_log
-
-       * ircd/res.c (send_res_msg): use log_write instead of ircd_log
-
-       * ircd/m_who.c: use log_write instead of write_log; no longer
-       conditionalize on WPATH; mark dead ircd_log calls
-
-       * ircd/m_uping.c: mark dead ircd_log call
-
-       * ircd/m_server.c (mr_server): use log_write instead of ircd_log
-
-       * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
-       ircd_log calls
-
-       * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
-
-       * ircd/m_oper.c: use log_write instead of ircd_log; no longer
-       conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
-
-       * ircd/m_kill.c: mark dead ircd_log calls
-
-       * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
-       ircd_log
-
-       * ircd/m_clearmode.c: use log_write instead of write_log; no
-       longer conditionalize on OPATH
-
-       * ircd/jupe.c: use log_write instead of write_log; no longer
-       conditionalize on JPATH
-
-       * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
-       function; fix a couple of bugs
-
-       * ircd/ircd_alloc.c: fixed a comment
-
-       * ircd/ircd.c: use log_write instead of ircd_log; fold server
-       notice generation in a couple of cases
-
-       * ircd/gline.c: use log_write instead of write_log; no longer
-       conditionalize on GPATH
-
-       * ircd/channel.c (modebuf_flush_int): use log_write instead of
-       write_log; no longer conditionalize on OPATH
-
-       * ircd/Makefile.in: run make depend, since dependencies have
-       changed
-
-       * doc/example.conf: add system USER to documentation
-
-       * include/ircd_log.h: add system USER; remove old ircd_log()
-       declarations
-
-2000-12-04  Isomer <isomer@coders.net>
-       * ircd/m_names.c: Add NAMES_EON to do_names to say add a
-       'end_of_names' reply when done.
-       * ircd/m_join.c: use NAMES_EON as mentioned above
-
-2000-12-01  net  <simms@LUCIDA.QC.CA>
-
-       * ircd/motd.c: add a freelist for struct Motds
-
-2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_stats.c (report_feature_list): report features--only
-       local opers can see logging configuration, since it doesn't really
-       mean anything to users
-
-       * ircd/s_err.c: add reply messages for new feature subsystem
-
-       * ircd/s_conf.c: add F lines to .conf
-
-       * ircd/parse.c: add the message descriptions for /set, /reset, and
-       /get
-
-       * ircd/m_stats.c: add /stats f
-
-       * ircd/m_set.c (mo_set): implement /set
-
-       * ircd/m_reset.c (mo_reset): implement /reset
-
-       * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
-       reopens log files (for log file rotation)
-
-       * ircd/m_get.c (mo_get): implement /get
-
-       * ircd/ircd_log.c: use int instead of void return value; add
-       log_report_features() and log_canon(); fix a function that
-       disappears if DEBUGMODE not #define'd
-
-       * ircd/ircd_features.c: functions to manipulate feature settings
-       either from the config file or with the new /set, /reset, and /get
-       commands
-
-       * ircd/Makefile.in: add new .c files, run make depend
-
-       * include/s_stats.h: declare report_feature_list() (/stats f
-       handler)
-
-       * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
-       ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
-       reply numerics
-
-       * include/msg.h: add defines for SET, RESET, and GET
-
-       * include/ircd_log.h: add a function to canonicalize subsystem
-       names; change some void return values to int
-
-       * include/ircd_features.h: new features subsystem handles all the
-       manipulation of special features, like log files
-
-       * include/handlers.h: declare new mo_{s,res,g}et message handlers
-       for fiddling with features run-time
-
-       * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
-       seemed like a good idea at the time...
-
-       * doc/example.conf: document new F lines
-
-2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
-       new logging functions, which have special support for the debug
-       log; added loop detection to vdebug(), so that I can
-       sendto_opmask_butone() from log_vwrite() without incurring another
-       call to vdebug()
-
-       * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
-       this allows log file rotations
-
-       * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
-
-       * ircd/ircd_log.c: much more work fleshing out the interface;
-       removed old interface; included backwards-compat ircd_log()
-       function that logs to subsystem LS_OLDLOG
-
-       * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
-       functions
-
-       * include/ircd_log.h: include stdarg.h for va_list; move ordering
-       warning to top of file; fill out LogSys enum; declare new
-       log_debug_init(), log_vwrite(), log_write_kill(), and
-       log_[sg]et_*() functions; add flags argument to log_write();
-       defined flags to inhibit various logging actions
-
-       * include/client.h: added support for new SNO_DEBUG, enabled only
-       if DEBUGMODE is defined
-
-2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_log.c: make sure the various LOG_* constants are
-       defined (probably not needed, since #include <syslog.h> isn't
-       conditional); various static data needed for the new logging
-       functions; definitions of new logging functions
-
-       * include/ircd_log.h: new LogSys enum, declarations for part of
-       new logging API
-
-       * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
-       which was of course stupid; switched to using switch/case in
-       initialization in motd_create(); zero the MotdList.other pointer
-       from motd_clear()
-
-       * ircd/ircd.c (main): motd_init() has to come before init_conf(),
-       or we overwrite init_conf()'s hard work with respect to T-lines
-
-2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_stats.c: comment out report_motd_list and include a
-       reference to motd_report()
-
-       * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
-       motd_add() from the conf parser; call motd_clear() from the rehash
-       routine; remove the no longer needed memory clearing and reloading
-       stuff from the rehash service routine
-
-       * ircd/motd.c: loads new API, including static internal functions
-       to do allocation/deallocation, etc.
-
-       * ircd/m_stats.c: use new motd_report() instead of
-       report_motd_list()
-
-       * ircd/m_motd.c: use new syntax for motd_send()
-
-       * ircd/ircd.c: use new motd_init() function
-
-       * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
-       Makefile.(in); also ran make depend
-
-       * include/motd.h: don't need config.h, but now do need time.h;
-       define new structures and constants; redefine old API and define
-       new functions
-
-2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (register_user): use motd_signon() instead of
-       calling m_motd; much cleaner this way
-
-       * ircd/motd.c: write the new motd_* stuff to make MOTD handling
-       less of a crock
-
-       * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
-       functions
-
-       * include/motd.h: define new MOTD API stuff
-
-2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_reply.c (protocol_violation): rewrite
-       protocol_violation so it'll actually work
-
-       oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
-       the client's real name in there.
-
-       * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
-       resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
-       gets called from register_user with a NULL sptr.  This is probably
-       a design problem, but this bandaid will do for now...
-
-2000-11-19  Isomer <isomer@coders.net>
-       * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
-       to problems in the server<->server protocol.
-
-       * ircd/m_connect.c: allow remote connects with a port of '0'
-       meaning to use the port in the config file.
-
-       * ircd/m_create.c: Enable hacking protection, lets see how far we
-       get.
-
-       * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
-       clients, so we don't any more.
-
-       * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
-       and the user@host is displayed of the victim.
-
-       * ircd/m_map.c: reloaded 'dump_map'.
-
-       * ircd/m_trace.c: allow per class T:
-
-       * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
-
-2000-11-17  Isomer <isomer@coders.net>
-
-       * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
-       that were the *same* instead of different.  Oh the embarrasment!
-
-       * ircd/IPcheck.c: Merged net's fix.
-
-2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_whois.c: remove compiler warning by adding a newline to
-       end of file
-
-       * ircd/m_names.c: moved the flags up to s_user.h
-
-       * ircd/m_join.c: call do_names instead of m_names; restructure
-       ms_join to never transmute a JOIN into a CREATE, but use the TS in
-       the JOIN (if present) to timestamp the channel
-
-       * ircd/channel.c: send JOINs individually, instead of grouping
-       them, so that we can send the channel's creation time
-
-       * include/s_user.h: declare do_names()
-
-2000-10-30  Isomer <isomer@coders.net>
-       * ircd/m_oper.c: Fixed warning
-
-2000-10-30  Isomer <isomer@coders.net>
-       * ircd/m_oper.c: Fixed over agressive cut and no paste
-
-2000-10-30  Isomer <isomer@coders.net>
-
-       * ircd/m_topic.c: Restructured, fixed bug where topics on local
-       channels are propergated (I forget who pointed this out to me, but
-       thanks anyway).  Also to save bandwidth don't send the topic to
-       users if the topic is already the same on the server (but still
-       propergate to other servers).  X/W's "autotopic" feature must
-       chew a lot of bandwidth, hopefully this will help reduce this.
-
-       * doc/rfc1459.rfc: Updated documentation on /topic.
-
-       * ircd/listener.c: snotice warnings about failed accept()'s
-       potentially warning admins that they're running out of fd's.
-
-       * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
-       people in a class in /stats y
-
-       * ircd/m_create.c: Checks for timewarp hacking and squit's
-       evil servers. (currently disabled)
-       
-
-2000-10-30  net <simms@lucida.qc.ca>
-       
-       * ircd/gline.c: Fixed various bugs Isomer left behind.
-
-2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
-       channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
-
-2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: ok, now last mode rules; mode +ps will always
-       result in +s (and won't send a mode if the channel is already +s);
-       mode +sp will always result in +p; -n+n on a +n channel results in
-       no mode change; -n+n on a -n channel results in a +n mode change;
-       etc.
-
-2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: add "add" and "del" elements to ParseState to
-       avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
-       mode_parse_limit that caused it to clear all channel modes
-       prematurely; restructure mode_parse_mode to avoid calling
-       modebuf_mode too early (ties in with first mentioned change);
-       better logic for +p/+s mutual exclusivity; initialize "add" and
-       "del" elements in mode_parse; send simple modes down to
-       modebuf_mode after the loop in mode_parse
-
-2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/m_names.c: Fixed a non-lethal logic error that 
-       triggers an assert() in find_member_link while debugging.
-       (Spotted by Maniac-).
-2000-09-19  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: move K:lines to their own list and data
-       structures, add supporting code.
-       * ircd/m_stats.c: cleanup stats processing a bit move
-       kline listing code to a new function, haven't figured
-       out where it goes yet tho'
-       * ircd/s_stats.c: added K:line bulk lister
-       * include/s_conf.h: added new DenyConf struct
-       * *[ch]: fixeup code that depended on changes
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * ircd/class.c: encapsulate class list
-       * include/class.h: clean up classes
-       * * fixup code that depended on changes
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: add me to local conf
-       * include/s_conf.h: move CONF_ME macro to chkconf.c
-       * ircd/s_bsd.c: cleanup initialization, allow virtual host
-       to be changed by rehash
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * include/class.h: add missing prototype
-       * ircd/class.c: make argument to get_conf_class const
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
-       merge conflicts.
-       * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
-       merge conflicts
-
-2000-09-16  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: add code for server struct
-       * ircd/client.c: copy of class.c sort of, new file for client
-       specific operations, will move things here as appropriate,
-       currently only one function is exported from here.
-       * ircd/*.c: general logic cleanups, convert negatives to
-       positives in places.
-
-2000-09-16  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: add code for new crule data structs, strip quotes
-       * ircd/crule.c: clean up scary casting a bit, type safety stuff
-       * include/s_conf.h: add CRuleConf struct and support, remove
-       unused constants
-       * include/crule.h: type safety cleanups
-       * ircd/*.c: fixup code that depended on stuff I changed
-
-2000-09-15  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: start adding code for new conf data structs, changed
-       listeners, admin line, motd lines, class lines. Move validate_hostent
-       to resolver. General mayhem.
-       * include/s_conf.h: new data structs and accessors
-       * ircd/res.c: move validate_hostent here, rewrite, use regular
-       expression for validation.
-       * doc/example.conf: update docs for port
-
-2000-09-14  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
-       up conf_init into managable chunks.
-       * ircd/listener.c (set_listener_mask): fix logic bug core dump.
-       * include/s_conf.h: add new data struct for local info (unwinding the mess).
-
-2000-09-13  Thomas Helvey <helveytw@home.com>
-       * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
-       local clients.
-       * ircd/list.c: put SLinks in free lists
-       * ircd/channel.c: put Memberships in free lists
-       * ircd/ircd.c: rearrange initializations a bit in main
-       Note: With these changes, ircd NEVER frees Clients, SLinks or
-       Memberships. It will also rarely need to allocate new
-       ones during net bursts and other disruptions. This should
-       cut down on memory fragmentation a bit as well.
-
-2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_names.c (do_names): pull-up from do_names fix in
-       u2.10.10.pl11
-
-2000-07-15  Perry Lorier       <Isomer@coders.net>
-       * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
-                 match()'s.  Major Major cpu savings.  Also speed up the
-                 other case slightly.  As a side effect you can now
-                k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
-                3am.
-
-2000-07-15  Perry Lorier       <Isomer@coders.net>
-       * various: Fixed warnings after compiling on an alpha.
-2000-07-09  Perry Lorier       <Isomer@coders.net>
-       * doc/ircd.8: Applied grammitical changes by Liandrin, applied
-                     changes suggested by various other people.
-       * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
-                       that it gets a corrupt entry somehow.
-2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/m_oper.c: Clean up compiler warning.
-
-2000-07-08  Perry Lorier       <Isomer@coders.net>
-       * doc/ircd.8: Updated the documentation, it was slightly out of date
-                     being updated around 1989.
-       * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
-                         fixed a few minor glitches.
-       * doc/rfc1459.unet: Updated.
-       * ircd/IPcheck.c: Fixed more bugs.
-       * ircd/s_bsd.c: We now keep track of servers we've conected.
-
-2000-07-02  Perry Lorier       <Isomer@coders.net>
-       * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
-                       me.  Thanks to Hektik, thanks thanks thanks thanks
-                       thanks thanks thanks thanks thank thanks thank thanks
-
-2000-07-01  Perry Lorier       <Isomer@coders.net>
-       * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
-       * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
-
-2000-06-22  Perry Lorier       <Isomer@coders.net>
-       * ircd/IPcheck.c: Large chunks redone.
-       * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
-                       single AND double digit limits are allowed now.
-       * misc other: Changes to IPcheck.
-
-2000-06-30  Perry Lorier       <Isomer@coders.net>
-       * ircd/ircd.c: Fix command line parameter bugs.
-
-2000-06-30  Perry Lorier       <Isomer@coders.net>
-       * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
-       * ircd/m_nick.c: Tidied things up.
-
-2000-06-12 Joseph Bongaarts <foxxe@trms.com>
-       * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
-       
-2000-05-29  Perry Lorier       <Isomer@coders.net>
-       * ircd/m_stats.c: add /stats v to do only the last part of the /trace
-       * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
-                       you think it'll get bored and fix itself?
-
-2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/m_names.c: Clean up compiler warnings.
-
-2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (mode_parse_client): don't send warning if
-       there's not enough arguments for a +/-o/v; means the habit of
-       doing "/mode #channel +oooooo bob" doesn't result in a bunch of
-       error messages
-
-2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/m_names.c: Re-factor code to remove unneccessary
-       GlobalChannelList iteration every time someone joins a channel.
-
-2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c: add struct Gline * argument to register_user;
-       look up global glines and repropagate them if necessary; send
-       acknowledgement of gline to remote servers when registering users
-
-       * ircd/s_serv.c (server_estab): don't send acknowledgement of
-       local glines to remote servers; do send gline acknowledgement of
-       bursted users
-
-       * ircd/m_user.c (m_user): pass new struct Gline * argument to
-       register_user
-
-       * ircd/m_pong.c: pass new struct Gline * argument to register_user
-
-       * ircd/m_nick.c (ms_nick): document protocol change
-
-       * ircd/gline.c: support GLINE_LASTMOD
-
-       * include/s_user.h: add struct Gline * argument to register_user
-
-       * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
-
-       * ircd/s_conf.c (find_kill): add unsigned int argument to
-       gline_lookup()
-
-       * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
-       glines; add unsigned int argument to gline_lookup()
-
-       * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
-       argument to gline_lookup()
-
-       * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
-       parameter, or when it falls out of bounds: see comments prior to
-       call to jupe_resend(); call server_estab with struct Jupe
-       parameter, so that we place the appropriate %<lastmod> in the
-       appropriate place.
-
-       * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
-       server, as well as for servers when we're sending the BURST
-
-       * include/s_serv.h: add a struct Jupe * to the arguments for
-       server_estab() so that we can send the appropriate lastmod
-       parameter
-
-       * ircd/m_gline.c (ms_gline): actually, this should be the
-       slightest bit more efficient...
-
-       * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
-       bit more efficient...
-
-       * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
-       during netburst
-
-       * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
-       netburst
-
-       * ircd/channel.c (joinbuf_join): really remove user from local
-       channels
-
-2000-05-29  Perry Lorier       <Isomer@coders.net>
-       * ircd/m_names.c: Removed redundant space. 
-       * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
-
-2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
-       a " "
-
-2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: replace bogus assertions with returns, which is
-       logically correct; only wipe out limit/key if they were originally
-       set in the first place; remove user from channel when doing a
-       PARTALL; only send MODE +o for user CREATEing channel if user is
-       not MyUser--CREATE will only be used if the channel did not
-       originally exist, therefore we can assume no one local is on the
-       channel anyway, and we don't exactly need for the user to see an
-       explicit +o for themselves
-
-       * doc/readme.gline: describe the syntax of the GLINE command
-
-       * doc/readme.jupe: update to reflect a couple of changes to JUPE
-
-       * ircd/gline.c: don't propagate local changes
-
-       * ircd/jupe.c: don't propagate local changes
-
-       * ircd/m_gline.c (mo_gline): force local flag when deactivating
-       glines with 0 lastmod
-
-       * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
-       are now removed instead of being deactivated
-
-       * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
-       -<mask>" be accepted
-
-       * ircd/channel.c (send_channel_modes): deal with one of the last
-       vestiges of sendbuf
-
-       * ircd/m_burst.c (ms_burst): debugged ban processing; removed
-       debugging hooks
-
-       * ircd/channel.c (modebuf_extract): remove debugging
-       sendto_opmask_butone calls
-
-2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: support a couple of new flags to support using
-       mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
-       of modebuf_extract to extract added flags for use by ms_burst
-
-       * include/channel.h: a couple of new flags to support using
-       mode_parse inside ms_burst
-
-       * ircd/m_burst.c (ms_burst): brand new implementation of BURST
-
-       * ircd/m_endburst.c: add loop to processing of end_of_burst to
-       free empty channels after the BURST is over.
-
-       * ircd/m_server.c: convert to use new send.c functions--I wanted
-       to rewrite it from scratch, but the logic's pretty complex; I may
-       still rewrite it, though...
-
-2000-05-02  Thomas Helvey <tomh@inxpress.net>
-
-       * ircd/ircd.c: fix broken header include ordering
-
-2000-05-02  Thomas Helvey <tomh@inxpress.net>
-       
-       * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
-        review emailed privately
-
-       * include/IPcheck.h: removed unneeded include
-
-2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (hunt_server): throw in a comment so I know what
-       the sendto_one is for
-
-       * include/querycmds.h (Count_unknownbecomesclient): convert to
-       sendto_opmask_butone
-
-       * ircd/send.c: start removing dead code
-
-       * include/send.h: start removing dead code
-
-       * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
-       hunt_server_cmd
-
-       * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
-
-2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_stats.c: convert to sendcmdto_one / send_reply
-
-       * ircd/m_kick.c: Completely reimplement m_kick
-
-       * ircd/channel.c: send_user_joins removed; it was dead code,
-       anyway...
-
-2000-05-01  Perry Lorier <isomer@coders.net>
-       * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
-       * ircd/channels.c: My fix for the part problem.  Untested, probably
-               won't work.  Can't be much worse than the current problem.
-               it'll either work or core, take your pick.
-
-
-2000-04-30  Perry Lorier <isomer@coders.net>
-       * config/config-sh.in: Fix for CONNEXIT
-       * ircd/s_{user,misc}.c: Fix for CONNEXIT
-       * ircd/m_invite.c: Fix for incorrectly numnickified invite.
-                       (Kev: Want to come talk to me about this?)
-
-2000-04-30  Steven M. Doyle <steven@doyle.net>
-       * ircd/ircd.c
-         - general cleanups and readability enhancements
-         - rewrite of setuid/chroot code.
-         - server will no longer run as root
-         - -DPROFIL compile option removed
-         - Fixed IPcheck API calls
-       * config/config-sh.in
-         - Fixed up chroot compile options
-         - Added options for debug and profile compiles
-       * config/gen.ircd.Makefile
-         - Support for new debug/profile options
-       * ircd/Makefile.in
-         - Support for new debug/profile options
-       * ircd/ircd_signal.c
-         - Removed -DPROFIL
-
-       * include/IPcheck.h
-         - Removed old API prototypes, added new ones
-       
-       * ircd/IPcheck.c
-         - Readability cleanups (well, I -think-...)
-         - Changed IPRegistryEntry.last_connect to a time_t.  The previously
-           used unsigned short was probably causing interesting things after
-           a client had been connected longer than about 65,535 seconds...
-         - Removed old API functions.
-
-       * ircd/whocmds.c
-         - Removed IPcheck.h include
-       
-       * Additionally modified IPcheck API calls in:
-         - ircd/m_nick.c
-         - ircd/m_auth.c
-         - ircd/s_bsd.c
-         - ircd/s_conf.c
-         - ircd/s_misc.c
-         - ircd/s_serv.c
-         - ircd/s_user.c
-       
-       
-2000-04-30  Perry Lorier <isomer@coders.net>
-       * ircd/s_bsd.c: Sigh. :)
-        * ircd/m_mode.c: fix for modeless channels by poptix.
-
-2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
-
-       * ircd/channel.c (clean_channelname): make clean_channelname also
-       truncate long channel names
-
-2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
-
-       * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
-       joinbuf_flush
-
-       * include/channel.h: definitions and declarations for the struct
-       JoinBuf abstraction
-
-2000-04-29  Perry Lorier <isomer@coders.net>
-       * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
-
-2000-04-29  Perry Lorier <isomer@coders.net>
-       * ircd/s_bsd.c: Add debugging code to IPcheck
-
-2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
-
-       * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
-       RPL_EXPLICIT
-
-       * ircd/m_userhost.c (m_userhost): add a dead code comment
-
-       * ircd/m_desynch.c: forgot one...
-
-       * ircd/m_rehash.c (mo_rehash): er, duplicates :)
-
-       * ircd/m_proto.c (proto_send_supported): just change a comment so
-       it doesn't show up in my scans
-
-       * ircd/ircd_reply.c (send_reply): fix a slight bug...
-
-       * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
-       kinda hackish...
-
-       * ircd/parse.c (parse_server): argument wrangling to make
-       processing in do_numeric a little easier to deal with
-
-       * ircd/s_serv.c (server_estab): SERVER should come from
-       acptr->serv->up, not &me
-
-       * ircd/m_lusers.c: accidentally left out sptr for a %C
-
-       * ircd/send.c: hack to support doing wallchops...
-
-       * ircd/m_whowas.c: convert to new send functions
-
-       * ircd/m_whois.c: convert to new send functions
-
-       * ircd/m_who.c: convert to new send functions
-
-       * ircd/m_wallops.c: convert to new send functions
-
-       * ircd/m_wallchops.c: convert to new send functions
-
-       * ircd/m_version.c: convert to new send functions
-
-       * ircd/m_userip.c: convert to new send functions
-
-       * ircd/m_userhost.c: convert to new send functions
-
-       * ircd/m_uping.c: convert to new send functions
-
-       * ircd/m_trace.c: convert to new send functions
-
-       * ircd/m_topic.c: convert to new send functions
-
-       * ircd/m_time.c: convert to new send functions
-
-       * ircd/m_squit.c: convert to new send functions
-
-       * ircd/m_silence.c: convert to new send functions
-
-       * ircd/m_settime.c: convert to new send functions
-
-       * ircd/m_restart.c: convert to new send functions
-
-       * ircd/m_rehash.c: convert to new send functions
-
-       * ircd/m_privmsg.c: convert to new send functions
-
-       * ircd/m_pong.c: convert to new send functions
-
-       * ircd/m_ping.c: convert to new send functions
-
-       * ircd/m_pass.c: convert to new send functions
-
-       * ircd/m_opmode.c: convert to new send functions
-
-       * ircd/m_oper.c: convert to new send functions
-
-       * ircd/m_notice.c: convert to new send functions
-
-       * ircd/m_nick.c: convert to new send functions
-
-       * ircd/m_names.c: convert to new send functions
-
-       * ircd/m_motd.c: convert to new send functions
-
-       * ircd/m_mode.c: convert to new send functions
-
-       * ircd/m_map.c: convert to new send functions
-
-       * ircd/m_lusers.c: convert to new send functions
-
-       * ircd/m_list.c: convert to new send functions
-
-       * ircd/m_links.c: convert to new send functions
-
-       * ircd/m_kill.c: convert to new send functions
-
-       * ircd/m_jupe.c: convert to new send functions
-
-       * ircd/m_invite.c: convert to new send functions
-
-       * ircd/m_info.c: convert to new send functions
-
-       * ircd/m_help.c: convert to new send functions
-
-       * ircd/m_gline.c: convert to new send functions
-
-       * ircd/m_error.c: convert to new send functions
-
-       * ircd/m_endburst.c: convert to new send functions
-
-       * ircd/m_die.c: convert to new send functions
-
-       * ircd/m_destruct.c: convert to new send functions
-
-       * ircd/m_defaults.c: convert to new send functions
-
-       * ircd/m_connect.c: convert to new send functions
-
-2000-04-28  Perry Lorier <isomer@coders.net>
-       * RELEASE.NOTES: Describe a few more undocumented features.
-       * config/config-sh.in: change the default paths for logging
-       and the recommended number of channels.
-       * include/supported.h: Rearrange slightly, added CHANTYPE's
-
-2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_close.c: convert to send_reply
-
-       * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
-
-       * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
-
-       * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
-
-       * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
-       that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
-       HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
-       carefully rethought...
-
-       * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
-
-       * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
-
-       * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
-       numeric nick; therefore, we have to use the server name
-
-       * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
-
-       * ircd/send.c: fix minor bugs
-
-       * ircd/s_user.c (check_target_limit): mark dead code so I filter
-       it when I grep
-
-       * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
-       when I grep
-
-       * ircd/parse.c: mark dead code so I filter it when I grep
-
-       * ircd/map.c: mark dead code so I filter it when I grep
-
-       * ircd/ircd.c: mark dead code so I filter it when I grep
-
-       * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
-       functions
-
-       * ircd/channel.c: mark dead code so I filter it when I grep
-
-       * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
-       hope I'm not stepping on toes...
-
-       * ircd/s_conf.c: more sendto_opmask_butone / send_reply
-       conversions; use ircd_snprintf in a couple of cases to negate the
-       possibility of buffer overflow
-
-2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: convert as much as possible to new send
-       semantics
-
-       * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
-       test member->user->from->fd, not from->fd
-
-       * ircd/gline.c (gline_add): go ahead and add badchans; we just
-       won't look for them in m_gline; this way, they always work...
-
-       * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
-
-       * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
-       ircd_vsnprintf conversion specifiers
-
-       * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
-       I have my conversion specifiers
-
-       * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
-
-       * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
-       local users
-
-       * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
-       little less brain-dead
-
-       * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
-
-       * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
-       RPL_STATSDEBUG
-
-       * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
-       RPL_STATSDEBUG
-
-       * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
-       for RPL_STATSDEBUG
-
-       * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
-
-       * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
-
-       * ircd/s_user.c (register_user): use RPL_EXPLICIT for
-       ERR_INVALIDUSERNAME
-
-       * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
-
-       * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
-       a numeric as needing to use an explicit pattern, which will be the
-       first argument in the variable argument list
-
-       * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
-       non-prefixed nospoof PING
-
-       * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
-       non-prefixed SERVER login
-
-       * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
-       a numeric usage further up)
-
-       * include/send.h: declare sendrawto_one
-
-       * ircd/send.c (sendrawto_one): new function to use ONLY for
-       non-prefixed commands, like PING to client, or PASS/SERVER on
-       server registration
-
-2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_snprintf.c (doprintf): implement %H for possible
-       future expansion (channel numerics?)
-
-       * include/ircd_snprintf.h: added documentation to # to explain use
-       with %C; added documentation for : to explain use with %C; added
-       documentation for %H for channels
-
-       * ircd/whocmds.c: use send_reply
-
-       * ircd/userload.c: use sendcmdto_one
-
-       * ircd/uping.c: use sendcmdto_one
-
-       * ircd/send.c: use new flags to %C format string; ':' prefixes
-       client name with a colon for local connects, '#' uses
-       nick!user@host form for local connects
-
-       * ircd/s_user.c: use send_reply, sendto_opmask_butone,
-       sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
-
-       * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
-
-       * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
-       sendcmdto_one
-
-       * ircd/s_auth.c: use sendto_opmask_butone
-
-       * ircd/res.c: use sendcmdto_one
-
-       * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
-       debugging assertions
-
-2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/support.c: dumpcore is no longer used, so get rid of it
-
-       * ircd/parse.c: use send_reply, sendcmdto_one
-
-       * ircd/map.c: use send_reply
-
-       * ircd/listener.c: use send_reply
-
-       * ircd/jupe.c: use sendto_opmask_butone, send_reply
-
-       * ircd/ircd_reply.c: use send_reply
-
-       * ircd/ircd.c: use sendto_opmask_butone
-
-       * ircd/gline.c: use sendto_opmask_butone, send_reply
-
-       * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
-       registered clients; make FLAG_ALT print nick!user@host; make
-       FLAG_COLON print :blah
-
-       * ircd/class.c (report_classes): use send_reply instead of
-       sendto_one
-
-       * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
-
-       * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
-       sendto_one with sendcmdto_one
-
-2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
-       MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
-       sendcmdto_match_butone
-
-       * include/send.h: declare sendcmdto_match_butone
-
-2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/jupe.c: update to use send_reply()
-
-       * ircd/gline.c: update to use send_reply()
-
-       * include/ircd_reply.h: declare send_reply
-
-       * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
-       replies; uses ircd_snprintf
-
-       * ircd/send.c: added comments to redirect searchers to appropriate
-       sendcmdto_* function; moved new functions to end of file; added
-       explanatory comments; reordered arguments; defined new functions
-       mentioned below
-
-       * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
-
-       * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
-
-       * ircd/jupe.c: reorder arguments to sendcmdto_* functions
-
-       * ircd/gline.c: reorder arguments to sendcmdto_* functions
-
-       * include/send.h: reorder arguments, add explanatory comments,
-       declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
-       and vsendto_opmask_butone
-
-2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
-       vsendto_op_mask that uses '*' instead of the receiving client
-       nickname
-
-       * include/send.h: declare sendcmdto_channel_butone; takes a skip
-       argument that allows you to skip (or not to skip) deaf users,
-       users behind bursting servers, and non channel operators
-
-2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: new sendcmdto_channel_butserv -- note that old
-       sendto_channel_butserv has a subtle bug; also wrote
-       sendcmdto_common_channels.
-
-       * include/send.h: declare new sendcmdto_* functions
-
-       * ircd/jupe.c: support local deactivations of jupes
-
-       * ircd/gline.c: support local deactivations of glines
-
-       * include/jupe.h: JUPE_LDEACT allows jupes to be locally
-       deactivated; if they aren't locally deactivated, then it slaves to
-       the net-wide activation status; JupeIsRemActive() tests only
-       whether the jupe is active everywhere else
-
-       * include/gline.h: GLINE_LDEACT allows glines to be locally
-       deactivated; if they aren't locally deactivated, then it slaves to
-       the net-wide activation status; GlineIsRemActive() tests only
-       whether the gline is active everywhere else
-
-       * ircd/gline.c: detect overlapping G-lines; if an existing, wider
-       gline expires after the new one will, we drop the new one,
-       otherwise we add the G-line after that one (so the wide one will
-       apply first); if the new one contains an existing G-line and if it
-       will expire after the existing one, we drop the existing one to
-       save memory
-
-       * ircd/m_gline.c (mo_gline): opers could issue remote local
-       glines when CONFIG_OPERCMDS was off; fixed
-
-2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
-       this is a local JUPE
-
-       * ircd/gline.c: add flags argument to gline_activate and
-       gline_deactivate for future expansion
-
-       * ircd/m_gline.c: pass flags to gline_activate and
-       gline_deactivate
-
-       * include/gline.h: add flags argument to gline_activate and
-       gline_deactivate
-
-       * ircd/jupe.c: add flags argument to jupe_activate and
-       jupe_deactivate for future expansion
-
-       * include/jupe.h: add flags argument to jupe_activate and
-       jupe_deactivate
-
-       * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
-       local, active; pass flags to jupe_activate and jupe_deactivate
-
-       * include/gline.h: remove dead code
-
-       * ircd/gline.c: make gline expire times relative to CurrentTime,
-       since that should be monotonically increasing, instead of
-       TStime(), which can be set backwards, and which can therefore
-       cause an expire time to increase; make local glines be removed
-       instead of just deactivated; don't let gline_find() look for
-       user@host glines if the mask being looked up is a channel mask
-
-       * ircd/send.c (vsendcmdto_one): forgot to account for the case
-       where origin is a server and destination is a user
-
-       * ircd/jupe.c: make jupe expire times relative to CurrentTime,
-       since that should be monotonically increasing, instead of
-       TStime(), which can be set backwards, and which can therefore
-       cause an expire time to increase; make local jupes be removed
-       instead of just deactivated
-
-       * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
-       limit is fine.  any other warnings I should know about?
-
-2000-04-15  Thomas Helvey <tomh@inxpress.net>
-
-       * ircd/*.c: const correctness and type safety cleanups to
-       get code to compile with C++ compiler. Still has
-       signed/unsigned comparison warnings.
-
-2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/userload.c: change <sys/time.h> include to <time.h> for
-         portability.
-
-2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
-       and convert acptr...
-
-       * ircd/s_user.c: move gline_lookup function call into
-       register_user, where it'll have a username to lookup!
-
-       * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
-       functions; also stuff send_error_to_client into return clauses
-
-       * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
-       functions; also use send_error_to_client where that makes sense
-
-       * ircd/jupe.c: modify to utilize new sendcmdto_* series of
-       functions; also use send_error_to_client where that makes sense
-
-       * ircd/gline.c: modify to utilize new sendcmdto_* series of
-       functions; also fix gline_lookup() to deal properly with remote
-       clients--boy, do struct Client and struct User need to be cleaned
-       up!
-
-       * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
-       too...
-
-       * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
-       sendcmdto_serv_butone(), all utilizing the %v conversion of
-       ircd_snprintf()
-
-       * include/send.h: define IRC_BUFSIZE, max size of a message;
-       declare sendcmdto_one(), vsendcmdto_one(), and
-       sendcmdto_serv_butone()
-
-       * include/msg.h: define all the CMD_* constants needed to utilize
-       the new sendcmdto_* series of functions
-
-       * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
-
-       * ircd/gline.c: remove old, dead code.
-
-       * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
-       unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
-       (don't advertise proxies); remove dead code
-
-       * ircd/parse.c: oper handler for JUPE only lists jupes unless
-       CONFIG_OPERCMDS is enabled
-
-       * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
-       CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
-
-       * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
-       always return ERR_DISABLED
-
-       * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
-       enabled, always return ERR_DISABLED
-
-       * ircd/s_err.c: add error message to indicate disabled commands
-
-       * include/numeric.h (ERR_DISABLED): to indicate disabled commands
-
-       * doc/Configure.help: add documentation for CONFIG_OPERCMDS
-
-       * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
-       CONFIG_NEW_MODE to 'y' for now
-
-       * ircd/gline.c (gline_list): fix a minor formatting bogon
-
-       * BUGS: since I fixed that bug, might as well mark it fixed.
-
-       * ircd/m_join.c: look up badchans with GLINE_EXACT
-
-       * ircd/m_gline.c: fix parc count problems; look up existing
-       G-lines with GLINE_EXACT; only set new lastmod when
-       activating/deactivating existing glines if old lastmod was not 0
-
-       * ircd/gline.c: forgot to copy the gline reason over; don't
-       propagate a gline with 0 lastmod if origin is user; add
-       GLINE_EXACT to force exact matching of gline mask
-
-       * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
-       flag properly
-
-       * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
-       but gline_lookup() actually takes a client--d'oh.
-
-2000-04-13  Thomas Helvey <tomh@inxpress.net>
-       * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
-
-2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
-         "/who * x"
-         "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
-         (Found by Plexus).
-
-       * ircd/whocmds.c: Change idle time calc from socket idle to user
-         idle.
-
-2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
-       too, for ircd_snprintf.c
-
-       * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
-       comments; mostly descended from the Linux manpage for printf, but
-       also documenting the extensions.
-
-       * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
-       client; make 'q' be the same as 'L'; remove __inline__; only
-       define EXTENSION if HAVE_LONG_LONG is defined
-
-       * include/handlers.h: declare m_gline()
-
-       * ircd/parse.c: gline can be called by users, but it only lists
-       the glines.
-
-       * ircd/s_user.c (set_nick_name): resend gline if a remote server
-       introduces a glined client
-
-       * ircd/s_serv.c (server_estab): burst glines, too
-
-       * ircd/gline.c: fix up all the expire times to be offsets;
-       simplify gline_resend()
-
-       * ircd/m_gline.c: begin coding replacements for ms_gline(),
-       mo_gline(), and m_gline()
-
-       * ircd/gline.c (gline_add): allow *@#channel to work correctly;
-       also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
-
-2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * tools/Bouncer/*: Add comments/documentation/tags.
-       * tools/Bouncer/*: Add debug defines, make task fork().
-
-2000-04-12  Thomas Helvey <tomh@inxpress.net>
-       * ircd/s_err.c: Cleanup s_err.c make one table so we
-       don't have to do anything tricky to get an error string.
-
-2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * Add port bouncer for http (x/w)
-
-2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
-       call to gline_find(); also used GlineReason() instead of direct
-       reference to structure member
-
-       * ircd/m_join.c (m_join): replace bad_channel() calls with calls
-       to gline_find(name, GLINE_BADCHAN), and also check to see if gline
-       is active
-
-       * ircd/channel.c: nothing seems to be called anywhere...
-
-       * ircd/s_err.c: update a couple of replies to dovetail with new
-       semantics
-
-       * ircd/gline.c: begin complete re-implementation of gline.c along
-       the lines of the final design of jupe.c
-
-       * include/gline.h: begin complete re-implementation of gline.c
-       along the lines of the final design of jupe.c
-
-       * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
-       %s by %s" message...
-
-       * ircd/ircd_snprintf.c: my new snprintf()-like functions
-
-       * include/ircd_snprintf.h: my new snprintf()-like functions
-
-2000-04-11  Thomas Helvey <tomh@inxpress.net>
-       * ircd/IPcheck.c: removed old dead code
-       * ircd/s_user.c (send_user_info): removed non-standard
-          user not found message for userhost/userip
-
-2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
-       * doc/p10.html: Work on chapter 4.
-
-2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (mode_parse_client): fix coredump on /mode
-       #foobar +o nosuchnick
-
-2000-04-10  Perry Lorier  <Isomer@coders.net>
-       * BUGS: Added bug.
-
-2000-04-09  Thomas Helvey <tomh@inxpress.net>
-       * include/IPcheck.h: fix prototype
-       * ircd/s_user.c: fix usage of IPcheck_remote_connect
-       * ircd/IPcheck.c: removed unused args
-
-2000-04-09  Thomas Helvey <tomh@inxpress.net>
-       * include/IPcheck.h: add proto for IPcheck_expire
-
-       * ircd/IPcheck.c: Rewrote
-
-       * ircd/ircd.c: Add IPcheck_expire to main message loop
-
-       * ircd/s_user.c: Redo target hashing, refactor target code
-
-       * include/numeric.h: Cleaned up numerics, added which ones are
-       in use by other networks and what they are in use for.
-
-       * ircd/channel.c: cleaned can_join(), allow anyone through anything
-       if /invited, simplified the function.  Opers overusing OPEROVERRIDE
-       will get a message explaining to them not to cheat.
-
-       * ircd/m_join.c: cleaned up the various join functions, should be
-       a lot more efficient.  Still needs work.  Now assumes that s<->s
-       won't send it a JOIN 0.  Service coders - note this and tread with
-       care.
-
-       * ircd/m_stats.c: added Gte-'s stats doc patch.
-
-       * ircd/m_version.c: /version now returns the 005 numeric as well.
-       as requested by Liandrin.
-
-
-2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_clearmode.c: add include for support.h for write_log()
-
-       * configure: move ircd/crypt/* to tools/*
-
-2000-04-06  Thomas Helvey <tomh@inxpress.net>
-       * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
-          set client host to server alias if connection from localhost
-
-2000-04-06  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: Fix core during pinging (oops)
-       
-2000-04-06  Perry Lorier <isomer@coders.net>
-       * ircd/send.c: fixed wrong ident being sent to channels bug.
-       * include/numerics.h: Updated some of the numerics from other
-       networks.  Flagged some as 'unused' by undernet.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: Lets see if this helps the ping problem at all.
-       * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
-       time for local clients. (as requested), extended who now returns all
-       the flags (@+!) so you can tell the complete state of a client.
-
-2000-03-30  Thomas Helvey <tomh@inxpress.net>
-       * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/parse.c: oops, missed opers.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
-       for so long.  Remember: m_ping MUST be in the parse array. :)
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: test in check_pings was wrong.  I move that we
-       disallow cvs commit after 10pm localtime....
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/m_pong.c: Fix it for servers too.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/m_pong.c: Fix ping timeout bugs
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/channel.c: Bans had CurrentTime in their when field instead
-       of TStime()
-
-2000-03-31  Thomas Helvey <tomh@ixpress.net>
-       * ircd/numnicks.c (SetXYYCapacity): fix for extended
-       numerics.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/m_nick.c: send kills both ways so when we add nick change
-       on collision we don't desync the network.
-
-       * ircd/map.c: Fixup the map a bit more.
-
-2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
-
-       * ircd/m_opmode.c: Log the mode changes to OPATH
-
-       * ircd/channel.c (modebuf_flush_int): Log the mode changes to
-       OPATH
-
-       * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
-       OPATH
-
-       * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
-
-       * config/config-sh.in: added OPATH for opmode log file
-
-       * ircd/m_clearmode.c (do_clearmode): updated uses of
-       modebuf_mode_string() for the new usage
-
-       * ircd/channel.c: added flag MODE_FREE and an int argument to
-       modebuf_mode_string() to indicate that the string must be free'd;
-       updated calls to modebuf_mode_string() for the new usage; called
-       collapse(pretty_mask()) on the ban string and use allocated memory
-       for it; added ban list length accounting; fixed a number of small
-       bugs in ban processing
-
-       * include/channel.h: added flag MODE_FREE and an int argument to
-       modebuf_mode_string() to indicate that the string must be free'd
-
-       * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
-       keys and limits that are set
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: rewrote check_pings() for maintainability
-       and speed.  Also changed quit msg's so they don't have
-       redundant nick[host] info in them.
-
-       * ircd/send.c: Changed write errors to report what error
-       occured (if possible).
-
-       * ircd/gline.c: added gline comment to the quit.
-
-       * ircd/m_server.c: Added suggestions to server quits mentioning
-       what went wrong so the admin can fix it earlier instead of asking
-       questions...
-
-       * ircd/map.c: Changed m_map() to hide numerics, show a * beside
-       servers that aren't fully burst yet.  And show '(--s)' for servers
-       where its not sure.
-
-       * doc/example.conf: Fixed wrapped U:
-
-2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
-       mode_parse() (version selectable at compile time)
-
-       * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
-
-       * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
-
-       * config/config-sh.in: add new config option to enable new m_mode
-       implementation
-
-       * doc/Configure.help: add documentation for new config option
-       CONFIG_NEW_MODE
-
-       * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
-       MODE -v : Not enough parameters
-
-       * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
-       +k and +l even if they weren't set...
-
-       * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
-
-       * ircd/channel.c: make mode_process_clients() clear the DEOPPED
-       flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
-       for; test the 0-th member, not the i-th member, of the client
-       change state stuff
-
-       * ircd/m_clearmode.c (do_clearmode): use the new
-       mode_invite_clear() function
-
-       * ircd/channel.c: cleared up all the compile-time warnings and
-       errors
-
-       * include/channel.h: added declarations for mode_ban_invalidate()
-       and mode_invite_clear()
-
-       * ircd/channel.c: finished mode_parse(), then broke it up into a
-       dozen or so helper functions to make the code easier to read
-
-2000-03-29  Thomas Helvey <tomh@inxpress.net>
-       * ircd/ircd.c: refactor server initialization a bit, use
-       getopt for parsing command line, refactor init_sys, main,
-       and other bits.
-
-       * ircd/s_bsd.c: add functions for initialization to clean
-       up logic a bit and remove duplicated code.
-
-       * include/ircd.h: add struct for server process related
-       variables.
-
-2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: initial definition of mode_parse(); flags to
-       prevent doing the same thing multiple times; helper method
-       send_notoper() to send a "Not oper"/"Not on channel" notice
-
-       * include/channel.h: declare mode_parse() and helper flags
-
-       * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
-       sending to match the current action of set_mode() closely enough
-       that hopefully there won't be major conflicts
-
-       * ircd/channel.c (modebuf_flush_int): consolidated the mode string
-       building logic, reversed the order of the arguments to mode
-       commands to have '-' preceed '+'
-
-2000-03-29  Thomas Helvey <tomh@inxpress.net>
-       * ircd/s_bsd.c (add_connection): don't disable socket options
-       let OS tune itself and allow important performance tweaks to 
-       work.
-
-2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
-       confused by set_mode, which is doing some really weird logic;
-       guess what I'm going to rewrite next?  ;)
-
-2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
-
-       * include/channel.h: added MODE_SAVE for the bounds checking stuff
-       in modebuf_flush
-
-       * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
-       make it do bounds checking on the buffer; all modes are sent only
-       if the all parameter is 1; modebuf_flush is the exported wrapper
-
-       * include/channel.h: add BOUNCE, renumber flags to get a little
-       more space
-
-       * ircd/channel.c (modebuf_flush): don't overload HACK2, add
-       BOUNCE; send DESYNCH message
-
-2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
-
-       * ircd/m_clearmode.c (do_clearmode): only mark the modes the
-       channel actually has in effect for deletion
-
-       * ircd/channel.c: added explanatory comments to all added
-       functions; made flushing take place at the correct place even if
-       the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
-       to bash some stupid bugs; made modebuf_flush() return if ModeBuf
-       is empty, fixed the apparent source, removed some bogus string
-       termination code, properly terminate the mode strings, add support
-       for HACK2 and HACK3, made limit strings not be sent if the limit
-       is being removed, changed where '+' and '-' come from in sent
-       strings, added support for DEOP flag, set up bouncing code for
-       HACK2
-
-       * ircd/Makefile.in: ran make depend
-
-       * include/channel.h: added new defines for future functionality,
-       made modebuf_flush() return int so I can use tail recursion
-
-       * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
-       to make it all compile
-
-       * ircd/m_opmode.c: add msg.h to includes...
-
-       * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
-
-       * ircd/channel.c (modebuf_flush): realized I forgot to
-       nul-terminate addbuf/rembuf properly...
-
-       * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
-
-       * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
-       sendto_serv_butone--blah^2
-
-       * ircd/send.c (sendto_serv_butone): stupid comments confused me
-
-       * ircd/channel.c (modebuf_flush): if there are no mode changes to
-       propagate, we're done...
-
-       * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
-       not sendto_all_butone
-
-       * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
-
-       * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
-
-       * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
-       the list
-
-       * ircd/parse.c: added messages for opmode and clearmode
-
-       * include/handlers.h: added declarations for mo_opmode(),
-       ms_opmode(), mo_clearmode(), and ms_clearmode()
-
-       * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
-       TOK_CLEARMODE
-
-       * include/channel.h (MODEBUF_DEST_OPMODE): Define the
-       MODEBUF_DEST_OPMODE flag
-
-       * ircd/channel.c (modebuf_flush): added new flag,
-       MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
-       to originate from source's server (or source itself, if
-       IsServer(source)); also causes a server-level MODE to be sent as
-       OPMODE instead
-
-       * include/channel.h: defined MODEBUF_DEST_SERVER,
-       MODEBUF_DEST_HACK4
-
-       * ircd/channel.c: Add another argument to build_string() to handle
-       numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
-       servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
-       to be sent out
-
-2000-03-27  Perry Lorier <isomer@coders.net>
-
-       * ircd/s_bsd.c: fixed missing 'u' typo.
-
-2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
-
-       * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
-       _mode_string(), _mode_client(), _flush(); also implemented a
-       simple build_string()
-
-       * include/channel.h: added definition of ModeBuf, modebuf_*
-       manipulation functions, and a couple of helper macros
-
-2000-03-24 Thomas Helvey <tomh@inxpress.net>
-  * numicks.c: convert extended numerics to use original mask version
-  * numnicks.h: ""
-  * s_user.c:
-2000-03-23 Thomas Helvey <tomh@inxpress.net>
-  * Merge in changes from production
-2000-03-22 Thomas Helvey <tomh@inxpress.net>
-  * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
-  * rfc1459.unet: Add Maniac's documentation for /names 0
-* Fix misc. jupe bugs that somehow made it into the tree
-* Escape /names 0 to mean /names --Maniac
-* Don't core when server asks for info --Maniac 
-* Add Kev's jupe patch --Bleep
-* Add Maniacs squit patch --Bleep
-* Merge in u2_10_10_beta07 changes --Bleep
-* Merge in u2_10_10_beta06 changes --Bleep
-* Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
-#-----------------------------------------------------------------------------
diff --git a/doc/history/ChangeLog.12 b/doc/history/ChangeLog.12
deleted file mode 100644 (file)
index 734e05f..0000000
+++ /dev/null
@@ -1,11526 +0,0 @@
-2009-07-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Move the default-usermodes call
-       to set_user_mode() to before SetUser(), so that the former does
-       not increment the UserStats fields.  Add back the explicit
-       adjustments to UserStats for invisible and opered clients.
-
-2009-07-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Use correct parc for
-       set_user_mode().  Do not increment UserStats fields here, because
-       set_user_mode() handles that.
-
-2009-07-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_gline.c (ms_gline): Fix the sense of the test for
-       strtoul() when parsing G-line lifetimes -- zero indicates failure.
-
-2009-07-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_client): Ignore anything after a
-       colon when the mode is CHFL_VOICE or the mode is being removed.
-
-2009-07-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (find_conf_client): New function.
-       (preregister_user): Use it to avoid assigning a second conf class
-       on client connection.
-       (auth_ping_timeout): Send the "T" message only if we do not kill
-       the client (and thus send a "D" message).
-       (auth_find_classs_conf): Do not allow IAuth to select a disabled
-       class.  Unlink new conf items from GlobalConfList.
-       (iauth_cmd_done_client): Handle failures from attach_conf().
-       (iauth_parse): Behave decently when a client is killed by the
-       message handler.
-
-       * tools/iauth-test (%handlers): Add entries to help test this.
-
-2009-07-04  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (RevealDelayedJoinIfNeeded): Declare.
-
-       * ircd/channel.c (RevealDelayedJoinIfNeeded): Implement.
-
-       * ircd/ircd_relay.c (relay_channel_message): Only reveal the user
-       if he passes the check_target_limit() test.
-       (relay_channel_notice): Likewise.
-
-       * ircd/m_wallchops.c (m_wallchops): Likewise.
-
-       * ircd/m_wallvoices.c (m_wallvoices): Likewise.
-
-       * ircd/s_user.c (check_target_limit): Micro-optimize to only check
-       the user's channel list for invites if we are about to deny it.
-
-2009-03-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (main): Unconditionally set +6 flag on self.
-
-2009-03-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (iauth_cmd_hostname): Properly assign the spoofed
-       hostname (yea, even as the "real" host) in the hurry state.
-
-       * tools/iauth-test: Add reminder about perl's RTMIN signal and a
-       new handler to exercise the N command in the hurry state.
-
-2009-03-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse): Add Doxygen comment.  When bouncing
-       a mode from a desynced U-lined server, do not set the modes or
-       send the change as a HACK(4) message.
-
-2009-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/send.c (sendcmdto_match_butone): Move match_it() to the end
-       of the if() to minimize the number of expensive function calls.
-
-2009-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * patches/diffs/antispambot.diff: Forward port a patch by Dianora
-       to add rudimentary spam bot detection to ircu.
-
-2009-02-08  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h (ClearHub): New macro.
-
-       * ircd/ircd.c (main): Set IPv6 flag on &me if appropriate.
-
-       * ircd/ircd_features.c (feature_notify_hub): New function.
-       (features[]): Register it for FEAT_HUB.
-
-       * ircd/ircd_parser.y (connectblock): Do not default maxlinks to
-       65535 unless "hub" is specified.
-       (clientblock): Reset maxlinks on cleanup.
-
-2009-02-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (clean_channelname): Delete this function; it is
-       no longer used, and had the same length-off-by-one bug.
-
-       * ircd/m_join.c (m_join): Use > instead of >= with CHANNELLEN.
-
-       * tests/ircd.conf: Set CHANNELLEN to make it easier to test this.
-
-       * tests/bug-2328334.cmd: New file for regression testing.
-
-2009-02-08  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h (ERR_INVALIDKEY): Define new numeric.
-
-       * ircd/s_err.c (ERR_INVALIDKEY): Give it a text string.
-
-       * ircd/channel.c (is_clean_key): Rename from clean_key(), and make
-       this function responsible for sending error messages to the client
-       when necessary.
-       (mode_parse_key): Update to match the new is_clean_key() behavior.
-       (mode_parse_upass): Likewise.
-       (mode_parse_apass): Likewise.
-
-       * tests/channel-keys.cmd: New file for regression testing.
-
-2009-02-08  Michael Poole <mdpoole@troilus.org>
-
-       * include/gline.h (gline_forward_deactivation): Undeclare.
-
-       * ircd/m_gline.c (mo_gline): Remove the special case to call
-       gline_forward_deactivation().
-
-       * ircd/gline.c (gline_add): Mention if the new G-line is already
-       deactivated.
-       (gline_forward_deactivation): Delete implementation.
-
-       * tests/glines.cmd: Update the expected output to match.
-
-2009-01-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_topic.c (do_settopic): Just before sending the topic out,
-       check to see if the user is join-delayed and should be shown.
-
-       * ircd/m_wallchops.c (m_wallchops): Allow this command to expose
-       join-delayed users.
-       (ms_wallchops): Likewise.
-
-       * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose
-       join-delayed users.
-       (ms_wallvoices): Likewise.
-
-2009-01-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
-
-2009-01-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/gline.c (count_users): Accept "flags" mask to limit count
-       to local users.
-       (gline_add): Pass the flags to count_users().
-
-2009-01-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/gline.h (gline_forward_deactivation): Declare.
-
-       * ircd/gline.c (count_users): Use ipmask-based checks too.
-       (gline_add): Require flags to have exactly one of the GLINE_GLOBAL
-       and GLINE_LOCAL bits set.
-       (gline_forward_deactivation): Implement new function.
-       (gline_find): Only require the GLINE_LOCAL flag to be set in the
-       gline structure; infer GLINE_GLOBAL when it is cleared.  (This
-       matches the value and usage of GLINE_MASK.)
-
-       * ircd/m_gline.c (ms_gline): Default lastmod to the known lastmod
-       time for GLINE_LOCAL_{DE,}ACTIVATE.
-       (mo_gline): Check that expiration times parse as expected.  Reject
-       "*" as a target for GLINE_LOCAL_{DE,}ACTIVATE.  Require reason and
-       expiration time for new G-lines.  Allow deactivation of an unknown
-       G-line without creating it ("so-and-so ... creating new G-line" is
-       a confusing message for a deactivation).
-
-       * tests/glines.cmd: New test script for G-line parsing tests.
-
-       * tests/ircd.conf: Enable CONFIG_OPERCMDS for glines.cmd.
-
-       * tests/ircd-2.conf: Likewise.
-
-       * tests/readme.txt: Add section on command syntax.
-
-       * tests/test-driver.pl: Report line numbers more clearly.
-       Fix (somewhat kludgily) the brokenness of consecutive "expect"
-       lines, as demonstrated by the numeric 219 and 281 expects in
-       glines.cmd.
-
-2008-11-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_kick.c (ms_kick): Properly handle crossing net rider and
-       normal KICKs (in the case where we get the normal kick first).
-
-2008-11-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (match): Fix an error in backtracking (apparently
-       exacerbated by escapes).
-
-       * ircd/test/ircd_match_t.c: Update headers and make sure we have a
-       mmap() anonymous request flag.
-       (test_match): New function.
-       (do_match_test): Use it instead of calling match() directly.
-
-2008-09-07  Perry Lorier <isomer@undernet.org>
-       
-       * ircd/m_kill.c: Remove the . from the end of the nickname in kill
-       messages to make cut and pasting easier.
-
-2008-03-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_string.c (ircd_aton_ip4): Reject strings with more
-       than 3 dots in them.
-
-       * ircd/test/ircd_in_addr_t.c (test_addrs): Update the expected
-       parsing for a bare IPv4 address to a IPv4-mapped address.
-       (test_masks): Add a test for the ircd_string.c change.
-
-2008-03-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/client.h: IsLocOp() now checks to see if its MyUser() as
-       well; IsAnOper() uses IsOper() and IsLocOp() instead of directly
-       testing the flags
-
-2008-03-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_bsd.c (init_connection_limits): Remove errant apostrophe.
-       Print text error message when unable to set max FDs.
-
-2008-03-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (set_user_mode): Check for end of argument list
-       when processing 'r' modes.
-
-2008-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-2008-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_burst.c (ms_burst): surround protocol_violation() and
-       break in braces to do what Jan Krueger was trying to do...
-
-2008-01-03  Jan Krueger  <jast@heapsort.de>
-
-       * ircd/m_burst.c: prevent leaking the next nick into the current one's
-       oplevel. Add protocol_violation when an invalid nick flag appears.
-
-2007-12-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: add MODE_REGISTERED, mapped to +R; arrange to
-       only have it settable or clearable by remote users or /opmode
-
-       * include/supported.h (FEATURESVALUES2): update to include 'R'
-       channel mode
-
-       * include/channel.h: add MODE_REGISTERED, update infochanmodes to
-       include 'R' channel mode
-
-2007-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (ms_gline): if we got an activate or deactivate
-       for a global G-line we never heard of, and we cannot create it
-       because no expire time was sent, manually propagate the G-line
-       instead of trying to call gline_add()
-
-       * ircd/gline.c (make_gline): never allow a G-line to be created
-       with a 0 expire time
-
-2007-12-03  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.12 release.
-
-2007-12-03  Michael Poole <mdpoole@troilus.org>
-
-       * doc/Makefile.in (DATAROOTDIR): Define.
-       (DATADIR): Likewise.
-       
-2007-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/version.c.SH: correct invalid syntax in shell case/esac
-
-       * ircd/ircd_lexer.l: provide an implementation of yywrap() so we
-       no longer have to link against -lfl
-
-       * configure.in: drop tests on LEXLIB and don't add it to the list
-       of libs
-
-       * ircd/gline.c (gline_add): apply too-many-users test to realname
-       G-lines *only* when the origin is my user (or a user, for
-       remote-local G-lines)
-
-2007-11-28  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for pre12 development.
-
-2007-11-28  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.11 release.
-
-2007-11-28  Michael Poole <mdpoole@troilus.org>
-
-       * tests/test-driver.pl (drv_default): Fix expect for numeric
-       responses that have non-trivial parameters.
-       (check_expect): Simplify (and fix) sender name check.
-
-       * tests/bug-1640796.cmd: Update expect NNN for new POE behavior
-       and part to not try to part the channel named "leaving".
-
-       * tests/bug-1674539.cmd: Update expect NNN for new POE behavior.
-
-       * tests/bug-1840011.cmd: New test script.
-       
-2007-11-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
-       (apply_ban): Only block narrower bans if the wider ban is active.
-
-2007-11-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_names.c (do_names): Don't try to re-initialize the start
-       of buf[] for each line.  It's done the first time around and that
-       can be reused safely.
-
-2007-11-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_stats.c (m_stats): Properly assign param before it is
-       used in the hunt_server_cmd() call.
-       
-2007-11-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (iauth_disconnect): Avoid destroying invalid
-       sockets.
-       (iauth_stderr_callback): Disconnect iauth child if stderr has
-       EOF (in case stdin notification is delayed somehow).
-       
-2007-11-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/umkpasswd.c (sum): Typecast buffer to avoid a warning about
-       the parameter type being passed to strlen().
-       
-2007-11-04  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Document /LIST M as controlled by list_chan.
-
-       * include/channel.h (LISTARG_SHOWMODES): Define.
-
-       * ircd/hash.c (list_next_channels): Handle it.
-
-       * ircd/m_list.c (show_usage): Document 'M' flag.
-       (param_parse): Recognize 'M' as LISTARGS_SHOWMODES.
-
-2007-11-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_list.c (param_parse): Reverse comparison direction when
-       converting from minutes to time_t, and which bound is set (so that
-       T<time_t works correctly).  Also switch is_time cases so that 'T'
-       and 'C' work as documented.  Remove a "break" after a "return".
-
-       (m_list): Remove a "break" after a "return".
-
-2007-10-29  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_lexer.l (YY_INPUT): Redefine to use fbgets().
-       (init_lexer): Return a value to indicate failure.  Use fbopen().
-       (deinit_lexer): New function.
-
-       * ircd/s_conf.c (read_configuration_file): Update extern
-       declarations.  Bail if init_lexer() fails.  Call deinit_lexer()
-       rather than directly munging yyin.
-
-2007-10-29  Michael Poole <mdpoole@troilus.org>
-
-       * include/gline.h: Delete declaration of gline_propagate().
-
-       * include/whocmds.h: Delete declaration of count_users().
-
-       * ircd/whocmds.c (count_users): Move to gline.c as a static.
-
-       * ircd/gline.c (whocmds.h): Remove #include.
-       (gliter): Document boolean trickiness.  Add missing trickiness
-       when gl_flags has bits set besides GLINE_ACTIVE.
-       (make_gline): Get rid of now-unused "after" variable and the
-       comments related to overlapping G-lines.
-       (gline_propagate): Make static.
-       (count_users): Move from whocmds.c as a static function.
-       (count_realnames): New function.
-       (gline_add): Require a force to hit lots of users with a realname
-       G-line.
-
-2007-09-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_gline.c (ms_gline): Remove dead branch when 4 < parc < 5.
-       (mo_gline): Consistently use the last argument as the reason.
-
-2007-09-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/Makefile.in: Fix dependencies for version.h generation.
-
-2007-08-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/send.c (sendwallto_group_butone): Move a feature_bool()
-       call out of a loop.  Convert HasFlag() uses to appropriate macros
-       from client.h.
-
-2007-08-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_string.c (ircd_aton_ip4): Allow a sequence of *.* at
-       the end of an IPv4 mask.
-       (ipmask_parse): Likewise for *:* at the end of IPv6 masks.
-
-       * ircd/test/ircd_in_addr_t.c (test_masks): Add tests for this.
-
-2007-08-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Update inv_clients and opers
-       counts.  Call client_set_privs() for local users.
-       (set_nick_name): Do not call client_set_privs() for remote users.
-       (set_user_mode): Move oper and invisible client checks inside the
-       IsRegistered() section.
-
-2007-08-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (DONE_*): Split key changes into _ADD and _DEL.
-       (mode_parse_key): Check both, to properly handle -k+k changes.
-       (mode_parse_upass): Likewise, for -U+U.
-       (mode_parse_apass): Liekwise, for -A+A (in case that ever happens).
-       (mode_parse): Update which "done" flag is checked during a wipeout.
-
-2007-08-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (whipser): CNOTICEs should not trigger away
-       messages, only CPRIVMSGs.
-
-2007-08-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_who.c (m_who): Reorder responses and change the
-       ERR_QUERYTOOLONG parameter to be consistent with m_whois().
-       
-2007-08-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Initialize umodev[] in a
-       C89-compatible way.  (gcc 4.1.2 warned about it.)
-
-2007-08-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_names.c (do_names): Add NAMES_DEL to comment.  Avoid use
-       of strcat().  Get rid of ms_names(), which was basically a copy of
-       m_names(), and merge the "showingdelayed" changes into m_names().
-       Replace the recursion with iteration.
-
-       * ircd/parse.c (msgtab): Use m_names(), not ms_names().
-
-2007-08-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (report_iauth_conf): Remove end-of-stats message;
-       m_stats() already does that.
-
-       (report_iauth_stats): Likewise.
-
-2007-08-08  Michael Poole <mdpoole@troilus.org>
-
-       * include/res.h (irc_in_addr_is_ipv4): Fix classification of
-       addresses like 0.0.0.0.
-
-2007-07-21  Perry Lorier <isomer@undernet.org>
-
-       * ircd/s_user.c: Move set_nick_name() to use set_user_mode(),
-       set_user_mode() now interprets +r usermodes properly (and ignores
-       them from non servers).  This fixes a problem where remote users
-       weren't being counted properly anymore.
-
-2007-07-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c: create abs_expire() macro to convert an expire
-       timestamp from the network into an absolute time, if needed;
-       rename expire_off to expire globally, since it now represents an
-       absolute expiration time; use expire - CurrentTime in gline
-       forwarding statements; in ms_gline(), use abs_expire() to convert
-       network expiration timestamp into absolute timestamp; in
-       mo_gline(), add CurrentTime to oper-provided expiration offset to
-       convert to absolute timestamp
-
-       * ircd/gline.c: assume expire and lifetime arguments to
-       gline_add() and gline_modify() are already absolute timestamps;
-       send lifetime parameter as an absolute timestamp, but leave expire
-       timestamp as relative as first part of a 2-phase update
-
-2007-07-12  Perry Lorier <isomer@undernet.org>
-       Reconsider how we manage modes before registration, to avoid stats
-       getting out of sync.
-
-       * ircd/s_user.c (set_user_mode): Add new parameter to set_user_mode to
-       ignore some modes.
-       (register_user): Use set_user_mode to parse default usermode for
-       users.
-
-       * ircd/m_user.c: Add extra parameter to set_user_mode call
-
-       * ircd/s_auth.c: Add extra parameter to set_user_mode call
-
-       * ircd/m_mode.c: Add extra parameter to set_user_mode call
-
-       * ircd/s_misc.c: Verify stats are consistant.
-
-       * include/s_user.h: Change prototype, add flag definitions.
-
-       * ircd/m_lusers.c (m_users): Assert that we're generating sane stats,
-       include "unknowns" in the total user connections to avoid negative
-       wrap arounds.
-
-2007-07-12  Perry Lorier <isomer@undernet.org>
-       
-       * ircd/m_user.c (m_luser): Fix broken RFC 2812 on connect user mode 
-       setting
-
-2007-05-28  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h (ERR_INPUTTOOLONG): New numeric.
-
-       * ircd/s_bsd.c (read_packet): Use it.
-
-       * ircd/s_err.c (replyTable): Give it a format string.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c (ms_burst): Do not let bursting servers join a
-       user to a channel more than once.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_features.c (feature_set): Report new value of feature
-       for /set.
-       (feature_reset): Likewise, for /reset.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c (netride_modes): Return -1 if someone tries to
-       remove modes in the burst.
-       (ms_burst): Check for, and handle, that protocol violation.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_privs.c (mo_privs): Report "no such nickname" for unknown
-       nicks in the list.  (Unfortunately, the nick is lost before ms_privs.)
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/listener.c (show_ports): Actually hide hidden ports from
-       clients that should not see them.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_err.c (ERR_DONTCHEAT): Add apparently missing %s.
-       
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_connect.c (mo_connect): Return an error to a locop who
-       tries to do a remote connect.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/parse.c (msgtab): Make SETTIME consistent with other
-       oper commands, in using m_not_oper for non-opered clients.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (pseudoblock): Forbid pseudo commands that
-       are not all alphabetic characters.
-
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in (maxcon): Check that maximum connections is
-       sufficiently large to avoid underflow in MAXCLIENTS.
-       
-2007-05-20  Michael Poole <mdpoole@troilus.org>
-
-       * include/supported.h (FEATURES2): Remove extra space.
-
-       * ircd/m_admin.c (m_admin): Only check server mask against our
-       name, so that it cannot leak information about other linked
-       servers.
-
-       * ircd/m_version.c (m_version): Likewise.
-       
-2007-04-15  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c: fix minor typo in code that forwards remote
-       local activations/deactivations: %c takes characters, not
-       pointers!
-       (mo_gline): fix similar typo in code forwarding remote local
-       G-lines by opers
-
-2007-04-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (iauth): Avoid problems related to MyFree's
-       multiple evaluation of its argument.
-
-2007-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (ms_gline): lastmod must be non-zero
-
-2007-04-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_conf.c (rehash): Restart resolver after reading the
-       config file; this un-breaks the resolver after /rehash if the
-       ircd.conf contains no "dns server = <ipstring>;" lines.
-
-2007-04-01  J. R. Lenz <ralf@starshadow.com>
-
-       * ircd/s_user.c (register_user): Check for host-hiding when fully
-       registering a user.  [Comment added by Entrope.]
-
-2007-03-31  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.iauth (IAuth M): Document new command.
-
-       * ircd/m_user.c (m_user): Recognize RFC 2812 mode request and a
-       saner usermode request.
-
-       * ircd/s_auth.c (iauth_cmd_usermode): New command.
-       (iauth_parse): Dispatch to it.
-
-       * ircd/s_user.c (set_user_mode): Only broadcast usermode changes
-       for registered clients.
-
-       * tools/iauth-test (127.0.1.3): Test the new M command.
-
-2007-03-31  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_mode.c (m_mode): Check and report target/source
-       violations before calling set_user_mode().
-       (ms_mode): Likewise.
-
-       * ircd/s_user.c (set_user_mode): Remove those checks from here.
-
-2007-03-31  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_events.h (struct Generators): Convert elements to
-       be struct GenHeader*.
-       (timer_next): Update to match.
-
-       * ircd/ircd_events.c (timer_enqueue): Update to match.
-       (signal_callback): Likewise.
-       (timer_init): Remove a typecast with something slightly safer.
-       (timer_run): Update to deal with new type of Generator.g_timer.
-       (signal_add): Likewise.
-       (socket_add): Likewise.
-       
-2007-03-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_asll.c (ms_asll): Count hits and report at the end, so
-       that a client is told whether any match (and has a hint that only
-       directly linked servers are checked).
-       (mo_asll): Likewise.
-
-2007-03-26  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_stats.c (m_stats): Move check for STAT_FLAG_LOCONLY (and
-       the assignment to "param") to the hunted server.
-
-2007-03-26  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (iauth_parse): Check for missing arguments when
-       parsing the iauth message.
-
-       * tests/bug-1685648.cmd: New file to test this.
-
-       * tests/iauth-test: New file to exercise the code path.
-
-       * tests/ircd.conf: Use the iauth-test helper program.
-
-2007-03-26  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_silence.c (forward_silences): Do not try twice to process
-       silences that were both added and deleted.
-
-2007-03-26  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (portblock): Restore old behavior for Port
-       blocks with no host listed.
-
-2007-03-26  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.iauth (iauth I): Fix example and syntax.
-
-2007-03-18  Michael Poole <mdpoole@troilus.org>
-
-       * acinclude.m4 (unet_NONBLOCKING): Properly quote function name.
-       (unet_SIGNALS): Likewise.
-       (unet_CHECK_TYPE_SIZES): Likewise.
-       (AC_LIBRARY_NET): Likewise.
-
-2007-03-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (mo_gline): add permissions checks I kept
-       forgetting to add--remote local modifications require
-       FEAT_CONFIG_OPERCMDS and PRIV_GLINE, local G-lines require
-       PRIV_LOCAL_GLINE, and global G-line changes (excluding local
-       activation/deactivation) require FEAT_CONFIG_OPERCMDS and
-       PRIV_GLINE
-
-2007-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (CRule): Document the support for multiple
-       server masks in a single CRule block.
-       (Port): Document the optional additional field for vhost entries.
-       Document the support for multiple vhost entries in a single Port
-       block.
-
-       * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
-       (USE_IPV6): Likewise.
-       (portblock): Iterate over hosts rather than using the single host.
-       (portitem): Add portvhostnumber alternative production.
-       (portnumber): Check port number here.  If valid, combine address
-       family and port number in "port" variable.  If a port-less item
-       exists in "hosts", set its port number.
-       (portvhost): Prepend mask to "hosts" list.
-       (portvhostnumber): New production.
-       (cruleblock): Iterate over hosts rather than using the single
-       host.
-       (cruleserver): Prepend server mask to "hosts" list.
-
-2007-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/listener.c (add_listener): Only try to create IPv6 sockets
-       for IPv6-compatible addresses; likewise for IPv4.
-
-2007-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Operator): Update documentation to mention
-       more than one host entry is allowed.
-       (Motd): Likewise.
-
-       * ircd/ircd_parser.y (hosts): New file-scope variable.
-       (free_slist): New helper function.
-       (operblock): Iterate over hosts instead of using the single host.
-       (operhost): Prepend the mask to hosts.
-       (motdblock): Iterate over hosts instead of using the single host.
-       (motdhost): Prepend the mask to hosts.
-       (motdfile): Fix possible leak of "pass" string (the filename).
-
-       * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
-       string; operblock (the only caller) frees it now.
-
-2007-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/list.c (free_link): Only decrement the in-use count of
-       links if we free a link.
-
-2007-03-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_err.c: update replies to handle new fields in
-       RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
-       G-line lifetime, and local activation status
-
-       * ircd/m_gline.c: update function documentation for ms_gline();
-       move test for server to before mask processing; don't look up
-       remote server too early; add code to process local activations and
-       deactivations early in ms_gline(); implement adding and destroying
-       local G-lines; don't try to locally activate or deactivate G-lines
-       that don't exist; add code to keep track of which fields were
-       available to ms_gline(); implement G-line modification and
-       creation; remove old ms_gline() code; convert
-       sendwallto_group_butone() calls to Debug() calls; reimplement
-       mo_gline() to take into account new syntax
-
-       * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
-       its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
-       G-line expires; add lifetime parameter to make_gline(); disable
-       overlapping G-line check; initialize gl_lifetime from lifetime
-       parameter; initialize gl_state to GLOCAL_GLOBAL; update
-       gline_propagate() to send lifetime parameter; add lifetime
-       parameter to gline_add(); remove some old code in gline_add();
-       figure out lifetime to set on new G-line; remove test for
-       make_gline() returning NULL, since it should never do so now; add
-       modify_gline() for modifying global G-lines; add gline_destroy()
-       for destroying local G-lines; update gline_burst() to send
-       lifetime parameter; update gline_resend() to send lifetime
-       parameter; update gline_list() to add lastmod, lifetime, and local
-       status indicators; update gline_stats() to send lastmod, lifetime,
-       and local status indicators; count BADCHANs in
-       gline_memory_count()
-
-       * include/gline.h: add enum GlineLocalState for keeping track of
-       local state changes to global G-lines; store state in struct
-       Gline; document enum GlineAction; add GLINE_EXPIRE,
-       GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
-       those fields to gline_modify(); add GLINE_UPDATE mask for checking
-       for the above flags; update GlineIsActive() to take into account
-       new gl_state field in struct Gline; add lifetime to gline_add();
-       add gline_modify() for modifying existing global G-lines, and
-       gline_destroy() for destroying local G-lines
-
-       * doc/readme.gline: update documentation to reflect changes made
-       to G-line command syntax
-
-2007-03-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
-       aborting on unrecognized arguments.  It isn't nice to core on
-       "umkpasswd --help"..
-
-2007-03-16  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Class): Move the "Recommended client classes"
-       comment to a better place (and stop recommending them).  Clarify
-       what maxlinks does.  Make it clear that Operator password entries
-       only support umkpasswd formats.
-       
-2007-03-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (parse_command_line): Emit a warning if using -x
-       when DEBUGMODE is disabled.
-
-2007-03-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
-       unlimited here, to match attach_conf()'s behavior.
-
-2007-03-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to
-       checking for a G-line matching a new user
-
-       * ircd/m_gline.c (ms_gline): rework ms_gline() to handle new
-       command syntax--although it can parse the new syntax, it doesn't
-       yet perform the actions demanded by that syntax
-
-       * ircd/ircd_features.c: trap-door feature FEAT_DISABLE_GLINES to
-       disable G-lines
-
-       * ircd/gline.c: create gliter() macro which performs an iteration
-       over all G-lines in a specified G-line list; initialize record
-       expire in make_gline() (to be redone); check FEAT_DISABLE_GLINES
-       in do_gline(); add and document what happens if GLINE_LOCAL is
-       passed to gline_find()
-
-       * include/ircd_features.h: trap-door feature FEAT_DISABLE_GLINES
-       to disable G-lines; intended use: accidental G-line of *@*
-
-       * include/gline.h: add rexpire (record expiration time) field to
-       gline description structure; add GlineAction enumeration (still
-       undocumented) to describe actions that may be performed on G-lines
-
-2007-03-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for .pre11 development.
-
-2007-03-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release.
-
-2007-03-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_privs.c (ms_privs): Use the correct source when
-       forwarding the PRIVS request.
-
-       * tests/bug-1674539.cmd: New file to test for this.
-
-       * tests/test-driver.pl: Recognize "oper" command from scripts.
-
-2007-03-05  Michael Poole <mdpoole@troilus.org>
-
-       * tests/ircd.conf: Make into a hub.
-
-       * tests/ircd-2.conf: New file, for a second server.
-
-       * tests/ircd-3.conf: Configuration for a third server.
-
-2007-03-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/whocmds.c (count_users): Fix length of ipbuf.  (Spotted by
-       paulr.)
-
-2007-02-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/os_generic.c (sockaddr_from_irc): Zero out socket address
-       before setting family, and regardless of whether we have an
-       irc_sockaddr template.
-
-2007-02-25  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Document new options for General block.
-       
-       * include/res.h (clear_nameservers): Declare new function.
-       (add_nameserver): Declare previously static function.
-
-       * include/s_bsd.h (VirtualHost_dns_v4): Declare.
-       (VirtualHost_dns_v6): Likewise.
-
-       * ircd/ircd_lexer.l (DNS): Recognize new token.
-
-       * ircd/ircd_parser.y (DNS): Declare new token.
-       (generalitem): Allow new items for dns vhost(s) and dns servers.
-       (generaldnsvhost): New production.
-       (generaldnsserver): New production.
-
-       * ircd/ircd_res.c (VirtualHost_dns_v4): New variable.
-       (VirtualHost_dns_v6): Likewise.
-       (clear_nameservers): New function.
-       (restart_resolver): Scan specified servers so we only try to open
-       DNS client sockets that we need.
-
-       * ircd/ircd_reslib.c (irc_nscount): Remove redundant initializer.
-       (irc_res_init): Only read the resolver config file if there are no
-       nameservers provided.
-       (add_nameserver): Make non-static.  Remove off-by-one check
-       against IRCD_MAXNS.
-
-       * ircd/s_conf.c (read_configuration_file): Clear nameserver list
-       before reading the config file.
-
-2007-01-27  Jeannot Langlois <jeannot12@linuxmail.org>
-
-       * doc/example.conf (Features): Illustrate URLREG feature.
-
-       * doc/readme.features (URLREG): Define new feature.
-
-       * include/ircd_features.h (Feature): Add FEAT_URLREG.
-
-       * ircd/ircd_features.c (features): Set the default value.
-
-       * ircd/m_join.c (m_join): For ERR_NEEDREGGEDNICK, include the
-       URLREG value as a format argument.
-
-       * ircd/s_err.c (replyTable): Update ERR_NEEDREGGEDNICK
-       appropriately.
-
-2007-02-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_reply.c (protocol_violation): Avoid reusing the
-       va_list in vd.
-
-       * ircd/send.c (sendcmdto_channel_butone): Warn against using %v in
-       the pattern -- that will cause incorrect behavior.
-       (sendwallto_group_butone): Likewise.
-       (sendcmdto_match_butone): Likewise.
-
-2007-01-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_delayed_joins): New function.
-       (modebuf_flush): Handle +D-D and related cases.
-       (mode_parse_mode): It is too early to handle +D here, so don't.
-       (CheckDelayedJoins): Use find_delayed_joins().
-
-2007-01-22  Michael Poole <mdpoole@troilus.org>
-
-       * tests: New subdirectory for test framework.
-
-       * tests/ircd.conf: Helper file for testing.
-
-       * tests/readme.txt: Simple documentation of test framework.
-
-       * tests/test-driver.pl: Testing script interpreter.
-
-2007-01-22  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Fix potentially confusing comment about ip
-       mask syntax.
-
-2007-01-22  Michael Poole <mdpoole@troilus.org>
-
-       * INSTALL: Mention source directory naming; update the reference
-       to the config file converter (hah); update CVS directions.
-
-2007-01-22  Michael Poole <mdpoole@troilus.org>
-
-       * include/supported.h: Move parameters from FEATURES1 to FEATURES2
-       so that neither ISUPPORT line has more than 15 parameters.  (Some
-       clients are picky about this.)
-
-2007-01-21  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for pre10 development.
-
-2007-01-20  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.09 release.
-
-2007-01-15  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.iauth (U): Document extended fields.
-
-       * include/s_auth.h (auth_set_user): Declare new parameters.
-
-       * ircd/m_user.c (m_user): Pass new parameters.
-
-       * ircd/s_auth.c (auth_set_user): Accept new parameters.  When
-       using Undernet extensions, forward them to the iauth process.
-
-2007-01-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/os_generic.c (os_recv_nonb): Set errno to zero when
-       returning IO_FAILURE due to a closed connection.
-
-2006-12-31  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_mode.c (ms_mode): Bounce modes from deopped members.
-
-2006-12-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_string.c (ircd_strncpy): Make sure the output buffer
-       is terminated.  We don't rely on the arguable strncpy semantics.
-
-2006-12-30  Michael Poole <mdpoole@troilus.org>
-
-       * include/struct.h (struct Server): Add asll_last field.
-
-       * ircd/ircd.c (check_pings): Add check for asll_last.  When a
-       server doesn't ping, use an old-style ping rather than AsLL ping.
-
-       * ircd/m_pong.c (ms_pong): Use ClearPingSent() rather than
-       ClrFlag().  Set asll_last to current time.
-       (mr_pong): Use ClearPingSent() rather than ClrFlag().
-       (m_pong): Likewise.
-
-       * ircd/s_bsd.c (completed_connection): Likewise.
-       (read_packet): Likewise.  Update cli_lasttime for servers in
-       addition to clients.
-
-2006-01-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c (ms_burst): Properly handle member mode :ov.
-
-2006-01-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_create.c (ms_create): Add channel name to the protocol
-       violation notice for a redundant CREATE.
-
-2006-01-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (set_nick_name): Use user's account name rather
-       than the account parameter, in case the parameter contains a colon
-       (i.e. "account:1234" format).
-
-2006-01-13  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.who: Document 'd' user-matching flag.
-
-2006-12-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_jupe.c (mo_jupe): Fix which privilege is tested.
-
-2006-12-07  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/listener.c (show_ports): Update to show '4' and/or '6' as
-       flags in response, with a '-' suffix if either one fails to open.
-
-2006-12-07  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Port): Document the method to select IPv4 or
-       IPv6 restriction for a port.
-
-       * include/listener.h (LISTEN_IPV4): New listener flag.
-       (LISTEN_IPV6): New listener flag.
-       (struct Listener): Split 'fd' and 'socket' fields into two each.
-
-       * ircd/ircd_lexer.l (gb): Move to be alphabetical.
-       (gigabytes): Likewise.
-       (ipv4): New token.
-       (ipv6): Likewise.
-       Adapted word matcher to handle digits in the non-leading character.
-
-       * ircd/ircd_parser.y (USE_IPV4): New macro.
-       (USE_IPV6): Likewise.
-       (TOK_IPV4): New token.
-       (TOK_IPV6): Likewise.
-       (address_family): New non-terminal rule.
-       (portblock): Default to listening on both IPv4 and IPv6.
-       (portnumber): Add address_family element and use it.
-       (portvhost): Likewise.
-
-       * ircd/listener.c (make_listener): Adjust for newly split fields
-       in struct Listener.
-       (inetport): Likewise.  Adjust return value as well.
-       (add_listener): Update to handle both IPv4 and IPV6 support.
-       (close_listener): Likewise.
-       (accept_connection): Because each listener has two sockets, it is
-       no longer safe to free the listener when one is destroyed -- so
-       don't.  Also accept() on the file descriptor from the incoming
-       event rather than on a fixed fd.
-
-       * ircd/os_generic.c (os_socket): For platforms with IPV6_V6ONLY,
-       enable it for AF_INET6 sockets rather than disabling it for
-       unspecified sockets.
-
-2006-12-06  Michael Poole <mdpoole@troilus.org>
-
-       * include/listener.h (enum ListenerFlag): New enum.
-       (struct Listener): Convert "active", "hidden" and "server" to a
-       flagset.
-       (add_listener): Convert "is_server" and "is_hidden" arguments to
-       use the same flagset structure.
-
-       * ircd/ircd_parser.y (listen_flags): New variable.
-       (general_vhost): Consolidate references to $3 to use a variable.
-       (portblock): Use listen_flags instead of tconn and tping.
-       (portserver): Likewise.
-       (porthidden): Likewise.
-
-       * ircd/listener.c (show_ports): Use new field in Listener.
-       (set_listener_options): New function.
-       (inetport): Use it.
-       (add_listener): Use new field in Listener.  When reusing an extant
-       listener, call set_listener_options() so the options are updated.
-       (mark_listeners_closing): Use new field in Listener.
-       (close_listeners): Use new helper macro to check activeness.
-       (release_listener): Likewise.
-       (accept_connection): Likewise.
-
-       * ircd/s_bsd.c (report_error): Use the standard snotice rate
-       limiting here.
-       (add_connection): Use new helper macro to check serverness.
-
-2006-11-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_nick.c (m_nick): If we get NICK on a server port, tell
-       the client to go away.
-
-2006-11-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/version.c.SH: Skip version.c.
-
-2006-11-04  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.who: Document new 'o' field flag.
-
-       * include/whocmds.h (WHO_FIELD_OPL): New flag.
-
-       * ircd/channel.c (send_channel_modes): Rename feat_oplevels to
-       send_oplevels and determine it automatically.
-       (modebuf_flush_int): Pass along oplevel if it's less than
-       MAXOPLEVEL.
-       (mode_process_clients): Allow oplevels to be inherited for -A
-       channels.  Inherit the opper's oplevel if >= MAXOPLEVEL.
-
-       * ircd/m_who.c (m_who): Recognize 'o' flag as WHO_FIELD_OPL.
-
-       * ircd/whocmds.c (do_who): Send oplevel for WHO_FIELD_OPL, but
-       only show up to the requester's own oplevel.
-
-2006-10-21  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/convert-conf.c (finish_connects): Fix error display for
-       missing C: lines when an H: line is present.
-
-2006-08-02  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (connectblock): Check for too-long password.
-       (operblock): Comment why we don't check password length.  Move
-       PRIV_PROPAGATE test earlier (so a buggy edit, rehash, /oper will
-       not crash).
-       (clientblock): Check for too-long password.
-
-2006-08-02  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (struct Ban): Fix typo in doxygen comment.
-
-2006-07-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for pre09.
-
-2006-07-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.08 release.
-
-2006-07-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (auth_freelist): New static variable.
-       (check_auth_finished): Move call to destroy_auth_request().
-       (destroy_auth_request): Prepend auth request to freelist.
-       (start_auth): Use struct from auth freelist if possible.
-
-2006-06-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (iauth*): Avoid leaking program name string.
-
-2006-06-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (check_auth_finished): Free auth structure when
-       done with it.
-       (sendto_iauth): Free message buffer when done with it.
-
-2006-06-26  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for pre08.
-
-2006-06-26  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHEVEL): Bump for release.
-
-2006-06-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe.
-
-2006-06-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local)
-       channels for locops as well as global opers.
-
-2006-06-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_gline.c (ms_gline): Use final argument as G-line reason.
-
-2006-06-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/gline.c (gline_stats): Show activation state in /stats g.
-
-       * ircd/s_err.c (RPL_STATSGLINE): Update format string to match.
-
-2006-06-07  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Document the list_chan privilege.
-
-       * ircd/ircd_lexer.l: Recognize the token.
-
-       * ircd/ircd_parser.y: Treat it appropriately.
-
-2006-06-07  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (auth_ping_timeout): If the client never had an
-       auth request, kill them on ping timeout.
-
-2006-06-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (auth_timeout_callback): Clear AR_DNS_PENDING when
-       destroying the lookup and reporting DNS failure.
-
-2006-05-28  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.features (MAXBANS): Update default value.
-       (NICKLEN): Likewise.
-       (HIS_STATS_*): Sort alphabetically.
-
-       * ircd/m_stats.c (m_stats): Describe the intention so that there
-       are not further questions about local opers and remote /stats.
-       Fix places that use cptr instead of sptr.
-
-2006-05-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (auth_dns_callback): Be more careful about
-       handling failed DNS lookups.  Use a more standard function to
-       disconnect clients for IP mismatches.
-       (start_auth): Use a more standard function to disconnect clients
-       for peer or local socket address lookup failures.
-
-2006-05-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (auth_ping_timeout): Fix off-by-one error.
-
-2006-05-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/Makefile.in (install-*): Install convert-conf.  Install
-       umkpasswd when ${BINDIR}/ircd is not a symlink.
-
-2006-05-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (check_auth_finished): Only check passwords on
-       user ports.
-
-2006-05-14  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Connect): Mention the vhost option.
-
-2006-05-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here...
-
-       * ircd/s_auth.c (auth_set_pong): ... to here.
-
-2006-05-07  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_auth.h (auth_ping_timeout): Declare new function.
-
-       * ircd/ircd.c (check_pings): Move auth timeout logic into that new
-       function.
-
-       * ircd/s_auth.c (HeaderMessages): Insert new message.
-       (auth_ping_timeout): Define new function.
-       (auth_timeout_callback): Remove "hurry" notification from here.
-
-2006-05-07  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_auth.h (destroy_auth_request): Remove second argument.
-
-       * ircd/list.c (free_client): Update to match.
-
-       * ircd/s_auth.c (check_auth_finished): Remove second argument and
-       update call to destroy_auth_request().
-       (send_auth_query): Update call to destroy_auth_request().
-       (destroy_auth_request): Remove second argument.
-       (auth_timeout_callback): Send timeout failure messages here
-       instead.  Update call to check_auth_finished().
-       (auth_dns_callback): Update call to check_auth_finished().
-       (start_auth): Likewise.
-       (auth_set_pong): Likewise.
-       (auth_set_user): Likewise.
-       (auth_set_nick): Likewise.
-       (auth_cap_done): Likewise.
-       (iauth_parse): Likewise.
-
-2006-05-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED.
-       (check_auth_finished): Move password check out of iauth-only part
-       and use AR_PASSWORD_CHECKED to make sure we only check it once.
-
-2006-04-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field.
-       (check_auth_finished): Fix timeout update.
-       (destroy_auth_request): Only delete timer if it is active.
-       (auth_timeout_callback): Do not disconnect client on timeout, so
-       that the user can finish sending NICK/USER or doing iauth.
-
-2006-04-28  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Admin): Fix documentation of which line can be
-       listed twice.
-
-       * ircd/ircd_parser.y (adminblock): Allow admin information to be
-       changed via /rehash.
-
-2006-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (start_auth): Add client to list after getting
-       endpoint names (which can apparently fail for some reason).
-
-2006-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_snprintf.c: Use SIZEOF_LONG_LONG (which is 0 for
-       unknown types) instead of the never-defined HAVE_LONG_LONG.
-
-2006-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (IAuth): Update to reflect new syntax.
-
-       * doc/readme.who: Fix typo in metasyntactic variable name.
-
-2006-04-04  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h: Update for pre07.
-
-2006-04-04  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h: Update for u2.10.12.06 release.
-
-2006-04-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (bmatch): If ipmask_check() indicates old_ban is
-       a CIDR-wise superset of new_ban, check whether new_ban is a
-       text-wise superset of old_ban.
-
-2006-03-31  Michael Poole <mdpoole@troilus.org>
-
-       * tools/iauth-test (send_server_notice): Use a colon prefix before
-       the message.
-       (%handlers): Likewise.
-
-2006-03-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_signal.c (alloc_crec): Zero-fill returned
-       ChildRecord structs.
-
-       * ircd/jupe.c (make_jupe): Zero-fill newly allocated jupes.
-
-       * ircd/list.c (make_link): Zero-fill returned SLink structs.
-
-       * ircd/whowas.c (whowas_init): Delete function.
-       (whowas_alloc): Rewrite to follow the more common pattern and to
-       zero-fill returned Whowas structs.
-
-2006-03-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_auth.c: rewrite iauth_read(), spliting out the parsing
-       into iauth_parse(); change parsing to separate parameters and deal
-       with the ':' sentinel; send sentinel in multi-word parameters; fix
-       iauth_cmd_config() and iauth_cmd_stats() to clear the 'next'
-       pointer in the SLink structure; fix buffering in
-       iauth_read_stderr(); remove carriage returns from STDERR contents
-       as well
-
-       * doc/readme.iauth: fix a minor typo in comments for 'd' and 'N'
-       server messages
-
-2006-03-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/convert-conf.c (finish_features): Do not emit a feature
-       setting that has no values.
-
-2006-03-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_key): Outside of burst, allow
-       overwriting of keys by a service when a key is already set.
-       (mode_parse_upass): Likewise.  Instead, ignore new Upass during
-       burst if it is lexicographically greater than the current one.
-       (mode_parse_apas): Likewise for Apass, but only allow overwiting
-       an existing Apass in a BURST.
-
-2006-03-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (modebuf_flush_int): Fix typo about changing
-       oplevels.  Send correct channel TS for modes to other servers.
-       (mode_parse): Accept timestamps on modes from users on other
-       servers.  If the received timestamp is too large, handle that.
-
-       * ircd/m_create.c (ms_create): Mention the CREATE-during-burst
-       case and handle it.
-
-       * ircd/m_mode.c (ms_mode): Put back HACK(3) when oplevels are off.
-
-2006-03-14  Wouter Coekarts <wouter@coekaerts.be>
-
-       * ircd/s_err.c (RPL_STATSILINE): Add two %s to the first field.
-
-       * ircd/s_stats.c (stats_configured_links): Use the new %s's to
-       show username masks for I: lines that have them.
-       (stats_access): Likewise.
-
-2006-03-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/msgq.c (msgq_vmake): Try to clear msgbuf freelist after
-       killing clients, so that that case does not lead immediately to a
-       server panic.
-       (msgq_count_memory): Report total buffer text used as a way to
-       determine whether the BUFFERPOOL value is marginal.
-
-2006-03-02  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_osdep.h (os_socket): New parameter.
-
-       * include/res.h (irc_in_addr_unspec): New macro.
-
-       * ircd/ircd_res.c (restart_resolver): Set family appropriately.
-
-       * ircd/listener.c (inetport): Let os_ library pick socket family.
-
-       * ircd/os_generic.c: Do not #define _XOPEN_SOURCE on FreeBSD 5+.
-       (sockaddr_from_irc): New parameter.
-       (os_sendto_nonb): Use new parameter to sockaddr_from_irc().
-       (os_socket): New parameter.  Try to turn off IPV6_V6ONLY on
-       sockets that listen on unspecified addresses.
-       (os_connect_nonb): Use new parameter to sockaddr_from_irc().
-
-       * ircd/s_auth.c (start_auth_query): Let os_ library pick socket
-       family.
-
-       * ircd/s_bsd.c (connect_inet): If we pick the IPv4 vhost, specify
-       family for os_socket() as AF_INET.
-
-       * ircd/uping.c (uping_init): Set socket family appropriately.
-       (uping_server): Likewise.
-       (uping_end): Fix format strings (the ms_* fields are int, not
-       long, and this causes bad results on LP64 machines).
-
-2006-02-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_silence.c (apply_silence): Refuse to apply silences for
-       local users that are broader than an IPv4 /16 or an IPv6 /32,
-       unless they match every host indiscriminately.
-
-2006-02-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (check_auth_finished): Give non-iauth clients
-       connection classes, too.
-       (auth_close_unused): Remove redundant check for iauth != NULL.
-       (report_iauth_conf): Check iauth != NULL before deref'ing it.
-       (report_iauth_stats): Likewise.
-
-2006-02-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_auth.c: fix macros to not dereference a NULL pointer when
-       iauth is not connected
-
-2006-02-17  Alex Badea <vamposdecampos@gmail.com>
-
-       * ircd/s_auth.c (auth_set_username): Check if the last
-       character of the username is alphanumeric, instead of the
-       '\0' terminator.
-       
-       * ircd/m_pong.c (mr_pong): Parse cookie with strtoul(),
-       since atol() causes signedness problems.
-
-2006-02-15  Michael Poole <mdpoole@troilus.org>
-
-       * include/res.h (NXDOMAIN): Define.
-
-       * ircd/ircd_res.c (res_readreply): Treat NXDOMAIN just like
-       SERVFAIL.  Patch courtesy of Dianora.
-
-       * tools/iauth-test (Carp): This doesn't actually use Carp.
-
-2006-02-15  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Include new HIS_STATS_IAUTH feature.
-
-       * doc/readme.features: Document the feature.
-
-       * doc/readme.iauth: Rewrite to reflect the new progressive iauth
-       protocol, based on IRCnet's iauth.
-
-       * doc/snomask.html: Document SNO_AUTH server notice flag.
-
-       * include/client.h (FLAG_IAUTHED): Delete.
-       (con_cookie): Delete.
-       (con_unreg): Delete.
-       (con_auth): Make comment capitalization consistent.
-       (con_iauth): Delete.
-       (CLIREG_*): Delete.
-       (cli_unreg): Delete.
-       (cli_cookie): Delete.
-       (cli_iauth): Delete.
-       (con_unreg): Delete.
-       (con_iauth): Delete.
-       (IsIAuthed): Delete.
-       (SetIAuthed): Delete.
-       (SNO_AUTH): New server notice flag.
-       (SNO_ALL): Update to include SNO_AUTH.
-       (SNO_OPER): Update to include SNO_AUTH.
-
-       * include/ircd_auth.h: Delete file.
-
-       * include/ircd_features.h (HIS_STATS_IAUTH): New feature.
-
-       * include/s_auth.h: Rewrite almost everything for new auth system.
-
-       * include/s_user.h (COOKIE_VERIFIED): Delete.
-       (register_user): Remove redundant nick and username arguments.
-
-       * ircd/ircd_auth.c: Delete file.
-
-       * ircd/ircd_features.c (HIS_STATS_IAUTH): New feature.
-
-       * ircd/ircd_lexer.l (PROGRAM): New token in grammar.
-
-       * ircd/ircd_log.c (masks): Add SNO_AUTH flag.
-
-       * ircd/ircd_parser.y (stringlist): Simplify production.
-       (iauthblock): Revise to only include a PROGRAM production.
-
-       * ircd/list.c (make_client): Do not assign to deleted field.
-
-       * ircd/m_cap.c (cap_ls): Use auth_cap_start() instead of
-       cli_unreg().
-       (cap_req): Likewise.
-       (cap_end): Use auth_cap_done() instead of cli_unreg().
-
-       * ircd/m_pass.c (mr_pass): Merge arguments to PASS.  Use
-       auth_set_password() to notify iauth of password.
-
-       * ircd/m_pong.c (mr_pong): Use auth_set_pong() instead of
-       cli_cookie() and cli_unreg().
-
-       * ircd/m_user.c (m_user): Use auth_set_user() instead of
-       cli_unreg(), etc.
-
-       * ircd/s_auth.c: Rewrite most of the infrastructure for the new
-       auth system.
-
-       * ircd/s_conf.c (rehash): Call auth_*() instead of iauth_*().
-
-       * ircd/s_misc.c (exit_one_client): Do not use iauth_exit_client().
-       (exit_client): Use auth_send_exit() instead.
-
-       * ircd/s_stats.c (statsinfo): Include iauth and iauthconf.
-
-       * ircd/s_user.c (clean_user_id): Delete (moved into s_auth.c).
-       (register_user): Remove nick and username parameters; move conf
-       interactions and username validation to s_auth.c.
-       (set_nick_name): Use auth_set_nick() instead of cli_cookie(),
-       cli_unreg(), etc.
-
-       * tools/iauth-test: Implementation of iauth for testing purposes.
-
-2006-02-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_snprintf.c (doprintf): Fix typecast for %hu.
-
-2006-02-15  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_signal.h (SigChldCallBack): New typedef.
-       (register_child): Declare.
-       (unregister_child): Declare.
-       (reap_children): Declare.
-
-       * ircd/ircd_signal.c (alloc_crec): New function.
-       (release_crec): New function.
-       (register_child): New function.
-       (do_unregister_child): New function.
-       (unregister_child): New function.
-       (sigchld_callback): New function.
-       (setup_signals): Hook SIGCHLD.
-       (reap_children): New function.
-
-       * ircd/ircd.c (server_restart): Call reap_children() on exit.
-
-2006-02-15  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_osdep.h (os_socketpair): Declare.
-
-       * ircd/os_generic.c (is_blocked): New local function.
-       (os_*): Use is_blocked() instead of cut-and-pasted code.
-       (os_socketpair): New function.
-
-2006-02-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (match): Fix backtracking bug after an escape
-       (reported by Michael, I think).
-
-2006-02-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (try_connections): Scan all Connect blocks for the
-       earliest hold time (suggested by Michael).
-
-2006-02-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (m_join): Remove #if 0 code and update comment.
-
-       * ircd/m_mode.c (ms_mode): Remove self-op support.
-
-2006-01-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update for 2.10.12.pre06.
-
-2006-01-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update for release.
-
-2006-01-11  Michael Poole <mdpoole@troilus.org>
-
-       * doc/Makefile.in: Make install target VPATH-safe.
-
-       * doc/example.conf: Comment out example IAuth block.
-
-       * ircd/m_burst.c (ms_burst): Change isdigit() to IsDigit(),
-       silencing a warning on Solaris.
-
-2006-01-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Do not send +r flag to user when
-       they first connect.
-
-2006-01-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_features.h (FEAT_ZANNELS): Actually, put it back.
-
-       * ircd/ircd_features.c (FEAT_ZANNELS): Likewise.
-
-2006-01-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_process_clients): Do not reveal zombies who
-       are being opped (MODE and KICK crossed).  Reported by coekie.
-
-2006-01-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (ms_join): Wipe out all modes (not just chanops)
-       when replacing a resurrected channel.
-
-       * ircd/convert-conf.c (dupstring): Fix probable off-by-one size
-       passed to memcpy().
-
-2006-01-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (modebuf_flush_int): Also send timestamp when &me
-       originates the MODE going to other servers (currently just when a
-       client joins a zannel or uses an A/U password).
-
-2006-01-02  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_features.h (FEAT_ZANNELS): Remove.
-
-       * ircd/channel.c (sub1_from_channel): Remove reference to
-       FEAT_ZANNELS.
-
-       * ircd/ircd_features.c (FEAT_ZANNELS): Remove.
-
-       * ircd/m_destruct.c (ms_destruct): Do not try to remove a destruct
-       event for channels that do not have them (created by BURSTing a
-       zannel but not yet destroyed by EOB).
-
-2005-12-31  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_whowas.c (m_whowas): Mention that IP is untracked in WHOWAS.
-       Spotted by Progs.
-
-2005-12-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_topic.c: Remove block comment about sptr, cptr, etc.
-       (do_settopic): Add doxygen comment. Move permissions checks..
-       (m_topic): .. to here.  Update doxygen comment.
-       (ms_topic): Update doxygen comment here too.
-
-2005-12-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_conf.c (conf_debug_iline): Fix display of null passwords.
-
-2005-12-30  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Mention removal of HIS_STATS_h.
-
-       * ircd/convert-conf.c (removed_features): Add AUTOHIDE,
-       HIS_DESYNCS and TIMESEC.
-       (get_connect): Do not downcase connection name on insert.
-       (do_feature): Do not upcase feature name (cf HIS_STATS_k).
-
-2005-12-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/engine_devpoll.c (engine_loop): Remove bogus assert.
-
-2005-12-31  Perry Lorier <isomer@undernet.org>
-
-       * convert-conf.c: Skip with a warning, H:'s that are missing a
-       corresponding C:
-
-2005-12-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd-patch: Do not use [ for test, and do not use $[] for expr.
-       (Solaris /bin/sh, among others, have problems with those.)
-
-2005-12-23  Michael Poole <mdpoole@troilus.org>
-
-       * config.guess: Update to current version.
-
-       * config.sub: Likewise.
-
-2005-12-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_join.c: get rid of MAGIC_REMOTE_JOIN_TS; perform the
-       deop-other-users loop only when creation < channel timestamp or
-       when the channel in question happens to be a zannel; actually deop
-       users, don't just say we are and not do it
-
-       * ircd/m_create.c (ms_create): get rid of MAGIC_REMOTE_JOIN_TS
-
-       * include/channel.h: get rid of MAGIC_REMOTE_JOIN_TS
-
-2005-12-13  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Define a macro when compiling on Solaris.
-
-       * ircd/ircd_crypt_native.c (_XOPEN_SOURCE): Turn down to 500 so
-       that Solaris doesn't complain that SUSv3 requires C99.
-
-       * ircd/os_generic.c (_XOPEN_SOURCE): Likewise, but leave it at 600
-       on non-Solaris platforms so that IPv6 stays supported.
-
-2005-12-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (ms_join): Prevent net rides allowed by moving the
-       channel timestamp backwards in time without deopping current ops.
-       (Reported by Wouter Coekaerts.)
-
-2005-12-13  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Remove extraneous "Other" Client block.
-
-       * ircd/convert-conf.c (finish_operators): Fix operator precedence
-       bug.
-
-       * ircd/ircd_parser.y (clientclass): Fix typo in error message.
-
-2005-11-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/Makefile.in (version.c): version.c also depends on
-       version.h, patchlevel.h and source files.
-
-2005-11-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (m_join): Count a join to a new channel as a
-       target change.
-
-2005-11-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_stats.c (stats_servers_verbose): Display IPv6 support
-       flag with the other per-server flags.
-
-2005-11-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/convert-conf.c (finish_features): Only emit "Features {"
-       once in the converted configuration file.  Display the original
-       input line for each feature line in the output.
-
-2005-11-18  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update for pre05.
-
-2005-11-18  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update for release.
-
-2005-11-15  Brian Cline <brian.cline@gmail.com>
-
-       * doc/example.conf: Add new line for HIS_MODEWHO feature.
-
-       * doc/readme.features: Document new HIS_MODEWHO feature.
-
-       * include/ircd_features.h: Declare new HIS_MODEWHO feature.
-
-       * ircd/channel.c (modebuf_flush_int): Use new HIS_MODEWHO feature
-       to show or hide the server name that performed a channel mode change.
-
-       * ircd/ircd_features.c: Place new HIS_MODEWHO setting in the feature
-       table and give it a default value of true, which will hide the
-       originating server name.
-
-2005-11-16  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Features): Mention ZANNELS default.
-
-       * doc/readme.features: Document OPLEVELS and ZANNELS.
-
-2005-11-17  Carlo Wood <run@alinoe.com>
-
-       * include/ircd_features.h (Feature): Add ZANNELS.
-       * ircd/ircd_features.c (FeatureDesc): idem.
-       * ircd/channel.c (sub1_from_channel): Don't keep zannels
-       around when ZANNELS and OPLEVELS are FALSE.
-       * ircd/m_destruct.c (ms_destruct): Use JOIN instead of
-       CREATE to recreate a non-empty channel after DESTRUCT.
-
-2005-11-16  Michael Poole <mdpoole@troilus.org>
-
-       * tools/convert-conf.py: Delete obsolete code.
-
-2005-11-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_names.c (m_names): Fix handling of NAMES #a,#b.
-       (ms_names): Likewise.
-
-2005-11-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_nick.c (ms_nick): Clarify message when an older nick
-       overrules a newer nick.  When killing a client for a nick
-       collision, make sure to use the numnick as the first argument.
-
-2005-11-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (member_can_send_to_channel): After prodding from
-       reed, always allow remote users to send to a channel.  He also
-       pointed out a bug in the first version of this change.
-
-2005-11-14  Carlo Wood <run@alinoe.com>
-
-       * ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
-       (modebuf_mode_uint): Make sure the limit is included as an
-       argument when necessary (and only when necessary) in a bounce.
-
-       * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead
-       of burst to resynchronize a non-empty destructed channel.
-
-2005-11-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_no_nickchange_channel): Disallow nick
-       changes by voiceless no-account users on a +r channel.
-
-2005-11-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
-       server is kicking him.
-
-2005-11-13  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for pre04.
-
-2005-11-13  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update for release.
-
-2005-11-13  Carlo Wood <run@alinoe.com>
-
-       * ircd/m_create (ms_create): Accept CREATE for zannels.
-
-       * ircd/m_join.c (m_join): MODE +o for a zannel must come from the
-       server for compatibility with older versions.
-
-2005-11-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Bump for pre03.
-
-2005-11-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update for release.
-
-2005-11-11  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A
-       and AAAA lookups as well as PTR.
-
-2005-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_client): Allow clients to specify
-       oplevel in MODE #channel +o.
-       (mode_process_clients): Allow oplevel 999 to deop another 999.
-
-       * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999.
-
-2005-10-31  Michael Poole <mdpoole@troilus.org>
-       (Based on a patch by Romain Bignon <progs@ir3.org>)
-
-       * ircd/channel.c: Some modes (currently only WASDELJOINS) should
-       not be propagated to remote servers.
-
-2005-10-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
-       inside an if (MyUser(state->sptr)) test.
-
-       * ircd/m_join.c (m_join): Reorganize zannel join check to match
-       surrounding code.
-
-2005-10-30  Carlo Wood <run@alinoe.com>
-
-       * ircd/channel.c (sub1_from_channel): Delay destruction for -A
-       channels.  They become zombie channels (zannels).
-       (mode_parse_upass): Add duration to ERR_NOMANAGER message.
-       (mode_parse_apass): Likewise.  Unconditionally set the member who
-       sets Apass as oplevel 0.  Clear Upass when clearing Apass.
-       (joinbuf_join): Remove code to pass oplevel in JOIN.
-
-       * ircd/m_burst.c (ms_burst): Handle zannels.
-
-       * ircd/m_join.c (m_join): Handle a join to a zannel.  If the user
-       is joining with ops and/or an oplevel, send those.
-       (ms_join): Stop trying to parse oplevels in JOIN.  Copy join
-       timestamp when a user joins a zannel.
-
-       * ircd/m_mode.c (ms_mode): Never generate HACK3.  Silently allow a
-       user to op himself if he is the only one in a channel.
-
-       * ircd/s_err.c (ERR_UPASSSET): Remove extra space.
-       (ERR_UPASSNOTSET): Likewise.
-       (ERR_NOMANAGER): Add field for channel lifetime.
-
-2005-10-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real
-       channel key is OVERRIDE.  (Reworked patch from a1kmm.)
-
-2005-10-30  Michael Poole <mdpoole@troilus.org>
-
-       * .cvsignore: Add autom4te.cache.
-
-       * ircd/.cvsignore: Add convert-conf.
-
-       * ircd/test/.cvsignore: Add ircd_match_t.
-
-       * patches/.cvsignore: Add marks.
-
-2005-10-28  Alex Badea  <vamposdecampos@gmail.com>
-
-       * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538)
-
-2005-10-17  Diane Bruce  <db@db.net>
-
-       * ircd/ircd_res.c: Don't send retries if the client did
-       not resolve (SERVFAIL); this fixes a bug causing a flurry
-       of retries in this case
-
-2005-10-14  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update to pre02.
-
-2005-10-14  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.cvs: Document tag name consistently with the release
-       name.
-
-       * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release
-       of 2.10.12.01.
-
-2005-10-12  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Update documentation to match this change.
-
-       * ircd/client.c (client_set_privs): Make default global oper
-       privileges match what was in 2.10.11.
-
-2005-10-11  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE
-       to mitigate bug #1313429.
-
-2005-10-12  Perry Lorier <isomer@undernet.org>
-
-       * include/s_stats.h: Add new "Local" only flag to /stats.
-
-       * ircd/m_stats.c: Consult it.
-
-       * ircd/s_stats.c: Use the flag.
-
-2004-01-04  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is
-       sent to a channel...
-
-2005-10-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (m_join): Report too-long channel names as
-       non-existent.
-
-2005-10-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_names.c (m_names): Fix format string when forwarding
-       /names -D to other servers.
-       (ms_names): Likewise.  Add support for remote /names -D.
-
-2005-10-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/class.c (do_find_class): Fix bug from previous commit.
-
-       * ircd/ircd_parser.y (clientblock): Allow setting Client port.
-
-       * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline.
-       (attach_iline): Only set FLAG_DOID when we are sure we will attach
-       this Client block to the client. [Credit: Jukka Ollila and others]
-
-2005-10-04  Michael Poole <mdpoole@troilus.org>
-       [Based on a patch by Jukka Ollila]
-
-       * include/class.h (find_class): Rename to do_find_class().
-
-       * ircd/class.c (class_delete_marked): Keep invalid classes in list
-       until next rehash.
-       (add_class): Use new parameter to do_find_class() to allow a class
-       to be "resurrected".
-       (find_class): Rename.
-       (report_classes): Use 'y' instead of 'Y' when reporting invalid
-       classes.
-
-2005-10-01  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_kick.c (ms_kick): If the kick target is join-delayed,
-       only send the KICK to the kicker.  Spotted by Cesar_.
-
-2005-10-01  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Update to pre1.
-
-       * ircd/class.c (init_class): Only set default class's ->next
-       pointer when first allocating it.
-
-2005-09-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when
-       matching users.
-
-2005-09-30  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h: Update for release.
-
-2005-09-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a
-       chanop being kicked.
-
-2005-09-26  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/whocmds.c (do_who): Fix uninitialized variable warning
-       about 'chan'.
-
-2005-09-26  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/parse.c (del_msg_element): Only delete empty subtrees, and
-       leave subtrees that may still contain data.
-
-2005-09-26  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (struct ModeBuf): Add mbm_oplevel to args
-       array.
-       (MB_OPLEVEL): New corresponding macro.
-       (modebuf_mode_client): Add corresponding argument.
-
-       * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer
-       usage to include :999 suffix.  Change format for oplevel passing.
-       (modebuf_mode_client): Set oplevel field in mbuf args array.
-       (struct ParseState): Add oplevel field to cli_change array.
-       (mode_parse_client): Accept and record oplevel suffix from
-       servers; fix it up if we're bouncing a deop.
-       (mode_process_clients): If a valid oplevel was parsed, use it.
-
-       * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client().
-
-       * ircd/m_clearmode.c (do_clearmode): Likewise.
-
-       * ircd/m_create.c (ms_create): Likewise.
-
-       * ircd/m_kick.c (ms_kick): Likewise.
-
-2005-09-23  Michael Poole <mdpoole@troilus.org>
-
-       * include/whocmds.h (WHOSELECT_DELAY): Define new constant.
-
-       * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set
-       WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER.  Do not skip
-       join-delayed users if WHOSELECT_DELAY is set.
-
-       * ircd/whocmds.c (do_who): Remember membership for shared channel
-       if one exists.  Use it when displaying flags, adding '<' for
-       join-delayed users.
-
-2005-09-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_key): Only accept the new key when
-       the current one is empty or "greater" than the new one.
-       (mode_parse_upass): Likewise, for upass.
-       (mode_parse_apass): Likewise, for apass.
-
-2005-09-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/gline.c (gline_checkmask): Add missing digit in mask length
-       check.
-
-2005-09-21  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Remove confused and outdated references to
-       Martians.
-
-2005-09-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/Makefile.in: Regenerate "make depend" dependencies.
-
-       * ircd/test/Makefile.in: Likewise.
-
-2005-09-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_join.c (last0): fix problem leading to protocol
-       violations on certain combinations of /join 0 from remote servers
-       (probably from local users, too) [bug #1291029]; remove redundant
-       !IsChannelChar() check
-
-2005-09-14  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.cvs: Document the branching scheme for 2.10.12.
-
-2005-09-14  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Increment to reflect the
-       pre-release code freeze.
-
-2005-09-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_ban): Fix the sense of another check.
-
-2005-09-13  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (clean_channelname): Remove prototype.
-
-       * ircd/m_invite.c (m_invite): Do not clean channel name; just
-       reject invalid channel names.
-
-       * ircd/m_join.c (m_join): Likewise.
-
-       * ircd/m_mode.c (m_mode): Do not clean channel name.
-
-       * ircd/m_names.c (m_names): Likewise.
-
-       * ircd/m_opmode.c (mo_opmode): Likewise.
-
-2005-09-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_ban): Revert to older style of comparison,
-       fixing the sense of one check.  Spotted by Alex Badea.
-
-2005-09-13  Alex Badea <vamposdecampos@gmail.com>
-
-       * ircd/ircd.c (try_connections): modify autoreconnect logic to
-       allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq
-
-2005-09-13  Alex Badea <vamposdecampos@gmail.com>
-
-       * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList,
-       otherwise the linked list has an invalid ending sentinel on rehash
-
-2005-09-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_ban): Compare ban mask against hostname
-       even when it looks like an IP, to match things like *!*@1.* when
-       users have a hostname like 1.2.3.example.com.
-
-2005-09-12  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Note the resolution of ambiguous ipmasks.
-
-       * ircd/ircd_string.c (ipmask_parse): Implement it.
-
-2005-09-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_join.c (m_join): If we find an empty key, null out the
-       key pointer.
-
-2005-09-11  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Mention the side benefits of this change.
-
-       * include/ircd_string.h (ipmask_parse): Declare function here.
-       (ircd_aton): Becomes a special case of ipmask_parse().
-
-       * include/match.h (check_if_ipmask): Undeclare function.
-       (ipmask_parse): Remove function prototype from this file.
-
-       * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter
-       to accept ipmask length.  Rework to fill that in.
-       (ircd_aton): Rework into...
-       (ipmask_parse): this function, which knows how to fill in its own
-       pbits parameter.
-
-       * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban
-       flags correctly, to avoid call to check_if_ipmask().
-
-       * ircd/match.c (ipmask_parse_ipv4): Delete function.
-       (check_if_ipmask): Likewise.
-       (ipmask_parse): Delete this version in favor of ircd_string.c's.
-
-       * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type.
-       (test_masks): New array of ipmask_test.
-       (test_ipmask): Function to run one of those tests.
-       (main): Call test_ipmask().
-
-2005-09-11  Alex Badea <vamposdecampos@gmail.com>
-
-       * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code
-       (probably during the forward port) which broke AsLL; fixed.
-
-2005-09-01  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/gline.c (make_gline): Remove debug output from when IPv6
-       support was being debugged.
-       (do_gline): Likewise.
-       (gline_lookup): Likewise, plus remove redundant code.
-
-2005-09-01  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining
-       0, since no other call passes a null channel.
-
-       * ircd/m_join.c: Remove comment discussing argument meanings.
-       (last0): Make this also handle the JOIN 0 logic, doxyfy.
-       (join0): Merge into last0.
-       (m_join): Doxygenate.  Remove check for join0.  Further
-       reorganize, so new versus old channel handling are moved to just
-       one place each within this function.
-       (ms_join): Doxygenate.  Remove check for join0.
-
-2005-09-01  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Bump revision date and highlight this change.
-
-       * include/channel.h (MAGIC_OPER_OVERRIDE): Remove.
-       (can_join): Remove declaration.
-
-       * ircd/channel.c (compall): Remove.
-       (can_join): Remove.
-
-       * ircd/m_join.c (m_join): Remove redundant check for control
-       characters (clean_channelname() will get them). Reorganize initial
-       flags calculation.  Accept channel keys like RFC 1459 says; this
-       requires the old compall()/can_join() logic to modify 'keys', so
-       inline the code and reorganize it.
-
-2005-08-30  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (PASSLEN): Remove; use KEYLEN instead.
-
-       * ircd/channel.c (mode_parse_upass): Likewise.
-       (mode_parse_apass): Likewise.
-       The inconsistency (in clean_key()) was reported by Reed.
-
-2005-08-30  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Document +D and +d channel modes.
-
-2005-08-29  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h (ERR_NOMANAGER_LONG): Undefine.
-       (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER.
-
-       * ircd/s_err.c (replyTable): Change to reflect that.
-
-       * ircd/channel.c (clean_key): New function.
-       (mode_parse_key): Use it, and check that keys do not start with :.
-       (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER.
-       (mode_parse_apass): Likewise.
-       The key and password changes fix bugs reported by coekie.
-
-2005-08-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
-       of assigning directly to member->oplevel.
-       (mode_parse_apass): Likewise.
-       (mode_process_clients): Users opped by outsiders should get
-       oplevel 1, since they are not channel managers.
-
-       * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
-       directly to member->oplevel.
-
-2005-08-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (member_can_send_to_channel): At coekie's
-       suggestion, disallow channel manager talking after Apass is set,
-       so they set and use Upass sooner.
-
-       * ircd/class.c (init_class): Default class should have 1 link.
-       (report_classes): Return links count minus one to match old output.
-
-       * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by
-       Reed).
-
-2005-08-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse): Accept +A/+U from servers
-       regardless of FEAT_OPLEVELS.
-
-2005-08-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (parse_command_line): Mention epoll engine when run
-       with -v.
-
-2005-08-24  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h (PATCHLEVEL): Increment.
-
-       * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or
-       1 when propagating JOIN <level>:#channel, to avoid PV on receiver.
-
-       * ircd/engine_epoll.c: Add system call numbers for more CPU types.
-
-       * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls;
-       anyone who writes logs over NFS is mental.  (Thanks to D. Bruce.)
-
-2005-08-21  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_conf.h (free_mapping): Declare new function.
-
-       * ircd/ircd_parser.y (pseudoblock): Use it.
-
-       * ircd/s_conf.c (free_mapping): Define it.
-       (close_mappings): New function.
-       (rehash): Call close_mappings() before reading file.
-
-       * ircd/m_kill.c (do_kill): Revert 2005-08-18 change.
-
-2005-08-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/parse.c (tok_tree): Re-add token tree structure.
-       (initmsgtree): Populate it.
-       (parse_server): Prefer it to full message tree.
-
-2005-08-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent
-       source of KILLs to &his instead of &me.
-
-2005-08-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
-       newban->banstr[] when the source is a server.  (Spotted by jcq.)
-
-2005-08-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
-       announcements to local users in a channel.
-
-       * ircd/m_burst.c (ms_burst): Likewise.
-
-       * ircd/m_invite.c (m_invite): Likewise.
-       (ms_invite): Likewise.
-
-       * ircd/m_kick.c (ms_kick): Likewise.
-
-       * ircd/m_topic.c (do_settopic): Another &me -> &his change for
-       HIS, and use that apparent source for the channel localcast.
-
-2005-08-16  Jukka Ollila <jaollila@niksula.hut.fi>
-
-       * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the
-       real thing for the post-mode-x rejoin.
-
-2005-08-15  Michael Poole <mdpoole@troilus.org>
-
-       * include/supported.h (FEATURESVALUES2): Add +d channel mode.
-
-       * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not
-       a varadic function.  (Suggested by Ian Kumlien.)
-
-       * ircd/convert-conf.c (finish_operators): Likewise.
-
-       * ircd/listener.c (close_listeners): Likewise.
-
-       * ircd/channel.c (CheckDelayedJoins): Use HIS server name to
-       remove channel mode +d.
-
-2005-08-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (pretty_mask): Recognize ':' as unique to the
-       host part of a ban mask.
-
-2005-08-03  Jan Krueger <jast@heapsort.de>
-
-       * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on
-       invisible member.
-
-2005-08-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_ban): For non-IPmask bans, match the ban
-       string against the string form of the client's IP address.
-
-2005-07-16  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Apply a test for socklen_t that Reed found.
-
-       * configure: Regenerate.
-
-2005-07-16  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels.
-
-       * README.FreeBSD: Remove (merged into README).
-
-       * README.Solaris: Remove (merged into README).
-
-       * README: Merge in the above; also update for 2.10.12.
-
-       * doc/example.conf: Change mention of K-lines to say Kill blocks
-       instead.
-
-       * doc/iauth.txt: Remove (out of date).
-
-       * doc/readme.features: Update to reflect that 2.10.11 is not the
-       current release.  Change mention of various config lines to use
-       the equivalent config entries or blocks instead.
-
-       * doc/readme.log: Likewise.
-
-       * doc/api/features.txt: Change F-line mentions to say Feature
-       entry instead.
-
-       * doc/api/modebuf.txt: Change U-line mention to say Uworld entry.
-
-       * doc/api/motd.txt: Change T-line mentions to say Motd entry.
-
-2005-07-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_features.c (feature_init): Always call
-       feature_notify_server*() so that 'his' is initialized.
-
-       * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose
-       between user->server and &his.
-
-2005-07-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_apass): Update oplevels when setting
-       or removing the +A password.  Partial credit goes to Reed Loden.
-
-2005-07-14  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_features.h: Declare new "his" pseudo-server to hold
-       FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place.
-
-       * ircd/ircd_features.c: Initialize and update it.
-
-       * ircd/channel.c (modebuf_flush_int): Use it as the apparent
-       source for opmodes and server mode changes (also when the source
-       is me).
-
-       * ircd/m_burst.c (ms_burst): Use it as the apparent source for net
-       rider kicks.
-
-       * ircd/m_whois.c (do_whois): Use it to simplify code here.
-
-       * ircd/s_misc.c (exit_client): Use it as the apparent killer.
-
-2005-07-14  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (General): Update comment about vhost to match
-       the code change below.
-
-       * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a
-       synonym for the default behavior (for backwards compatibility).
-       Spotted by Kev.
-
-       * ircd/channel.c (sub1_from_channel): Remove stale code and
-       comment, replacing with an up-to-date comment.  Spotted by skx.
-
-2005-07-11  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/engine_select.c: Remove outdated comment about USE_POLL.
-
-       * ircd/parse.c (msgtab): #if out CAP handler until we have caps.
-
-       * RELEASE.NOTES: Remove mention of capabilities for now.
-
-2005-07-11  Stephan Peijnik <speijnik@gmail.com>
-
-       * ircd/gline.c (gline_add): It's only a protocol violation when a
-       server issues a "whacky" gline.  If it's an oper, only tell opers
-       with SNO_GLINE.
-
-       * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole
-       network is not likely to care about IAuth PVs, so only tell opers
-       with SNO_CONNEXIT.
-
-2005-07-11  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.features: Document FEAT_CHANNELLEN.
-
-       * doc/example.conf: Give an example of it.
-
-       * ircd/m_join.c (ms_join): Do not clean channel names from remote
-       servers, to avoid desynchs.
-
-       * ircd/m_names.c (ms_names): Likewise.
-
-2005-07-11  Stephan Peijnik <speijnik@gmail.com>
-
-       * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
-
-       * include/supported.h: Add it to the ISUPPORT display.
-
-       * ircd/channel.c (clean_channelname): Impose the lower limit
-       between FEAT_CHANNELLEN and CHANNELLEN.
-
-       * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
-
-2005-07-11  Reed Loden <reed@reedloden.com>
-
-       * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
-
-       * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c
-       Remove unused #include <sys/poll.h>.
-
-       * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity
-       checks here, since they are not used elsewhere in the daemon.
-       [Order slightly changed by Michael Poole to compile.]
-
-2005-07-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/convert-conf.c: New file.
-
-       * ircd/Makefile: Compile it.
-
-2005-06-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_bsd.c (add_connection): Split logic for server versus
-       client listeners; only do IPcheck for client connections.
-
-       * ircd/s_serv.c (server_estab): There is no longer a need to
-       remove IPcheck reference, so don't.
-
-2005-06-27  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h (struct Connection): Remove con_dns_reply (and
-       associated macros).
-
-       * include/res.h (gethost_byname): Change calling signature to
-       clarify memory ownership.
-       (gethost_byaddr): Likewise.
-
-       * include/s_bsd.h (release_dns_reply): Remove function.
-
-       * ircd/hash.c: #include "match.h" to quash warning.
-
-       * ircd/ircd_auth.c (struct IAuth): Remove i_query field.
-       (iauth_dns_callback): Adjust for new gethost_byname signature.
-       (iauth_reconnect): Likewise.
-
-       * ircd/ircd_res.c (struct reslist): Make elements of query field
-       inline rather than in a contained structure.
-       (make_request): Reflect removal of DNSQuery.
-       (do_query_name): Likewise.
-       (do_query_number): Likewise.
-       (make_dnsreply): Remove now-unused function.
-       (timeout_resolver): Adjust to new callback signature.
-       (delete_resolver_queries): Reflect removal of DNSQuery.
-       (gethost_byname): Update to new signature.
-       (gethost_byaddr): Likewise.
-       (res_readreply): Reflect removal of DNSReply.
-
-       * ircd/list.c (dealloc_connection): con_dns_reply no longer
-       exists, so do not free it.
-
-       * ircd/s_auth.c (auth_verify_hostname): constify.
-       (auth_dns_callback): Adjust to new callback signature.
-       (start_auth): Adjust to new gethost_byaddr() signature.
-
-       * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback
-       signature.
-       (release_dns_reply): Remove unused function.
-       (connect_server): Adjust to new gethost_byname() signature.
-
-       * ircd/s_conf.c (conf_dns_callback): Adjust to new callback
-       signature.
-       (conf_dns_lookup): Adjust to new gethost_byname() signature.
-       (attach_iline): Use cli_sockhost() instead of DNS reply.
-       (conf_check_server): Simplify use of DNS results.
-
-       * ircd/s_serv.c (server_estab): Remove call to removed function.
-
-       * ircd/s_user.c (register_user): Remove call to removed function.
-
-2005-06-27  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_misc.h (get_sockhost): Remove the unused (and
-       deceptively named) get_sockhost().
-
-       * ircd/s_misc.c (get_sockhost): Likewise.
-
-2005-06-25  Andrew Miller  <a1kmm@amxl.com>
-
-       * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to
-       DupStr so memdebug works.
-
-       * doc/debug_memleak_gc.patch : Update to gc6.5
-       
-2005-06-24  Andrew Miller  <a1kmm@amxl.com>
-       * ircd/m_invite.c (m_invite): Don't propagate invites to local channels.
-       
-2005-06-21  Andrew Miller  <a1kmm@amxl.com>
-
-       * ircd/m_list.c (param_parse): Add support for channel wildcards.
-       * ircd/m_list.c (show_usage): Document the new format.
-       * ircd/hash.c (list_next_channels): Check channel wildcard in list.
-       * include/channel.h (ListingArgs): Add the wildcard member.
-
-2005-06-19  Andrew Miller  <a1kmm@amxl.com>
-
-       * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more
-       gracefully.
-
-       * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking
-       the pending request list, to make DoS attacks harder.
-
-       * ircd/m_invite.c (m_invite): Give no such channel rather than not on
-       channel when the channel being invited to does not exist.
-       
-2005-06-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_debug.c (count_memory): Consolidate several lines; make
-       initial letter capitalization consistent.
-
-2005-06-19  Andrew Miller  <a1kmm@amxl.com>
-
-       * ircd/s_stats.c: Remove the "debug only" label on memusage stats,
-       since it no longer applies.
-
-2005-05-16  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (struct Ban): Make 'who' and 'banstr' direct
-       arrays, rather than pointers.
-
-       * ircd/channel.c (bans_alloc): New variable to count number of ban
-       structures allocated.
-       (bans_inuse): New variable to count number of ban structures
-       currently in use.
-       (set_banmask): Adapt to changes in struct Ban.
-       (make_ban): Likewise, and update ban counts.
-       (free_ban): Likewise.
-       (bans_send_meminfo): New function.
-       (apply_ban): Adapt to changes in struct Ban.
-       (mode_parse_ban): Likewise.
-       (mode_process_bans): Likewise.
-       (mode_parse): Likewise.
-       (RevealDelayedJoin): Fix brace placement.
-       (CheckDelayedJoins): Fix brace placement and whitespace.
-
-       * ircd/list.c (struct liststats): Add new fields to eliminate the
-       separate count variables.
-       (init_list): Adapt to those changes.
-       (alloc_client): Likewise.
-       (dealloc_client): Likewise.
-       (alloc_connection): Likewise.
-       (dealloc_connection): Likewise.
-       (make_server): Likewise.
-       (remove_client_from_list): Likewise.
-       (verify_client_list): Likewise.
-       (make_link): Likewise.
-       (free_link): Likewise.
-       (send_liststats): New function.
-       (send_listinfo): Rewrite to use new struct liststats layout.
-
-       * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban.
-
-       * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct
-       Ban.
-
-       * ircd/s_stats.c (stats_meminfo): Define unconditionally and call
-       bans_send_meminfo().
-       (statsinfo): Always give access to stats_meminfo.
-
-2005-06-16  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_string.h: Include necessary <string.h> header.
-
-       * ircd/test/.cvsignore: Ignore log output files.
-
-       * ircd/test/Makefile.in: Remove log output files.
-
-       * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills.
-
-       * ircd/test/run-tests.sh: Switch sense of argument.  Send an IRC
-       debug dump to log files.
-
-2005-06-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (make_user): Unconditionally increment userCount.
-       (free_user): Unconditionally decrement it here.
-
-       * ircd/s_conf.c (make_conf): Unconditionally increment
-       GlobalConfCount.
-       (free_conf): Unconditionally decrement it here.
-
-       * ircd/s_debug.c (count_memory): Fix termination condition for
-       ban-walking loop.  Add missing "e" to "members".
-
-
-2005-06-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot
-       be true IP masks.
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes.
-
-       * ircd/test/ircd_match_t.c: Test recovery from backtracking.
-
-       * ircd/test/channel-1.cmd: Modify to improve code coverage.
-
-       * ircd/test/client-1.cmd: Likewise.
-
-       * ircd/test/gline-1.cmd: Likewise.
-
-       * ircd/test/ircd-t1.conf: Likewise.
-
-       * ircd/test/stats-1.cmd: Likewise.
-
-       * ircd/test/run-tests.sh: Explicitly start ircds.  Add new test scripts.
-
-       * ircd/test/test-driver.pl: Silently handle more signals from IRC.
-
-       * ircd/test/commands-1.cmd: New test script.
-
-       * ircd/test/feature-1.cmd: New test script.
-
-       * ircd/test/jupe-1.cmd: New test script.
-
-       * ircd/test/kill-block-1.cmd: New test script.
-
-       * ircd/test/ircd-t1-2.conf: New configuration file for test scripts.
-
-       * ircd/test/ircd-t2.conf: Likewise.
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_debug.c (count_memory): Use count_listener_memory() to
-       report memory used by listener structures.
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * include/class.h (get_con_freq): Remove unused function.
-
-       * include/list.h (find_user_link): Remove unused function.
-
-       * include/class.c (get_con_freq): Remove.
-
-       * ircd/list.c (find_user_link): Remove.
-
-       * include/string.h (string_is_hostname, string_is_address,
-       strnChattr): Remove unused functions.
-       (init_string): Remove function that becomes a noop.
-
-       * ircd/string.h (init_string): Remove.
-       (string_is_hostname, string_is_address, strnChattr): Likewise.
-
-       * ircd/ircd.c (main): Remove call to init_string().
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS,
-       RPL_NOTOPERANYMORE): Undefine unused numeric replies.
-
-       * ircd/s_err.c (replyTable): Fix format fields for certain numeric
-       arguments.  Remove some unused entries.
-
-       * ircd/s_stats.c (stats_configured_links): Move invariant
-       parameters to message format string.
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move
-       WIDE_GLINE to reflect its enumerated value.
-
-       * ircd/s_debug.c (count_memory): Use user_count_memory() function
-       to count User structs in-use.
-
-       * ircd/m_server.c (mr_server): Change "C:line" to "Connect block".
-
-       * ircd/s_bsd.c (connect_server): Likewise.
-
-       * ircd/s_conf.c (conf_check_server): Likewise.
-
-       * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block".
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (match): Rewrite to handle globs that end in an
-       escaped wildcard (and hopefully clarify the code).
-
-       * ircd/test/Makefile.in: Add new ircd_match_t test program.
-
-       * ircd/test/ircd_match_t.c: New file.
-
-       * ircd/test/test_stub.c: Emite newlines after log and debug
-       messages.
-
-2005-05-25  Reed Loden <reed@reedloden.com>
-
-       * ircd/s_err.c (replyTable): Allow for the specification of 'O' or
-       'o' in RPL_STATSOLINE.
-
-       * ircd/s_stats.c (stats_configured_links): In /stats o/O, display
-       'O' if either the oper block or the connection class has
-       PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE
-       (local oper).
-
-2005-05-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/IPcheck.c: Add Debug()s to try to track why the connected
-       count underflows.
-
-       * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan'
-       after it may be freed (in sub1_from_channel).
-
-       * ircd/s_user.c (register_user): Rearrange code to reduce number
-       of "if (MyConnect(sptr))" checks.
-
-2005-05-12  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Do not try to outsmart the default CFLAGS.
-       Simply add parameters explicitly requested by the user.
-
-       * configure: Regenerate.
-
-       * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is
-       used in os_generic.c) to get crypt() on NetBSD.
-
-2005-05-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and
-       -x given), reserve fd 2 for the use of the debugging log;
-       otherwise, some engines may attempt to use fd 2, which would end
-       up getting closed by debug_init() (actually, by
-       log_debug_reopen(), called by log_debug_init(), called by
-       debug_init())
-
-2005-08-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a
-       local user creates a channel.
-
-       * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of
-       memory for the tagged output string.
-
-       * ircd/test/test-driver.pl: Add -vhost=... option.
-
-       * ircd/test/ircd-t1.conf: Add new Operator blocks.
-
-       * ircd/test/*.cmd: Rearrange and add more coverage tests.
-
-2005-08-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y: Move error tokens to top level of parse, and
-       make ';' a synchronizing token for them.  This avoids crashes in
-       situations like missing ';' between two Kill blocks.  Move several
-       ';'s earlier for earlier detection of syntax errors.
-
-       * ircd/motd.c (motd_memory_count): Use size_t for memory counts to
-       match the format strings used for those variables.
-
-       * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of
-       unsigned int, not unsigned long; use correct format string.
-
-       * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd'
-       based on crule type, rather than query type.
-       (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and
-       "help" stats, which don't use the varparam.
-
-       * ircd/test/test-driver.pl: Interpreter for test scripts.b
-
-       * ircd/test/ircd-t1.conf: Configuration file for test scripts.
-
-       * ircd/test/*.cmd: New test scripts for test-driver.pl.
-
-2005-05-08  Jukka Ollila <jaollila@niksula.hut.fi>
-       (Adapted slightly by Michael Poole.)
-
-       * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
-       addresses event when !defined(IPV6).
-
-2005-05-07  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (joinbuf_join): Be smarter about what source to
-       use when opping a user that joins a channel.
-
-2005-05-04  Reed Loden <reed@reedloden.com>
-
-       * ircd/m_trace.c (do_trace): Show the real nickname instead of the
-       numnick.
-
-2005-05-02  Jan Krueger <jast@heapsort.de>
-
-       * ircd/channel.c (member_can_send_to_channel): if the channel can only
-       be joined by users with accounts (+r), do not allow users without
-       accounts to speak.
-
-2005-05-07  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
-       addresses.
-       * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry.
-       (test_address): Test base64toip() as well.
-
-2005-05-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (umode_str): Only clear the operator flag when not
-       propagating; never set it.
-
-2005-05-04  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (joinbuf_join): Include channel manager flag in
-       determination of oplevel.  If opping the user for a non-local
-       non-create, include oplevel in message to other servers.  Send
-       "MODE +o <client>" to local users whenever opping the client.
-
-       * ircd/m_join.c (m_join): Remove logic that moved into
-       joinbuf_join().
-       (ms_join): Look for level 0 and 1 joins from remote servers
-       and adjust value of 'flags' appropriately.
-
-2005-05-04  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h: Remap oplevel numerics to new range.
-
-       * ircd/s_err.c: Likewise.
-
-2005-05-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT
-       fields, fixing crash found by nighty.
-
-2005-05-02  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when
-       trying to set +U pass to the same as the +A pass.
-
-       * ircd/channel.c (mode_parse_upass): Use it.
-
-       * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if
-       there is an active IAuth connection, fixing PR#1193808.
-       (iauth_dispose_request): Only delete the timer if it is active.
-
-       * ircd/m_invite.c (m_invite): Always forward the invite in the
-       correct direction, and then skip it as 'one' if announcing.
-       (ms_invite): Likewise.
-
-       * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as
-       ::ffff:0.0.0.0; keep it as ::.
-
-       * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS.
-
-2005-05-01  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.log: Document IAUTH log target, remove docs for
-       OLDLOG log target.
-
-       * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG.
-
-       * ircd/ircd_log.c (logDesc): Likewise.
-
-       * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all
-       sockets (e.g. when connecting) and do not generate read/write
-       events in the same pass as error or EOF events.
-
-       * ircd/ircd_auth.c: Convert old sendto and debug messages to use
-       the LS_IAUTH log target.  Consistently use IAUTH_CONNECTED flag
-       instead of comparing fd to -1.
-       (iauth_reconnect): If already connected, disconnect and schedule a
-       reconnect later, since an immediate reconnect can cause assertion
-       failure in the event engine.  Also schedule a reconnect when the
-       connection attempt fails.
-       (iauth_read): Reconnect on IO_FAILURE.
-       (iauth_sock_callback): Disconnect and schedule a reconnect on both
-       error (after reporting the error) and EOF.
-       (iauth_start_client): Record the IAuth request in the client.
-       (iauth_exit_client): Report the client exit.
-
-       * ircd/s_misc.c (exit_one_client): Fix formatting.
-
-2005-04-30  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add)
-       timer here and set fd to -1.
-       (iauth_schedule_reconnect): Rewrite to handle previously
-       initialized timer.
-       (iauth_reconnect): If server is connected, disconnect first.
-       Update socket generator fd before calling socket_add().
-       (iauth_read): When reading 0 bytes (EOF), reconnect.
-
-2005-04-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y: Report non-existent class names as errors
-       earlier, and do not fall back to "default" for Client blocks.
-
-2005-04-25  Reed Loden  <reed@reedloden.com>
-
-       * ircd/ircd_lexer.l: Add missing header to squash a warning.
-
-2005-04-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Replace call with set_user_mode()
-       with a direct parsing of user modes.  To match this, revert the
-       initial display of usermode to how it was done before.
-
-2005-04-24  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Document new autoconnect field of Connect.
-
-       * include/s_conf.h: Add CONF_AUTOCONNECT and field for it.
-
-       * ircd/ircd.c (try_connections): Skip non-autoconnect servers.
-
-       * ircd/ircd_lexer.l: Recognize autoconnect token.
-
-       * ircd/ircd_parser.y: Add autoconnect= option to Connect block.
-
-       * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to
-       user being invited.
-       (ms_invite): Likewise.
-
-       * ircd/s_user.c (register_user): Show class name rather than
-       pointer-as-integer.
-
-2005-04-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y: Rewrite so each error condition gets its own
-       error message, and so that invalid parameters are printed out.
-
-2005-04-23  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (apply_ban): Consistently free newban->banstr
-       when the function fails.
-       (mode_process_bans): Free banstr for all BAN_DEL bans.
-
-       * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
-
-2005-04-23  Michael Poole <mdpoole@troilus.org>
-
-       * include/patchlevel.h: Bump to being a beta.
-
-       * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that
-       parser actions don't have to be immediately after a QSTRING.
-
-       * ircd/ircd_parser.y (FNAME): Remove unused token.
-       (QSTRING): Adjust for QSTRING being an already-copied version.
-
-2005-04-23  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (UWorld): Illustrate new config extension.
-
-       * ircd/ircd_parser.y (uworldblock): Do the expected thing when
-       multiple name= entries are present.
-
-2005-04-22  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Silence exceptions use ~, not -.  Oops!
-
-       * doc/example.conf: Fix typo in example Kill block.
-
-       * ircd/channel.c (mode_parse_ban): Use correct test for flag_p.
-
-       * ircd/m_silence.c (apply_silence): Make mask pretty so that later
-       processing does not convert * to @ (and match no one).
-
-2005-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_userip.c (userip_formatter): /userip should *never*
-       report the user's real IP unless its answering the user
-       him/herself
-
-       * ircd/m_userhost.c (userhost_formatter): /userhost should *never*
-       report the user's real host unless its answering the user
-       him/herself
-
-2005-04-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (parse_command_line): Update usage text.
-
-       * ircd/numnicks.c (base64toip): Use v4mapped address range instead
-       of v4compat address range, fixing IPv4-based /who.
-
-2005-04-19  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: When --enable-profile, add -pg to LDFLAGS.
-
-       * configure: Regenerate.
-
-2005-04-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo.
-
-       * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks
-       once a matching Client block is found.
-
-       * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp().
-
-2005-04-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (check_if_ipmask): Do not interpret masks that
-       start with . or / as IP-based host masks.
-
-2005-04-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_process_clients): Only prohibit deops of
-       users with the same or higher oplevel where apass is set.
-       Likewise, when opping users, give them MAXOPLEVEL for non-apass
-       channels.
-       (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels.
-
-       * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the
-       same or higher oplevel where apass is set.
-
-       * ircd/s_user.c (register_user): Fix order of server version vs
-       various mode strings.
-
-       * tools/linesync/linesync.sh: Add revision id field.
-
-2005-04-17  Michael Poole <mdpoole@troilus.org>
-
-       * tools/linesync/linesync.sh: Fix typo comment.  Check for
-       multiple blocks per line in the linesync input.
-
-2005-04-17  Dan <daniel@undernet.org>
-
-       * tools/linesync/linesync.sh: Update to support new syntax and to
-       avoid rehashing the ircd when the config is the same.
-
-       * tools/linesync/linesync.conf: Update allowed conf items.
-
-2005-04-16  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Kill): Document newly supported syntax.
-
-       * include/s_conf.h (DenyConf): Split realname mask into its own
-       field.  Remove the unused DENY_FLAGS_{IP,REALNAME}.
-
-       * ircd/ircd_parser.y (Kill): Only require one of usermask,
-       hostmask, realmask to be set for a valid block.
-       (killitem): Add new production killusername.
-
-       * ircd/s_conf.c (conf_erase_deny_list): Free realmask field.
-       (find_kill): Rearrange slightly to clarify control flow.
-
-       * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask,
-       so the old usermask field can be adopted for realname mask.  Add
-       double quotes around the realmask field.
-
-       * ircd/s_stats.c (report_deny_list): Do so.
-       (stats_klines): Likewise.
-
-2005-04-17  Perry Lorier <isomer@undernet.org>
-       
-       * tools/convert-conf.py: Fix lots of conversion problems with
-       oper privielges (now they are converted), 
-       features (deprecated features commented out, most converted to
-       priviliges), 
-       realname klines (also add host= lines)
-       quarintines (generate blocks for them), 
-       connect blocks (don't generate empty port config lines)
-       etc...
-
-2005-04-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/gline.c (do_gline): Fix typo when activating IP-based
-       G-lines.
-
-2005-04-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/class.c (free_class): Free default_umode field.
-
-       * ircd/ircd_parser.y (classblock): Free default_umode field before
-       overwriting it.
-
-       * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit
-       fields.
-       (find_kill): Realname Kill blocks no longer have $R at the start,
-       so do not skip over the first two characters of the mask.
-
-2005-04-15  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Operator): Properly qualify plaintext password.
-       (Quarantine): Document (new) syntax.
-
-       * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
-       correctly on BSDs.
-
-       * ircd/ircd_parser.y (qconf): Remove global variable.
-       (killuhost): Null terminate username when present.
-       (quarantineblock): Replace with a syntax that works.
-
-       * ircd/s_stats.c: #include <querycmds.h> for UserStats.
-       (stats_server_verbose): Reinstate check for UserStats.
-
-2005-04-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd.c: conditionally include sys/resource.h; otherwise,
-       RLIMIT_CORE will not be defined and so set_core_limit() will never
-       be defined, much less run.
-
-       * configure.in: add sys/resource.h to the list of headers to
-       search for
-
-       * configure: regenerate configure
-
-       * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to
-       config.h.in
-
-2005-04-08  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_conf.h (conf_debug_iline): Declare new function.
-
-       * ircd/ircd.c (dbg_client): New file-scoped variable.
-       (parse_command_line): Set it from the new -c option.
-       (main): If dbg_client is set during chkconf, use it.
-
-       * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses,
-       not IPv4-compatible addresses, to match ipmask_parse().
-
-       * ircd/m_whowas.c (m_whowas): Split display of real host to a
-       separate line, in hopes of not confusing opers in the future.
-
-       * ircd/s_conf.c (conf_debug_iline): Implement new function.
-
-2005-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping
-       out locally opped and voiced channel members.
-
-2005-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h (RPL_APASSWARN): Replace with three distinct
-       values.
-       (ERR_NOMANAGER_LONG): Assign new numeric.
-       (ERR_NOMANAGER_SHORT): Assign new numeric.
-
-       * ircd/channel.c (parse_mode_upass): Adapt to new formats for
-       ERR_NOTMANAGER separation.
-       (parse_mode_apass): Likewise.  Also adapt to RPL_APASSWARN split.
-
-       * ircd/s_err.c (RPL_APASSWARN): Replace with three message
-       strings, to avoid embedding long message strings in the logic
-       implementation.
-       (ERR_NOTMANAGER): Likewise (but not the same strings).
-
-2005-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (clientblock): Use the password field.
-
-       * ircd/s_user.c (register_user): Allow aconf->password to be a
-       single digit, since per-IP limit is now in a separate field.
-
-2005-04-06  Michael Poole <mdpoole@troilus.org>
-
-       * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in
-       current gcc releases and is slower than files for previous
-       releases on most OSes.
-
-       * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING.
-       (unet_PIPE_CFLAGS): Remove use of macro.
-
-       * aclocal.m4: Regenerate.
-
-       * configure: Likewise.
-
-2005-04-04  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: For developers' ease, allow passing an option to
-       configure to persistently set optimization CFLAGS.
-
-       * configure: Regenerate.
-
-2005-04-04  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Jupe): Make the default Jupe block follow
-       CFV-0255.  (Thanks to FrankP for pointing me at this and to DinTn
-       for getting me a copy of the CFV.)
-
-2005-04-04  Michael Poole <mdpoole@troilus.org>
-
-       * include/capab.h (CAPFL_STICKY): Define.
-       (CAPLIST): Remove the entries used for testing.
-
-       * include/client.h (Connection): Clarify comment about the
-       distinction between con_capab and con_active.
-
-       * ircd/m_cap.c: Add doxygen comments and replace the long
-       discussion of m_handler functions with an xref to it.
-       (send_caplist): Add new parameters and change the terminal vs
-       non-terminal line distinction to make compliant with current draft
-       specification.
-       (cap_empty): Rename to cap_ls().
-       (cap_req): Track modified capabilities bitwise, so that the
-       responding ACK contains all the appropriate flags.
-       (cap_ack): Add comment explaining why there is no response.
-       (cap_clear): Build and send a list of cleared capabilities, as
-       required by the current draft.
-       (cap_list): Send capability list using LIST subcommand.
-       (cmdlist): Add handler for LS subcommand.  Remove entries for the
-       empty and LSL subcommands, which are no longer allowed.
-       (m_cap): Require at least one argument from user.
-
-2005-04-01  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_conf.h (SMAP_FAST): Define.
-       (s_map): Add 'flags' field.
-
-       * ircd/ircd_lexer.l: Recognize 'FAST' token.
-
-       * ircd/ircd_parser.y (FAST): New token.
-       (pseudoitem): Add pseudoflags alternative.
-       (pseudoflags): New production, recognizing FAST token.
-
-       * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally.
-       Remove outdated comment.
-
-2005-04-01  Michael Poole <mdpoole@troilus.org>
-
-       * include/handlers.h (ms_privs): Declare.
-
-       * include/msg.h (TOK_PRIVS): Assign token.
-       (CMD_PRIVS): Define.
-
-       * ircd/m_privs.c: Add doxygen comments and replace the long
-       discussion of m_handler functions with an xref to it.
-       (mo_privs): Forward requests for non-local users
-       to their own server.
-       (ms_privs): Implement.
-
-       * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends
-       the message.
-
-2005-03-30  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h (struct Client): Explain where cli_username
-       comes from.
-
-       * include/struct.h (struct User): Explain where this username
-       comes from, too
-
-       * ircd/ircd_res.c (timeout_resolver): Update parameter name in
-       Doxygen comment, too.
-
-       * ircd/s_misc.c (get_client_name): Reorganize to have less
-       indentation and behave like 2.10.11 when client is not idented.
-
-2005-03-29  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Remove no-longer-used HIS_STATS_h.
-
-       * doc/readme.features: Likewise.
-
-       * include/ircd_features.h: Likewise.
-
-       * ircd/ircd_features.c: Likewise.
-
-2005-03-20  Reed Loden <reed@reedloden.com>
-
-       * include/ircd_features.h: Alphabetize HIS_STATS_? features.
-
-       * ircd/ircd_features.c: Likewise.
-
-2005-03-29  Michael Poole <mdpoole@troilus.org>
-       (The previously unapplied part of another patch (by Carlo Wood?).)
-
-       * ircd/m_part.c (ms_part): Remove a check that should already be
-       done by the user's own server.
-
-2005-03-29  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Add HIS_STATS_J entry.
-
-       * doc/readme.features: Likewise.
-
-2005-03-25  Reed Loden <reed@reedloden.com>
-
-       * include/hash.h: Add needed prototypes for new
-       stats_nickjupes() function.
-
-       * include/ircd_features.h: Add FEAT_HIS_STATS_J.
-
-       * include/numeric.h: Add RPL_STATSJLINE (222) for new nick
-       jupes stats. Correct a typo in a comment.
-
-       * ircd/hash.c: Add stats_nickjupes() function to report all
-       nick jupes to an oper. Because of the nature of hash tables,
-       there is no way to sort this list so the results look weird.
-
-       * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE).
-
-       * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes
-       stats.
-
-       * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes
-       stats. Make 'j' case sensitive. Modify the comment for stats
-       uworld.
-
-2005-03-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A
-       channel when forwarding a channel burst line.
-
-2005-03-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_server.c (set_server_flags): New function.  Unlike the
-       old code, this recognizes the IPv6 flag.  (Spotted by Reed.)
-       (mr_server): Use the new function.
-       (ms_server): Likewise.  Also don't show "Net junction:" message if
-       any closer server is still bursting (also spotted by Reed).
-       Finally, forward the +6 flag to other servers.
-
-       * ircd/s_serv.c (server_estab): Forward the +6 flag here, too.
-
-       * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it
-       may be cleared by completed_connection().
-
-2005-03-23  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
-       is wiped out during burst.
-
-2005-03-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
-       kludgy earlier version of the timeout fix.
-
-2005-03-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (send_channel_modes): Fix test for when to send
-       membership mode suffix, to avoid sending it more than once.
-
-2005-03-22  Michael Poole <mdpoole@troilus.org>
-       (Many thanks to nex and Reed for helping hunt this down and
-       doing the testing of various patches.)
-
-       * ircd/ircd_events.c (timer_chg): Properly change a timer that is
-       in the middle of executing its expiration event.
-
-       * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for
-       whether to use timer_chg() or timer_add().
-       On second thought, use timer_add() unconditionally; the server
-       connection loop does.
-       (timeout_resolver): Do not try to re-schedule the DNS timeout
-       unless it is the expiration event.
-       (do_query_number): Properly initialize request->state.
-       (res_readreply): Mention the response code that was bad.
-
-2005-03-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/engine_kqueue.c (engine_delete): The kernel removes
-       close()'d FDs from the activity list, so don't try to remove the
-       FD here (the caller may have already close()'d it).
-
-2005-03-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/IPcheck.c: Fix typos in comments and strings to reduce
-       future slumming for credit.
-
-       * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise.
-       * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise.
-       * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise.
-       * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise.
-       * ircd/ircd_features.c, ircd/ircd_log.c: Likewise.
-       * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise.
-       * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise.
-       * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise.
-       * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise.
-       * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise.
-       * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise.
-       * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise.
-       * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise.
-       * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise.
-       * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise.
-       * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise.
-       * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise.
-
-       * ircd/test/test_stub.c: Make exit_client() argument list
-       consistent with that in s_misc.c so doxygen is not confused.
-
-2005-03-20  Michael Poole <mdpoole@troilus.org>
-       (Thanks to Reed Loden for pointing these out.)
-
-       * ircd/channel.c: Fix typos in comments.
-
-       * ircd/m_create.c: Likewise.
-
-       * ircd/m_list.c: Likewise.
-
-       * ircd/m_names.c: Likewise.
-
-       * ircd/numnicks.c: Likewise.
-
-       * ircd/s_bsd.c: Likewise.
-
-2005-03-20  Michael Poole <mdpoole@troilus.org>
-       (Thanks to Reed Loden for pointing these out.)
-
-       * doc/Configure.help: Remove outdated file.
-
-       * doc/exaconf.2: Likewise.
-
-       * doc/snomask.html: Add missing <tr>, SNO_AUTO, SNO_DEBUG, and
-       update SNO_OPERDEFAULT list.
-
-       * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd
-       instead).
-
-       * tools/Makefile.crypt: Remove outdated file.
-
-       * tools/mkpasswd.c: Likewise.
-
-       * tools/transition: Likewise.
-
-2005-03-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (sub1_from_channel): Check apass rather than mode
-       to determine whether an apass is set (MODE_KEY/APASS/UPASS are not
-       set in mode.mode).
-       (send_channel_modes): Use the same change when determining how to
-       send oplevels for channels.
-
-2005-03-19  Michael Poole <mdpoole@troilus.org>
-
-       * include/IPcheck.h (IPcheck_connect_fail): Take a Client
-       parameter instead of irc_in_addr.
-
-       * ircd/IPcheck.c (IPcheck_connect_fail): Likewise.  Assert that
-       the client has been IP-checked.
-       (IPcheck_remote_connect): Assert that the client has not yet been
-       charged for connecting.
-       (IPcheck_connect_succeeded): Assert that the client has been
-       charged for connecting.
-       (IPcheck_disconnect): Likewise.
-
-       * ircd/m_nick.c (m_nick): Pass rejected client to
-       IPcheck_connect_fail() when somebody takes the nick first.
-       (ms_nick): Likewise.
-
-       * ircd/s_serv.c (server_estab): Pass new server to
-       IPcheck_connect_fail().
-
-       * ircd/s_user.c (register_user): When rejecting a user, pass
-       the struct Client to IPcheck_connect_fail().
-
-2005-03-19  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Connect): Remove a buggy comment about leaf
-       directives; refer the reader to the Connect block instead.
-
-       * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;"
-
-2005-03-19  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Operator): Correct the comment explaining
-       hashed passwords.
-
-       * ircd/m_oper.c (oper_password_match): Check correct variable to
-       determine whether the hashed password matched.
-
-2005-03-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask
-       and bit count for "*".
-       (ipmask_check): Make more robust to similar errors.
-
-2005-03-07  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Consistently use a constant in AC_DEFINE().
-
-       * configure: Regenerate.
-
-       * doc/example.conf (Port): Add comment about the mask option.
-       (Port): Fix the vhosted Port example.
-
-       * ircd/ircd_parser.y (clientblock): Correctly initialize the IP
-       address and addrbits for a Client block with no IP mask.
-
-       * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask.
-
-       * ircd/s_auth.c (start_auth_query): Count socket allocation
-       failure as a failed auth check, as .11 does.
-
-       * ircd/s_debug.c (debug_serveropts): Add '6' to server options
-       when compiled with IPv6 support.
-
-2005-02-23  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Explain apass_opmode privilege, pointing out
-       that, unlike previous privs, the default is OFF for global opers.
-
-       * include/client.h (PRIV_APASS_OPMODE): Define new privilege.
-
-       * ircd/channel.c (mode_parse_upass): Only prevent local opers
-       without the apass_opmode privilege from forcing a +U change.
-       (mode_parse_apass): Likewise, for +A.
-
-       * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in
-       the default privileges for global opers.
-
-       * ircd/ircd_lexer.l (apass_opmode): Recognize keyword.
-
-       * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token.
-       (privtype): Fix typo for local_badchan privilege value.
-       Accept apass_opmode token.
-
-2005-02-23  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Fix comment's description of "whox" privilege.
-
-2005-02-21  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check
-       from here, so /whois does not show secret global channels.
-
-       * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use
-       "/list s".
-       (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels.
-
-2005-02-21  Perry Lorier <isomer@undernet.org>
-
-       * ircd/s_stats.c: Hide the hub IP's.  They're kinda important.
-
-2005-02-20  Perry Lorier <isomer@undernet.org>
-
-       * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to
-       parse_error()'s so that ./ircd -k will display them.  Also clarified
-       the warning about oper blocks.
-
-2005-02-20  Perry Lorier <isomer@undernet.org>
-
-       * tools/convert-conf.py: A multitude of changes to deal with parsing
-       mistakes, generate a newer config file, better error handling,
-       being smarter about what config elements you generate etc.
-       
-2005-02-20  Perry Lorier <isomer@undernet.org>
-
-       * ircd/engine_epoll.c: Change a size_t to socklen_t to match
-       getsockopt prototype, so it compiles without warning on amd64
-
-2005-02-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (clientblock): Parse IP address before
-       allocating ConfItem; if the parse fails, generate an error.
-
-       * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6
-       addresses starting with ':'.
-       (RPL_STATSILINE): Likewise.
-       (RPL_STATSOLINE): Add format field for username.
-
-       * ircd/s_stats.c (stats_configured_links): Pass the appropriate
-       argument for the RPL_STATSxLINE changes.
-       Change RPL_STATSILINE to use * instead of <NULL> when IP or host
-       is null.
-
-2005-02-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP
-       address to look up and compare against hash entries.
-
-       * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban.
-
-       * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name.
-       (clienthost): Split hosts that contain '@' into username and host.
-       (clientip): Split IPs that contain '@' into username and IP.
-       (killreason): Add missing ~ to mask off DENY_FLAGS_FILE.
-
-       * ircd/m_silence.c (forward_silences): When we reject a silence,
-       splice it out of the ban list.  Warn the user if he is local.
-
-       * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server
-       connections.
-
-       * ircd/s_stats.c (stats_configured_links): Display correct field
-       when listing CONF_UWORLD entries.
-
-2005-02-09  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in (YACC): Only warn if we cannot get a version number
-       from $YACC.
-
-       * configure: Regenerate.
-
-       * ircd/ircd_res.c (check_resolver_timeout): Try another way to
-       avoid timer_chg() on a non-queued/active timer.
-
-       * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
-       strings like "::127.0.0.1".
-
-       * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
-
-2005-02-02  Michael Poole <mdpoole@troilus.org>
-
-       * Makefile.in (install): Do not create ${prefix}/include since it
-       is no longer used.
-
-       * ircd/Makefile.in (install-*): Remove commented-out code to touch
-       and chown MPATH and RPATH.
-
-       * ircd/gline.c (gline_find): Allow searching for host-based
-       G-lines by plain hostname (not *@host), thus preventing "GLINE
-       test ..." from inserting duplicate G-lines.
-
-       * ircd/motd.c (motd_create): Null out new Motd's hostmask when
-       appropriate, avoiding an uninitialized or stale pointer.
-
-2005-01-26  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_alloc.h (DoMallocZero): Parenthesize macro
-       arguments, fixing operator precedence problems.
-       (DoFree): Make debug version also overwrite p.
-
-       * include/memdebug.h (fda_get_byte_count, fda_get_block_count):
-       Declare functions used outside memdebug.c.
-
-       * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c.
-
-       * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not
-       use these if using the memdebug version.
-
-       * ircd/memdebug.c: #include "send.h" and <string.h> to get
-       declarations for certain functions.
-
-       * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug.
-       (sendto_opmask_butone): Likewise.
-
-2005-01-25  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Fix typos and thinkos in previous commut.
-
-       * configure: Regenerate.
-
-       * doc/example.conf: Change class name in Connect block to be
-       consistent with earlier Class block.
-
-       * ircd/ircd.c (try_connections): Consider Connect blocks with hold
-       time of 0.  Fix Links() vs MaxLinks() comparison to reflect ref
-       count starting at 1.
-
-       * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused
-       variables after use.
-
-2005-01-24  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Make sure that $LEX and $YACC are reasonable and
-       actually run.
-
-       * configure: Regenerate.
-
-       * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to
-       test whether the timer is already pending.
-
-2005-01-23  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf (Kill): Fix typo in realname Kill block
-
-       * include/client.h (infousermodes): Fix typo in comment.
-
-       * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY.
-       (main): Move daemon_init() before event_init() to work around BSD
-       lameness.
-
-2005-01-23  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/test/Makefile.in: Add missing "install" target.  Make
-       compatible with BSD make (which has no $^ and no $(CPPFLAGS) in
-       its default .c.o rule).
-
-2005-01-21  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/engine_kqueue.c: Move <sys/types.h> earlier to fix build on
-       FreeBSD 5.x (which needs it for <sys/event.h>).
-
-       * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with
-       portable equivalents.
-
-       * ircd/ircd_log.c (log_open): Likewise.
-
-       * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so
-       that IPv6 definitions become visible on FreeBSD 5.3.
-
-       * ircd/s_auth.c: Remove apparently unused <sys/file.h> because
-       it fails to compile on FreeBSD 5.3.
-
-2005-01-22  Perry Lorier <isomer@undernet.org>
-
-       * ircd/ircd_parser.y: Fix missing ;
-
-2005-01-19  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in
-       outbound INVITE messages.  On incoming INVITEs, ignore if the
-       timestamp is too recent or if the timestamp is missing and the
-       peer server is in burst.
-
-2005-01-15  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans
-       and silences.  Mention net.rider kick change.
-
-       * doc/example.conf (Class): Add documentation for restart and
-       local_opmode privileges.  Fix name of local_jupe privilege.
-
-       * ircd/ircd_lexer.l: Recognize local_opmode privilege.
-
-2005-01-14  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify
-       CAP comment, mention named /stats, list config heteromorphisms.
-
-       * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L,
-       HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST.
-
-       * ircd/channel.c (mode_parse_apass): Change old mention of +u mode
-       to say +U.
-
-2005-01-13  Michael Poole <mdpoole@troilus.org>
-
-       * RELEASE.NOTES: Update for 2.10.12.
-
-2005-01-08  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (@page zombie): Add synopsis to explain what
-       zombies are supposed to do.
-
-       * doc/example.conf (Features): Transfer recommended LOG features
-       from 2.10.11 example.conf.
-
-2005-01-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (try_connections): Test Connect hold time before
-       updating it (spotted by Kev).
-
-2005-01-03  Michael Poole <mdpoole@troilus.org>
-
-       * Makefile.in: Add ircd/test as a subdirectory.
-
-       * ircd/.cvsignore: Ignore umkpasswd binary.
-
-       * ircd/Makefile.in: Update dependencies.
-
-       * ircd/test/.cvsignore: New file.
-
-       * ircd/test/Makefile.in: Use ${} instead of $().  Add build,
-       depend, distclean targets to integrate with rest of build system.
-
-2005-01-03  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
-       that have an invalid IP address.
-
-       * ircd/ircd.c (try_connections): Update Connect hold time before
-       skipping it, to prevent infinite loops.
-
-2005-01-03  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
-       was a server; fixed to skip servers
-
-2004-12-28  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_bsd.h (VirtualHost): Replace with separate variables
-       for IPv4 and IPv6 virtual hosts.
-
-       * include/uping.h (uping_echo): Remove declaration.
-
-       * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
-       VirtualHost_v6 based on iauth server address family.
-
-       * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
-
-       * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
-       (RESOLVER): Remove definition.
-       (generalresolver): Remove.
-       (generalvhost): Assign address to either VirtualHost_v4 or
-       VirtualHost_v6, depending on format.
-
-       * ircd/ircd_res.c (res_socket): Replace with separate variables
-       for IPv4 and IPv6 resolver sockets.
-       (ResolverAddr): Remove definition.
-       (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
-       (send_res_msg): Select outbound FD based on resolver address type.
-       (res_readreply): Recognize either inbound socket FD.
-
-       * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
-       (os_socket): Require local != NULL.
-
-       * ircd/s_bsd.c (VirtualHost): Replace with separate variables
-       for IPv4 and IPv6 virtual hosts.
-       (connect_inet): Select virtual host based on destination address.
-
-       * ircd/uping.c (UPingFIleDescriptor): Remove.
-       (upingSock): Split into separate IPv4 and IPv6 variables.
-       (uping_echo_callback): Incorporate uping_echo() body here, so the
-       proper socket FD can be used.
-       (uping_init): Attempt to set up both v4 and v6 UPING sockets.
-       (uping_server): Create uping socket with appropriate local address.
-
-       * doc/example.conf (General): Update example config file to
-       reflect removal of Resolver setting and support for separate IPv4
-       and IPv6 VHost settings.
-
-2004-12-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
-       DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
-       unused macros.
-
-       * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
-       ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
-       #include <arpa/inet.h>.
-
-2004-12-28  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
-       (ipmask_parse_ipv4): We already parse the dotted quads from the
-       input string, so use them instead of inet_addr() to populate
-       out->s_addr.
-
-       * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
-       (do_gline): Pass SHOW_IP instead of TRUE as argument to
-       get_client_name().
-
-       * ircd/ircd.c (try_connections): Revise to use fewer temporary
-       variables.
-
-2004-12-28  Michael Poole <mdpoole@troilus.org>
-
-       * include/res.h: Implement irc_in_addr_* as macros.
-
-       * ircd/ircd_res.c: Remove the function bodies.
-
-       * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
-       (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
-       (ircd_aton): Accept IPv6 addresses with all eight segments
-       specified (e.g. 0:0:0:0:0:0:0:0).  Correctly parse addresses
-       with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
-
-       * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
-
-       * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
-       support.  Add test_stub.c and ircd_in_addr_t.c references.
-
-       * configure.in: Generate ircd/test/Makefile as an output file.
-
-       * configure: Update.
-
-2004-12-18  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h: Move unreg, privs, capab and active fields
-       from struct Client to struct Connection since that is how they
-       are really associated.  Adjust macros to match.
-       (SetPriv, ClrPriv): New macros.
-
-       * ircd/client.c (client_set_privs): Exit earlier for remote
-       clients.  Adjust macro use to correspond.
-
-       * ircd/m_server.c (mr_server): Grant all privileges except
-       PRIV_SET to peer servers.
-
-2004-12-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
-       #1087461.
-
-2004-12-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
-       socket's FD is the same after processing as it was before; local
-       clients apparently have s_fd() == -1 after close.
-
-2004-12-18  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c: make absolutely certain register_user() is never
-       called with cli_unreg non-zero; transition set_nick_name() over to
-       the new way of determining whether client is ready for
-       register_user()
-
-       * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
-       understand a given CAP subcommand
-
-       * ircd/parse.c: add "CAP" command
-
-       * ircd/m_user.c (m_user): transition over to new way of
-       determining whether client is ready for register_user()
-
-       * ircd/m_pong.c (mr_pong): transition over to new way of
-       determining whether client is ready for register_user()
-
-       * ircd/m_cap.c: implementation of the IRC capabilities draft
-
-       * ircd/list.c (make_client): initialize cli_unreg element of
-       client structure
-
-       * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
-       functions that were never found because cross-case ordering has
-       not been needed until now
-
-       * ircd/Makefile.in: add m_cap.c to list of .c files
-
-       * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
-       indicate an unknown CAP subcommand
-
-       * include/msg.h: add "CAP" command
-
-       * include/handlers.h: add m_cap() to list of handlers
-
-       * include/client.h: add support for client capabilities; rototill
-       the registration mechanism to dovetail well with the capability
-       system--i.e., allow the capability system to suspend registration
-       if the user issues one of the CAP commands
-
-       * include/capab.h: header file to define client capabilities
-
-2004-12-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.h (apply_ban): Add new flag to indicate whether
-       newban should be free()'d after it is used.
-
-       * ircd/channel.c (apply_ban): Likewise.  Also set BAN_DEL flag
-       when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
-       (mode_parse_ban): Delete buggy shortcut when channel banlist is
-       empty.
-       (mode_process_bans): Always give ownership of ban->banstr to the
-       mode buffer, avoiding a memory leak.
-
-       * ircd/m_silence.c (apply_silence): Pass new parameter to
-       apply_ban.
-
-2004-12-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (sub1_from_channel): Immediately destroy
-       non-Apass channels when oplevels are enabled; otherwise, they can
-       stay opless for a considerable period.
-       (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
-       does not try to free() an invalid pointer.
-
-       * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
-       aconf->host, not aconf->name.
-
-       * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
-       by host here..
-
-       * ircd/s_conf.c (conf_check_server): .. rather than by name here.
-       (attach_conf_uworld): New function to attach CONF_UWORLD items.
-       (rehash): Use attach_conf_uworld() instead of attaching by name.
-
-2004-12-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
-       channels they are not joined.
-
-2004-12-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
-       warning.
-       (ip_registry_canonicalize): New function to convert an IP address
-       into a canonical form for clone checks.
-       (ip_registry_hash): Update to reflect canonical form.
-       (ip_registry_find): Use ip_registry_canonicalize().
-       (ip_registry_check_local, ip_registry_check_remote): Likewise.
-
-       * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
-       sending them to a non-IPv6 server.
-
-2004-02-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
-       +D channel when they hide their hostmask.
-
-2004-12-15  Michael Poole <dmpoole@troilus.org>
-
-       * doc/example.conf: Remove the example Server blocks since they
-       are no longer used (were merged into Connect).
-
-       * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
-
-       * ircd/m_server.c (check_loop_and_lh): Use a different argument to
-       test whether an introduced server is directly connected or not.
-
-2004-12-14  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h (FLAG_IPV6): New value for enum Flag.
-       (IsIPv6, SetIPv6): Accessor macros for it.
-
-       * include/numnicks.h (iptobase64): Add flag indicating whether to
-       use full IPv6 addresses or fake them in an IPv4-compatible way.
-
-       * ircd/numnicks.c (iptobase64): Use the new flag.
-
-       * include/send.h (sendcmdto_flag_serv_butone): New function to
-       send different lines to servers based on flags (like FLAG_IPV6).
-
-       * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
-
-       * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
-       our server flags.
-
-       * ircd/s_serv.c (server_estab): Likewise.  Also make sure we send
-       compatible IP addresses for the new server.
-
-       * ircd/s_user.c (register_user): Only send full IPv6 addresses to
-       links that have FLAG_IPV6 set.
-
-2004-12-13  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Update General block comment to mention
-       new RESOLVER option and to explain IPv6 support.
-
-       * ircd/ircd_lexer.l: Recognize RESOLVER token.
-
-       * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
-       alternative for generalitem.
-
-       * ircd/ircd_res.c: Define global ResolverAddr variable.  If it is
-       valid, use it instead of VirtualHost in restart_resolver().
-
-2004-12-13  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Update configuration to move Client block
-       comment after sample Class blocks, and update entries in it.
-
-       * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
-
-       * ircd/ircd_parser.y: Add ip and username global variables and IP
-       and USERNAME tokens.  Add clientip and clientusername alternatives
-       for clientitem, and update clientblock to correspond.
-
-       * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
-       the request_list before request_list is initialized.
-       (cres_mem): Likewise.
-
-       * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
-       proper address family.
-
-       * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
-       means DNS reply is optional.  If aconf->addrbits >= 0, test it.
-
-       * tools/crypter: Delete.
-
-2004-12-11  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/*.c: use new assert() in ircd_log.h in preference to system
-       assert()
-
-       * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
-       glue so that umkpasswd will successfully compile and link
-
-       * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
-       there are no calls to assert()
-
-       * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
-       from looping should there be an assertion failure somewhere in the
-       logging subsystem
-
-       * include/ircd_log.h: custom implementation of assert() that calls
-       log_write()
-
-2004-11-21  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
-       be done by non-channel-managers, fixing a crash from OPMODE.
-       (mode_parse_apass): Likewise.
-
-2004-11-20  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
-       a channel they are already in, but do not add them again.
-
-2004-11-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/res.h (init_resolver): Delete, and initialize lazily.
-
-       * ircd/ircd.c (main): Do not call init_resolver().
-
-       * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
-       local resolver socket address.
-       (init_resolver): Delete.
-       (make_request): Call restart_resolver() if necessary.
-       (query_name): Use ircrandom() instead of rand().
-
-       * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
-       a file descriptor that indicates the socket family to use.
-       (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
-
-2004-11-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
-       socket from epoll on delete, since the kernel does that for us.
-
-2004-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_server.c (m_server, ms_server): Assign timestamp before
-       it might be used in exit_new_server().
-
-2004-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
-       to reflect the changes since these files' last rebuild.
-
-2004-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_crypt.h (ircd_crypt): This should return char*, not
-       const char*, since it does not own the returned pointer.
-
-       * ircd/ircd_crypt.c (ircd_crypt): Change return type.
-
-       * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
-       field since it is returned but this function must own the buffer.
-
-       * ircd/m_oper.c (oper_password_match): Free the string returned by
-       ircd_crypt().
-
-       * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
-
-2004-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * acinclude.m4: Look for a 64-bit integer type.
-
-       * configure.in: Look for inttypes.h, since some systems have that
-       but not stdint.h (and define 64-bit integers therein).
-
-       * include/client.h: Delete con_sendK, con_receiveK.  Make
-       con_sendB and con_receiveB 64 bits wide.
-
-       * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
-       Convert the other byte counters and the connected time counters to
-       64 bits wide.
-
-       * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
-       HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
-
-       * ircd/packet.c (update_bytes_received): Remove use of
-       cli_receiveK().
-
-       * ircd/s_bsd.c (deliver_it): Likewise.
-       (close_connection): Likewise.
-
-       * ircd/s_misc.c (tstats): Likewise.  Update format strings to use
-       %Lu for 64-bit integer parameters.
-
-       * ircd/s_stats (stats_links): Convert cli_sendK() and
-       cli_receiveK() use shifted versions of the byte counters, and
-       update format strings to use %Lu for 64-bit integer parameters.
-
-2004-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_user.h (add_silence): Delete.
-       (del_silence): Delete.
-
-       * include/struct.h (struct User): Convert silence list to struct Ban.
-
-       * ircd/m_silence.c (apply_silence, forward_silences): New functions.
-       (m_silence): Use forward_silences() instead of add_silence().
-       (ms_silence): Likewise.
-
-       * ircd/s_err.c (replyTable): Update RPL_SILELIST.
-
-       * ircd/s_misc.c (exit_one_client): Update to new silence list type.
-
-       * ircd/s_user.c (is_silenced): Use find_ban() to search for
-       silences.  If one is found, send it plus any silence exceptions.
-       (del_silence): Delete.
-       (add_silence): Delete.
-
-2004-11-07  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h: Remove declarations for undefined functions
-       cancel_mode(), add_token_to_sendbuf(), IsMember().  Delete
-       add_banid(), next_removed_overlapped_ban().  Add BAN_EXCEPTION
-       flag and new functions find_ban(), apply_ban().
-
-       * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
-       LocalChanOperMode): Remove unused variable definitions.
-       (make_nick_user_host): Delete.
-       (add_banid): Delete.
-       (next_removed_overlapped_ban): Delete.
-       (find_ban): New function, which knows about exceptions.
-       (is_banned): Use find_ban() and only work on a struct Membership.
-       (bmatch): New function, which knows about CIDR bans.
-       (apply_ban): New function to replace add_banid().
-       (mode_parse_ban): Use apply_ban().
-
-2004-10-28  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
-       new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
-
-2004-10-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
-       with announcements enabled (do not "announce" to the recipient,
-       and unconditionally send to the recipient).
-
-       * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
-       the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
-
-2004-10-21  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h (Ban): Add fields address, nu_len, addrbits to
-       support netmask-based bans.
-
-       * ircd/channel.c (set_ban_mask): New function to parse a ban as
-       either netmask-based or not.
-       (make_ban): Use set_ban_mask().
-       (make_nick_user_ip): Becomes unused; remove it.
-       (is_banned): Rewrite to match only once against the nick!user part
-       of a ban, and compare addresses if BAN_IPMASK is set.
-       (mode_parse_ban): Use set_ban_mask().
-
-2004-10-21  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_conf.c (attach_iline): Test resolved host names against
-       aconf->host, not the (NULL) aconf->name.
-
-2004-10-19  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h: Move ban flags out of channel flags and
-       rename to reflect this.
-
-       * ircd/channel.c: Update ban constant names.
-
-       * ircd/m_burst.c: Likewise.
-
-2004-10-18  Michael Poole <mdpoole@troilus.org>
-
-       * include/list.h (SLink): Remove ban elements from here...
-
-       * include/channel.h (Ban): And move to the new struct Ban.
-       (Channel): Update banlist field to match.
-       (next_removed_overlapped_ban): Update return type to match.
-       (make_ban, free_ban): New functions.
-
-       * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
-       list types.
-       (free_bans): New variable to hold unused Ban elements.
-       (make_ban, free_ban): New functions.
-       (destruct_channel, add_banid, next_removed_overlapped_ban): Update
-       to use struct Ban.
-       (is_banned, send_channel_modes, send_ban_list): Likewise.
-       (ParseState, mode_parse_ban, mode_process_bans): Likewise.
-       (mode_parse): Likewise.
-
-       * ircd/m_burst.c (ms_burst): Update to use struct Ban.
-
-       * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
-
-       * ircd/s_debug.c (count_memory): Update to use struct Ban.
-
-2004-10-18  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/gline.c (gline_find): unless we're looking for an exact
-       match, we should call match() on hostnames, not ircd_strcmp()
-
-2004-10-17  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_conf.h (ConfItem): Add new field username.  Replace
-       unused field bits with addrbits.
-       (find_conf_exact): Replace user and host arguments with cptr.
-       (find_conf_name, read_tlines, find_restrict): Remove declaration
-       for undefined functions.
-       (conf_parse_userhost): New function.
-
-       * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
-       resolved hostname and IP are matched in one pass now.
-
-       * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
-
-       * ircd/s_conf.c (conf_parse_userhost): New function.
-       (check_limit_and_attach): Use correct ConfItem field to determine
-       maximum connections per IP.
-       (attach_iline): Replace user@host matching with shorter, clearer
-       matching against username and host/IP fields.
-       (find_conf_exact): Likewise.
-
-       * ircd/ircd_parser.y: Replace assignment to aconf->host for
-       CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
-       conf_parse_userhost().  This means CONF_CLIENT ConfItems no longer
-       use the name field or the IP token.  Remove the latter.
-
-       * ircd/ircd_lexer.l: Remove unused token IP.
-
-2004-10-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/crule.c (crule_via): Simplify the lookup for the directly
-       connected server name.
-
-2004-10-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/class.c: Make find_class() return NULL for unknown classes,
-       rather than returning the start of connClassList.
-
-       * ircd/match.c (parse_ipmask): Translate IPv4 masks as
-       IPv4-compatible addresses.
-       (check_ipmask): Fix comparison of IP masks.
-
-       * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
-       uses CIDR style masks in the hostname field of a Motd block.
-
-2004-10-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/numeric.h: Remove the unused RPL_STATMEM and
-       RPL_STATMEMTOT.  Move the RPL_BOUNCE comment to its current
-       value (the former RPL_STATMEM).
-
-       * ircd/s_err.c: Remove format strings for RPL_STATMEM and
-       RPL_STATMEMTOT.
-
-2004-10-16  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_server.c: Look up server configuration by name of our
-       directly connected peer rather than the server being introduced.
-
-2004-10-13  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.h: Delete MODE_LISTED and is_listed().  Replace
-       ListingArgs.chptr with ListingArgs.bucket.  Move declaration of
-       list_next_channels() to..
-
-       * include/hash.h: here, and drop the "nr" argument.
-
-       * ircd/channel.c: Remove redundant scan of local clients for
-       channels being listed.  Delete list_next_channels() function.
-
-       * ircd/hash.c: Add list_next_channels() here, revising to not use
-       MODE_LISTED and to use ListingArgs.bucket instead of chptr.  Also
-       decide when to stop sending RPL_LISTs based on a half-full sendq.
-
-       * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
-
-       * ircd/m_list.c: Delete mention of MODE_LISTED.  Unconditionally
-       call list_next_channels(sptr).
-
-       * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
-
-       * ircd/Makefile.in: Update dependencies (for hash.c).
-
-2004-10-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y: Consistently zero out global variables after
-       they are used (prevents double frees and other problems).
-
-2004-10-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
-       Set, Clr respectively.  Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
-       Delete con_fd (get from con_socket) and con_port.  Move sentalong
-       from send.c to struct Connection, and cli_lasttime and cli_since
-       from struct Client to struct Connection.  Update cli_*() macros to
-       use con_*(cli_connect(cli)).
-
-       * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
-       FlagClr(), PrivHas() with FlagHas().
-
-       * ircd/ircd_parser.y: Likewise.
-
-       * ircd/list.c: Remove assignment to cli_local() since it is now a
-       calculated value.
-
-       * ircd/s_bsd.c: Remove uses of cli_port().
-
-       * ircd/s_conf.c: Remove uses of ClearAccess().
-
-       * ircd/send.c: Delete sentalong array and replace with references
-       to con_sentalong().
-
-2004-10-12  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Update example config to reflect the changes
-       made in the remainder of this patch.
-
-       * include/list.h: Make make_conf() take a type argument.
-
-       * include/s_conf.h: Delete CONF_LEAF and CONF_HUB.  Add "maximum"
-       and "hub_limit" to ConfItem to compensate.
-
-       * ircd/ircd_lexer.l: Recognize MAXHOPS token.
-
-       * ircd/ircd_parser.y: Get rid of aconf global variable and add
-       hub_limit global variable.  Add MAXHOPS token, and productions
-       inside connectblock to recognize it and hub masks.  Allow maxlinks
-       field in a Client block, rather than overloading password field.
-       Convert serverblock to uworldblock and remove extraneous fields.
-
-       * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
-       calculate LHcptr and active_lh_line.  Merge some duplicated code
-       so handling active_lh_line cases is clearer.
-
-       * ircd/s_conf.c: Make make_conf() take a type argument.  Delete
-       CONF_LEAF and CONF_HUB.  Do not overwrite server name with what
-       is specified in the config file.
-
-       * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
-       RPL_STATSHLINE.  Remove useless parameters and format fields from
-       RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
-       RPL_STATSULINE.
-
-       * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
-
-       * ircd/s_stats.c: Get rid of report_array and make
-       stats_configured_links() directly use RPL_STATSxLINE (adding the
-       new fields for Server and Client blocks).  Remove /stats h, since
-       that has no meaning.
-
-2004-10-12  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
-       default rather than by listing which should be wiped out.
-
-2004-10-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_server.c: Forward port checks for leaf and hub config
-       rules, and reorganize mr_server() and ms_server() by moving out
-       common code.  Add doxygen comments for the file.
-
-2004-10-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/hash.c: Fix thinko in hash function: It is not indexed
-       simply by character value, so we cannot just remap the values
-       by case.
-
-2004-10-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/hash.c: Replace the old hash function with one based on
-       randomized CRC-32.  The new one avoids a big table from the old
-       function.
-
-2004-10-05  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/random.c: Convert to use ircd_md5 interface and hopefully
-       keep more internal random state.
-
-2004-10-05  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
-       ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
-       prefixes.
-
-2004-10-05  Michael Poole <mdpoole@troilus.org>
-
-       * adns, lib/adns: Remove unused adns library.
-
-2004-10-05  Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
-
-       * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
-       format, and add new comments where needed.
-
-       * Doxyfile: New file to tell Doxygen how to run.
-
-2004-09-21  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
-       programmer, generate magic numbers.
-       (AuthIncompleteList): Remove.
-       (AuthPollList): Remove.
-
-2004-09-19  Michael Poole <mdpoole@troilus.org>
-
-       * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
-       acconfig.h.
-
-       * acconfig.h: Remove since it is now redundant.
-
-       * aclocal.m4, config.h.in, configure: Regenerate.
-
-2004-09-19  hikari <hikari@undernet.org>
-
-       * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison 
-       aren't found as they're essential for compilation.  Regenerated files with 
-       autreconf.
-               
-2004-09-18  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Add NETWORK feature example.  Fix typos in
-       eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
-
-       * include.class.h: Make max_links and ref_count unsigned ints.
-       Make ping_freq and conn_freq unsigned short. (No more negative
-       numbers in /stats y.)
-
-       * ircd/ircd.c: Report configuration file name for "ircd -k".
-
-2004-09-18  hikari <hikari@undernet.org>
-
-       * ircd/Makefile.in: Fixed a missing internal build dependency.
-       
-2004-09-16  Michael Poole <mdpoole@troilus.org>
-
-       * INSTALL: Fix name of example.conf and mention its installed
-       location.
-
-       * include/supported.h (FEATURESVALUES2): Fix a reference to
-       channel mode +u that escaped earlier rename attempts.
-
-       * ircd/ircd_auth.c (iauth_connect): Assign port number after
-       zeroing out the destination address.
-       Add some additional debug statements to help follow operations.
-
-       * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
-
-2004-09-11  Bas Steendijk <steendijk@xs4all.nl>
-
-       * include/channel.h, include/supported.h, ircd/channel.c,
-       ircd/s_err.c: Use +U instead of +u for user keys.
-
-2004-09-13  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Remove sample VIRTUAL_HOST setting.
-
-       * doc/readme.features: Remove VIRTUAL_HOST documentation, and
-       update NODNS documentation to match current behavior.
-
-       * include/s_conf.h: Remove now-unused vhost_address field and
-       set_virtual_host() function.
-
-       * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
-       Remove VIRTUAL_HOST.
-
-       * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
-       if we do not have a more specific alternate.
-
-       * ircd/ircd_parser.y: Check for sanity in General blocks (from old
-       conf_add_local()) and assign vhost directly to VirtualHost.
-
-       * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
-       value will be either != 0 or != 0xffff.
-
-       * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
-       local addresses are specified as IPv4 addresses.
-
-       * ircd/s_conf.c: Remove unused conf_add_local() and
-       set_virtual_host().
-
-2004-09-13  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/listener.c (add_listener): Consolidate duplicated code, and
-       make sure listener->server is set before calling inetport() on it.
-
-2004-09-12  Michael Poole <mdpoole@troilus.org>
-
-       * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
-       services (not normal opers) force a change of +A or +u.
-
-2004-09-11  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_stats.h: Add sd_name to struct StatDesc.  Stop
-       publishing the statsinfo and statsmap arrays; replace them with
-       stats_find().  Change argument list of StatFunc() to work with
-       names.
-
-       * ircd/m_stats.c: Use stats_find() instead of statsmap[].  Use the
-       full argument instead of just the first character in reports.
-
-       * ircd/s_stats.c: Adapt individual stats handler functions to new
-       argument list.  Add long names to statsinfo[].  Add new functions
-       stats_cmp(), stats_search(), stats_find().  Sort statsinfo[] in
-       stats_init().
-
-       * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
-       a single character.
-
-       * ircd/s_user.c: Send an error to the user when a message loses
-       its target in transit.
-
-       * include/class.h include/gline.h include/ircd_features.h
-       include/listener.h include/motd.h include/msgq.h include/res.h
-       include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
-       ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
-       ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
-       ircd/userload.c: Adjust stats handlers to new argument list.
-
-2004-09-11  Michael Poole <mdpoole@troilus.org>
-
-       * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
-       replace with RPL_TRACEEND.
-
-       * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
-       do_trace().  Implement RPL_TRACEEND, per RFE#830291.
-
-2003-06-20  Alexander Maassen <outsider@key2peace.org>
-
-       * ircd/m_topic.c : Don't allow banned users to set a topic in a
-       channel.
-
-2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
-       comment in header.
-
-       * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
-       header comment.
-
-       * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
-       ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
-       ircd/m_version.c: Remove "template" moniker from comments.
-
-       * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
-       channel prefix list.
-
-2004-09-11  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Add examples for FEAT_HIS_* features.
-
-2003-06-08 Matthias Crauwels <ultimate_@wol.be>
-       [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
-
-       * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
-
-       * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
-
-       * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
-
-       * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
-
-       * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
-
-2004-09-11  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_relay.c (server_relay_channel_message,
-       server_relay_channel_notice): Do not allow other servers to send
-       or relay to local channels.
-
-       * ircd/m_wallchops (ms_wallchops): Likewise.
-
-       * ircd/m_wallvoices (ms_wallvoices): Likewise.
-
-2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
-
-       * ircd/channel.c: removing limits shouldn't gobble an argument;
-       this was a subtle interaction issue with modebuf...fixed by adding
-       MODE_LIMIT to modebuf_flush_int() and short-circuiting
-       modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
-       removal case.  Note that this is not proof against the sequence,
-       "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
-       modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
-       (Bug #916138)
-
-2004-09-11  Michael Poole <mdpoole@troilus.org>
-
-       * include/supported.h: Kev pointed out I misinterpreted the
-       meaning of CHANMODES; fix this.  Also define CHANNELLEN and
-       STATUSMSG from the ISUPPORT draft.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
-       when oplevels are enabled.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (send_channel_modes): Only send oplevels for
-       channels that actually use them -- for -A channels, send chanops
-       as :o even if OPLEVELS is enabled.
-
-       * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
-
-       * ircd/numnicks.c (base64toip): Fill in the right number of 0
-       words when we see _ in a base64-encoded IPv6 address.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c: Add -k as a chkconf-like option to exit after
-       reading the configuration file.
-
-       * ircd/chkconf.c: Remove as unused.
-
-       * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Remove examples for unused features (TIMESEC,
-       CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
-
-       * doc/readme.features: Remove documentation for unused features
-       (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
-       HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
-       add documentation for ANNOUNCE_INVITES.
-
-       * include/ircd_features.h: Remove unused features (TIMESEC,
-       CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
-
-       * include/ircd_features.c: Likewise.
-
-       * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
-       FEAT_IRCD_RES_TIMEOUT where appropriate.
-
-       * ircd/s_debug.c: Do not display setting of unused (and now
-       non-existent) FEAT_CRYPT_OPER_PASSWORD.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
-       to use the correct address family and IP offset.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * include/s_conf.h (struct ConfItem): Add origin and origin_name
-       fields.
-
-       * ircd/ircd_parser.y: Add new global variable "origin."  Add a new
-       "connectionvhost" production that accepts vhost = "IP" inside a
-       Connect block and assigns the IP to origin_name.
-
-       * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
-       as the local address.  Otherwise, fall back to the old logic (if
-       VIRTUAL_HOST="TRUE", use the virtual host setting).
-
-       * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
-       origin_name, try to parse it as an IP address.
-
-2004-04-17  Isomer <isomer@undernet.org>
-       * ircd/parse.c: Don't rate limit /gline messages
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y: Replace references to yylval.whatever with
-       references to the appropriate term.  This fixes bugs like
-       "1 hour 30 minutes" being misrecognized as 30 seconds.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_features.c (features): Change default values for
-       SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
-       need not specify them in ircd.conf.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (serverblock): Server blocks should default
-       to CONF_LEAF status.
-
-       * doc/example.conf: Update example to reflect this.
-
-2004-09-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/parse.c (msg_tree_parse): Reject commands that contain
-       non-alphabetic characters.
-
-2004-09-09  Michael Poole <mdpoole@troilus.org>
-
-       * config.h.in: Remove duplicated and unused macro definitions.
-
-2004-08-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/client.h: Properly parenthesize "flag" argument to
-       FLAGSET_INDEX() and FLAGSET_MASK() macros.
-
-2004-08-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (send_channel_modes): If oplevels are disabled,
-       send 'o' for chanops instead of the member's oplevel.
-
-2004-08-22  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
-       instead of memcmp().  (Fixes IPv4 servers linking to an IPv6
-       server.)
-
-2004-08-22  Alex Badea  <decampos@users.sourceforge.net>
-
-       * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
-
-2004-08-19  Michael Poole <mdpoole@troilus.org>
-
-       * include/res.h: Remove unused function gethost_byname_type().
-
-       * ircd/ircd_res.c: Likewise, and clean up some small functions
-       only used once (remove_dlink(), timeout_resolver()).  Use rand()
-       for random request IDs instead of the deprecated *rand48().  Make
-       resolver timeout event fire only when needed instead of once a
-       second.
-
-2004-08-17  Michael Poole <mdpoole@troilus.org>
-
-       IPv6 support, with lots of code and design borrowed from a patch
-       by Alex Badea.
-
-       * config.h.in: Add place to #define IPV6 support.
-
-       * configure.in: Check for struct sockaddr_in6, and use that as
-       the default choice for IPv6 support.
-
-       * configure: Regenerate.
-
-       * include/IPcheck.h, include/client.h, include/gline.h,
-       include/ircd_string.h, include/listener.h, include/match.h,
-       include/res.h, include/s_bsd.h: Convert from struct in_addr (from
-       <netinet/in.h>) to struct irc_in_addr (from "res.h").
-
-       * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
-       from struct sockaddr_in (from <netinet/in.h>) to struct
-       irc_sockaddr (from "res.h").  Add new functions os_socket(),
-       os_accept(), os_sendto_nonb() to help abstract away actual
-       sockaddr types.
-
-       * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
-       characters valid in IPv6 addresses.
-
-       * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
-       and base64toip() to convert from base64 to struct irc_in_addr.
-
-       * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
-       ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
-       ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
-       irc_in_addr instead of unsigned int or struct in_addr.
-
-       * ircd/gline.c: Use new more-generic ipmask functions.
-
-       * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
-       fields.
-
-       * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
-       instead of irc_ssaddr and irc_getaddrinfo().
-
-       * ircd/ircd_string.c: Implement new functions: IPv6-capable
-       ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
-
-       * ircd/match.c: Delete IPv4-only matchcompIP().  Replace with
-       IPv6-capable ipmask_parse() and ipmask_check().
-
-       * ircd/numnicks.c: Implement new functions: iptobase64() and
-       base64toip().
-
-       * ircd/os_generic: Convert external parameters to be struct
-       irc_addrinfo.  When using IPv6 support, sockaddr_in6 is native.
-       Implement new functions os_sendto_nonb(), os_socket() and
-       os_accept().
-
-       * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
-       ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
-       ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
-       irc_sockaddr instead of separate in_addr and port fields and new
-       OS support functions.
-
-       * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
-       ircd/ircd_getnameinfo.c: Remove, since these functions are no
-       longer used.
-
-       * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
-       ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
-       since these are unused and not compatible with IPv6 support.
-
-       * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
-       Regenerate dependencies.
-
-2004-08-17  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
-       states and be case-insensitive again.
-
-2004-08-15  Michael Poole <mdpoole@troilus.org>
-
-       * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
-       former is from C99 (and the latter is absent on Solaris).
-
-       * configure.in: Remove check for inttypes.h (which is a C99 format
-       string header); replace with check for stdint.h.  Add checks for
-       sys/param.h and sys/socket.h.  Check for socklen_t being defined
-       (OS X does not set it).  Run program tests for lex and yacc, and
-       use them rather than assuming flex and bison.  Remove OSDEP_C and
-       mention to adns.  Remove check for res_mkquery().
-
-       * config.h.in: Update u_intNN_t #undef lines.  Add #undef
-       socklen_t so configure test can set it.
-
-       * configure: Regenerate.
-
-       * include/ircd_addrinfo.h: #include headers needed for netdb.h and
-       to define struct addrinfo and uintNN_t.
-
-       * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
-
-       * include/res.h: #include "ircd_addrinfo.h" to get proper type
-       definitions.  #define INADDR_NONE if it is not defined (as on
-       Solaris).
-
-       * ircd/Makefile.in: Replace LEX and YACC definitions.  Remove
-       OSDEP_C and OSDEP_SRC; always compile os_generic.c.  Remove adns
-       directory from CPPFLAGS.  Regenerate dependencies.
-
-       * ircd/client.c: Return when no propagation set for oper, to
-       squash warning about use of "defaults" before it is set.
-
-       * ircd/engine_epoll.c: #include correct C99 integer header.
-
-       * ircd/engine_poll.c: Last argument to getsockopt() should be of
-       socklen_t, not size_t; fix.
-
-       * ircd/engine_select.c: Squash warning about bzero().
-
-       * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
-       with uint32_t.  We need <stdint.h> for that, so include it.
-
-       * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
-       uint32_t.
-
-       * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
-       There is no portable way to do %option, so remove that.  lex on
-       Solaris needs several of its internal tables to be bigger, so
-       increase those sizes.
-
-       * ircd/ircd_parser.y: Remove the second declarations of two
-       tokens, since standard yacc warns about changing precedence.
-
-       * ircd/os_generic.c: Make this compile on common OSes (Linux,
-       Solaris, OS X, FreeBSD, OpenBSD).
-
-       * ircd/table_gen.c: Make arguments to isprint() all unsigned char
-       to squash warnings on Solaris that array index is "char."
-
-       * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
-       portable, and replace basename() with an equivalent.
-
-       * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
-
-2004-07-27  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_burst.c: Add new netride_modes() function to check
-       which modes could be used in a net.ride.  Use this instead
-       of the old check for just +i or +k.
-       (Based on patches by beware and pomac.)
-
-2004-07-25  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y: Remove redundant semicolon; it causes
-       errors on some versions of yacc.
-
-2004-07-21  Michael Poole <mdpoole@troilus.org>
-
-       * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
-       ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
-
-2004-07-21  Michael Poole <mdpoole@troilus.org>
-
-       New DNS resolver code, courtesy of Dianora and the rest of the
-       Hybrid team.  (Bugs are of course my fault.)
-
-       * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
-       libresolv from the build process.  Update dependencies.
-
-       * configure: Regenerate.
-
-       * include/client.h: Change connection's DNS reply type.
-
-       * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
-
-       * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
-       RPL_STATSALINE and /stats a to list DNS servers.
-
-       * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
-       ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
-       ircd/ircd_reslib.c: New resolver files.
-
-       * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
-       Update to new resolver callback interface and to only deal with
-       one IP and one name per DNS reply.
-
-       * ircd/parse.c: Remove /DNS command, since new resolver does not
-       track those statistics.
-
-2004-07-20  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.features: Change references to O:, Y:, etc lines into
-       references to the appropriate block types.
-
-2004-07-01  Michael Poole <mdpoole@troilus.org>
-
-       * include/fileio.h: Elaborate on "works for any file descriptor."
-
-       * include/iauth.h: Remove unused file.
-
-2004-07-01  Michael Poole <mdpoole@troilus.org>
-
-       * include/map.h, ircd/map.c: Remove unused code.
-
-       * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
-       map.h and a call to map_update().
-
-       * ircd/Makefile.in: Remove map.c and regenerate dependencies.
-
-       * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
-       for the new config parser.
-
-       * ircd/match.c: Remove pointless pointer dereference (Reed points
-       out that this generates a warning with old gcc).
-
-       * ircd/s_user.c: Display connection class in CONNEXIT connection
-       notice as a string rather than an integer.
-
-       * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
-       lines (falsely) identifying ringlog as related to IRC; the files
-       are general purpose.
-
-       * configure.in, include/ircd_snprintf.h: Add checks for
-       va_copy()-like alternatives and use them if va_copy() is missing.
-
-       * configure, config.h.in: Regenerate.
-
-2004-02-01  beware <steendijk@xs4all.nl>
-
-       * ircd/channel.c: Check bans that look like IP bans against user's
-       hostname just in case they have a host like 1234.domain.tld.
-
-2003-12-18  Timothy Grant Vogelsang <net@astrolink.org>
-
-       * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
-
-2004-04-02  Gavin Grieve <hektik@dimebox.net>
-
-       * ircd/ircd_parser.y: Fix rehash warnings for servername and
-       numeric so they only warn if changed in the config file.
-
-2004-06-30  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
-       files.
-
-       * doc/example.conf: Illustrate IAUTH configuration.
-
-       * include/client.h: Add fields to record IAUTH status.
-
-       * ircd/Makefile.in: Add ircd_auth.c to Makefile.
-
-       * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
-
-       * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
-       so that an obsolete connection can be abandoned.
-
-       * ircd/s_misc.c: Report client exits via IAUTH.
-
-       * ircd/s_user.c: If IAUTH is active and a connecting user has not
-       been checked against it, interrogate the IAUTH server.
-
-2004-06-25  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Check for crypt.h as well.
-
-       * configure: Regenerate.
-
-       * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
-       affect the first includes of system headers.  Include crypt.h if
-       it is available.
-
-       * ircd/umkpasswd.c: Quash a gcc warning.
-       
-2004-06-23  Michael Poole <mdpoole@troilus.org>
-
-       * doc/Authors: Add contributors to ircu2.10.11 and myself.
-
-       * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
-
-       * configure.in: Add missing check for inttypes.h; remove obsolete
-       display of Head-in-sand, add display of epoll() engine.
-
-       * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
-       to use SourceForge's CVS server, from the u2.10.11 branch.
-
-2003-11-09 beware <steendijk@xs4all.nl>
-
-        * ircd/s_user.c: move assigning a numeric to a local client from
-       when nick is set, to when connection becomes client, to not waste
-       numerics.
-
-2004-06-08  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/parse.c: don't let rank-and-file users escape HIS
-       limitations with /jupe...
-
-2004-06-18  Alex Badea  <decampos@users.sourceforge.net>
-
-       * ircd/gline.c (gline_lookup): only return a gline if it's
-       active
-
-       * ircd/s_conf.c (find_kill): don't check for active gline,
-       since gline_lookup does now
-
-2002-11-11  hikari <shadow@undernet.org>
-       * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and 
-       modularise :P
-
-       * ircd/ircd_xopen.c: removed, superseded by new crypto system.
-
-       * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
-       wrote ircd_crypt_mech_register() function, various other bits 
-       designed to create a near-pluggable crypto system for ircu.  currently
-       this code also loads the various mechanisms i've written code for.
-
-       * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from 
-       elsewhere, manipulated to suit ircu, returns a salted MD5 password.
-
-       * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
-       generate a crypted password using the systems native crypt() function.
-
-       * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
-       only be used for testing purposes.
-
-       * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
-       elsewhere, ircuified.
-
-       * ircd/umkpasswd.c: mkpasswd program for ircu.
-
-       * include/ircd_xopen.h: removed, superseded by new crypto system.
-
-       * include/ircd_crypt.h: external definitions for the new ircd_crypt()
-       function and definition of the ircd_crypt_mech structure for containing
-       crypto mechanism data.
-
-       * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
-       mechanism.
-
-       * include/ircd_crypt_native.h: sundary definitions for the native 
-       crypt() mechanism.
-
-       * include/ircd_crypt_plain.h: sundary definitions for the plain text
-       mechanism.
-
-       * include/umkpasswd.h: fluff for umkpasswd.
-
-2003-03-11  Landon Fuller (landonf) <landonf@sf.net>
-
-       * configure.in: allow ircu to build on OS X.
-
-2004-05-24  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_invite.c (m_invite): Include channel name in invitation
-       announcements.
-       (ms_invite): Likewise, and also fix a use-before-assignment bug in
-       them.
-
-2004-05-18  Michael Poole <mdpoole@troilus.org>
-
-       Announce invitations to other channel operators.
-
-       * include/ircd_features.h, ircd/ircd_features.c
-       (ANNOUNCE_INVITES): Add new boolean feature, default off.
-
-       * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
-       reply.
-
-       * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
-       Add 'skip' parameter that is needed elsewhere.
-       (sendcmdto_channel_servers_butone): New function.
-
-       * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
-       ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
-
-       * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
-       the INVITE message to all interested servers, and send a numeric
-       to all local chanops.
-
-2004-05-18  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/res_adns.c (res_ourserver): Remove unused function.
-       (validate_name): Likewise.
-
-2004-05-17  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
-       Rip out feature settings related to oper privileges.
-
-       * include/client.h: Comment a few unexplained privileges.
-
-       * ircd/ircd_lexer.l: Rename privilege keywords to match their
-       names in code and /PRIVS output.  Add support for two "new"
-       privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
-
-       * include/class.h, ircd/client.c, ircd/ircd_parser.y,
-       ircd/m_oper.c: Replace the removed feature settings with
-       per-connection class operator privileges.
-
-       * doc/example.conf: Document the change.
-
-       * ircd/ircd_parser.y (portblock): Fix slight memory leak.
-
-2004-05-16  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Make this show the new NICKLEN default.
-
-2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
-       to 12
-
-2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c: process account creation timestamp if present in
-       user mode portion of a N protocol message; add account creation
-       timestamp to outgoing N protocol messages if that timestamp is
-       non-zero
-
-       * ircd/m_account.c: process account creation timestamp if present
-       in AC protocol message
-
-       * include/struct.h: add account creation timestamp
-
-2004-05-16  Michael Poole <mdpoole@troilus.org>
-
-       * doc/example.conf: Document operator privilege settings.
-
-2004-05-16  Michael Poole <mdpoole@troilus.org>
-
-       Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
-
-       * ircd/ircd_parser.y (invert): New variable.
-       (operlocal): Remove production.
-       (operpriv): Use "invert" variable.
-       (privtype): Add LOCAL alternative production.
-
-       * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
-       with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
-
-       * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
-       Likewise.
-
-       * ircd/s_stats.c (report_array, statsinfo): Likewise.
-
-       * ircd/s_user.c (set_user_mode): Likewise.
-
-2004-05-15  Michael Poole <mdpoole@troilus.org>
-
-       * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
-       patches obsoleted by F: lines.
-
-       * patches/diffs/topicburst.diff: Remove patch that was integrated
-       into the main code.
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-11-05 -MDP]
-
-       * ircd/m_whois.c: On remote whois, show +s local channels with a *
-       prefix to opers.
-
-2004-05-15  Michael Poole <mdpoole@troilus.org>
-
-       * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
-       of gline-related fixes from 2.10.11.  Things that work are due to
-       Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
-       to figure out who did what.  Any mistakes are mine.
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-11-05 -MDP]
-
-       * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
-       messages (so you can match EXIT's to CONN's)
-
-2004-05-15  Reed Loden <reed@reedloden.com>
-
-       [Original ChangeLog date: 2003-05-01 -MDP]
-
-       * ircd/s_err.c: Added network to text and edited 001 a bit.
-
-       * ircd/s_user.c: Send network with 001.
-
-2004-05-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (add_target): Move free target invite check...
-
-       * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
-       behavior.
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-11-23 -MDP]
-
-       * ircd/s_user.c: Don't credit users with an extra attempt if they
-       are klined/glined, throttle them!
-
-2004-05-15  Jeekay <jeekay@netgamers.org>
-
-       [Original ChangeLog date: 2003-04-24 -MDP]
-
-       * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
-
-2004-05-15  splidge <splidge@quakenet.org>
-
-       [Original ChangeLog date: 2003-09-03 -MDP]
-
-       * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
-       channels where the user is a zombie.
-
-2004-05-15  beware <steendijk@xs4all.nl>
-
-       [Original ChangeLog date: 2003-10-25 -MDP]
-       
-        * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
-       cpu hog bug
-
-2004-05-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
-       2.10.11 does.  Show ident and IP for clients being killed by new
-       G-lines and K-lines.
-
-2004-05-15  hikari <shadow@undernet.org>
-
-       [Original ChangeLog date: 2003-06-27 -MDP]
-       
-       * ircd/ircd.c: After thought, update the next check time based on
-       when an unregistered client should expire.
-
-2004-05-15   hikari <shadow@undernet.org>
-
-       [Original ChangeLog date: 2003-06-22 -MDP]
-
-       * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
-       clients not being able to connect anymore.
-
-2004-05-15  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (can_join): Revert to using IsInvited() rather
-       than walking the list directly.
-       (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
-       use feature_bool(FEAT_HIS_SNOTICES) instead.
-
-2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
-
-       [Original ChangeLog date: 2004-01-31 -MDP]
-
-       * ircd/channel.c (mode_parse_key): don't allow , in keys!
-
-2003-04-12  David Mansell (splidge) <splidge@sf.net>
-
-       [Original ChangeLog date: 2003-04-14 -MDP]
-
-       * ircd/channel.c: When keys and limits conflict on burst, the key
-       which is first alphabetically or the limit which is lower will be 
-       used by both servers. This matches pre-2.10.11 behaviour.  
-       Closes: (#713930)
-
-2004-05-15  David Mansell <splidge@quakenet.org>
-
-       [Original ChangeLog date: 2002-12-28 -MDP]
-
-       * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
-       set, don't allow -l with negative parameter (or unsigned >2^31).
-2004-05-15  David Mansell <splidge@quakenet.org>
-
-       [Original ChangeLog date: 2002-12-31 -MDP]
-
-       * ircd/m_burst.c (ms_burst): when kicking net riders, clear
-       invites too.
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-11-04 -MDP]
-
-       * ircd/s_serv.c: Burst glines/jupes early
-
-2004-05-15  volta <volta2@gmx.de>
-
-       [Original ChangeLog date: 2003-04-26 -MDP]
-
-         * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
-         allows users to see their own ip & hostname. (Should solve
-         all problems with dcc)
-
-2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
-
-       [Original ChangeLog date: 2003-06-13 -MDP]
-
-       * ircd/m_settime.c: it's supposed to be %ld, not %l
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2004-03-20 -MDP]
-
-       * ircd/m_invite.c: Disallow invites to non existant channels
-
-2004-05-15  David Mansell <splidge@quakenet.org>
-
-       [Original ChangeLog date: 2003-04-26 -MDP]
-
-       * ircd/m_invite.c: let +k users invite into channels they aren't on.
-
-2004-05-15  hikari <shadow@undernet.org>
-
-       [Original ChangeLog date: 2003-07-13 -MDP]
-       
-       * ircd/IPcheck.c: Fixed (another) overflow problem in
-       ip_registry_check_local()
-
-       [Original ChangeLog date: 2003-06-29 -MDP]
-
-       * ircd/IPcheck.c: Fixed overflow problem in
-       ip_registry_connect_fail()
-
-2004-05-15 Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-05-02 -MDP]
-       
-       * ircd/IPcheck.c: Added assert()'s to check for underflow
-
-2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
-
-       [Original ChangeLog date: 2003-11-22 -MDP]
-
-       * tools/wrapper.c: commit uid on chroot fix from ubra
-
-       * ircd/version.c.SH: fix generation generation
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-11-23 -MDP]
-       
-       * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
-       to off.  if an admin is smart enough to understand these features
-       they can enable them manually.
-
-2004-05-15  splidge  <splidge@quakenet.org>
-
-       [Original ChangeLog date: 2003-03-26 -MDP]
-
-       * ircd/include/ircd_features.h, include/ircd_osdep.h,
-         ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, 
-         ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
-         ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be 
-         altered via F: lines
-
-2004-05-15  Isomer <isomer@undernet.org>
-
-       [Original ChangeLog date: 2003-11-18 -MDP]
-
-       * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
-       the preregistration subsystem allowing customisation of timers,
-       make the dns resolver stats oper only, and make it much more clear
-       what all the numbers are.
-
-2004-05-15  Spike <spike@undernet.org>
-
-       [Original ChangeLog date: 2003-11-23 -MDP]
-
-       * ircd/IPcheck.c: Make IPcheck constants configurable
-
-2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
-
-       [Original ChangeLog date: 2003-11-22 -MDP]
-
-       * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
-       the maximum allowed length (NICKLEN) or the allowed nickname
-       length specified as the NICKLEN feature
-
-       * ircd/ircd_features.c: declare NICKLEN and set its default value
-       to 9
-
-       * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
-       rearranging...
-
-       * include/ircd_features.h: add NICKLEN feature
-
-       * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
-
-       * doc/readme.features: document new NICKLEN feature
-
-       * doc/example.conf: list new NICKLEN F-line
-
-2004-05-14  Matthias Crauwels <ultimate_@wol.be>
-
-       [Original ChangeLog date: 2003-06-08 -MDP]
-       
-       * ircd/gline.c: fixed the counting bug in gline_memory_count
-       * ircd/jupe.c: fixed the counting bug in jupe_memory_count
-
-2004-05-14  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_mode.c (ms_mode): Do not always try to call
-       set_user_mode() when parv[1] is a channel name.
-
-2004-05-10  Michael Poole <mdpoole@troilus.org>
-
-       Implement a per-connection-class default usermode option.
-
-       * doc/example.conf: Illustrate how to use the option.
-
-       * include/class.h (struct ConnectionClass): New "default_umode"
-       field.
-       (ConfUmode): New macro.
-
-       * include/client.h (client_get_default_umode): New function.
-
-       * ircd/client.c (client_get_default_umode): Implement it.
-
-       * ircd/ircd_lexer.l (usermode): New token.
-
-       * ircd/ircd_parser.y (classblock, etc): New syntax.
-
-       * ircd/s_user.c (register_user): Set default user modes for user.
-       This sends the new mode to the user, so the explicit send later
-       is no longer necessary.
-
-2004-05-10  Michael Poole <mdpoole@troilus.org>
-
-       Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
-       patch set.
-
-       * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
-
-       * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
-       also send a TOPIC to the peer.
-
-       * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
-       feature, defaulting to FALSE.
-
-       * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
-       and allow F:HIS_BANWHO to hide the originator of the topic.
-       (ms_topic): Parse optional timestamp arguments to TOPIC, and use
-       them to decide whether to ignore the topic.
-
-2004-05-10  Michael Poole <mdpoole@troilus.org>
-
-       Forward port of delayed-join.patch from Quakenet's "Asuka" patch
-       set (which was a port of code I wrote for the other ircu).
-
-       * include/channel.h (CHFL_DELAYED): New membership flag.
-       (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
-       (infochanmodes): Add +D to list of supported channel modes.
-       (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
-       (member_can_send_to_channel, client_can_send_to_channel): Add
-       "reveal" parameter to indicate whether a request should cause
-       a join-delayed user to become visible.
-       (RevealDelayedJoin, CheckDelayedJoins): New functions.
-
-       * include/numeric.h (RPL_DELNAMREPLY): New numeric.
-       
-       * include/s_user.h (NAMES_DEL): New flag for do_names().
-
-       * include/supported.h (FEATURESVALUES2): Add +D to list of
-       supported channel modes.
-
-       * ircd/channel.c (remove_member_from_channel,
-       member_can_send_to_channel, client_can_send_to_channel,
-       joinbuf_join): Handle join-delayed users.
-       (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
-       modebuf_extract, mode_process_clients, mode_parse_mode,
-       mode_parse): Handle delayed-join channels.
-       (RevealDelayedJoin, CheckDelayedJoins): New functions.
-
-       * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
-       server_relay_channel_message, server_relay_channel_notice): Add
-       argument for "reveal" parameter to client_can_send_to_channel().
-
-       * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
-
-       * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
-
-       * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
-       channel with JOIN 0.
-
-       * ircd/m_kick.c (m_kick): For join-delayed members, only send the
-       KICK to the kicker and kickee.  Then check whether +d can be
-       removed.
-
-       * ircd/m_names.c (do_names): Show join-delayed users if and only
-       if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
-       RPL_DELNAMREPLY instead of RPL_NAMREPLY.
-       (m_names): If NAMES -D, pass NAMES_DEL to do_names().
-
-       * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
-       member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
-       the user is join-delayed.
-
-       * ircd/m_quit.c (m_quit): Handle join-delayed users and new
-       argument for member_can_send_to_channel().
-
-       * ircd/m_topic.c (do_settopic): If a join-delayed channel member
-       changes the topic, reveal the member.
-
-       * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
-       "reveal" parameter to client_can_send_to_channel().
-
-       * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
-
-       * ircd/m_who.c (m_who): Skip join-delayed members where we skip
-       zombies.
-
-       * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
-       users.  Use slightly more efficient macros rather than function
-       calls to test for ops and voice.
-
-       * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
-
-       * ircd/s_user.c (hide_hostmask): For users with no modes in a
-       join-delayed channel, do not send JOIN to other members after the
-       QUIT :Registered.
-
-       * ircd/send.c (sendcmdto_common_channels_butone): Skip
-       join-delayed users where we skip zombies.
-       
-2004-05-10  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_events.c: Actually reference and try to use the epoll
-       event engine.  Omitted from yesterday's commit.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       Forward port of Paul "Zoot" Chang's pseudo-command.patch and
-       pseudo-support.patch.
-
-       * doc/example.conf: Illustrate how to use the feature.
-
-       * include/handlers.h (m_pseudo): Declare new handler function.
-
-       * include/ircd_features.h (HIS_STATS_R): Add a feature to control
-       user visibility of the pseudo-commands.
-
-       * include/msg.h: Add flag and field for the extra information used
-       to select a pseudo-command's target.
-
-       * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
-       definitions.
-
-       * include/parse.h (register_mapping, unregister_mapping): Declare.
-
-       * include/s_conf.h (struct nick_host, struct s_map,
-       GlobalServiceMapList): Define.
-
-       * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
-       files to "make depend" dependency list.  Update dependencies.
-
-       * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
-       default value.
-
-       * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
-
-       * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
-
-       * ircd/parse.c (msgtab): Add initializer for field "extra" to all
-       commands.
-       (msg_tree_insert, msg_tree_remove, register_mapping,
-       unregister_mapping): New functions.
-       (parse_client): Implement MFLG_EXTRA extra argument passing.
-
-       * ircd/s_conf.c (GlobalServiceMapList): New variable.
-
-       * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
-       strings for new numeric responses.
-
-       * ircd/s_stats.c (stats_mapping): New function.
-       (statsinfo): Add entry for /stats R and make old /stats r entry
-       case-sensitive.
-       
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
-       yyerror() so that configuration errors all go to the same place.
-
-       * ircd/s_conf.c: New variables conf_error and conf_already_read.
-       conf_error is cleared by read_configuration_file() and set by
-       yyerror(); conf_already_read is set by read_configuration_file()
-       and never cleared.  Make yyerror() display error to stderr before
-       conf_already_read is set.  Make configuration errors a fatal
-       condition in init_conf().
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/Makefile.in: Pass the source directory as an argument to
-       version.c.SH so it knows where to find the source files for an
-       out-of-srcdir build.
-
-       * ircd/version.c.SH: Use that information.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * Makefile.in: Ensure ${prefix}/include exists, since the adns
-       install puts files in that directory.  (The adns Makefile does
-       not use configure's ${includedir}.)
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.features: The logic for F:AUTOHIDE was removed, but
-       not its documentation.  Fix that omission.
-
-       * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
-       definitions for FEATURE_AUTOHIDE.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * doc/readme.who: Document the support for account matching and
-       display in the WHO command.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/ircd.c (main): Move check_pid() call until after we read
-       the configuration file so that F:PPATH works correctly.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/match.c (match): Use ToLower() instead of tolower() for
-       character comparisons.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/s_user.c (register_user): Initialize "flag" (user's old
-       modes) passed to send_umode() so that the real set of modes are
-       sent to the user.
-       
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
-       server, not to a hub between us and the new server.
-
-       * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
-       on target server rather than FLAG_CHSERV (so that directed
-       messages work at all).
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * configure.in: Add checks for epoll_* system call family.
-
-       * configure: Regenerate.
-
-       * ircd/engine_epoll.c: New file; forward ported from 2.10.11
-       branch.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * include/ircd_alloc.h: Add definitions for MyRealloc, since they
-       are needed by kqueue and epoll event engines; kill #if 0'd block.
-
-       * include/memdebug.h: Declare dbg_realloc() helper function.
-
-       * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
-
-       * ircd/memdebug.c: Implement dbg_realloc() helper function.
-
-2004-05-09  Michael Poole <mdpoole@troilus.org>
-
-       * ircd/channel.c (find_no_nickchange_channel): Disallow nick
-       changes on a moderated channel with neither ops nor voice.
-
-       * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
-
-2004-01-20  Perry Lorier <isomer@undernet.org>
-
-       * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
-
-2004-01-21 Gavin Grieve <hektik@dimebox.net>
-
-       * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
-         code to resolve the multiple part messages bug written by Entrope.
-
-2003-08-12 Timothy Vogelsang <net@astrolink.org>
-
-        * ircd/match.c: (match) rewrote function based on existing
-          code from the hybrid ircd -- death to goto
-
-2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
-
-        * ircd/s_user.c: invalidate ban cache for user on host hiding/account
-
-2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
-
-        * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
-        ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
-        B is an oper", appeared in a lot of places. made it a define SeeOper.
-
-2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
-        * ircd/s_user.c: umode_str (user modes in N token) internal flags var
-       was not initialized to the user's flags, returned a string with
-       random modes set.
-
-2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
-
-        * ircd/m_names.c: length counter being incremented one too many
-        for each nick, resulting names reply messages are about 50 chars
-        shorter than possible. fixed.
-
-2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
-
-        * ircd/channel.c: don't ever send mode changes for local channels to
-       servers.
-
-2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
-
-        * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
-        moved the supported channel/user mode strings of the 004 reply from
-        s_err.c to the header files where the channels/user modes are
-        defined, and show or hide +Au based on OPLEVELS setting.
-
-2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
-
-        * ircd/m_burst.c: Clear topic set by netrider on burst.
-
-2003-08-05 Diane Bruce  <db@db.net>
-
-        * ircd/parse.c: Fixed the typo the fix of the typo created
-
-2003-08-01 Diane Bruce  <db@db.net>
-
-       * ircd/parse.c: Fixed typo
-
-2003-06-22  Diane Bruce  <db@db.net>
-
-       * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
-
-2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
-
-        * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
-       ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
-       Make ability to create local channels a feature which can be disabled.
-
-2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
-
-       * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
-       ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
-       makes it possible to disable the +Au/oplevels functions.
-
-2003-06-17  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/res_adns.c: included sys/types.h, for non-Linux
-       headers
-
-2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * libs/dbprim: database primitives library, including
-       flexible linked lists, auto-resizing hash tables, and sparse
-       matrices.  Has a test suite for everything but portions of
-       the sparse matrix routines (I'm lazy; someone help me write
-       them!).  Documentation generated by doxygen--feel free to
-       critique, suggest phrasing improvements, etc.
-
-2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
-       * libs: put third-party libraries in this subdirectory.
-       Started by copying adns into it--will fix the rest and remove
-       the top-level copy later.
-
-2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
-       * ircd/m_settime.c: Fixed a minor format string issue.
-       
-2003-01-12  Thomas Helvey <tom.helvey@cox.net>
-       * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
-       ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
-       bugs in transmit.c and m_opmode.c.
-
-2003-01-12  Thomas Helvey <tom.helvey@cox.net>
-       * include/class.h, include/ircd_string.h, ircd/class.c,
-       ircd/gline.c, ircd_string.c: Fix undefined order
-       of evaluation bug in gline.c, add general purpose hasher for
-       conf entries. 
-
-2003-01-11  Thomas Helvey <tom.helvey@cox.net>
-       * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
-       ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
-       ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
-       ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
-       ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
-       ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
-       with g++ again, type safety, const correctness fixes,
-       remove C++ keywords again :/
-
-2003-01-11  Thomas Helvey <tom.helvey@cox.net>
-       * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
-       table data was in a different order than the feature data
-       structure, which resulted in a wild index being used in
-       feature_bool. The feature_bool function didn't check it's
-       index before indexing the features array resulting in
-       a core dump on /oper.
-
-2003-01-10  Thomas Helvey <tom.helvey@cox.net>
-       * include/client.h, include/res.h, include/s_bsd.h,
-       ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
-       ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
-       Remove resolver cache wart, change hostent representation, cleanup
-       resolver clients.
-
-2003-01-10  Thomas Helvey <tom.helvey@cox.net>
-       * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
-        HEAD_IN_SAND macros to get server to build, rebuild dependencies.
-
-2003-01-08  Fredrik Soderblom <froo@quakenet.org>
-        * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
-        RPL_HOSTHIDDEN and the use of it.
-
-2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * BUGS: removed from distribution
-
-       * ChangeLog.07: moved into doc/history
-
-       * ChangeLog.10: moved into doc/history
-
-       * INSTALL: pulled up from u2.10.11.04
-
-       * README: pulled up from u2.10.11.04
-
-       * README.FreeBSD: pulled up from u2.10.11.04
-
-       * README.Solaris: pulled up from u2.10.11.04
-
-       * RELEASE.NOTES: add sysctl note from u2.10.11.04
-
-       * TODO: removed from distribution
-
-       * configure.in: add extra check for res_mkquery; remove
-       --disable-headinsand since it no longer has any effect; pull up
-       "Enable" vs. "Disable" changes from u2.10.11.04
-
-       * doc/readme.asll: pulled up from u2.10.11.04
-
-       * doc/readme.features: pull up missing documentation, including a
-       couple of corrections
-
-       * doc/readme.log: correct text to read FACILITY instead of SYSLOG
-       in the documentation for configuring syslog facility
-
-       * include/channel.h: declare IsInvited()
-
-       * include/handlers.h: do some minor reorderings
-
-       * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
-       #define's
-
-       * include/ircd_policy.h: removed from the distribution
-
-       * include/jupe.h: declare jupe_memory_count()
-
-       * include/msgq.h: remove MsgCounts structure
-
-       * include/numeric.h: add a blank line after RPL_STATSQLINE; add
-       RPL_HOSTHIDDEN
-
-       * include/s_stats.h: include ircd_features.h for definition of the
-       enum; remove extraneous declarations
-
-       * ircd/Makefile.in: add LDFLAGS to table_gen
-
-       * ircd/engine_poll.c: remove commented-out assertion
-
-       * ircd/ircd.c: include s_stats.h and call stats_init()
-
-       * ircd/ircd_features.c: feature names have to be case-sensitive
-       because of some of the HIS features
-
-       * ircd/ircd_relay.c: reorder includes
-
-       * ircd/m_account.c: include string.h for strlen()
-
-       * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
-       sure to refer to chname, not parv[1]
-
-       * ircd/m_create.c: remove the broken code that squits servers that
-       are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
-       desyncs
-
-       * ircd/m_gline.c: if it's a server, force the gline; don't
-       gline_find() before determining if the oper had the privilege
-
-       * ircd/m_kick.c: kicks by servers should appear to be from the
-       local server thanks to HIS
-
-       * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
-
-       * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
-
-       * ircd/m_nick.c: added an assertion and some explanatory comments
-       pulled up from u2.10.11.04
-
-       * ircd/m_opmode.c: no longer requiring oper to be on the channel;
-       search for quarantines before allowing ops
-
-       * ircd/m_privmsg.c: one character typo that probably means nothing
-
-       * ircd/m_settime.c: add back comments I left in the code
-
-       * ircd/m_squit.c: remove protocol_violation() notices
-
-       * ircd/m_userhost.c: return realhost if user is an oper
-
-       * ircd/m_wallvoices.c: only m_wallvoices() should add a +
-
-       * ircd/m_who.c: add handling for the 'a' field
-
-       * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
-       FEAT_HIS_SERVERINFO
-
-       * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
-       ancient bug fixes from the u2.10.11 branch
-
-       * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
-       call motd_memory_count(), gline_memory_count(), and
-       jupe_memory_count() when reporting memory usage; add back a
-       comment regarding "DBuf caveats"
-
-       * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
-       change to ERR_NOPRIVILEGES wording
-
-       * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
-
-       * ircd/s_stats.c: count from 0 and not 1 when initializing the
-       stats
-
-       * ircd/s_user.c: comment out assertion; remove extraneous
-       definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
-       hidden" reply; don't detach oper confs unless sptr is not an oper
-
-       * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
-       change channel name character range to be from '\041' (!) to
-       UCHAR_MAX
-
-       * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
-
-       * tools/linesync/linesync.conf: pull up from u2.10.11.04
-
-       * tools/linesync/linesync.sh: pull up from u2.10.11.04
-
-2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
-       * almost everything: Forward ported numerous changes from .11 to .12
-       
-2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
-       * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
-       when they become a server.
-       * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
-       packet is sent.
-       * ircd/class.c(make_class): Fixed an assert to be more useful.
-       
-2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
-       * ircd/packet.c
-       * ircd/packet.h: (connect_dopacket): Made a dopacket function for
-       connecting links which sends the messages through the correct message
-       handler.
-       * ircd/s_bsd.c(read_packet): Put packets through the correct handler
-       for connecting links. Properly handle unknown links becoming
-       connecting or servers.
-
-2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
-       * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
-       with, this is used quite a lot.
-       * ircd/class.c (make_class): Initialise the ref_count to 1 so that
-       we don't leak.
-       * ircd/class.c (add_class): When updating a class, free the old name
-       first to prevent leakage.
-       * ircd/class.c (class_delete_marked): Decrement the ref_count for the
-       class after it is removed from the linked list.
-       * ircd/ircd_parser.y: Changed a free to MyFree().
-       * ircd/ircd_parser.y: Removed a few debugging messages.
-
-2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
-       * s_bsd.c (read_packet): Our daily addition to the list of entities to
-       treat as servers - Connecting servers.
-       
-2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
-       * doc/debug_memleak_gc.patch,
-       * include/ircd_ircd_alloc.h,
-       * include/memdebug.h,
-       * configure.in,
-       * ircd/Makefile.in,
-       * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
-       and notify the operators.
-       
-2002-06-29  Andrew Miller <a1kmm@mware.virtualave.net>
-
-       * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
-       the dbufs.
-       
-2002-06-18  Andrew Miller <a1kmm@mware.virtualave.net>
-
-       * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
-       the server.
-       
-2002-06-18  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/m_burst.c (ms_burst): kick local members if the channel
-       has a larger local TS and it's +i or +k remotely (anti net.ride)
-
-       * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
-
-       * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
-
-       * include/s_conf.h: externalized lookup_confhost
-
-       * adns/Makefile.in: compilation-outside-source-tree fix
-
-2002-06-17  Alex Badea  <vampire@p16.pub.ro>
-
-       * adns/*: added a slightly hacked copy of adns
-
-       * configure.in: added a --disable-adns switch if you want
-       to use the old libresolv res.c
-
-       * configure: ran autoconf
-
-       * ircd/res_libresolv.c: renamed from res.c
-
-       * ircd/res_adns.c: added adns resolver
-
-2002-06-17  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/ircd_parser.y: fixed 'Connect' block processing so now
-       you can actually connect to other servers
-
-2002-06-04  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
-       it displays all servers, not just local connects
-
-2002-05-30  Jean-Edouard Babin  <Jeb@jeb.com.fr>
-
-       * ircd/m_server.c (mr_server): fixed core bug on insufficient
-       arguments
-
-2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
-       
-       * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
-
-2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
-       * ircd/m_join.c (m_join,HasControlChars): check if a channel
-       name has any control chars (<=32) in it before allowing a
-       local user to join.
-2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
-       * ircd/ircd_relay.c: stop an information leak about the
-       the network topography from relayed messages.
-
-2002-04-19  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/m_who.c (m_who): disallow non-opers to /who server.name
-
-2002-04-18  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/s_err.c (RPL_STATSILINE): connection classes are now
-       strings
-
-2002-04-17  beware <steendijk@tomaatnet.nl>
-
-       * m_whois.c (m_whois): disallow remote queries for non-existent
-       local users when originated by a non-oper
-
-2002-04-16  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
-       reply if the servername contains a '*' and it doesn't exist
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-2002-04-16  beware <steendijk@tomaatnet.nl>
-
-       * ircd/m_whois.c: the previous patch broke whois, fixed it
-       another way
-
-       * ircd/m_admin.c: cleaned up m_admin too while we're here,
-       hunt_server_cmd can do all the work for us
-
-2002-04-15  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/m_stats.c: added verbose server reporting (/stats v
-       or /stats V for machine-readable format) (bugzilla bug 52)
-
-       * include/numeric.h: added RPL_STATSVERBOSE 236
-
-       * ircd/s_err.c: added RPL_STATSVERBOSE
-
-       * ircd/s_stats.c: added help for stats 'v'
-
-2002-04-15  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/class.c (get_client_class): fixed typo which caused
-       /trace (and perhaps motd) to core
-
-2002-04-15  beware <steendijk@tomaatnet.nl>
-
-       * ircd/m_whois.c: Fixed /whois servermask nomatch bug
-       where normal users could use the function to discover servers,
-       also the NOSUCHSERVER check code was missing.
-
-2002-04-14  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/ircd_parser.y: fixed cli_info(&me) not being set
-       from 'description' conf
-
-2002-04-13  Stephane Thiell <mbuna@undernet.org>
-
-       * ircd/m_whois.c: removed FindUser() in ms_whois to fix
-       remote whois relaying.
-
-       * ircd/class.c: removed unused (and duplicated) code
-       get_client_ping().
-       
-       * include/class.h: removed unused function prototype.
-       
-       * config.guess: upgraded with latest
-       
-       * config.sub: upgraded with latest
-
-2002-04-12  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd-patch: report which files failed the dry run (so the
-       user may force the patch if the rejects are in less-than-vital
-       files, such as ChangeLog or documentation)
-
-2002-04-12  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/m_invite.c: don't propagate invites for local channels
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * ircd/ircd.c: The last fix broke autoconnects completely.
-       Fixed it another way.
-       
-2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
-
-        * ircd/ircd.c (try_connections): To avoid problems with infinite event
-        loops, don't try connecting to servers whose connect frequency is 0.
-       
-2002-04-10  Alex Badea  <vampire@p16.pub.ro>
-
-       * ircd/ircd_parser.y: fixed a "features" block parse bug
-
-       * tools/convert-conf.py: added a configuration file converter
-       from 2.10.11 to 2.10.12 format
-
-       * ircd-patch: added GPL information to top of file
-
-2002-04-09  Alex Badea  <vampire@p16.pub.ro>
-
-       * configure.in: added a human-readable report of configured
-       options at the end of the configure process
-
-       * configure: regenerated with autoconf
-
-2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
-
-       * include/supported.h: change CHARSET to CASEMAPPING after
-       discussions as to what would be the preferred name.
-
-2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
-       * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
-       specification.
-        * Fix a minor parser bug that meant rehash didn't always
-       work correctly.
-
-2002-04-03  Alex Badea  <vampire@p16.pub.ro>
-
-       * include/channel.h: fix compiler warnings (paratheses around &&)
-
-       * ircd/channel.c (modebuf_extract): fix compiler warnings
-       (uninitialized variables)
-
-       * ircd/Makefile.in: make ircd properly compile outside the
-       source tree
-
-2002-04-03  Alex Badea  <vampire@p16.pub.ro>
-
-       * include/s_user.h: added a sptr parameter to InfoFormatter
-       function type
-
-       * ircd/m_who.c: don't match IPs for clients which have a hidden host,
-       except when the inquiring user is an oper
-
-       * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
-       target has a hidden host, but show real IP to opers
-
-       * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
-       fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
-       show real IP to opers
-
-       * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
-
-       * ircd/s_user.c (send_user_info): pass sptr to the formatting function
-
-       * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
-       fake IP to show for clients with a hidden host)
-
-       * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
-
-       * doc/example.conf: default value for FEAT_HIDDEN_IP
-
-       * doc/readme.features: documented FEAT_HIDDEN_IP
-
-2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
-       * doc/example.conf: Cleaned up some comments that ended up in
-         strange places due to problems in the merge process.
-       * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
-         probably dates back to Jarkko code.
-
-2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
-       from the path before calling do_kill(); add a msg argument to
-       do_kill() and use it in preference to comment; remove all that old
-       code that fiddled with the buf and the comment
-
-       * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
-
-       * include/ircd_log.h: add a seperate msg argument to
-       log_write_kill()
-
-       * ircd/ircd.c: display event engine and MAXCONNECTIONS information
-2002-04-02  Alex Badea <vampire@p16.pub.ro>
-
-       * ircd-patch: Automatically generate a version string from patches
-
-2002-04-02  Alex Badea <vampire@p16.pub.ro>
-       
-       * ircd-patch: Test before doing anything dangerous, provide -f to
-               to it anyway.  exit levels for easy scripting.
-
-2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (joinbuf_join): don't add a channel to the list
-       in the joinbuf unless when we flush it, we empty the list
-
-2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
-       * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
-          old configuration file format.
-       * ircd/ircd_lexer.l
-       * ircd/s_conf.c
-       * doc/example.conf
-
-2002-03-23 Bert Faes <bert.faes@pandora.be>
-
-       * s_misc.c made /trace reply always show the username
-       
-2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
-       for setrlimit, getrusage, and times
-
-       * configure: rerun auto-conf
-
-       * config.h.in: rerun autoheader
-
-2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
-       sending of the key to the channel
-
-       * ircd/channel.c (modebuf_flush_int): when processing keys, only
-       include the actual key in the mode sent to the channel if
-       MODEBUF_DEST_NOKEY is not set
-
-       * include/channel.h: needed more bits for MODEBUF_DEST_*,
-       especially when adding MODEBUF_DEST_NOKEY to force keys in the
-       BURST to be reported as "*" to the channel
-
-       * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
-       inherited from the class associated with the O-line
-
-2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
-       when a user changes his nickname so we can catch if he now matches
-       a ban
-
-2002-03-20 Reed Loden <reed@redmagnet.com>
-       * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
-
-       * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
-
-2002-03-20 LordLuke <lordluke@undernet.org>
-       * ircd/client.c: Add LOCOP_LIST_CHAN feature.
-
-       * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
-
-2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * ircd/m_links.c: Make /links behave like /map for head_in_sand.
-       cleaned up excess code.
-
-       * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
-       map_add() and map_update() for links changes.
-
-       * include/map.h: Added info and prot to struct Map
-
-       * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
-       servers are cached in MapList
-
-       * ircd/s_misc.c: changed #ifdef for map_update()
-
-       * ircd/m_server.c: changed #ifdef for map_update()
-
-       * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
-       hiding features.
-
-       * configure.in: add --disable-headinsand
-
-       * configure: Ran autoconf
-
-       * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
-       connect limits
-
-       * ircd/s_stats.c: Made /stats i report connect limits
-
-       * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
-       "*" for the password field.
-       
-2002-03-19 LordLuke <lordluke@undernet.org>
-
-       * include/channel.h: Allow opers to view +s channels in /list
-
-       * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
-
-       * include/ircd_features.h: added "LIST_CHAN" feature
-
-       * ircd/channel.c: Allow opers to view +s channels in /list
-
-       * ircd/client.c: Add "PRIV_LIST_CHAN"
-
-       * ircd/ircd_features.c: Add "LIST_CHAN" feature
-
-2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
-       Must be more careful when forward porting by hand...
-       
-2002-03-13  Carlo Wood  <run@alinoe.com>
-
-       * include/channel.h: CHFL_CHANNEL_MANAGER, new local
-       channel flag set when someone creates a channel or joins
-       using the Apass.  IsChannelManager(), SetChannelManager():
-       macros to manipulate new channel flag.
-       channel_modes: Added new argument to avoid calling
-       find_member_link more often than needed.
-
-       * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
-       ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
-       ERR_UPASSNOTSET: new numeric replies.
-
-       * ircd/channel.c: is_level0_op: removed.
-       member_can_send_to_channel: disallow channel manager
-       to talk.  channel_modes: show upass to level0 ops.
-       mode_parse_upass: Only the channel manager is allowed
-       to change the upass.  Only allow to set upass when apass
-       is also set.  mode_parse_apass: Don't allow to change the
-       Apass if the channel is older than 48 hours.  Only allow
-       to remove the apass when upass is not set.  Send clear
-       warnings regarding the importance of apass.
-       mode_process_clients: Don't change the oplevel of an opped
-       member in a channel where upass is not set.
-
-       * ircd/destruct_event.c: exec_expired_destruct_events:
-       Bug fix: send DESTRUCT message when destructing a channel.
-
-       * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
-       prefix for DESTRUCT message.
-
-       * ircd/m_join.c: m_join: Handle apass and upass.
-
-       * ircd/m_kick.c: m_kick: Don't allow to kick member with
-       a higher or equal op-level.
-
-       * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
-       ms_mode: Allow server to do modes on channels with apass
-       set.
-
-       * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
-       ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
-       ERR_UPASSNOTSET: new numeric replies.
-
-
-2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * ircd/m_kill.c: Last of the bug fixes for do_kill()
-
-       * ircd/list.c: Don't remove clients from the linked list
-       that aren't actually in the list.
-       
-2002-03-08  Carlo Wood  <run@alinoe.com>
-       * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
-       and CHFL_BURST_ALREADY_VOICED.
-
-       * ircd/m_burst.c: Allow BURST outside net-burst
-       and take into account that users are already joined
-       to the channel in that case.
-
-       * ircd/m_destruct.c: Implementation of DESTRUCT
-       handling code.
-
-       * ircd/m_join.c: Set the channel creationtime to
-       the timestamp of a message when that timestamp is
-       smaller.
-2002-02-27 Reed Loden <reed@redmagnet.com>
-       * tools/crypter: Updated some variables, added another notice,
-       added CVS Id tag, and updated Perl location.
-
-       * tools/ringlog.c: Added IRC - Internet Relay Chat, 
-       tools/ringlog.c
-
-       * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
-       tools/ringlog.pl
-
-       * tools/wrapper.c: Added IRC - Internet Relay Chat, 
-       tools/wrapper.c
-
-       * tools/mkpasswd.c: Added CVS Id tag
-
-       * tools/sums: Updated to comply with sums being moved to tools/
-       and added CVS Id tag
-
-       * tools/README: Updated location of file and partly rewrote to fit 
-       u2.10.11's Features
-
-       * tools/Makefile.crypt: Updated location of file and added CVS Id 
-       tag
-
-       * acconfig.h: Updated location of file
-
-       * config.h.in: Updated location of file
-
-       * tools/Bounce/bounce.conf: Added CVS Id tag
-
-       * tools/Bounce/Bounce.cpp: Updated location of file
-
-       * tools/Bounce/Bounce.h: Updated location of file
-
-       * tools/hashtoy: Added CVS Id Tag
-
-2002-02-27  Carlo Wood  <run@alinoe.com>
-
-        * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
-
-2002-03-01  Carlo Wood  <run@alinoe.com>
-
-       * include/channel.h: struct Channel: new attribute destruct_event.
-       Prototype for destruct_channel().
-
-       * include/destruct_event.h: new header file for destruct_event.c.
-
-       * ircd/Makefile.in: New source file: destruct_event.c.
-
-       * ircd/channel.c: sub1_from_channel: Don't destruct channel
-       immedeately but instead schedule it for destruction after
-       some time when a channel becomes empty (and clear invite
-       only and limit in that case).
-       destruct_channel: new function, was previously the destructing
-       part of sub1_from_channel.
-       add_user_to_channel: remove destruction request if any.
-
-       * ircd/destruct_event.c: New file.  Implementation of functions
-       schedule_destruct_event_1m, schedule_destruct_event_48h,
-       remove_destruct_event and exec_expired_destruct_events.
-
-       * ircd/ircd.c: destruct_event_timer: new timer.
-       main: use destruct_event_timer to call exec_expired_destruct_events
-       once per minute.
-
-       * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
-       channels.  Schedule new empty channels for destruction.
-
-       * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
-
-2002-03-01  Carlo Wood  <run@alinoe.com>
-       * ircd/s_misc.c: exit_client: Only call map_update()
-       for servers.
-
-2002-02-28  Carlo Wood  <run@alinoe.com>
-       * include/channel.h: New attribute 'oplevel' in struct Membership.
-       Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
-       New macros:  OpLevel(member): returns op-level of member and
-       SetOpLevel(member, value): sets op-level of member.
-       Prototype of add_user_to_channel: add oplevel to parameters.
-       Prototype of mode_parse: add member to to parameters.
-
-       * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
-
-       * ircd/s_err.c: idem.
-
-       * ircd/channel.c: Removed unmatched '{' braces from comments
-       (confuses vi).  add_user_to_channel: oplevel is passed to function
-       and added in the created MemberShip structure.  send_channel_modes:
-       Generate the nick:mode list of the BURST msg in the new style (with
-       op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
-       ParseState: New attribute: member.  mode_process_clients: Disallow
-       deopping someone with an equal or higher op-level, take care of
-       inheritance of op-level.  mode_parse: member is passed to function      
-       and added in the created ParseState structure.  joinbuf_join: pass 0
-       as oplevel to add_user_to_channel as needed initialization of oplevel
-       in struct MemberShip.
-
-       * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
-       decoding of a BURST message and passing on a BURST message.
-       Renamed default_mode to current_mode.
-
-       * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
-
-       * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
-       to mode_parse (causes opped member to get op-level 0).                  
-
-2002-02-25  Carlo Wood  <run@alinoe.com>
-       * include/channel.h: Added two new strings to struct Mode,
-       upass and apass, both with maximum length PASSLEN (a new
-       define in this file).  Two new mode defines MODE_UPASS and
-       MODE_APASS.
-
-       * ircd/channel.c: is_level0_op: Added as dummy function.
-       channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
-       Added support for MODE_APASS (+A) and MODE_UPASS (+u).
-       mode_parse_upass: New function to parse mode +u.
-       mode_parse_apass: New function to parse mode +A.
-
-       * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
-
-2002-02-25  Carlo Wood  <carlo@alinoe.com>
-
-       * ircd/m_server.c: remove unused variables
-
-2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * ircd/m_map.c: Modified to show a useful output to non-opered
-         clients when HEAD_IN_SAND_MAP is defined. Servers are added to
-         the list when first seen (after receiving SERVER) and that list
-         is sent to clients. Servers are excluded from the list if they are
-         hubs, services, or have been missing for more than 1 week.
-       
-       * ircd/map.c: Created file for map_* functions
-
-       * include/map.h: Created file for map_* functions
-
-       * ircd/m_server.c: Added calls to map_update()
-
-       * ircd/s_misc.c: Added call to map_update()
-
-       * ircd/parse.c: Changed to use m_map() and mo_map()
-       
-2002-02-22 Reed Loden <reed@redmagnet.com>
-
-       * ircd/m_connect.c: Removed an extra : in remote connect message.
-
-2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
-
-        * ircd/whocmds.c: Local opers should also be able to
-        see servernames in /who
-
-       * ircd/gline.c: Fix core bug in gline_find()
-
-       * ircd/m_kill.c: Bug fix for HIS_KILLWHO
-
-2002-02-19 John Buttery <john@io.com>
-
-       * ircd/ircd.c: Updated "No such file" error message.
-       
-2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
-       a message handler, and some general cleanups and bug fixes. 
-
-       * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
-       kill source.
-       
-2002-02-16  Tim Vogelsang <net@astrolink.org>
-
-        * ircd/m_kill.c: added a new static function, m_kill, which
-        performs the actual kill.
-       
-2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * Added support for LIST STOP
-       
-2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
-
-       * Merged changes from u2_10_11 to main branch.
-       
-2002-02-08  Tim Vogelsang  <net@astrolink.org>
-
-       * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
-       reason is supplied.
-
-2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_auth.c (read_auth_reply): left out an = in an
-       assertion--shouldn't have had any impact, though
-
-       * ircd/Makefile.in: add a hook for using ringlog; run make depend
-
-       * tools/ringlog.c: for the heck of it, add a comment including
-       rules for /etc/magic
-
-2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * tools/ringlog.pl: perl script to take output from ringlog and
-       pass it to addr2line to get function, file, and line number
-       information
-
-       * tools/ringlog.c: program/object to help in building function
-       trace information
-
-2002-02-04  Alex Badea  <vampire@p16.pub.ro>
-
-       * include/ircd_features.h: added new feature MOTD_BANNER
-
-       * ircd/ircd_features.c: added new feature MOTD_BANNER
-
-       * ircd/motd.c (motd_signon): send a one-line banner from
-       FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
-       is set
-
-       * doc/example.conf: default value for MOTD_BANNER feature
-
-       * doc/readme.features: documented the MOTD_BANNER feature
-
-2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
-       check; added character 'A' to the server options string to
-       indicate when assertion checking is enabled
-
-2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
-       event if the errno is EBADF, since the caller probably already
-       knows about it and just hasn't gotten around to processing it yet
-
-       * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
-       is generated; don't process socket_events() or socket_state() if
-       an error occurred; add GEN_ERROR to list of flags in gen_flags()
-
-       * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
-       clear it
-
-2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: change make_nick_user_{ip,host} to not use a
-       static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
-       NUI_BUFSIZE--I confess they're not well-named) is allocated by the
-       caller
-
-2002-02-02  Alex Badea  <vampire@p16.pub.ro>
-
-       * include/client.h: added user flag FLAGS_HIDDENHOST
-
-       * include/ircd_features.h: added FEAT_HOST_HIDING and
-       FEAT_HIDDEN_HOST
-
-       * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
-       to report real hostnames and IPs to opers
-
-       * include/s_user.h: exported hide_hostmask()
-
-       * include/send.h: changed sendcmdto_channel_butserv to
-       sendcmdto_channel_butserv_butone; ditto for
-       sendcmdto_common_channels
-
-       * include/struct.h: added realhost to struct User
-
-       * include/whowas.h: added realhost to struct Whowas
-
-       * ircd/channel.c: match bans against both real and hidden
-       hostmasks; moved some calls to use sendcmdto_*_butone
-
-       * ircd/gline.c: match glines agains real host
-
-       * ircd/ircd_features.c: added FEAT_HOST_HIDING and
-       FEAT_HIDDEN_HOST
-
-       * ircd/m_account.c: call hide_hostmask() for possibly
-       hiding the user's host
-
-       * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
-
-       * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
-
-       * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
-       host
-
-       * ircd/m_who.c: match real hosts, if the query comes from an oper
-
-       * ircd/m_whois.c: report real hostname and IP to opers
-
-       * ircd/m_whowas.c: report real hostname to opers
-
-       * ircd/s_err.c: added user mode 'x' to the list of supported user
-       modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
-       real hostnames to opers
-
-       * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
-
-       * ircd/s_serv.c: send real hostname to servers
-
-       * ircd/s_user.c: send real hostname to servers; added processing
-       of usermode 'x'; added hide_hostmask() which actually does the work
-       of hiding a user's host; moved some calls to use sendcmdto_*_butone
-
-       * ircd/send.c: changed sendcmdto_channel_butserv to
-       sendcmdto_channel_butserv_butone; ditto for
-       sendcmdto_common_channels
-
-       * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
-       it's host hidden
-
-       * ircd/whowas.c: if needed, store a user's real host so we can
-       report it to opers later
-
-       * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
-       features
-
-       * doc/example.conf: default values for HOST_HIDING and
-       HIDDEN_HOST features
-
-2002-02-01  Tim Vogelsang  <net@astrolink.org>
-
-       * ircd/send.c (sendwallto_group_butone): don't sent wallops to
-       ordinary users
-
-2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/jupe.c (jupe_activate): remove a bogus assertion
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/s_err.c: added new channel mode 'r' to list of supported
-       channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
-       numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
-       informing users why they can't join a +r channel
-
-       * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
-       (+r) to do_clearmode(); note that it is *not* being added to the
-       default clearmode mask!
-
-       * ircd/channel.c: don't allow non-+r users to send messages to +r
-       channels from off the channel; add support for MODE_REGONLY (+r)
-       to channel_modes(); don't allow non-+r users to join +r channels
-       without an invite; add support for MODE_REGONLY to the modebuf_*()
-       family of functions (changes in modebuf_flush_int(),
-       modebuf_mode(), and modebuf_extract()); add support for
-       MODE_REGONLY to mode_parse()
-
-       * include/supported.h (FEATURESVALUES2): added the new channel
-       mode 'r' to the list of supported channel modes
-
-       * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
-       conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
-
-       * include/channel.h: remove unused MODE_SENDTS; add new
-       MODE_REGONLY
-
-       * ircd/s_bsd.c (read_packet): remove call to timer_verify()
-
-       * ircd/list.c: remove calls to timer_verify() from
-       alloc_connection() and dealloc_connection()
-
-       * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
-       from timer_run()
-
-2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/ircd_events.c (timer_run): why did I ever use a next
-       pointer when the algorithm guarantees that the head pointer will
-       always be the next pointer?
-
-2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
-       client process timer to catch any list corruption
-
-       * ircd/list.c: surround alloc_connection() and
-       dealloc_connection() with calls to timer_verify()
-
-       * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
-       verify the timer list's structure; call it around timer_run()
-
-2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (sendcmdto_common_channels): don't send message to a
-       channel that the source is a zombie on
-
-2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c (timer_enqueue): one more assertion--make
-       sure a timer has the ACTIVE flag set before enqueueing the timer
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/list.c (dealloc_connection): assert that the process timer
-       has been removed from the timer queue before dealloc_connection()
-       is called
-
-2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/res.c: don't accept T_A when we're looking for T_PTR
-
-       * ircd/channel.c (modebuf_flush_int): nuke the code that would
-       send a HACK DESYNCH notice on a HACK(2)--it would be far too
-       chatty
-
-       * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
-
-       * include/supported.h: add AWAYLEN to the list of supported
-       features
-
-       * include/ircd_defs.h: add AWAYLEN to specify the maximum length
-       of an away message
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
-
-       * ircd/channel.c: pass a buflen parameter to channel_modes() for
-       pbuf--we were using sizeof(pbuf), which would always be
-       sizeof(char*) before; change send_channel_modes() to pass extra
-       parameter to channel_modes()
-
-       * include/channel.h: pass a buflen parameter to channel_modes()
-       for pbuf
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/uping.c (uping_start): initialize some timers
-
-       * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
-       out when we need to re-add the process timer
-
-       * ircd/s_auth.c (make_auth_request): initialize a timer
-
-       * ircd/res.c (init_resolver): initialize some timers
-
-       * ircd/list.c (alloc_connection): initialize the client process
-       timer
-
-       * ircd/ircd_events.c: add a function, timer_init(), to initialize
-       a struct Timer; recast timer_add() to catch when adding a marked
-       timer and not re-enqueue it--but mark it for re-enqueuing; update
-       timer_del() to turn off the GEN_READD flag and to ignore reference
-       counts when destroying the timer--we're using GEN_MARKED as an
-       ersatz referance count; changed timer_run() to work with the new
-       way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
-       map[]
-
-       * ircd/ircd.c: initialize some timers
-
-       * ircd/engine_select.c (engine_loop): initialize a timer
-
-       * ircd/engine_poll.c (engine_loop): initialize a timer
-
-       * ircd/engine_kqueue.c (engine_loop): initialize a timer
-
-       * ircd/engine_devpoll.c (engine_loop): initialize a timer
-
-       * ircd/IPcheck.c (IPcheck_init): initialize a timer
-
-       * include/ircd_events.h: add GEN_READD flag for timers to indicate
-       that a timer must be readded; add t_onqueue() macro to check to
-       see if a timer is on the queue (this is a hack, though); added
-       timer_init() to initialize a struct Timer--we're no longer doing
-       the initialization in timer_add()
-
-2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
-       prevent a core bug *in* the assertion
-
-       * doc/readme.features: document new POLLS_PER_LOOP feature; change
-       documentation to reflect that OPER_SET now defaults to FALSE
-
-       * doc/p10.html: documented the new ACCOUNT stuff
-
-       * doc/example.conf: document new POLLS_PER_LOOP default; change
-       default for OPER_SET
-
-       * RELEASE.NOTES: changed documentation to reflect the fact that
-       assertions are now enabled by default and do not cause memory
-       leaks
-
-       * ircd/res.c (make_cache): removed a bogus assertion we probably
-       never caught because assertions haven't been enabled on production
-       servers for any length of time before
-
-       * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
-
-       * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
-       instance of POLLS_PER_KQUEUE
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/s_bsd.c (client_timer_callback): only clear the
-       FREEFLAG_TIMER flag when the timer is being destroyed
-
-       * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
-       default it to 200; turn OPER_SET off by default
-
-       * ircd/engine_kqueue.c: dynamically allocate and reallocate the
-       array of events to obtain from the kernel
-
-       * ircd/engine_devpoll.c: dynamically allocate and reallocate the
-       array of events to obtain from the kernel
-
-       * include/ircd_features.h: add a new feature for tuning how many
-       events to get from the kernel, for engines that support that
-
-       * ircd/Makefile.in: re-run make depend to correct dependancies
-
-       * ircd/m_who.c: remove unneeded inclusion of list.h
-
-       * ircd/ircd_events.c: remove unneeded inclusion of list.h
-
-       * ircd/whocmds.c (do_who): hide server name in /who unless
-       requester is an operator; simplify hop count insertion
-
-       * ircd/s_misc.c (exit_one_client): make sure client's snomask is
-       cleared
-
-       * ircd/parse.c: use mo_version and mo_admin when opers do /version
-       or /admin
-
-       * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
-       of the static string "*.undernet.org"
-
-       * ircd/m_version.c: only let ordinary users get version
-       information for the server they are on
-
-       * ircd/m_admin.c: only let ordinary users get admin information
-       for the server they are on
-
-       * ircd/channel.c (client_can_send_to_channel): check is_banned()
-       before letting the client speak on a channel s/he is not on
-
-       * include/supported.h: add NETWORK to feature list
-
-       * include/handlers.h: declare mo_admin() and mo_version()
-
-2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
-       of !NDEBUG
-
-       * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
-       !NDEBUG
-
-       * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
-       !NDEBUG
-
-       * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
-
-       * ircd/Makefile.in: run make depend on chkconf.c as well
-
-       * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
-       conditionalize on MDEBUG
-
-       * include/fda.h: instead of conditionalizing on !NDEBUG,
-       conditionalize on MDEBUG
-
-       * configure: rebuild configure script
-
-       * configure.in: enable assertion checking by default, since we
-       have now decoupled memory debugging from the NDEBUG macro
-
-       * ircd/s_user.c (set_nick_name): remove calls to
-       verify_client_list()
-
-       * ircd/s_misc.c (exit_one_client): remove calls to
-       verify_client_list()
-
-       * ircd/s_conf.c (rehash): remove calls to verify_client_list()
-
-       * ircd/m_who.c (m_who): remove calls to verify_client_list()
-
-       * ircd/list.c: remove calls to verify_client_list(); keep
-       verify_client_list() around just in case we ever need it again,
-       but never compile it in
-
-       * ircd/ircd_events.c (event_execute): remove calls to
-       verify_client_list()
-
-       * ircd/client.c (client_get_ping): remove calls to
-       verify_client_list()
-
-       * include/list.h (send_listinfo): remove temporary debugging
-       function verify_client_list()
-
-       * ircd/uping.c: don't die if the event type is ET_ERROR in socket
-       callback functions
-
-       * ircd/res.c (res_callback): don't die if the event type is
-       ET_ERROR
-
-       * ircd/listener.c (accept_connection): don't die if the event type
-       is ET_ERROR
-
-2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (set_nick_name): bracket call to
-       add_client_to_list() with calls to verify_client_list()
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
-
-       * ircd/list.c (verify_client_list): add a probabilistic loop
-       detector: for every client added, there is a 2% probability that
-       it will be used to replace the value of sentinel; if at any time,
-       sentinel is found again, we know we're in a loop
-
-       * ircd/ircd_events.c (event_execute): add verify_client_list()
-       calls wrapping event_execute; at the very least, I'll figure out
-       what event the corruption occurred in
-
-       * ircd/list.c: moved verify_client_list() to try to keep it from
-       being inlined
-
-       * ircd/Makefile.in (version.c): version.c wasn't dependant on
-       version.h and patchlevel.h, like it was supposed to be
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/s_auth.c (destroy_auth_request): overload send_reports
-       argument to also indicate whether or not to call
-       release_auth_client() and thereby enter the client into the linked
-       list
-
-       * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
-
-       * include/patchlevel.h (PATCHLEVEL): bump patchlevel
-
-       * ircd/list.c (free_client): verify that destroy_auth_request()
-       didn't automagically re-add us to the list; we might have to think
-       about this interaction more carefully, actually
-
-       * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
-       calling free_client(); otherwise, free_client() will try to free
-       the auth by calling destroy_auth_request(), which will call
-       add_client_to_list()
-
-       * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
-       verify_client_list() around to catch any corruption that might
-       occur here
-
-       * ircd/s_conf.c (rehash): liberally sprinkle calls to
-       verify_client_list() here, since this is about the only routine I
-       can think of that could cause the "core on kill -HUP" bug
-
-       * ircd/m_who.c: sprinkle calls to verify_client_list() around
-       liberally, since we've seen crashes here; temporarily include the
-       otherwise unneeded list.h header
-
-       * ircd/list.c: sprinkle calls to verify_client_list() around quite
-       liberally; add debugging asserts to list manipulation functions to
-       catch strange settings for next and prev pointers; define
-       verify_client_list(), which walks the client list and verifies
-       that everything is as it's supposed to be
-
-       * ircd/client.c: wrap client_get_ping with calls to
-       verify_client_list() to see if that's where we're dying
-
-       * include/patchlevel.h (PATCHLEVEL): bump to 03
-
-       * include/list.h: declare verify_client_list() if DEBUGMODE
-       enabled; otherwise, define it to be empty
-
-2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_quit.c (m_quit): remove an unused variable
-
-       * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
-
-       * ircd/s_user.c: when building the user mode to send to the user,
-       don't include +r; add an extra set of parens to squelch a warning
-
-       * ircd/m_quit.c (m_quit): use exit_client_msg()
-
-       * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
-       keep track of who's running what version
-
-       * ircd/m_squit.c (ms_squit): remove debugging calls to
-       protocol_violation()
-
-       * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
-       new gmake "feature" (pull-up from trunk)
-
-       * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
-       from trunk)
-
-2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
-       list of user modes; process account name as part of user mode in
-       NICK decoding (set_nick_name()); add account name to usermode when
-       building the usermode to incorporate in outgoing NICK messages
-
-       * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
-       user is logged in to
-
-       * ircd/parse.c: define the new ACCOUNT command, usable only by
-       servers and ignored by everything else
-
-       * ircd/m_whois.c: report what account name is associated with a
-       user, if any
-
-       * ircd/m_account.c: implement the ACCOUNT command
-
-       * ircd/Makefile.in: add m_account.c to the list of sources; ran
-       make depend
-
-       * include/struct.h: add an account field to struct User
-
-       * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
-       what username a user is logged in under
-
-       * include/msg.h: add ACCOUNT command and token (AC)
-
-       * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
-       the maximum length of a username for X
-
-       * include/handlers.h: add declaration for ms_account()
-
-       * include/client.h: add FLAGS_ACCOUNT to flag when a user account
-       name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
-       IsAccount() and SetAccount() to manipulate the flag
-
-       * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
-       name like "Amsterdam2.NL.EU.undernet.org", we get the struct
-       Client for the server with numeric "Am", which happens to be
-       stockholm!  To fix this, we look up the full name *first*; if that
-       doesn't get it, *then* we look up by numeric.
-
-2001-12-24  Perry Lorier <isomer@coders.net>
-       * ircd/m_server.c: cleanups, maybe this will make the bug easier
-       to find.
-
-       * ircd/m_stats.c: display maximum number of connects in an I:
-
-2001-11-22  Perry Lorier  <isomer@coders.net>
-       * ircd/m_squit.c: Bug fix in squit
-
-2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/parse.c, include/handlers.h: Give remote whois the correct
-       handler.
-       
-2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: some minor white-space fiddling; recast selector
-       test in sendwallto_group_butone() to remove a warning regarding
-       putting & within parentheses
-
-       * ircd/m_create.c (ms_create): use time_t instead of int as a
-       declaration for rate
-
-       * ircd/ircd_reply.c (protocol_violation): it's supposed to be
-       WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
-       wonder we weren't seeing any protocol violations!
-
-       * include/send.h: include time.h for time_t; move WALL_* closer to
-       the function they're used in; some white-space fiddling; add
-       declaration of sendto_opmask_butone_ratelimited()
-
-       * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
-       cases where we ignore a squit, so we aren't taken by surprise, at
-       least...
-
-       * ircd/m_create.c (ms_create): Display origin server, not origin
-       user
-
-       * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
-
-2001-10-31  Perry Lorier  <isomer@coders.net>
-       * include/m_ping.c: Forward port ping bug
-
-2001-10-31  Perry Lorier  <isomer@coders.net>
-       * include/patchlevel.h: We're beta now
-
-2001-10-31  Perry Lorier  <isomer@coders.net>
-       * ircd/s_user.c: fixed hunt_server
-
-2001-09-21  Perry Lorier  <isomer@coders.net>
-       * ircd/send.c and various: replace sendcmdto_flag_butone with
-       sendwallto_group_butone
-
-2001-09-21  Vampire-  <unknown>
-       * ircd/ircd_string.c: unique_name_vector round II.
-
-2001-09-21  mbuna  <mbuna@undernet.org>
-       * configure.in: Add support for darwin
-
-2001-09-21  Perry Lorier  <isomer@coders.net>
-       * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
-
-2001-09-20  Perry Lorier  <isomer@coders.net>
-
-       * Pullups from 2.10.10.pl16
-       * Added some warnings, and the concept of rate limited snotices
-
-2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: use "%u" to format limit arguments; use
-       strtoul() to process limit arguments in a /mode command--note:
-       most clients seem to truncate the integer, probably because
-       they're using atoi, and perhaps signed ints
-
-2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
-
-       * ircd/numnicks.c: include stdlib.h for exit()
-
-       * ircd/ircd_log.c: include stdlib.h for exit()
-
-       * ircd/ircd_events.c: include stdlib.h for exit()
-
-       * ircd/s_stats.c: remove description of /stats v, since it's gone
-
-       * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
-       /wallops to distinguish wallops from wallusers
-
-       * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
-       in the "handshake" or "connecting" states--I think the latter will
-       never happen, but...
-
-       * doc/Authors: apply delete's Authors patch
-
-       * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
-       Braden's version
-
-       * README: rewrite README
-
-2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_serv.c (server_estab): remove unused variable split
-
-       * ircd/parse.c: add mr_error to the parse table
-
-       * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
-       unregistered connections--if IsUserPort() is true, the ERROR is
-       ignored, otherwise, the message is saved
-
-2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_kill.c (ms_kill): another minor typo *sigh*
-
-       * ircd/s_user.c (send_supported): oops, minor typo...
-
-       * ircd/s_user.c: implement send_supported() to send two ISUPPORT
-       messages containing our feature buffers; make register_user() use
-       send_supported()
-
-       * ircd/s_misc.c (exit_client): make sure not to give away a remote
-       server in the ERROR message sent to the client; if the killer is a
-       server, we substitute our name in its place
-
-       * ircd/m_version.c (m_version): use send_supported() to send the
-       ISUPPORT values to the user
-
-       * ircd/m_nick.c: shave nick collision kills here a bit, too, for
-       the same reasons as for m_kill.c
-
-       * ircd/m_kill.c: shave kills a bit so that the results look
-       exactly the same no matter where you are; if we didn't do this, it
-       would be possible to map the network by looking at the differences
-       between kills originating under various circumstances
-
-       * include/supported.h: split the features into two, so as to not
-       bust the parameter count when sending the features list
-
-       * include/s_user.h: declare new send_supported() function to send
-       the ISUPPORT information
-
-2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
-       source-routed spoofing attacks; this is only available under
-       u2.10.11, so don't even bother, since no one but testers are using
-       the source base
-
-2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
-
-       * ircd/s_err.c: put in a . for reporting link version on /trace,
-       to match what /version does
-
-2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_misc.c (exit_client): servers don't understand what the
-       numeric nick ERROR is supposed to mean, so they ignore error
-       messages, resulting in not knowing why we were rejected; use
-       sendcmdto_one for servers and sendrawto_one for clients
-
-2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
-       a nick collide, a bare BURST may be propagated; adjust the
-       enforced parameter count to accept the bare BURST
-
-2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c: mark a client as having been IP checked
-
-       * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
-       second call to SetIPChecked()
-
-2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
-
-       * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
-
-2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
-       sections so that if neither is used, the declaration of buf will
-       not elicit an "unused variable" warning under NetBSD
-
-       * ircd/m_map.c: include string.h to declare strcpy (fix warnings
-       on alpha)
-
-       * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
-       warnings on alpha)
-
-       * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
-       warnings on alpha)
-
-       * ircd/client.c: include string.h to declare memset (fix warnings
-       on alpha)
-
-       * ircd/channel.c: remove unused functions next_overlapped_ban,
-       del_banid, and is_deopped (fix warnings under -O1)
-
-       * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
-       warnings on alpha)
-
-2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (set_user_mode): clear the snomask if the user
-       isn't supposed to receive server notices anymore
-
-       * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
-
-       * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
-       installation prefix; default devpoll and kqueue to on (they get
-       turned off if the required headers aren't present)
-
-       * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
-       sprintf_irc(); it's a bit hackish, but it'll do for now
-
-       * ircd/support.c: remove unused #include
-
-       * ircd/send.c: remove unused #include
-
-       * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/s_serv.c: remove unused #include
-
-       * ircd/s_misc.c: use ircd_snprintf() and friends instead of
-       sprintf_irc() and friends
-
-       * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
-       ircd/s_err.c, which is the only other file to refer to it
-
-       * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
-       sprintf_irc()
-
-       * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
-       sprintf_irc()
-
-       * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
-
-       * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
-       instead of sprintf_irc()
-
-       * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
-       make depend
-
-       * include/ircd_string.h: remove declaration of sprintf_irc() (what
-       was it doing here anyway?)
-
-       * include/sprintf_irc.h: removed unneeded source file
-
-       * ircd/sprintf_irc.c: removed unneeded source file
-
-       * ircd/s_debug.c (count_memory): remove some dead code
-
-       * ircd/s_auth.c: remove some dead code
-
-       * ircd/res.c (update_list): remove some dead code
-
-       * ircd/m_whowas.c: remove some dead code
-
-       * ircd/m_whois.c: remove some dead code
-
-       * ircd/m_who.c: remove some dead code
-
-       * ircd/m_wallusers.c: remove some dead code
-
-       * ircd/m_wallops.c: remove some dead code
-
-       * ircd/m_wallchops.c: remove some dead code
-
-       * ircd/m_version.c: remove some dead code
-
-       * ircd/m_userip.c: remove some dead code
-
-       * ircd/m_userhost.c: remove some dead code
-
-       * ircd/m_uping.c: remove some dead code
-
-       * ircd/m_trace.c: remove some dead code
-
-       * ircd/m_topic.c: remove some dead code
-
-       * ircd/m_tmpl.c: remove some dead code
-
-       * ircd/m_time.c: remove some dead code
-
-       * ircd/m_squit.c: remove some dead code
-
-       * ircd/m_silence.c: remove some dead code
-
-       * ircd/m_settime.c: remove some dead code
-
-       * ircd/m_set.c: remove some dead code
-
-       * ircd/m_server.c: remove some dead code
-
-       * ircd/m_rpong.c: remove some dead code
-
-       * ircd/m_rping.c: remove some dead code
-
-       * ircd/m_restart.c: remove some dead code
-
-       * ircd/m_reset.c: remove some dead code
-
-       * ircd/m_rehash.c: remove some dead code
-
-       * ircd/m_quit.c: remove some dead code
-
-       * ircd/m_proto.c: remove some dead code
-
-       * ircd/m_privs.c: remove some dead code
-
-       * ircd/m_privmsg.c: remove some dead code
-
-       * ircd/m_pong.c: remove some dead code
-
-       * ircd/m_ping.c: remove some dead code
-
-       * ircd/m_pass.c: remove some dead code
-
-       * ircd/m_part.c: remove some dead code
-
-       * ircd/m_opmode.c: remove some dead code
-
-       * ircd/m_oper.c: remove some dead code
-
-       * ircd/m_notice.c: remove some dead code
-
-       * ircd/m_nick.c: remove some dead code
-
-       * ircd/m_map.c: remove some dead code
-
-       * ircd/m_lusers.c: remove some dead code
-
-       * ircd/m_list.c: remove some dead code
-
-       * ircd/m_links.c: remove some dead code
-
-       * ircd/m_kill.c: remove some dead code
-
-       * ircd/m_kick.c: remove some dead code
-
-       * ircd/m_jupe.c: remove some dead code
-
-       * ircd/m_join.c: remove some dead code
-
-       * ircd/m_ison.c: remove some dead code
-
-       * ircd/m_invite.c: remove some dead code
-
-       * ircd/m_info.c: remove some dead code
-
-       * ircd/m_help.c: remove some dead code
-
-       * ircd/m_gline.c: remove some dead code
-
-       * ircd/m_get.c: remove some dead code
-
-       * ircd/m_error.c: remove some dead code
-
-       * ircd/m_endburst.c: remove some dead code
-
-       * ircd/m_die.c: remove some dead code
-
-       * ircd/m_desynch.c: remove some dead code
-
-       * ircd/m_destruct.c: remove some dead code
-
-       * ircd/m_defaults.c: remove some dead code
-
-       * ircd/m_create.c: remove some dead code, along with an #if 1
-
-       * ircd/m_cprivmsg.c: remove some dead code
-
-       * ircd/m_connect.c: remove some dead code
-
-       * ircd/m_close.c: remove some dead code
-
-       * ircd/m_clearmode.c: remove some dead code
-
-       * ircd/m_burst.c: remove some dead code
-
-       * ircd/m_away.c: remove some dead code
-
-       * ircd/m_admin.c: remove some dead code
-
-       * ircd/listener.c (accept_connection): remove some dead code
-
-       * ircd/ircd_reply.c (need_more_params): remove some dead code
-
-       * ircd/channel.c (add_banid): remove some dead code
-
-       * include/support.h: remove some dead code
-
-       * include/querycmds.h: remove some dead code
-
-       * doc/readme.chroot: document how to do chroot operation
-
-2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
-       force bin directory to be created if necessary prior to
-       installation; run make depend
-
-       * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
-       the ${srcdir}
-
-       * Makefile.in: tune to detect Makefile.in changes in
-       subdirectories and to create installation directory indicated by
-       ${prefix}
-
-       * ircd/whocmds.c (count_users): routine to count the number of
-       users matching a given user@host mask
-
-       * ircd/s_err.c: add error messages for ERR_LONGMASK,
-       ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
-
-       * ircd/m_gline.c: look for and advance past '!' flag on G-lines
-       from operators; only set GLINE_OPERFORCE flag if oper has the
-       PRIV_WIDE_GLINE privilege
-
-       * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
-       maximum number of users a G-line can impact before it has to be
-       forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
-       wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
-       operators to use ! to force a wide G-line to be set
-
-       * ircd/gline.c: make make_gline() be called with separate user and
-       host arguments, and not call canon_userhost() directly; implement
-       gline_checkmask() to verify that a host mask is acceptable; move
-       BADCHAN check up in gline_add(), and check passed-in mask under
-       certain circumstances for acceptability; fix call to
-       sendto_opmask_butone() to handle separation of userhost into user
-       and host in gline_add(); update call to make_gline()
-
-       * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
-       FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
-       PRIV_WIDE_GLINE to privtab[] for client_report_privs()
-
-       * include/whocmds.h (count_users): declare routine to count users
-       matching a given user@host mask
-
-       * include/numeric.h: added three new error returns: ERR_LONGMASK
-       -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
-       many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
-       contains wildcards in the wrong places
-
-       * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
-       FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
-
-       * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
-       to signal to gline_add() that the operator attempted to force the
-       G-line to be set
-
-       * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
-
-       * doc/readme.gline: update to document new "!" prefix to a G-line
-       user@host mask
-
-       * doc/readme.features: document GLINEMAXUSERCOUNT,
-       OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
-
-       * doc/example.conf: update to mention new features along with
-       their defaults
-
-2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * doc/example.conf: updated example.conf from Braden
-       <dbtem@yahoo.com>
-
-       * include/supported.h: forward-port from pl15
-
-2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whocmds.c: include ircd_policy.h and implement
-       HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
-
-       * ircd/m_whois.c: forward-port of the idle-time hiding code from
-       pl15; this also required passing parc into do_whois(), which also
-       meant passing parc into do_wilds()--*sigh*
-
-       * include/ircd_policy.h: add a couple more HEAD_IN_SAND
-       #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
-
-2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * tools/wrapper.c: add a wrapper program that can be used to
-       adjust file descriptor limits and root directories; program must
-       be run as root--NOT SETUID!--and given appropriate -u arguments
-
-       * doc/readme.log: documentation of how to configure logging
-
-       * doc/readme.features: documentation of each feature (except for
-       logging)
-
-2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * Makefile.in (config): add a deprecation notice with a pointer to
-       tools/transition
-
-       * tools/transition: shell script to convert old compile-time
-       options into new compile-time options and appropriate F-lines
-
-       * tools/mkchroot: shell-script to prepare the chroot area by
-       copying over all the necessary libraries so they can be found
-
-2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * INSTALL: partial update of INSTALL for u2.10.11 release...
-
-2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/table_gen.c (makeTables): finally got tired of the
-       "overflow in implicit conversion" warning, so just got rid of it
-       by explicitly casting UCHAR_MAX to a (default) char; diffs show no
-       differences in the tables generated
-
-2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (sendcmdto_match_butone): don't let the server crash
-       if a client is in the STAT_CONNECTING status
-
-2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
-       into sendcmdto_one(); define new sendcmdto_prio_one(), which
-       places the message into the priority queue
-
-       * ircd/s_user.c (hunt_server_prio_cmd): definition of
-       hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
-       instead of sendcmdto_one()
-
-       * ircd/m_settime.c: use sendcmdto_prio_one() and
-       hunt_server_prio_cmd() to send SETTIME
-
-       * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
-
-       * include/send.h: removed declaration for unused vsendcmdto_one();
-       added a declaration for sendcmdto_prio_one()
-
-       * include/s_user.h: declare hunt_server_prio_cmd(), which calls
-       sendcmdto_prio_one()
-
-       * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
-       put in the server's priority queue, too...
-
-       * ircd/ircd.c: don't check LPATH for accessibility at all
-
-2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
-       command if we're configured as a hub; send individual server flags
-       in SERVER commands
-
-       * ircd/s_bsd.c (completed_connection): send a +h flag in our
-       SERVER command if we're configured as a hub
-
-       * ircd/m_server.c: implement parv[7] as a mode-like string; +h
-       sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
-       flag for a server; +hs sets both flags; also modify CMD_SERVER
-       format string to send the flags
-
-       * include/client.h: define two new flags, FLAGS_HUB and
-       FLAGS_SERVICE to mark services and hubs as such; define testing
-       macros, setting macros
-
-       * ircd/s_user.c: remove deprecated struct Gline* argument to
-       register_user(); remove GLINE rebroadcast; do not send GLINE
-       acknowledgement parameter to NICK; do not look for GLINE
-       acknowledgement parameter to NICK while parsing
-
-       * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
-       argument to server_estab(); do not send JUPE/GLINE acknowledgement
-       parameters for SERVER or NICK
-
-       * ircd/m_user.c (m_user): remove deprecated argument to
-       register_user()
-
-       * ircd/m_server.c: remove deprecated argument to server_estab();
-       remove documentation comment regarding JUPE acknowledgement
-       parameter to SERVER; remove JUPE rebroadcast
-
-       * ircd/m_pong.c (mr_pong): remove deprecated argument to
-       register_user()
-
-       * ircd/m_nick.c: remove documentation comment regarding GLINE
-       acknowledgement parameter to NICK
-
-       * ircd/jupe.c: use user's real name in JUPE server notices if
-       HEAD_IN_SAND_SNOTICES is defined
-
-       * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
-       setuid code; correct ancient DEBUG vs DEBUGMODE typo
-
-       * ircd/gline.c: use user's real name in GLINE server notices if
-       HEAD_IN_SAND_SNOTICES is defined
-
-       * ircd/channel.c (modebuf_flush_int): make apparent source be
-       local server, not oper's server; use user's real name in hack
-       notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
-
-       * include/s_user.h: remove struct Gline pre-declaration; remove
-       deprecated struct Gline argument from register_user()
-
-       * include/s_serv.h: remove struct Jupe pre-declaration; remove
-       deprecated struct Jupe argument from server_estab()
-
-2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
-       changes required to control remote stats
-
-       * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
-       recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
-       [forward-port from pl15]
-
-       * ircd/m_whowas.c (m_whowas): report server name only if requester
-       is an operator [forward-port from pl15]
-
-       * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
-       my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
-       and obtain the report from the user's server [forward-port from
-       pl15]
-
-       * ircd/m_who.c: add missing include for ircd_policy.h
-       [forward-port from pl15]
-
-       * ircd/m_version.c (m_version): require oper access for remote
-       /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_time.c (m_time): require oper access for remote /time if
-       HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
-       missing semicolon [forward-port from pl15]
-
-       * ircd/m_nick.c (ms_nick): hide the origin of certain collision
-       kills [forward-port from pl15]
-
-       * ircd/m_motd.c (m_motd): require oper access for remote /motd if
-       HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_lusers.c (m_lusers): require oper access for remote
-       /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/m_burst.c (ms_burst): server-added bans are stored using
-       local server name, to hide remote server names; modes also are to
-       originate from the local server [forward-port from pl15]
-
-       * ircd/m_admin.c (m_admin): require oper access for remote /admin
-       if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
-
-       * ircd/channel.c (add_banid): if a server is adding a ban, use my
-       server name to hide the remote server's name [forward-port from
-       pl15]
-
-       * ircd/Makefile.in: ran make depend
-
-       * include/s_stats.h: hunt_stats() has to have an extra argument to
-       support the forward-port from pl15
-
-       * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
-       HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
-
-       * ircd/engine_poll.c (engine_loop): remove bogus assert that I
-       forgot to check in the events branch
-
-2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/res.c (init_resolver): don't start DNS expires with a 0
-       relative timeout--if the server starts slow, timeouts could be
-       messy...there's probably a better solution, but this'll do for now
-
-       * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
-       headers very well; include stropts.h; define an os_set_tos()
-
-       * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
-       os_generic.c
-
-       * ircd/ircd.c: if there are no C-lines, we don't want to have a
-       timer that expires at the absolute time of 0--it kinda blocks all
-       the other timers!
-
-       * ircd/engine_devpoll.c: some includes for open(); declare errcode
-       and codesize in engine_loop()
-
-       * ircd/list.c (free_client): remove bogus check on timer active
-       flag
-
-       * ircd/s_auth.c: pull out destruction code in
-       auth_timeout_request() into an externally-visible
-       destroy_auth_request(); manage cli_auth pointer in client
-       structure; use it for an extra assertion check
-
-       * ircd/list.c: include s_auth.h for destroy_auth_request(); add
-       debugging notices to show flow when deallocating
-       connections/clients; call destroy_auth_request() when free'ing a
-       client that has an auth outstanding; don't free the connection if
-       the process timer is unmarked but still active
-
-       * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
-       and reset it before calling the event handler for an ET_DESTROY
-       event
-
-       * include/s_auth.h (destroy_auth_request): declare
-       destroy_auth_request(), which can be used to destroy an
-       outstanding auth request if a client socket goes away before the
-       auth exchange is completed
-
-       * include/ircd_events.h: add an active flag to keep track of
-       whether or not particular generators are active, for the
-       convenience of functions using the API
-
-       * include/client.h: add a pointer for auth requests to struct
-       Connection so we can kill outstanding auth requests if a client
-       socket closes unexpectedly
-
-       * ircd/s_bsd.c: cli_connect() could become 0 during the course of
-       the sock or timer callback; take that into account in the assert
-
-       * ircd/list.c: add magic number checking and setting--magic
-       numbers are zero'd on frees to detect double-frees; add back
-       setting of cli_from() to 0 to break the back-link from the struct
-       Connection (duh)
-
-       * ircd/ircd.c: set me's magic number correctly
-
-       * include/client.h: define magic numbers and accessor/verifier
-       macros
-
-       * ircd/list.c: assert that dealloc_client() is called with
-       cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
-       dealloc_client(); don't mess with cli_from(cptr)
-
-       * ircd/s_bsd.c: only attempt to dealloc a connection if the
-       associated client has already been destroyed, or at least delinked
-
-2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/list.c (free_client): only try to delete the socket when
-       the fd hasn't already been closed, avoiding a double-free
-
-       * ircd/list.c (free_connection): make sure the client is really
-       gone before doing away with the connection
-
-       * ircd/s_bsd.c: record that socket has been added in con_freeflag
-       field; queue a socket_del() as soon as the socket is close()'d;
-       use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
-       FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
-       then dealloc the connection if safe; mark socket as dead when
-       there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
-       to client_timer_callback(); dealloc connection if safe upon
-       ET_DESTROY event in client_timer_callback()
-
-       * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
-       the connection if both socket and timer have been destroyed;
-       destroy both socket and timer explicitly and carefully
-
-       * include/client.h: replace the con_timer field with a
-       con_freeflag field, to indicate what still needs freeing; define
-       the freeflags
-
-       * ircd/engine_select.c (engine_loop): duh...sockList[i] could
-       become 0
-
-       * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
-       become 0
-
-       * ircd/s_bsd.c: add some extra assertions to try to track down a
-       corruption problem
-
-       * ircd/engine_select.c (engine_loop): add an extra assert to try
-       to track down a corruption problem
-
-       * ircd/engine_poll.c (engine_loop): add an extra assert to try to
-       track down a corruption problem
-
-       * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
-       to track down a corruption problem
-
-       * ircd/engine_devpoll.c (engine_loop): skip slots that have become
-       empty during processing; add an extra assert to try to track down
-       a corruption problem
-
-       * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
-       entries
-
-2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c (client_sock_callback): client is no longer
-       blocked, so we must mark it as unblocked
-
-       * ircd/engine_select.c: add Debug() calls galore; add handling for
-       SS_NOTSOCK; use a dummy sock variable to keep things from
-       disappearing on us; correct timeout calculation; update nfds for
-       efficiency
-
-       * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
-       remove a spurious "if (sock)" which will always be true; update
-       nfds for efficiency
-
-       * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
-       SS_NOTSOCK (just in case); correct timeout calculation
-
-       * ircd/engine_devpoll.c: add Debug() calls galore; add handling
-       for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
-
-       * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
-       pretty-indent numbers
-
-       * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
-       case--it's not a socket; the check for writability is most likely
-       not needed, but present for completeness
-
-2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
-       no newline flag is set; call read_packet() when the timer expires,
-       regardless of what's in the buffer--read_packet() should be able
-       to deal properly
-
-       * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
-       sent to clients to include the client nickname (duh)
-
-       * ircd/ircd_events.c: don't destroy a timer if it's already marked
-       for destruction; replace a missing ! in socket_del()
-
-       * ircd/engine_poll.c (engine_loop): reference a temporary variable
-       so we don't have to worry about sockList[i] going away
-
-       * ircd/s_bsd.c (client_sock_callback): add Debug messages
-
-       * ircd/s_auth.c: add Debug messages all over the place
-
-       * ircd/ircd_events.c: add and edit some Debug messages; add a list
-       of routines to convert some of the enums and flags from numbers
-       into human-readable strings for the Debug messages
-
-       * ircd/engine_poll.c: hack some Debug messages to use the new name
-       conversion routines in ircd_events.c; add an extra assert for a
-       condition that shouldn't ever happen; apparently recv() can return
-       EAGAIN when poll() returns readable--I wonder why...
-
-       * include/ircd_events.h: declare some helper routines under
-       DEBUGMODE
-
-2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c (client_sock_callback): add an extra assertion
-       check
-
-       * ircd/s_auth.c: add more Debug messages
-
-       * ircd/list.c (make_client): add an extra assertion check
-
-       * ircd/ircd_events.c (socket_events): don't call the engine events
-       changer if we haven't actually made any changes to the event mask
-
-       * ircd/uping.c: add some Debug messages
-
-       * ircd/s_stats.c: document new /STATS e
-
-       * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
-
-       * ircd/s_bsd.c: remove static client_timer variable; in
-       read_packet(), if there's still data in the client's recvQ after
-       parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
-       of client_sock_callback to handle destroying the timer properly;
-       rewrote client_timer_callback from scratch to be called on an
-       individual client
-
-       * ircd/m_stats.c: add /STATS e to report the engine name
-
-       * ircd/list.c: deal with con_timer field in struct Connection
-       properly; correct a core-level bug in remove_client_from_list--if
-       the client is the only one in the list, we try to update
-       GlobalClientList's cli_prev pointer--not good
-
-       * ircd/ircd.c: remove call to init_client_timer()
-
-       * ircd/engine_poll.c: made Debug messages more uniform by
-       prepending "poll:" to them all; corrected an off-by-one error that
-       caused poll_count to be 1 less than the actual count and removed
-       my work-around; added Debug messages to indicate which socket is
-       being checked and what the results are
-
-       * ircd/Makefile.in: ran a make depend
-
-       * include/s_bsd.h: remove init_client_timer(), since we're doing
-       it differently now
-
-       * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
-       engine name
-
-       * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
-       reports for non-opers
-
-       * include/client.h: add con_timer and con_proc fields to struct
-       Connection and define accessor macros--con_timer marks that
-       con_proc contains a valid timer, and con_proc is used to pace user
-       data
-
-       * ircd/s_bsd.c (close_connection): let free_client() destroy the
-       socket
-
-       * ircd/s_auth.c (start_auth): add a Debug call to indicate when
-       auth has begun on a client
-
-       * ircd/ircd_events.c: ensure that event_execute() is called with a
-       non-NULL event; modify event_add() macro to properly zero list
-       bits; modify gen_dequeue() to not try to clip it out of a list
-       it's already been clipped out of; change signal socket
-       initialization to use state SS_NOTSOCK; permit timeout values of
-       0 in add_timer(); add many Debug calls; change socket_del() and
-       timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
-       timer_run() instead of GEN_DESTROY so that event_generate() will
-       pass on the events; remove the switch and replace with a simpler
-       if-then-else tree in timer_run(); don't allow destroyed sockets to
-       be destroyed again, nor their states or event masks to be changed
-
-       * ircd/ircd.c: initialize "running" to 1
-
-       * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
-       messages all over the place; fix a counting problem in
-       engine_add(); turn wait into a signed integer and set it to -1
-       only if timer_next() returns 0; adjust wait time to be relative;
-       don't call gen_ref_dec() if socket disappeared while we were
-       processing it
-
-       * include/ircd_events.h: the pipe for signals is not a socket, so
-       we must mark it as such--added SS_NOTSOCK for that special socket;
-       events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
-       for the benefit of timer_run()
-
-       * configure.in: add --enable-pedantic and --enable-warnings to
-       turn on (and off) -Wall -pedantic in CFLAGS
-
-2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c: change "s_addr" element accesses to "address"
-       element accesses
-
-       * include/s_conf.h: on some systems, "s_addr" is a macro; use
-       "address" instead
-
-2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
-       void in this file; add a missing semi-colon; declare errcode,
-       codesize
-
-       * ircd/uping.c (uping_sender_callback): it's pptr, not uping
-
-       * ircd/s_user.c (register_user): comment out spurious reference to
-       nextping
-
-       * ircd/s_serv.c (server_estab): comment out spurious reference to
-       nextping
-
-       * ircd/s_conf.c (read_configuration_file): comment out spurious
-       reference to nextping and nextconnect
-
-       * ircd/s_bsd.c: comment out some spurious references to formerly
-       global (now non-existant) variables; correct a couple of typos
-
-       * ircd/s_auth.c: pre-declare some functions referenced in the
-       callback; correct a typo
-
-       * ircd/res.c (start_resolver): pass errno value of ENFILE
-
-       * ircd/listener.c (accept_connection): you know your API is messed
-       up when...variables that shouldn't have been global crop up in
-       other files
-
-       * ircd/list.c (free_client): substitution of == for =
-
-       * ircd/ircd_signal.c: include assert.h for assertion checking;
-       check ev_data() to find out what signal generated event
-
-       * ircd/ircd_events.c: some references to the variable "timer"
-       should have been references to the variable "ptr"
-
-       * ircd/engine_select.c: it's struct fd_set, not struct fdset;
-       ev_timer(ev) is already a timer pointer; declare codesize as a
-       size_t to correct signedness issue; use timer_next(), not
-       time_next()
-
-       * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
-       select fd out of struct pollfd in assertion checking; declare
-       errcode and codesize; use timer_next(), not time_next()
-
-       * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
-       use function timer_next(), not time_next()
-
-       * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
-       use function timer_next(), not time_next()
-
-       * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
-       compiled sources; do make depend
-
-       * include/list.h: pre-declare struct Connection
-
-       * include/ircd_events.h (gen_ref_inc): cast to the right structure
-       name
-
-       * include/s_auth.h: duh; missing */
-
-2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: update write events status after sending data or
-       accumulating data to be sent
-
-       * ircd/m_list.c (m_list): update write events status after
-       canceling a running /list
-
-       * ircd/channel.c (list_next_channels): update write events status
-       after listing a few channels
-
-       * ircd/s_bsd.c: extensive changes to update to new events model;
-       remove on_write_unblocked() and the two implementations of
-       read_message(), which have been deprecated by this change
-
-       * ircd/s_auth.c: set the socket events we're interested in for
-       clients; simplify some logic that does the connect_nonb followed
-       by the socket_add
-
-       * ircd/list.c: define free_connection() to free a connection
-       that's become freeable once the struct Socket has been
-       deallocated; fix up free_client() to take this new behavior into
-       account
-
-       * ircd/ircd.c: call init_client_timer()
-
-       * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
-       to register connect-in-progress with events system; declare
-       init_client_timer() (HACK!) to preserve rate-limiting behavior
-
-       * include/list.h: declare new free_connection()
-
-       * include/client.h: add a struct Socket to struct Connection
-
-2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
-       SIGTERM into event callbacks; perform the actions in the
-       callbacks, since they're not called in the context of the signal;
-       set up the signal callbacks in the event engine
-
-       * ircd/ircd_events.c (signal_callback): we're supposed to look for
-       a specific signal; don't generate an event if there is no signal
-       structure for it
-
-       * ircd/ircd.c: nuke nextconnect and nextping and replace them with
-       connect_timer and ping_timer; massage try_connections() and
-       check_pings() into timer callbacks that re-add themselves at the
-       right time; remove ircd.c's "event_loop()"; initialize the event
-       system and the connect_timer and ping_timer
-
-       * ircd/uping.c: correct a couple more typos
-
-       * ircd/s_auth.c: rework to use new events system
-
-       * ircd/os_solaris.c (os_connect_nonb): update to new interface
-
-       * ircd/os_openbsd.c (os_connect_nonb): update to new interface
-
-       * ircd/os_linux.c (os_connect_nonb): update to new interface
-
-       * ircd/os_generic.c (os_connect_nonb): update to new interface
-
-       * ircd/os_bsd.c (os_connect_nonb): update to new interface
-
-       * include/s_auth.h: remove deprecated members of struct
-       AuthRequest, replacing them with struct Socket and struct Timer
-       structures; add flags to indicate when these structures have been
-       released by the event system; remove the deprecated
-       timeout_auth_queries()
-
-       * include/ircd_osdep.h (os_connect_nonb): connect could complete
-       immediately, so change the interface to handle that possibility
-
-       * ircd/uping.c (uping_server): noticed and corrected a typo
-
-       * ircd/listener.c: set up to use ircd_event's struct Socket by
-       adding an socket_add() call to inetport(), replacing
-       free_listener() with socket_del() in close_listener(), and
-       reworking accept_connection to be called as the callback
-
-       * ircd/ircd.c: add a call to IPcheck_init()
-
-       * ircd/IPcheck.c: remove IPcheck_expire(); rework
-       ip_registry_expire() to be called from a timer; write
-       IPcheck_init() to set up the expiration timer (hard-coded for a
-       60-second expiration time)
-
-       * include/listener.h: add a struct Socket to the struct Listener;
-       remove accept_connection()
-
-       * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
-
-2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
-       USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
-
-       * ircd/engine_select.c: include config.h; set FD_SETSIZE to
-       MAXCONNECTIONS, not IRCD_FD_SETSIZE...
-
-       * ircd/engine_poll.c: include config.h
-
-       * ircd/engine_kqueue.c: include config.h
-
-       * ircd/engine_devpoll.c: include config.h
-
-       * ircd/Makefile.in: include engine sources in compilation and make
-       depend steps
-
-       * configure.in: add checks for enabling the /dev/poll- and
-       kqueue-based engines
-
-       * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
-
-       * ircd/Makefile.in: work in the engine sources
-
-2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_settime.c: include ircd_snprintf.h
-
-       * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
-       parens around a construct that had both || and &&
-
-       * ircd/chkconf.c: #include "config.h" to get some important
-       definitions
-
-       * ircd/Makefile.in: revamp ircd makefile for new build system
-
-       * doc/Makefile.in: revamp doc makefile for new build system
-
-       * config/*: Removed old build system files
-
-       * stamp-h.in: a stamp file
-
-       * install-sh: install-sh for new build system
-
-       * configure.in: configure.in for new build system
-
-       * configure: configure script for new build system (built by
-       autoconf)
-
-       * config.sub: config.sub for new build system
-
-       * config.h.in: config.h.in for new build system (built by
-       autoheader)
-
-       * config.guess: config.guess for new build system
-
-       * aclocal.m4: aclocal.m4 for new build system (built by aclocal
-       1.4)
-
-       * acinclude.m4: aclocal.m4 macros for new build system
-
-       * acconfig.h: config.h skeleton for new build system
-
-       * Makefile.in: modify for new build system
-
-2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
-
-       * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
-
-       * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
-
-2001-05-01  Perry Lorier       <Isomer@coders.net>
-       * doc/iauth.doc: Protocol for iauth server. (from hybrid).
-       * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
-               when you have far far too many sockets in use.
-       * {include,ircd}/iauth.c: A start on iauth support.
-
-2001-05-01  Perry Lorier       <Isomer@coders.net>
-       * ircd/s_err.c: Suggested wording change.
-       * ircd/s_user.c: Users aren't target limited against +k users.
-       * ircd/chkconf.c: Made it compile again, who knows if it works, but
-               now I can at least make install
-        * various: Cleanups on m_*.c files.
-
-
-2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_misc.c (exit_client): make netsplit server notice say the
-       right thing
-
-       * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
-       change to make Khaled happy...
-
-       * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
-       (do_whois): duh...
-
-2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
-       turned up no more bugs
-
-       * ircd/ircd.c: use /* */ comments instead of // comments--all the
-       world's not gcc :(
-
-       * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
-       // comments--all the world's not gcc :(
-
-       * ircd/runmalloc.c: finally garbage-collect unused file
-
-       * include/runmalloc.h: finally garbage-collect unused file
-
-       * ircd/<multiple files>: addition of '#include "config.h"' before
-       all other includes in most .c files
-
-       * include/<multiple files>: remove includes of config.h, which are
-       now going into the raw .c files
-
-2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_whois.c (do_whois): display proper server name if the
-       user is looking up himself
-
-       * ircd/m_who.c (m_who): disable match by servername or display of
-       server names by non-opers
-
-       * include/ircd_policy.h: add define for
-       HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
-       of CFV 165
-
-2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c: keep the $R in memory so we can see it clearly
-       when we do a /stats k
-
-       * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
-       users from turning on +s and +g
-
-       * ircd/s_misc.c (exit_client): pull-up of changes to turn off
-       net.split notice
-
-       * ircd/parse.c: pull-up of changes to disable /trace, /links, and
-       /map for users
-
-       * ircd/m_whois.c (do_whois): pull-up of server name masking for
-       /whois
-
-       * ircd/m_user.c (m_user): removal of umode and snomask defaulting
-       functions, pull-up
-
-       * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
-
-       * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
-
-       * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
-
-       * ircd/channel.c (channel_modes): pull-up of channel key display
-       as *
-
-       * include/ircd_policy.h: pull-up of ircd_policy.h
-
-       * include/client.h: pull-up of Set/ClearServNotice()
-
-       * ircd/gline.c (do_gline): report client name in G-line message
-       (pull-up)
-
-       * ircd/s_user.c (register_user): pull-up--show IP address in some
-       server notices dealing only with users; report which connection
-       class has filled up
-
-       * ircd/s_stats.c (report_deny_list): use conf->flags &
-       DENY_FLAGS_IP insteaf of conf->ip_kill
-
-       * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
-       insteaf of conf->ip_kill
-
-       * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
-       K-line by real name
-
-       * include/s_conf.h: use a flags field in struct DenyConf; define
-       DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
-       pull-up of K-line by real name
-
-       * ircd/m_trace.c: pull-up of IP show for user connections
-
-       * doc/example.conf: pull-up of the realname K-line documentation
-
-       * ircd/ircd.c: forward port of pid file advisory locking mechanism
-
-2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
-       all servers, rather than to only servers that have +w/+g/whatever
-       users on them; among other things, this removes that atrocity
-       known as sentalong[] from this function
-
-       * ircd/m_admin.c: must include ircd.h to declare "me"; must
-       include hash.h to declare FindUser()
-
-       * ircd/m_wallusers.c: implementation of WALLUSERS
-
-       * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
-
-       * ircd/m_wallops.c: only send WALLOPS to opers
-
-       * ircd/parse.c: add WALLUSERS command to parser table
-
-       * include/handlers.h: declare wallusers handlers
-
-       * include/msg.h: add WALLUSERS command
-
-       * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
-       flag, send only to appropriate opers
-
-2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/uping.c: refit to use the new events interface
-
-       * ircd/res.c: refit to use the new events interface
-
-       * ircd/ircd_events.c: create timer_chg(), which permits a
-       (non-periodic) timer's expire time to be modified; change the
-       logic in timer_run() so that timers that were re-added while the
-       event was being processed will not be destroyed prematurely
-
-       * include/uping.h: include the events header, declare some extra
-       fields in struct UPing, remove timeout value, and define some
-       flags for marking which cleanup items have yet to be done
-
-       * include/ircd_events.h: add a prototype for timer_chg() to change
-       the expire time of a running timer
-
-2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
-       * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
-       
-2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
-
-       * config/configure.in: Add check for OpenBSD
-
-       * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
-       differs from generic BSD, particularly in its handling of
-       _XOPEN_SOURCE.
-       
-2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
-       have been added by a U-lined server, rather than going through the
-       activate/deactivate logic; propagate G-line removals by U-lined
-       servers as well
-
-       * ircd/gline.c: rename propagate_gline() to gline_propagate();
-       make gline_propagate() return an int 0 (convenience return); only
-       update lastmod in gline_activate() and gline_deactivate() if the
-       current lastmod is non-zero, since 0 lastmod is our flag of a
-       U-lined server having added a G-line
-
-       * include/gline.h (gline_propagate): exporting the G-line
-       propagation function
-
-       * ircd/m_list.c (m_list): duh; permit explicit channel name
-       specification only when /list gets two arguments ("Kev
-       #wasteland") rather than when /list gets more than two
-       arguments--nice braino
-
-2001-01-29  Thomas Helvey <twhelvey1@home.com>
-
-       * ircd/ircd_reply.c (need_more_params): fix bug that allowed
-       unregistered clients to spam opers with protocol violation
-       messages. Note: the bugfix may have eliminated some useful
-       protocol violation messages.
-       Please send protocol violation messages explicitly from the
-       functions they are discovered in, you have much better context
-       for the error there and it helps to document the behavior of the
-       server. This was also a design bug in that it violated the
-       "A function should do one thing" heuristic. Patching this one
-       would have resulted in a continuous spawning of other bugs over
-       the next 3 years, so I killed it. Check around for stuff this
-       broke and readd the calls to protocol_violation in the functions
-       that need to send the message.
-
-2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
-       already existed, then the logic would (attempt to) skip it, but
-       would not free the ban string; now the ban string is free'd and
-       the ban count is decremented, releasing the ban for use
-
-       * ircd/s_user.c: make send_umode_out() take a prop argument
-       instead of testing for the PRIV_PROPAGATE privilege itself; fix
-       set_umode() to use this new argument, calculating it before
-       calculating the new privileges for a -o'd user
-
-       * ircd/m_oper.c (m_oper): pass the new prop argument to
-       send_umode_out()
-
-       * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
-       that we're not actually going to add because they already exist;
-       test that particular bit before adding to the linked list
-
-       * include/s_user.h: add a prop argument to send_umode_out() to
-       indicate whether or not to propagate the user mode
-
-2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
-       it would have written; upper-bound the number to prevent overflows
-       by proxy; also, tune buffer size given to ircd_vsnprintf() to take
-       into account the fact that ircd_vsnprintf() already takes the
-       terminal \0 into account
-
-2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/msgq.c: add an incredibly ugly hack to attempt to track
-       down an apparent buffer overflow; remove msgq_map(), since it's no
-       longer used anywhere; slight tweaks to prevent off-by-one errors,
-       but these can't explain the problems we've seen
-
-       * include/msgq.h: remove msgq_map(), since it's no longer used
-       anywhere
-
-2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (set_nick_name): call client_set_privs() after
-       parsing user modes
-
-2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_bsd.c (read_message): fix a typo in the select version of
-       read_message()
-
-       * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
-       its argument to be an lvalue, which means we can't use
-       whowas_clean()'s handy-dandy "return ww" feature
-
-       * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
-
-2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c (timer_run): it's possible that the timer got
-       deleted during the callback processing, so don't go to the bother
-       of requeuing it if the destroy flag is set
-
-       * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
-       out of config.h if this is a *BSD; include errno.h (oops);
-       decrement error count after an hour using a timer; use FD_SETSIZE
-       constant instead of IRCD_FD_SETSIZE constant; fill in event
-       processing code
-
-       * ircd/engine_poll.c: include errno.h (oops); decrement error
-       count after an hour using a timer; fill in event processing code
-
-       * ircd/engine_kqueue.c: include errno.h (oops); decrement error
-       count after an hour using a timer; assert events filter is either
-       EVFILT_READ or EVFILT_WRITE; fill in event processing code
-
-       * ircd/engine_devpoll.c: include errno.h (oops); decrement error
-       count after an hour using a timer; fill in event processing code
-
-2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/client.c: fixed feattab; basically, when I changed features
-       to use small integers specifying bit positions, instead of the
-       bits themselves, I forgot to update feattab to not | these
-       privileges together; also fixed a bug in the antiprivs masking
-       loop in client_set_privs()--last index wouldn't get parsed
-
-2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: call event_generate() with new data
-       argument; make it set that field in struct Event; make
-       socket_add() return the value of the eng_add callback
-
-       * ircd/engine_select.c: make engine_add() return a
-       successful/unsuccessful status; add bounds-checking outside of an
-       assert; use accessor macros; use log_write(), not the deprecated
-       ircd_log(); add an assert to engine_loop() to double-check for
-       data structure corruption
-
-       * ircd/engine_poll.c: make engine_add() return a
-       successful/unsuccessful status; add bounds-checking outside of an
-       assert; use accessor macros; use log_write(), not the deprecated
-       ircd_log(); add an assert to engine_loop() to double-check for
-       data structure corruption
-
-       * ircd/engine_kqueue.c: implementation of an engine for kqueue()
-
-       * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
-
-       * include/ircd_events.h: define some accessor macros; add ev_data
-       to struct Event for certain important data--errno values, for
-       instance; make EngineAdd callback tell us if it was successful or
-       not; add extra argument to event_generate(); make socket_add()
-       return the status from EngineAdd
-
-2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: pass initializer information about how many
-       total _filedescriptors_ may be opened at once
-
-       * ircd/ircd.c: use exported "running" instead of unexported
-       thisServer.running
-
-       * ircd/engine_select.c: implementation of an event engine based on
-       select()
-
-       * ircd/engine_poll.c: implementation of an event engine based on
-       poll()
-
-       * include/ircd_events.h: pass the engine initializer an integer
-       specifing how many _filedescriptors_ may be opened at once
-
-       * include/ircd.h: running has to be exported for the engine_*
-       event loops
-
-2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_events.c: include some needed headers; add some
-       comments; make evEngines[] const; bundle sig_sock and sig_fd into
-       a struct named sigInfo; rework struct evInfo to have a queue of
-       _generators_, and only when threaded; added a gen_init() function
-       to centralize generator initialization; fix various compile-time
-       errors; rework event_add() for new queueing scheme and checked for
-       compile-time errors; add casts where needed; spell evEngines[]
-       correctly; make engine_name() return const char*
-
-       * include/ircd_events.h: type EventCallBack depends on struct
-       Event, so pre-declare it; put _event_ queue into generators, and
-       only when threaded; give engine data a union to store both ints
-       and pointers; make engine name a const; fix gen_ref_dec() macro;
-       make engine_name() return a const char*
-
-       * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
-       down with the non-static functions; modify event_execute() to use
-       the new gen_ref_dec() to simplify code; make sure event_generate()
-       does not generate new events for generators marked for destruction
-
-       * include/ircd_events.h: the engines, at least, may need to modify
-       reference counts to keep generators from going away while
-       something still points at them, so add reference counter
-       manipulators and export gen_dequeue() for them
-
-       * ircd/ircd_events.c: set up the list of engines to try; set up
-       the signal struct Socket; rename netInfo to evInfo; move static
-       functions near the beginning of the file; do away with
-       signal_signal() (since we no longer keep a signal count ourselves)
-       and call event_generate() directly from signal_callback--also
-       renamed some functions; allow signal_callback() to read up to
-       SIGS_PER_SOCK at once from the signal pipe; add event_init() to
-       initialize the entire event system; add event_loop() to call the
-       engine's event loop; initialize new struct GenHeader member,
-       gh_engdata; remove timer_next(); add socket_add() function to add
-       a socket; add socket_del() to mark a socket for deletion; add
-       socket_state() to transition a socket between states; add
-       socket_events() to set what events we're interested in on the
-       socket; add engine_name() to retrieve event engine's name
-
-       * include/ircd_events.h: add engine data field to struct
-       GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
-       note about states vs s_events; remove signal count; fold union
-       Generator back into struct Event; remove count members from struct
-       Generators; redefine engine callbacks to not take a struct
-       Engine*; add explanatory comments to callback definitions; add
-       some engine callbacks to handle operations; remove struct Engine
-       flag member--can detect single flag from eng_signal member; add
-       event_init(), event_loop(), engine_name(), and the socket_*()
-       functions; make timer_next() a macro to avoid a function call
-
-2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/ircd_events.h: rename to ircd_events.h, since it handles
-       events, not just networking stuff; add signal support; more
-       structural rearrangement
-
-       * ircd/ircd_events.c: rename to ircd_events.c, since it handles
-       events, not just networking stuff; add signal support; more
-       structural rearrangement
-
-2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_network.c: implement timer API; add reference counts
-       appropriately
-
-       * include/ircd_network.h: firm up some pieces of the interface;
-       split out members everything has into a separate structure; add
-       reference counts; add timer API
-
-2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_network.c: static data and event manipulation
-       functions for new event processing system
-
-       * include/ircd_network.h: data structures for new event processing
-       system
-
-2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whowas.c: Completely re-did the old allocation scheme by
-       turning it into a linked list, permitting the
-       NICKNAMEHISTORYLENGTH feature to be changed on the fly
-
-       * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
-       feature instead of old #define
-
-       * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
-       integer feature with a notify callback (whowas_realloc)
-
-       * ircd/client.c (client_set_privs): second memset was supposed to
-       be over antiprivs, not privs; thanks, Chris Behrens
-       <cbehrens@xo.com> for pointing that out...
-
-       * include/whowas.h: new elements for an extra linked list in
-       struct Whowas; a notify function for feature value changes
-
-       * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
-
-       * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
-
-2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
-       compile-time option--now in features subsystem
-
-       * ircd/motd.c (motd_init): rework motd_init() to be called as the
-       notify function for MPATH and RPATH features (should probably
-       split it up a bit, though...)
-
-       * ircd/m_privs.c (mo_privs): if called with no parameters, return
-       privs of the caller, rather than an error
-
-       * ircd/m_list.c: pull usage message into its own function; pull
-       list parameter processing into its own function that does not
-       modify the contents of the parameter; add list_set_default() to
-       set the default list parameter (uses the notify hook); rework
-       m_list() to make use of these functions; removed dead code
-
-       * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
-       we have no notify handler
-
-       * ircd/ircd_features.c: add notify callback for notification of
-       value changes; give mark callback an int return value to indicate
-       whether or not to call the notify callback; fix up feature macros
-       for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
-       string handling in feature_set() to deal with def_str being a null
-       pointer; wrote feature_init() to set up all defaults appropriately
-
-       * ircd/ircd.c (main): call feature_init() instead of
-       feature_mark(), to avoid calling notify functions while setting up
-       defaults
-
-       * ircd/client.c: updated to deal with new privileges structure
-
-       * ircd/class.c: updated so init_class() can be called should one
-       of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
-       DEFAULTMAXSENDQLENGTH be changed
-
-       * include/ircd_log.h: log_feature_mark() updated to fit with new
-       API changes
-
-       * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
-       feature_init() function (found necessary since adding the notify
-       stuff and notifying motd.c during start-up...before we defined
-       RPATH!)
-
-       * include/client.h: move privs around to enable addition of more
-       bits if necessary; based on the FD_* macros
-
-       * include/channel.h: declare list_set_default (actually located in
-       m_list.c *blanche*)
-
-       * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
-       AVBANLEN*MAXSILES) from features subsystem
-
-       * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
-       anything anymore
-
-       * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
-       the features subsystem
-
-       * ircd/s_auth.c (start_auth): NODNS migrated to the features
-       subsystem
-
-       * ircd/random.c: created random_seed_set() function to set seed
-       value, along with some stuff to make ircrandom() a little more
-       random--state preserving, xor of time instead of direct usage,
-       etc.; it's still a pseudo-random number generator, though, and
-       hopefully I haven't broken the randomness
-
-       * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
-
-       * ircd/m_join.c: use features interface to retrieve
-       MAXCHANNELSPERUSER
-
-       * ircd/ircd_features.c: add NODISP flag for super-secret features;
-       add a whole bunch of new features migrated over from make config
-
-       * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
-       CONNECTTIMEOUT, and TIMESEC
-
-       * ircd/client.c (client_get_ping): use features interface to
-       retrieve PINGFREQUENCY
-
-       * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
-       CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
-
-       * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
-       features subsystem, we have to add something explicit
-
-       * ircd/channel.c: use features interface to retrieve
-       KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
-       note that MAXBANLENGTH is now calculated dynamically from MAXBANS
-       and AVBANLEN
-
-       * ircd/Makefile.in: run make depend
-
-       * include/supported.h (FEATURESVALUES): update to reference
-       feature settings
-
-       * include/random.h: add prototype for random_seed_set
-
-       * include/ircd_features.h: add several more features
-
-       * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
-       subsystem
-
-       * config/config-sh.in: feature-ized some more stuff
-
-       * include/motd.h: some new elements in motd.h for motd.c changes
-
-       * ircd/motd.c: motd_cache() now searches a list of already cached
-       MOTD files; saves us from having duplicate caches in memory if
-       there are two identical T-lines for two different sites...
-
-2001-01-02  Perry Lorier <isomer@coders.net>
-       * ircd/motd.c: don't core if the motd isn't found.  Bug found by
-       Amarande.
-
-2001-01-02  Perry Lorier <isomer@coders.net>
-       * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
-       * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
-               to guppy for noticing, and hektik for providing the fix.
-       * misc others: Minor cleanups, added more protocol_violations, ripped
-               out more P09 stuffs, bit more protocol neg stuff.
-
-2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
-       space (*sigh* stupid clients...)
-
-       * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
-       ircd_features.[ch]
-
-       * ircd/s_err.c: get rid of GODMODE conditionals
-
-       * ircd/s_debug.c (debug_serveropts): switch to using appropriate
-       calls into the features subsystem for various serveropts
-       characters
-
-       * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
-
-       * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
-       to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
-       NOFLOWCONTROL conditional
-
-       * ircd/s_auth.c: use features subsystem to determine value of
-       KILL_IPMISMATCH
-
-       * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
-       features subsystem to determine the setting of IDLE_FROM_MSG
-
-       * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
-
-       * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
-       use features subsystem to get motd file names
-
-       * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
-       subsystem
-
-       * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
-       us no good; use features subsystem to figure out if we need to do
-       HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
-       the Debug(()) macro instead; get value of RELIABLE_CLOCK from
-       features subsystem
-
-       * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
-
-       * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
-       subsystem
-
-       * ircd/m_connect.c: get SERVER_PORT from the features subsystem
-
-       * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
-       from getting marked if they were already set to something...
-
-       * ircd/ircd_features.c: add a flag to indicates read-only access;
-       add several new features that used to be compile-time selected
-
-       * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
-       access to motd files (what the heck?); make sure to initialize the
-       feature subsystem before trying to write the config file
-
-       * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
-       use feature_bool() to figure out if we're using the FERGUSON
-       flusher
-
-       * ircd/Makefile.in: MPATH and RPATH are now done differently, so
-       remove the clause that creates empty files of that name; also ran
-       make depend
-
-       * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
-       there is no easy way to bounds-check it at present
-
-       * include/querycmds.h: make sure ircd_features.h is included; use
-       feature_str(FEAT_DOMAINNAME) in calls to match()
-
-       * include/ircd_features.h: many new features that used to be
-       compile-time selected
-
-       * config/config-sh.in: add * to DOMAINNAME; try also using first
-       argument to search in /etc/resolv.conf; removed many compile-time
-       options that now can be configured through the features system
-
-2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * doc/api/log.txt: how to use the logging API
-
-       * doc/api/features.txt: how to use the features API
-
-       * doc/api/api.txt: how to write API documentation
-
-       * include/ircd_features.h: rearranged a couple of features for
-       neatness purposes
-
-       * ircd/ircd_features.c: cleaned up the macros some; rearranged
-       some code to all go into the switch; rearranged a couple of
-       features for neatness purposes
-
-2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/os_bsd.c: Added os_set_tos for BSD users.
-
-2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_features.c: Isomer almost got it right; you need to
-       use F_I(), since it's an integer value, not a boolean value.  The
-       asserts in feature_int would catch you out...  Also made the F_*
-       macros take flags
-
-       * ircd/s_err.c: define RPL_PRIVS reply
-
-       * ircd/parse.c: put new PRIVS command into command table
-
-       * ircd/m_privs.c (mo_privs): message handler to report operator
-       privileges
-
-       * ircd/ircd_features.c: declare new features OPER_SET and
-       LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
-       ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
-
-       * ircd/client.c: simplify client_set_privs() with a table that
-       defines what features to test for; add new client_report_privs()
-
-       * ircd/Makefile.in: compile new m_privs.c; run make depend
-
-       * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
-       an operator's privileges
-
-       * include/msg.h: define new command: PRIVS
-
-       * include/ircd_features.h: create new features OPER_SET and
-       LOCOP_SET for controlling access to /set
-
-       * include/handlers.h (mo_privs): declare message handler for
-       reporting oper privileges
-
-       * include/client.h (client_report_privs): declare function to
-       report what privileges an oper has
-
-       * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
-       report that a user is an oper if the oper doing the /whois had
-       PRIV_SEE_OPERS
-
-2000-12-17  Isomer <Isomer@coders.net>
-       * ircd/listener.c: added support for TOS twiddling as a 'feature'.
-
-2000-12-17  Isomer <Isomer@coders.net>
-       * ircd/os_linux.c: add TOS stuffs
-
-       * ircd/listener.c: add TOS stuffs
-
-2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
-       to indicate a user is an oper
-
-       * ircd/s_user.c: clear privileges setting when deopping; don't
-       propagate +o unless user has PRIV_PROPAGATE privilege
-
-       * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
-       function and replaced how the server option string is generated
-
-       * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
-
-       * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
-       not to indicate the user is an operator
-
-       * ircd/m_who.c: use HasPriv to determine whether or not a user
-       should be displayed in the list of opers
-
-       * ircd/m_version.c: call debug_serveropts() to get server option
-       string
-
-       * ircd/m_userip.c (userip_formatter): use HasPriv to determine
-       whether or not to show oper status
-
-       * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
-       whether or not to show oper status
-
-       * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
-       checks with HasPriv check; remove dead code
-
-       * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
-       checks with HasPriv check
-
-       * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
-       use feature_bool to check if disabled
-
-       * ircd/m_oper.c (m_oper): set oper priviliges
-
-       * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
-       check
-
-       * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
-       can kill
-
-       * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
-       check
-
-       * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
-       use feature_bool to check if disabled
-
-       * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
-       #ifdef conditional with a HasPriv check
-
-       * ircd/m_gline.c (mo_gline): rework permissions checking
-       structure; use feature_bool to check if any part is disabled
-
-       * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
-       check; remove dead code
-
-       * ircd/m_clearmode.c: use feature_bool() to detect if we're
-       disabled; use HasPriv to figure out what we're permitted to do;
-       only allow clearmode on moded channels
-
-       * ircd/ircd_features.c: define various features; use HasPriv to
-       verify permissions to set/reset
-
-       * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
-       conditionals
-
-       * ircd/client.c (client_set_privs): function to set an oper's
-       privileges
-
-       * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
-
-       * include/whocmds.h: deconditionalize several macros and
-       substitute appropriate calls to HasPriv()
-
-       * include/s_debug.h: get rid of global serveropts[]; define new
-       function debug_serveropts() to build that string on the fly
-
-       * include/ircd_features.h: define some features
-
-       * include/client.h: add privs member to struct Connection; define
-       various priviledges
-
-       * include/channel.h: no longer using IsOperOnLocalChannel; remove
-       conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
-
-       * doc/Configure.help: remove help information for deprecated
-       options
-
-       * config/config-sh.in: remove certain deprecated options having to
-       do with what opers can and cannot do--first stage in moving
-       compile-time constants into the .conf
-
-2000-12-16  Isomer <Isomer@coders.net>
-       * ircd/parse.c: detect if the prefix is missing and try and recover
-       instead of coring.
-
-2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_log.c: found and fixed some bugs in the debug logging
-       code that would sometimes result in the log file not being
-       reopened--which meant that a user could connect and get the
-       logging output--oops
-
-       * ircd/Makefile.in: run make depend...
-
-       * ircd/s_stats.c: get rid of report_feature_list()
-
-       * ircd/s_err.c: add the 'bad value' error message, shift error
-       messages over somewhat
-
-       * ircd/s_debug.c (debug_init): call log_debug_init with the
-       use_tty flag
-
-       * ircd/s_conf.c (read_configuration_file): unmark features before
-       reading the config file, then reset unmarked features after
-       reading the config file
-
-       * ircd/m_stats.c: use feature_report() instead of
-       report_feature_list()
-
-       * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
-       special 'mark' flags and use them; add the stuff needed by the
-       features API
-
-       * ircd/ircd_features.c: rework the features API and add gobs of
-       comments to try to explain what some of these complex functions
-       are actually doing
-
-       * include/s_stats.h: get rid of report_feature_list(); use
-       feature_report() instead
-
-       * include/numeric.h: added a new error message and shifted old
-       values over some--this is, after all, an alpha
-
-       * include/ircd_log.h: log_debug_init now takes an integer to tell
-       it if it should be using the tty; added a couple of functions
-       required by the features API
-
-       * include/ircd_features.h: add an enum and some more functions to
-       flesh out the feature API--it should now be possible to put all
-       those compile-time constants in the config file!
-
-       * ircd/send.c: got the direction of the assert incorrect...
-
-       * ircd/send.c: implement the efficiency of flush_connections by
-       creating a linked list of struct Connection's with queued data;
-       also get rid of flush_sendq_except and make sure to yank
-       connections out of the list when their sendQs become empty (notice
-       the assertion in flush_connections!)
-
-       * ircd/s_bsd.c (close_connection): must yank the Connection out of
-       the sendq list
-
-       * ircd/list.c (dealloc_connection): must yank the Connection out
-       of the sendq list
-
-       * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
-       deprecated flush_sendq_except
-
-       * ircd/client.c: define a couple new helper functions for sendq
-       threading--this will make the flush_connections function in send.c
-       considerably more efficient by creating a linked list of
-       Connections that have queued data to send
-
-       * include/send.h: remove flush_sendq_except, as it's not used
-       anymore
-
-       * include/client.h: declare a couple new helper functions for the
-       sendq threading system
-
-2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
-       parse all arguments
-
-       * ircd/s_debug.c (count_memory): modify to report for clients and
-       connections, not local clients and remote clients
-
-       * ircd/list.c: fiddle with the client-fiddling functions to take
-       into account the divorce of struct Connection from struct Client
-
-       * ircd/ircd.c: define a struct Connection for me, initialize it,
-       and link it into the right place (ewww, globals!)
-
-       * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
-       struct Client into struct Client and struct Connection; redefine
-       local-portion accessor macros to go through struct Client to the
-       struct Connection; define struct Connection accessor macros
-
-2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whowas.c: missed a couple of accesses to a struct Client
-
-       * ircd/uping.c: missed a couple of accesses to a struct Client
-
-       * ircd/send.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_user.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_misc.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_conf.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_bsd.c: missed a couple of accesses to a struct Client
-
-       * ircd/s_auth.c: missed a couple of accesses to a struct Client
-
-       * ircd/res.c: missed a couple of accesses to a struct Client
-
-       * ircd/parse.c: missed a couple of accesses to a struct Client
-
-       * ircd/m_whois.c: use new accessor macros for struct Client
-
-       * ircd/m_who.c: use new accessor macros for struct Client
-
-       * ircd/m_wallchops.c: use new accessor macros for struct Client
-
-       * ircd/m_version.c: use new accessor macros for struct Client
-
-       * ircd/m_userip.c: use new accessor macros for struct Client
-
-       * ircd/m_userhost.c: use new accessor macros for struct Client
-
-       * ircd/m_user.c: use new accessor macros for struct Client
-
-       * ircd/m_uping.c: use new accessor macros for struct Client
-
-       * ircd/m_trace.c: use new accessor macros for struct Client
-
-       * ircd/m_topic.c: use new accessor macros for struct Client
-
-       * ircd/m_time.c: use new accessor macros for struct Client
-
-       * ircd/m_stats.c: use new accessor macros for struct Client
-
-       * ircd/m_squit.c: use new accessor macros for struct Client
-
-       * ircd/m_silence.c: use new accessor macros for struct Client
-
-       * ircd/m_server.c: use new accessor macros for struct Client;
-       remove dead code
-
-       * ircd/m_rpong.c: use new accessor macros for struct Client
-
-       * ircd/m_rping.c: use new accessor macros for struct Client
-
-       * ircd/m_quit.c: use new accessor macros for struct Client
-
-       * ircd/m_privmsg.c: use new accessor macros for struct Client
-
-       * ircd/m_pong.c: use new accessor macros for struct Client; remove
-       dead code
-
-       * ircd/m_ping.c: use new accessor macros for struct Client
-
-       * ircd/m_pass.c: use new accessor macros for struct Client
-
-       * ircd/m_part.c: use new accessor macros for struct Client
-
-       * ircd/m_oper.c: use new accessor macros for struct Client
-
-       * ircd/m_notice.c: use new accessor macros for struct Client
-
-       * ircd/m_nick.c: use new accessor macros for struct Client
-
-       * ircd/m_names.c: use new accessor macros for struct Client
-
-       * ircd/m_mode.c: use new accessor macros for struct Client
-
-       * ircd/m_map.c: use new accessor macros for struct Client
-
-       * ircd/m_list.c: use new accessor macros for struct Client
-
-       * ircd/m_links.c: use new accessor macros for struct Client;
-       remove some dead code
-
-       * ircd/m_kill.c: use new accessor macros for struct Client; remove
-       some dead code
-
-       * ircd/m_kick.c: use new accessor macros for struct Client
-
-       * ircd/m_join.c: use new accessor macros for struct Client; remove
-       some dead code
-
-       * ircd/m_ison.c: use new accessor macros for struct Client
-
-       * ircd/m_invite.c: use new accessor macros for struct Client
-
-       * ircd/m_info.c: use new accessor macros for struct Client
-
-       * ircd/m_gline.c: use new accessor macros for struct Client
-
-       * ircd/m_error.c: use new accessor macros for struct Client
-
-       * ircd/m_create.c: use new accessor macros for struct Client
-
-       * ircd/m_connect.c: use new accessor macros for struct Client;
-       removed some dead code
-
-       * ircd/m_burst.c: use new accessor macros for struct Client
-
-       * ircd/m_away.c: use new accessor macros for struct Client
-
-       * ircd/m_admin.c: use new accessor macros for struct Client
-
-       * ircd/hash.c: missed a couple of accesses to a struct Client
-
-       * ircd/gline.c: missed a couple of accesses to a struct Client
-
-       * ircd/crule.c: missed a couple of accesses to a struct Client
-
-       * ircd/class.c: missed an access to a struct Client
-
-       * ircd/channel.c: missed a couple of accesses to a struct Client
-
-       * ircd/IPcheck.c: missed an access to a struct Client
-
-       * include/querycmds.h: fix a couple of stats macros to use
-       structure accessor macros
-
-       * include/client.h: change structure member names to highlight any
-       places in the code I've missed
-
-2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/whowas.c: use new struct Client accessor macros
-
-       * ircd/whocmds.c: use new struct Client accessor macros
-
-       * ircd/send.c: use new struct Client accessor macros
-
-       * ircd/s_user.c: use new struct Client accessor macros; removed
-       some dead code
-
-       * ircd/s_serv.c: use new struct Client accessor macros; removed
-       some dead code
-
-       * ircd/s_numeric.c: use new struct Client accessor macros
-
-       * ircd/s_misc.c: use new struct Client accessor macros
-
-       * ircd/s_debug.c: use new struct Client accessor macros
-
-       * ircd/s_conf.c: use new struct Client accessor macros
-
-       * ircd/s_bsd.c: use new struct Client accessor macros
-
-       * ircd/s_auth.c: use new struct Client accessor macros
-
-       * ircd/parse.c: use new struct Client accessor macros
-
-       * ircd/packet.c: use new struct Client accessor macros
-
-       * ircd/numnicks.c: use new struct Client accessor macros
-
-       * ircd/motd.c: use new struct Client accessor macros
-
-       * ircd/listener.c: use new struct Client accessor macros
-
-       * ircd/list.c: use new struct Client accessor macros
-
-       * ircd/jupe.c: use new struct Client accessor macros
-
-       * ircd/ircd_snprintf.c: use new struct Client accessor macros
-
-       * ircd/ircd_reply.c: use new struct Client accessor macros
-
-       * ircd/ircd_relay.c: use new struct Client accessor macros
-
-       * ircd/ircd.c: use new struct Client accessor macros
-
-       * ircd/gline.c: catch some instances of me.<stuff> I missed
-       previously
-
-       * ircd/client.c: use cli_ instead of con_
-
-       * ircd/class.c: use cli_ instead of con_
-
-       * ircd/channel.c: use cli_ instead of con_
-
-       * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
-       of me.<stuff> I missed previously
-
-       * include/client.h: use cli_ instead of con_...seemed like a good
-       idea at the time *shrug*
-
-2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/hash.c: use struct Client accessor macros
-
-       * ircd/gline.c: use struct Client accessor macros
-
-       * ircd/crule.c: use struct Client accessor macros
-
-       * ircd/client.c: use struct Client accessor macros; remove some
-       dead code
-
-       * ircd/class.c: use struct Client accessor macros
-
-       * ircd/channel.c: use struct Client accessor macros; remove some
-       dead code
-
-       * ircd/IPcheck.c: use struct Client accessor macros
-
-       * include/numnicks.h: use struct Client accessor macros
-
-       * include/client.h: first step to divorcing struct Client and
-       struct Connection--define accessor macros and use them
-
-       * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
-       uplink would remove them.  This is because the removal protocol
-       message wasn't being sent to the uplinks.  This is fixed by fixing
-       propagate_gline() to send the proper number of arguments depending
-       on whether or not we're adding or deleting the Uworld gline, and
-       by having gline_deactivate() make sure to turn off the active bit
-       and call propagate_gline() if it's a Uworld gline
-
-2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
-
-       * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
-       anywhere intelligent...
-
-2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c (send_queued): call deliver_it with appropriate
-       arguments
-
-       * ircd/s_serv.c: reorder a couple of headers--cosmetic
-
-       * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
-       MsgQ
-
-       * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
-       with appropriate iovec
-
-       * ircd/os_linux.c (os_sendv_nonb): function for calling writev
-       with appropriate iovec
-
-       * ircd/os_generic.c (os_sendv_nonb): function for calling writev
-       with appropriate iovec
-
-       * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
-       appropriate iovec
-
-       * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
-       exactly how much we're trying to write out to the fd
-
-       * include/s_bsd.h: make deliver_it take a struct MsgQ
-
-       * include/msgq.h: add a len_p argument to msgq_mapiov to help
-       detect short writes that indicate possible socket blocking
-
-       * include/ircd_osdep.h: declare os_sendv_nonb()
-
-       * ircd/channel.c (modebuf_mode): don't add empty modes...
-
-2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/send.h: add prio argument to send_buffer to select
-       between normal and priority queues
-
-       * ircd/s_user.c (send_user_info): add prio argument to send_buffer
-       call
-
-       * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
-
-       * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
-       call
-
-       * ircd/channel.c (send_channel_modes): add prio argument to
-       send_buffer call
-
-       * ircd/send.c (send_buffer): add a prio argument to select the
-       priority queue; update send.c functions to use it
-
-       * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
-       msgq_add; add a prio argument to msgq_add to select the priority
-       queue
-
-       * include/msgq.h: remove msgq_prio; add a prio argument to
-       msgq_add
-
-       * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
-       using msgq functions instead of dbuf functions; remove old, dead
-       sendto_* functions; redo send_buffer to take a struct MsgBuf;
-       rework sendcmdto_* functions to make use of the new struct MsgBuf
-
-       * ircd/s_user.c: remove hunt_server; restructure send_user_info to
-       make appropriate use of struct MsgBuf
-
-       * ircd/s_debug.c (count_memory): count memory used by the MsgQ
-       system and report it
-
-       * ircd/s_conf.c (read_configuration_file): use
-       sendto_opmask_butone instead of the now dead sendto_op_mask
-
-       * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
-       calls on sendQ
-
-       * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
-
-       * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
-       msgq_clean
-
-       * ircd/m_version.c: fix spelling in comments marking dead code
-
-       * ircd/m_userip.c (userip_formatter): restructure to make use of
-       struct MsgBuf
-
-       * ircd/m_userhost.c (userhost_formatter): restructure to make use
-       of struct MsgBuf
-
-       * ircd/m_stats.c: use MsgQLength on a sendQ
-
-       * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
-       sendQ; mark a piece of dead code
-
-       * ircd/m_names.c: use send_reply instead of sendto_one
-
-       * ircd/m_mode.c: use new mode; remove old dead code
-
-       * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
-
-       * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
-       dead code
-
-       * ircd/listener.c (accept_connection): use sendto_opmask_butone
-       instead of sendto_op_mask
-
-       * ircd/list.c (free_client): use MsgQClear to clear sendQ
-
-       * ircd/ircd_reply.c: remove send_error_to_client; restructure
-       send_reply to make use of struct MsgBuf
-
-       * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
-       since its no longer used (at least currently)
-
-       * ircd/channel.c: restructure send_channel_modes to make use of
-       struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
-       and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
-
-       * ircd/Makefile.in: add msgq.c to list of sources; run make depend
-
-       * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
-
-       * include/send.h: send_buffer now takes a struct MsgBuf * instead
-       of a char *; flush_sendq_except now takes no arguments, as sendq
-       flushing currently only happens in dbuf.h and sendQ is a struct
-       MsgQ; remove prototypes for a lot of old sendto_* functions that
-       aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
-       no longer needed, and the latter is identical to BUFSIZE in
-       ircd_defs.h
-
-       * include/s_user.h: make InfoFormatter take a struct MsgBuf*
-       instead of a char *; also make it return void, instead of char *
-
-       * include/msgq.h: add msgq_append and msgq_bufleft functions
-
-       * include/client.h: use a struct MsgQ instead of a struct DBuf for
-       sendq
-
-       * doc/Configure.help: Remove help for compile-time options that
-       have gone away
-
-       * config/config-sh.in: remove CONFIG_NEWMODE
-
-       * ircd/m_server.c (mr_server): don't send server IPs in any server
-       notices
-
-       * ircd/msgq.c (msgq_vmake): add \r\n to messages
-
-2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/msgq.h: declare the MsgQ API
-
-       * ircd/msgq.c: implementation of new MsgQ system
-
-2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_features.c: #include was supposed to be for
-         ircd_features.h, not features.h--missed when I had to do a
-         rename because of namespace collision
-
-2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/m_topic.c: Added missing braces that caused all remote
-         topics to be ignored.
-
-2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_create.c: I'm tired of the exit_client warning :)
-       (ms_create): discovered that exit_client() was being called with
-       too few arguments
-
-       * ircd/s_misc.c (exit_client): remove all dependance on
-       FNAME_USERLOG, since that's now gone; log only to LS_USER
-
-       * ircd/s_debug.c: USE_SYSLOG no longer means anything
-
-       * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
-       log to LS_OPER
-
-       * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
-
-       * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
-
-       * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
-       the same purpose as LS_USER and LS_OPER
-
-       * config/config-sh.in: remove no longer relevant log config
-       variables
-
-       * ircd/uping.c (uping_init): use log_write instead of ircd_log
-
-       * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
-
-       * ircd/s_conf.c: use log_write instead of ircd_log
-
-       * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
-
-       * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
-       ircd_log
-
-       * ircd/res.c (send_res_msg): use log_write instead of ircd_log
-
-       * ircd/m_who.c: use log_write instead of write_log; no longer
-       conditionalize on WPATH; mark dead ircd_log calls
-
-       * ircd/m_uping.c: mark dead ircd_log call
-
-       * ircd/m_server.c (mr_server): use log_write instead of ircd_log
-
-       * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
-       ircd_log calls
-
-       * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
-
-       * ircd/m_oper.c: use log_write instead of ircd_log; no longer
-       conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
-
-       * ircd/m_kill.c: mark dead ircd_log calls
-
-       * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
-       ircd_log
-
-       * ircd/m_clearmode.c: use log_write instead of write_log; no
-       longer conditionalize on OPATH
-
-       * ircd/jupe.c: use log_write instead of write_log; no longer
-       conditionalize on JPATH
-
-       * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
-       function; fix a couple of bugs
-
-       * ircd/ircd_alloc.c: fixed a comment
-
-       * ircd/ircd.c: use log_write instead of ircd_log; fold server
-       notice generation in a couple of cases
-
-       * ircd/gline.c: use log_write instead of write_log; no longer
-       conditionalize on GPATH
-
-       * ircd/channel.c (modebuf_flush_int): use log_write instead of
-       write_log; no longer conditionalize on OPATH
-
-       * ircd/Makefile.in: run make depend, since dependencies have
-       changed
-
-       * doc/example.conf: add system USER to documentation
-
-       * include/ircd_log.h: add system USER; remove old ircd_log()
-       declarations
-
-2000-12-04  Isomer <isomer@coders.net>
-       * ircd/m_names.c: Add NAMES_EON to do_names to say add a
-       'end_of_names' reply when done.
-       * ircd/m_join.c: use NAMES_EON as mentioned above
-
-2000-12-01  net  <simms@LUCIDA.QC.CA>
-
-       * ircd/motd.c: add a freelist for struct Motds
-
-2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_stats.c (report_feature_list): report features--only
-       local opers can see logging configuration, since it doesn't really
-       mean anything to users
-
-       * ircd/s_err.c: add reply messages for new feature subsystem
-
-       * ircd/s_conf.c: add F lines to .conf
-
-       * ircd/parse.c: add the message descriptions for /set, /reset, and
-       /get
-
-       * ircd/m_stats.c: add /stats f
-
-       * ircd/m_set.c (mo_set): implement /set
-
-       * ircd/m_reset.c (mo_reset): implement /reset
-
-       * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
-       reopens log files (for log file rotation)
-
-       * ircd/m_get.c (mo_get): implement /get
-
-       * ircd/ircd_log.c: use int instead of void return value; add
-       log_report_features() and log_canon(); fix a function that
-       disappears if DEBUGMODE not #define'd
-
-       * ircd/ircd_features.c: functions to manipulate feature settings
-       either from the config file or with the new /set, /reset, and /get
-       commands
-
-       * ircd/Makefile.in: add new .c files, run make depend
-
-       * include/s_stats.h: declare report_feature_list() (/stats f
-       handler)
-
-       * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
-       ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
-       reply numerics
-
-       * include/msg.h: add defines for SET, RESET, and GET
-
-       * include/ircd_log.h: add a function to canonicalize subsystem
-       names; change some void return values to int
-
-       * include/ircd_features.h: new features subsystem handles all the
-       manipulation of special features, like log files
-
-       * include/handlers.h: declare new mo_{s,res,g}et message handlers
-       for fiddling with features run-time
-
-       * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
-       seemed like a good idea at the time...
-
-       * doc/example.conf: document new F lines
-
-2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
-       new logging functions, which have special support for the debug
-       log; added loop detection to vdebug(), so that I can
-       sendto_opmask_butone() from log_vwrite() without incurring another
-       call to vdebug()
-
-       * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
-       this allows log file rotations
-
-       * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
-
-       * ircd/ircd_log.c: much more work fleshing out the interface;
-       removed old interface; included backwards-compat ircd_log()
-       function that logs to subsystem LS_OLDLOG
-
-       * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
-       functions
-
-       * include/ircd_log.h: include stdarg.h for va_list; move ordering
-       warning to top of file; fill out LogSys enum; declare new
-       log_debug_init(), log_vwrite(), log_write_kill(), and
-       log_[sg]et_*() functions; add flags argument to log_write();
-       defined flags to inhibit various logging actions
-
-       * include/client.h: added support for new SNO_DEBUG, enabled only
-       if DEBUGMODE is defined
-
-2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_log.c: make sure the various LOG_* constants are
-       defined (probably not needed, since #include <syslog.h> isn't
-       conditional); various static data needed for the new logging
-       functions; definitions of new logging functions
-
-       * include/ircd_log.h: new LogSys enum, declarations for part of
-       new logging API
-
-       * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
-       which was of course stupid; switched to using switch/case in
-       initialization in motd_create(); zero the MotdList.other pointer
-       from motd_clear()
-
-       * ircd/ircd.c (main): motd_init() has to come before init_conf(),
-       or we overwrite init_conf()'s hard work with respect to T-lines
-
-2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_stats.c: comment out report_motd_list and include a
-       reference to motd_report()
-
-       * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
-       motd_add() from the conf parser; call motd_clear() from the rehash
-       routine; remove the no longer needed memory clearing and reloading
-       stuff from the rehash service routine
-
-       * ircd/motd.c: loads new API, including static internal functions
-       to do allocation/deallocation, etc.
-
-       * ircd/m_stats.c: use new motd_report() instead of
-       report_motd_list()
-
-       * ircd/m_motd.c: use new syntax for motd_send()
-
-       * ircd/ircd.c: use new motd_init() function
-
-       * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
-       Makefile.(in); also ran make depend
-
-       * include/motd.h: don't need config.h, but now do need time.h;
-       define new structures and constants; redefine old API and define
-       new functions
-
-2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (register_user): use motd_signon() instead of
-       calling m_motd; much cleaner this way
-
-       * ircd/motd.c: write the new motd_* stuff to make MOTD handling
-       less of a crock
-
-       * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
-       functions
-
-       * include/motd.h: define new MOTD API stuff
-
-2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_reply.c (protocol_violation): rewrite
-       protocol_violation so it'll actually work
-
-       oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
-       the client's real name in there.
-
-       * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
-       resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
-       gets called from register_user with a NULL sptr.  This is probably
-       a design problem, but this bandaid will do for now...
-
-2000-11-19  Isomer <isomer@coders.net>
-       * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
-       to problems in the server<->server protocol.
-
-       * ircd/m_connect.c: allow remote connects with a port of '0'
-       meaning to use the port in the config file.
-
-       * ircd/m_create.c: Enable hacking protection, lets see how far we
-       get.
-
-       * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
-       clients, so we don't any more.
-
-       * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
-       and the user@host is displayed of the victim.
-
-       * ircd/m_map.c: reloaded 'dump_map'.
-
-       * ircd/m_trace.c: allow per class T:
-
-       * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
-
-2000-11-17  Isomer <isomer@coders.net>
-
-       * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
-       that were the *same* instead of different.  Oh the embarrasment!
-
-       * ircd/IPcheck.c: Merged net's fix.
-
-2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_whois.c: remove compiler warning by adding a newline to
-       end of file
-
-       * ircd/m_names.c: moved the flags up to s_user.h
-
-       * ircd/m_join.c: call do_names instead of m_names; restructure
-       ms_join to never transmute a JOIN into a CREATE, but use the TS in
-       the JOIN (if present) to timestamp the channel
-
-       * ircd/channel.c: send JOINs individually, instead of grouping
-       them, so that we can send the channel's creation time
-
-       * include/s_user.h: declare do_names()
-
-2000-10-30  Isomer <isomer@coders.net>
-       * ircd/m_oper.c: Fixed warning
-
-2000-10-30  Isomer <isomer@coders.net>
-       * ircd/m_oper.c: Fixed over agressive cut and no paste
-
-2000-10-30  Isomer <isomer@coders.net>
-
-       * ircd/m_topic.c: Restructured, fixed bug where topics on local
-       channels are propergated (I forget who pointed this out to me, but
-       thanks anyway).  Also to save bandwidth don't send the topic to
-       users if the topic is already the same on the server (but still
-       propergate to other servers).  X/W's "autotopic" feature must
-       chew a lot of bandwidth, hopefully this will help reduce this.
-
-       * doc/rfc1459.rfc: Updated documentation on /topic.
-
-       * ircd/listener.c: snotice warnings about failed accept()'s
-       potentially warning admins that they're running out of fd's.
-
-       * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
-       people in a class in /stats y
-
-       * ircd/m_create.c: Checks for timewarp hacking and squit's
-       evil servers. (currently disabled)
-       
-
-2000-10-30  net <simms@lucida.qc.ca>
-       
-       * ircd/gline.c: Fixed various bugs Isomer left behind.
-
-2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
-       channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
-
-2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: ok, now last mode rules; mode +ps will always
-       result in +s (and won't send a mode if the channel is already +s);
-       mode +sp will always result in +p; -n+n on a +n channel results in
-       no mode change; -n+n on a -n channel results in a +n mode change;
-       etc.
-
-2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: add "add" and "del" elements to ParseState to
-       avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
-       mode_parse_limit that caused it to clear all channel modes
-       prematurely; restructure mode_parse_mode to avoid calling
-       modebuf_mode too early (ties in with first mentioned change);
-       better logic for +p/+s mutual exclusivity; initialize "add" and
-       "del" elements in mode_parse; send simple modes down to
-       modebuf_mode after the loop in mode_parse
-
-2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/m_names.c: Fixed a non-lethal logic error that 
-       triggers an assert() in find_member_link while debugging.
-       (Spotted by Maniac-).
-2000-09-19  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: move K:lines to their own list and data
-       structures, add supporting code.
-       * ircd/m_stats.c: cleanup stats processing a bit move
-       kline listing code to a new function, haven't figured
-       out where it goes yet tho'
-       * ircd/s_stats.c: added K:line bulk lister
-       * include/s_conf.h: added new DenyConf struct
-       * *[ch]: fixeup code that depended on changes
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * ircd/class.c: encapsulate class list
-       * include/class.h: clean up classes
-       * * fixup code that depended on changes
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: add me to local conf
-       * include/s_conf.h: move CONF_ME macro to chkconf.c
-       * ircd/s_bsd.c: cleanup initialization, allow virtual host
-       to be changed by rehash
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * include/class.h: add missing prototype
-       * ircd/class.c: make argument to get_conf_class const
-
-2000-09-17  Thomas Helvey <helveytw@home.com>
-       * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
-       merge conflicts.
-       * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
-       merge conflicts
-
-2000-09-16  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: add code for server struct
-       * ircd/client.c: copy of class.c sort of, new file for client
-       specific operations, will move things here as appropriate,
-       currently only one function is exported from here.
-       * ircd/*.c: general logic cleanups, convert negatives to
-       positives in places.
-
-2000-09-16  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: add code for new crule data structs, strip quotes
-       * ircd/crule.c: clean up scary casting a bit, type safety stuff
-       * include/s_conf.h: add CRuleConf struct and support, remove
-       unused constants
-       * include/crule.h: type safety cleanups
-       * ircd/*.c: fixup code that depended on stuff I changed
-
-2000-09-15  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c: start adding code for new conf data structs, changed
-       listeners, admin line, motd lines, class lines. Move validate_hostent
-       to resolver. General mayhem.
-       * include/s_conf.h: new data structs and accessors
-       * ircd/res.c: move validate_hostent here, rewrite, use regular
-       expression for validation.
-       * doc/example.conf: update docs for port
-
-2000-09-14  Thomas Helvey <helveytw@home.com>
-       * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
-       up conf_init into managable chunks.
-       * ircd/listener.c (set_listener_mask): fix logic bug core dump.
-       * include/s_conf.h: add new data struct for local info (unwinding the mess).
-
-2000-09-13  Thomas Helvey <helveytw@home.com>
-       * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
-       local clients.
-       * ircd/list.c: put SLinks in free lists
-       * ircd/channel.c: put Memberships in free lists
-       * ircd/ircd.c: rearrange initializations a bit in main
-       Note: With these changes, ircd NEVER frees Clients, SLinks or
-       Memberships. It will also rarely need to allocate new
-       ones during net bursts and other disruptions. This should
-       cut down on memory fragmentation a bit as well.
-
-2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_names.c (do_names): pull-up from do_names fix in
-       u2.10.10.pl11
-
-2000-07-15  Perry Lorier       <Isomer@coders.net>
-       * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
-                 match()'s.  Major Major cpu savings.  Also speed up the
-                 other case slightly.  As a side effect you can now
-                k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
-                3am.
-
-2000-07-15  Perry Lorier       <Isomer@coders.net>
-       * various: Fixed warnings after compiling on an alpha.
-2000-07-09  Perry Lorier       <Isomer@coders.net>
-       * doc/ircd.8: Applied grammitical changes by Liandrin, applied
-                     changes suggested by various other people.
-       * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
-                       that it gets a corrupt entry somehow.
-2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * ircd/m_oper.c: Clean up compiler warning.
-
-2000-07-08  Perry Lorier       <Isomer@coders.net>
-       * doc/ircd.8: Updated the documentation, it was slightly out of date
-                     being updated around 1989.
-       * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
-                         fixed a few minor glitches.
-       * doc/rfc1459.unet: Updated.
-       * ircd/IPcheck.c: Fixed more bugs.
-       * ircd/s_bsd.c: We now keep track of servers we've conected.
-
-2000-07-02  Perry Lorier       <Isomer@coders.net>
-       * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
-                       me.  Thanks to Hektik, thanks thanks thanks thanks
-                       thanks thanks thanks thanks thank thanks thank thanks
-
-2000-07-01  Perry Lorier       <Isomer@coders.net>
-       * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
-       * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
-
-2000-06-22  Perry Lorier       <Isomer@coders.net>
-       * ircd/IPcheck.c: Large chunks redone.
-       * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
-                       single AND double digit limits are allowed now.
-       * misc other: Changes to IPcheck.
-
-2000-06-30  Perry Lorier       <Isomer@coders.net>
-       * ircd/ircd.c: Fix command line parameter bugs.
-
-2000-06-30  Perry Lorier       <Isomer@coders.net>
-       * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
-       * ircd/m_nick.c: Tidied things up.
-
-2000-06-12 Joseph Bongaarts <foxxe@trms.com>
-       * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
-       
-2000-05-29  Perry Lorier       <Isomer@coders.net>
-       * ircd/m_stats.c: add /stats v to do only the last part of the /trace
-       * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
-                       you think it'll get bored and fix itself?
-
-2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/m_names.c: Clean up compiler warnings.
-
-2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (mode_parse_client): don't send warning if
-       there's not enough arguments for a +/-o/v; means the habit of
-       doing "/mode #channel +oooooo bob" doesn't result in a bunch of
-       error messages
-
-2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/m_names.c: Re-factor code to remove unneccessary
-       GlobalChannelList iteration every time someone joins a channel.
-
-2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c: add struct Gline * argument to register_user;
-       look up global glines and repropagate them if necessary; send
-       acknowledgement of gline to remote servers when registering users
-
-       * ircd/s_serv.c (server_estab): don't send acknowledgement of
-       local glines to remote servers; do send gline acknowledgement of
-       bursted users
-
-       * ircd/m_user.c (m_user): pass new struct Gline * argument to
-       register_user
-
-       * ircd/m_pong.c: pass new struct Gline * argument to register_user
-
-       * ircd/m_nick.c (ms_nick): document protocol change
-
-       * ircd/gline.c: support GLINE_LASTMOD
-
-       * include/s_user.h: add struct Gline * argument to register_user
-
-       * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
-
-       * ircd/s_conf.c (find_kill): add unsigned int argument to
-       gline_lookup()
-
-       * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
-       glines; add unsigned int argument to gline_lookup()
-
-       * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
-       argument to gline_lookup()
-
-       * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
-       parameter, or when it falls out of bounds: see comments prior to
-       call to jupe_resend(); call server_estab with struct Jupe
-       parameter, so that we place the appropriate %<lastmod> in the
-       appropriate place.
-
-       * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
-       server, as well as for servers when we're sending the BURST
-
-       * include/s_serv.h: add a struct Jupe * to the arguments for
-       server_estab() so that we can send the appropriate lastmod
-       parameter
-
-       * ircd/m_gline.c (ms_gline): actually, this should be the
-       slightest bit more efficient...
-
-       * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
-       bit more efficient...
-
-       * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
-       during netburst
-
-       * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
-       netburst
-
-       * ircd/channel.c (joinbuf_join): really remove user from local
-       channels
-
-2000-05-29  Perry Lorier       <Isomer@coders.net>
-       * ircd/m_names.c: Removed redundant space. 
-       * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
-
-2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
-       a " "
-
-2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: replace bogus assertions with returns, which is
-       logically correct; only wipe out limit/key if they were originally
-       set in the first place; remove user from channel when doing a
-       PARTALL; only send MODE +o for user CREATEing channel if user is
-       not MyUser--CREATE will only be used if the channel did not
-       originally exist, therefore we can assume no one local is on the
-       channel anyway, and we don't exactly need for the user to see an
-       explicit +o for themselves
-
-       * doc/readme.gline: describe the syntax of the GLINE command
-
-       * doc/readme.jupe: update to reflect a couple of changes to JUPE
-
-       * ircd/gline.c: don't propagate local changes
-
-       * ircd/jupe.c: don't propagate local changes
-
-       * ircd/m_gline.c (mo_gline): force local flag when deactivating
-       glines with 0 lastmod
-
-       * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
-       are now removed instead of being deactivated
-
-       * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
-       -<mask>" be accepted
-
-       * ircd/channel.c (send_channel_modes): deal with one of the last
-       vestiges of sendbuf
-
-       * ircd/m_burst.c (ms_burst): debugged ban processing; removed
-       debugging hooks
-
-       * ircd/channel.c (modebuf_extract): remove debugging
-       sendto_opmask_butone calls
-
-2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: support a couple of new flags to support using
-       mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
-       of modebuf_extract to extract added flags for use by ms_burst
-
-       * include/channel.h: a couple of new flags to support using
-       mode_parse inside ms_burst
-
-       * ircd/m_burst.c (ms_burst): brand new implementation of BURST
-
-       * ircd/m_endburst.c: add loop to processing of end_of_burst to
-       free empty channels after the BURST is over.
-
-       * ircd/m_server.c: convert to use new send.c functions--I wanted
-       to rewrite it from scratch, but the logic's pretty complex; I may
-       still rewrite it, though...
-
-2000-05-02  Thomas Helvey <tomh@inxpress.net>
-
-       * ircd/ircd.c: fix broken header include ordering
-
-2000-05-02  Thomas Helvey <tomh@inxpress.net>
-       
-       * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
-        review emailed privately
-
-       * include/IPcheck.h: removed unneeded include
-
-2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_user.c (hunt_server): throw in a comment so I know what
-       the sendto_one is for
-
-       * include/querycmds.h (Count_unknownbecomesclient): convert to
-       sendto_opmask_butone
-
-       * ircd/send.c: start removing dead code
-
-       * include/send.h: start removing dead code
-
-       * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
-       hunt_server_cmd
-
-       * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
-
-2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_stats.c: convert to sendcmdto_one / send_reply
-
-       * ircd/m_kick.c: Completely reimplement m_kick
-
-       * ircd/channel.c: send_user_joins removed; it was dead code,
-       anyway...
-
-2000-05-01  Perry Lorier <isomer@coders.net>
-       * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
-       * ircd/channels.c: My fix for the part problem.  Untested, probably
-               won't work.  Can't be much worse than the current problem.
-               it'll either work or core, take your pick.
-
-
-2000-04-30  Perry Lorier <isomer@coders.net>
-       * config/config-sh.in: Fix for CONNEXIT
-       * ircd/s_{user,misc}.c: Fix for CONNEXIT
-       * ircd/m_invite.c: Fix for incorrectly numnickified invite.
-                       (Kev: Want to come talk to me about this?)
-
-2000-04-30  Steven M. Doyle <steven@doyle.net>
-       * ircd/ircd.c
-         - general cleanups and readability enhancements
-         - rewrite of setuid/chroot code.
-         - server will no longer run as root
-         - -DPROFIL compile option removed
-         - Fixed IPcheck API calls
-       * config/config-sh.in
-         - Fixed up chroot compile options
-         - Added options for debug and profile compiles
-       * config/gen.ircd.Makefile
-         - Support for new debug/profile options
-       * ircd/Makefile.in
-         - Support for new debug/profile options
-       * ircd/ircd_signal.c
-         - Removed -DPROFIL
-
-       * include/IPcheck.h
-         - Removed old API prototypes, added new ones
-       
-       * ircd/IPcheck.c
-         - Readability cleanups (well, I -think-...)
-         - Changed IPRegistryEntry.last_connect to a time_t.  The previously
-           used unsigned short was probably causing interesting things after
-           a client had been connected longer than about 65,535 seconds...
-         - Removed old API functions.
-
-       * ircd/whocmds.c
-         - Removed IPcheck.h include
-       
-       * Additionally modified IPcheck API calls in:
-         - ircd/m_nick.c
-         - ircd/m_auth.c
-         - ircd/s_bsd.c
-         - ircd/s_conf.c
-         - ircd/s_misc.c
-         - ircd/s_serv.c
-         - ircd/s_user.c
-       
-       
-2000-04-30  Perry Lorier <isomer@coders.net>
-       * ircd/s_bsd.c: Sigh. :)
-        * ircd/m_mode.c: fix for modeless channels by poptix.
-
-2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
-
-       * ircd/channel.c (clean_channelname): make clean_channelname also
-       truncate long channel names
-
-2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
-
-       * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
-       joinbuf_flush
-
-       * include/channel.h: definitions and declarations for the struct
-       JoinBuf abstraction
-
-2000-04-29  Perry Lorier <isomer@coders.net>
-       * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
-
-2000-04-29  Perry Lorier <isomer@coders.net>
-       * ircd/s_bsd.c: Add debugging code to IPcheck
-
-2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
-
-       * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
-       RPL_EXPLICIT
-
-       * ircd/m_userhost.c (m_userhost): add a dead code comment
-
-       * ircd/m_desynch.c: forgot one...
-
-       * ircd/m_rehash.c (mo_rehash): er, duplicates :)
-
-       * ircd/m_proto.c (proto_send_supported): just change a comment so
-       it doesn't show up in my scans
-
-       * ircd/ircd_reply.c (send_reply): fix a slight bug...
-
-       * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
-       kinda hackish...
-
-       * ircd/parse.c (parse_server): argument wrangling to make
-       processing in do_numeric a little easier to deal with
-
-       * ircd/s_serv.c (server_estab): SERVER should come from
-       acptr->serv->up, not &me
-
-       * ircd/m_lusers.c: accidentally left out sptr for a %C
-
-       * ircd/send.c: hack to support doing wallchops...
-
-       * ircd/m_whowas.c: convert to new send functions
-
-       * ircd/m_whois.c: convert to new send functions
-
-       * ircd/m_who.c: convert to new send functions
-
-       * ircd/m_wallops.c: convert to new send functions
-
-       * ircd/m_wallchops.c: convert to new send functions
-
-       * ircd/m_version.c: convert to new send functions
-
-       * ircd/m_userip.c: convert to new send functions
-
-       * ircd/m_userhost.c: convert to new send functions
-
-       * ircd/m_uping.c: convert to new send functions
-
-       * ircd/m_trace.c: convert to new send functions
-
-       * ircd/m_topic.c: convert to new send functions
-
-       * ircd/m_time.c: convert to new send functions
-
-       * ircd/m_squit.c: convert to new send functions
-
-       * ircd/m_silence.c: convert to new send functions
-
-       * ircd/m_settime.c: convert to new send functions
-
-       * ircd/m_restart.c: convert to new send functions
-
-       * ircd/m_rehash.c: convert to new send functions
-
-       * ircd/m_privmsg.c: convert to new send functions
-
-       * ircd/m_pong.c: convert to new send functions
-
-       * ircd/m_ping.c: convert to new send functions
-
-       * ircd/m_pass.c: convert to new send functions
-
-       * ircd/m_opmode.c: convert to new send functions
-
-       * ircd/m_oper.c: convert to new send functions
-
-       * ircd/m_notice.c: convert to new send functions
-
-       * ircd/m_nick.c: convert to new send functions
-
-       * ircd/m_names.c: convert to new send functions
-
-       * ircd/m_motd.c: convert to new send functions
-
-       * ircd/m_mode.c: convert to new send functions
-
-       * ircd/m_map.c: convert to new send functions
-
-       * ircd/m_lusers.c: convert to new send functions
-
-       * ircd/m_list.c: convert to new send functions
-
-       * ircd/m_links.c: convert to new send functions
-
-       * ircd/m_kill.c: convert to new send functions
-
-       * ircd/m_jupe.c: convert to new send functions
-
-       * ircd/m_invite.c: convert to new send functions
-
-       * ircd/m_info.c: convert to new send functions
-
-       * ircd/m_help.c: convert to new send functions
-
-       * ircd/m_gline.c: convert to new send functions
-
-       * ircd/m_error.c: convert to new send functions
-
-       * ircd/m_endburst.c: convert to new send functions
-
-       * ircd/m_die.c: convert to new send functions
-
-       * ircd/m_destruct.c: convert to new send functions
-
-       * ircd/m_defaults.c: convert to new send functions
-
-       * ircd/m_connect.c: convert to new send functions
-
-2000-04-28  Perry Lorier <isomer@coders.net>
-       * RELEASE.NOTES: Describe a few more undocumented features.
-       * config/config-sh.in: change the default paths for logging
-       and the recommended number of channels.
-       * include/supported.h: Rearrange slightly, added CHANTYPE's
-
-2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_close.c: convert to send_reply
-
-       * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
-
-       * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
-
-       * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
-
-       * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
-       that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
-       HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
-       carefully rethought...
-
-       * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
-
-       * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
-
-       * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
-       numeric nick; therefore, we have to use the server name
-
-       * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
-
-       * ircd/send.c: fix minor bugs
-
-       * ircd/s_user.c (check_target_limit): mark dead code so I filter
-       it when I grep
-
-       * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
-       when I grep
-
-       * ircd/parse.c: mark dead code so I filter it when I grep
-
-       * ircd/map.c: mark dead code so I filter it when I grep
-
-       * ircd/ircd.c: mark dead code so I filter it when I grep
-
-       * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
-       functions
-
-       * ircd/channel.c: mark dead code so I filter it when I grep
-
-       * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
-       hope I'm not stepping on toes...
-
-       * ircd/s_conf.c: more sendto_opmask_butone / send_reply
-       conversions; use ircd_snprintf in a couple of cases to negate the
-       possibility of buffer overflow
-
-2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: convert as much as possible to new send
-       semantics
-
-       * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
-       test member->user->from->fd, not from->fd
-
-       * ircd/gline.c (gline_add): go ahead and add badchans; we just
-       won't look for them in m_gline; this way, they always work...
-
-       * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
-
-       * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
-       ircd_vsnprintf conversion specifiers
-
-       * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
-       I have my conversion specifiers
-
-       * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
-
-       * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
-       local users
-
-       * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
-       little less brain-dead
-
-       * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
-
-       * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
-       RPL_STATSDEBUG
-
-       * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
-       RPL_STATSDEBUG
-
-       * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
-       for RPL_STATSDEBUG
-
-       * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
-
-       * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
-
-       * ircd/s_user.c (register_user): use RPL_EXPLICIT for
-       ERR_INVALIDUSERNAME
-
-       * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
-
-       * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
-       a numeric as needing to use an explicit pattern, which will be the
-       first argument in the variable argument list
-
-       * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
-       non-prefixed nospoof PING
-
-       * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
-       non-prefixed SERVER login
-
-       * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
-       a numeric usage further up)
-
-       * include/send.h: declare sendrawto_one
-
-       * ircd/send.c (sendrawto_one): new function to use ONLY for
-       non-prefixed commands, like PING to client, or PASS/SERVER on
-       server registration
-
-2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/ircd_snprintf.c (doprintf): implement %H for possible
-       future expansion (channel numerics?)
-
-       * include/ircd_snprintf.h: added documentation to # to explain use
-       with %C; added documentation for : to explain use with %C; added
-       documentation for %H for channels
-
-       * ircd/whocmds.c: use send_reply
-
-       * ircd/userload.c: use sendcmdto_one
-
-       * ircd/uping.c: use sendcmdto_one
-
-       * ircd/send.c: use new flags to %C format string; ':' prefixes
-       client name with a colon for local connects, '#' uses
-       nick!user@host form for local connects
-
-       * ircd/s_user.c: use send_reply, sendto_opmask_butone,
-       sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
-
-       * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
-
-       * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
-       sendcmdto_one
-
-       * ircd/s_auth.c: use sendto_opmask_butone
-
-       * ircd/res.c: use sendcmdto_one
-
-       * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
-       debugging assertions
-
-2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/support.c: dumpcore is no longer used, so get rid of it
-
-       * ircd/parse.c: use send_reply, sendcmdto_one
-
-       * ircd/map.c: use send_reply
-
-       * ircd/listener.c: use send_reply
-
-       * ircd/jupe.c: use sendto_opmask_butone, send_reply
-
-       * ircd/ircd_reply.c: use send_reply
-
-       * ircd/ircd.c: use sendto_opmask_butone
-
-       * ircd/gline.c: use sendto_opmask_butone, send_reply
-
-       * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
-       registered clients; make FLAG_ALT print nick!user@host; make
-       FLAG_COLON print :blah
-
-       * ircd/class.c (report_classes): use send_reply instead of
-       sendto_one
-
-       * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
-
-       * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
-       sendto_one with sendcmdto_one
-
-2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
-       MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
-       sendcmdto_match_butone
-
-       * include/send.h: declare sendcmdto_match_butone
-
-2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/jupe.c: update to use send_reply()
-
-       * ircd/gline.c: update to use send_reply()
-
-       * include/ircd_reply.h: declare send_reply
-
-       * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
-       replies; uses ircd_snprintf
-
-       * ircd/send.c: added comments to redirect searchers to appropriate
-       sendcmdto_* function; moved new functions to end of file; added
-       explanatory comments; reordered arguments; defined new functions
-       mentioned below
-
-       * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
-
-       * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
-
-       * ircd/jupe.c: reorder arguments to sendcmdto_* functions
-
-       * ircd/gline.c: reorder arguments to sendcmdto_* functions
-
-       * include/send.h: reorder arguments, add explanatory comments,
-       declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
-       and vsendto_opmask_butone
-
-2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
-       vsendto_op_mask that uses '*' instead of the receiving client
-       nickname
-
-       * include/send.h: declare sendcmdto_channel_butone; takes a skip
-       argument that allows you to skip (or not to skip) deaf users,
-       users behind bursting servers, and non channel operators
-
-2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/send.c: new sendcmdto_channel_butserv -- note that old
-       sendto_channel_butserv has a subtle bug; also wrote
-       sendcmdto_common_channels.
-
-       * include/send.h: declare new sendcmdto_* functions
-
-       * ircd/jupe.c: support local deactivations of jupes
-
-       * ircd/gline.c: support local deactivations of glines
-
-       * include/jupe.h: JUPE_LDEACT allows jupes to be locally
-       deactivated; if they aren't locally deactivated, then it slaves to
-       the net-wide activation status; JupeIsRemActive() tests only
-       whether the jupe is active everywhere else
-
-       * include/gline.h: GLINE_LDEACT allows glines to be locally
-       deactivated; if they aren't locally deactivated, then it slaves to
-       the net-wide activation status; GlineIsRemActive() tests only
-       whether the gline is active everywhere else
-
-       * ircd/gline.c: detect overlapping G-lines; if an existing, wider
-       gline expires after the new one will, we drop the new one,
-       otherwise we add the G-line after that one (so the wide one will
-       apply first); if the new one contains an existing G-line and if it
-       will expire after the existing one, we drop the existing one to
-       save memory
-
-       * ircd/m_gline.c (mo_gline): opers could issue remote local
-       glines when CONFIG_OPERCMDS was off; fixed
-
-2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
-       this is a local JUPE
-
-       * ircd/gline.c: add flags argument to gline_activate and
-       gline_deactivate for future expansion
-
-       * ircd/m_gline.c: pass flags to gline_activate and
-       gline_deactivate
-
-       * include/gline.h: add flags argument to gline_activate and
-       gline_deactivate
-
-       * ircd/jupe.c: add flags argument to jupe_activate and
-       jupe_deactivate for future expansion
-
-       * include/jupe.h: add flags argument to jupe_activate and
-       jupe_deactivate
-
-       * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
-       local, active; pass flags to jupe_activate and jupe_deactivate
-
-       * include/gline.h: remove dead code
-
-       * ircd/gline.c: make gline expire times relative to CurrentTime,
-       since that should be monotonically increasing, instead of
-       TStime(), which can be set backwards, and which can therefore
-       cause an expire time to increase; make local glines be removed
-       instead of just deactivated; don't let gline_find() look for
-       user@host glines if the mask being looked up is a channel mask
-
-       * ircd/send.c (vsendcmdto_one): forgot to account for the case
-       where origin is a server and destination is a user
-
-       * ircd/jupe.c: make jupe expire times relative to CurrentTime,
-       since that should be monotonically increasing, instead of
-       TStime(), which can be set backwards, and which can therefore
-       cause an expire time to increase; make local jupes be removed
-       instead of just deactivated
-
-       * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
-       limit is fine.  any other warnings I should know about?
-
-2000-04-15  Thomas Helvey <tomh@inxpress.net>
-
-       * ircd/*.c: const correctness and type safety cleanups to
-       get code to compile with C++ compiler. Still has
-       signed/unsigned comparison warnings.
-
-2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/userload.c: change <sys/time.h> include to <time.h> for
-         portability.
-
-2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
-       and convert acptr...
-
-       * ircd/s_user.c: move gline_lookup function call into
-       register_user, where it'll have a username to lookup!
-
-       * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
-       functions; also stuff send_error_to_client into return clauses
-
-       * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
-       functions; also use send_error_to_client where that makes sense
-
-       * ircd/jupe.c: modify to utilize new sendcmdto_* series of
-       functions; also use send_error_to_client where that makes sense
-
-       * ircd/gline.c: modify to utilize new sendcmdto_* series of
-       functions; also fix gline_lookup() to deal properly with remote
-       clients--boy, do struct Client and struct User need to be cleaned
-       up!
-
-       * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
-       too...
-
-       * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
-       sendcmdto_serv_butone(), all utilizing the %v conversion of
-       ircd_snprintf()
-
-       * include/send.h: define IRC_BUFSIZE, max size of a message;
-       declare sendcmdto_one(), vsendcmdto_one(), and
-       sendcmdto_serv_butone()
-
-       * include/msg.h: define all the CMD_* constants needed to utilize
-       the new sendcmdto_* series of functions
-
-       * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
-
-       * ircd/gline.c: remove old, dead code.
-
-       * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
-       unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
-       (don't advertise proxies); remove dead code
-
-       * ircd/parse.c: oper handler for JUPE only lists jupes unless
-       CONFIG_OPERCMDS is enabled
-
-       * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
-       CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
-
-       * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
-       always return ERR_DISABLED
-
-       * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
-       enabled, always return ERR_DISABLED
-
-       * ircd/s_err.c: add error message to indicate disabled commands
-
-       * include/numeric.h (ERR_DISABLED): to indicate disabled commands
-
-       * doc/Configure.help: add documentation for CONFIG_OPERCMDS
-
-       * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
-       CONFIG_NEW_MODE to 'y' for now
-
-       * ircd/gline.c (gline_list): fix a minor formatting bogon
-
-       * BUGS: since I fixed that bug, might as well mark it fixed.
-
-       * ircd/m_join.c: look up badchans with GLINE_EXACT
-
-       * ircd/m_gline.c: fix parc count problems; look up existing
-       G-lines with GLINE_EXACT; only set new lastmod when
-       activating/deactivating existing glines if old lastmod was not 0
-
-       * ircd/gline.c: forgot to copy the gline reason over; don't
-       propagate a gline with 0 lastmod if origin is user; add
-       GLINE_EXACT to force exact matching of gline mask
-
-       * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
-       flag properly
-
-       * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
-       but gline_lookup() actually takes a client--d'oh.
-
-2000-04-13  Thomas Helvey <tomh@inxpress.net>
-       * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
-
-2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
-         "/who * x"
-         "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
-         (Found by Plexus).
-
-       * ircd/whocmds.c: Change idle time calc from socket idle to user
-         idle.
-
-2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
-       too, for ircd_snprintf.c
-
-       * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
-       comments; mostly descended from the Linux manpage for printf, but
-       also documenting the extensions.
-
-       * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
-       client; make 'q' be the same as 'L'; remove __inline__; only
-       define EXTENSION if HAVE_LONG_LONG is defined
-
-       * include/handlers.h: declare m_gline()
-
-       * ircd/parse.c: gline can be called by users, but it only lists
-       the glines.
-
-       * ircd/s_user.c (set_nick_name): resend gline if a remote server
-       introduces a glined client
-
-       * ircd/s_serv.c (server_estab): burst glines, too
-
-       * ircd/gline.c: fix up all the expire times to be offsets;
-       simplify gline_resend()
-
-       * ircd/m_gline.c: begin coding replacements for ms_gline(),
-       mo_gline(), and m_gline()
-
-       * ircd/gline.c (gline_add): allow *@#channel to work correctly;
-       also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
-
-2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * tools/Bouncer/*: Add comments/documentation/tags.
-       * tools/Bouncer/*: Add debug defines, make task fork().
-
-2000-04-12  Thomas Helvey <tomh@inxpress.net>
-       * ircd/s_err.c: Cleanup s_err.c make one table so we
-       don't have to do anything tricky to get an error string.
-
-2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-       * Add port bouncer for http (x/w)
-
-2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
-       call to gline_find(); also used GlineReason() instead of direct
-       reference to structure member
-
-       * ircd/m_join.c (m_join): replace bad_channel() calls with calls
-       to gline_find(name, GLINE_BADCHAN), and also check to see if gline
-       is active
-
-       * ircd/channel.c: nothing seems to be called anywhere...
-
-       * ircd/s_err.c: update a couple of replies to dovetail with new
-       semantics
-
-       * ircd/gline.c: begin complete re-implementation of gline.c along
-       the lines of the final design of jupe.c
-
-       * include/gline.h: begin complete re-implementation of gline.c
-       along the lines of the final design of jupe.c
-
-       * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
-       %s by %s" message...
-
-       * ircd/ircd_snprintf.c: my new snprintf()-like functions
-
-       * include/ircd_snprintf.h: my new snprintf()-like functions
-
-2000-04-11  Thomas Helvey <tomh@inxpress.net>
-       * ircd/IPcheck.c: removed old dead code
-       * ircd/s_user.c (send_user_info): removed non-standard
-          user not found message for userhost/userip
-
-2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
-
-       * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
-       * doc/p10.html: Work on chapter 4.
-
-2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (mode_parse_client): fix coredump on /mode
-       #foobar +o nosuchnick
-
-2000-04-10  Perry Lorier  <Isomer@coders.net>
-       * BUGS: Added bug.
-
-2000-04-09  Thomas Helvey <tomh@inxpress.net>
-       * include/IPcheck.h: fix prototype
-       * ircd/s_user.c: fix usage of IPcheck_remote_connect
-       * ircd/IPcheck.c: removed unused args
-
-2000-04-09  Thomas Helvey <tomh@inxpress.net>
-       * include/IPcheck.h: add proto for IPcheck_expire
-
-       * ircd/IPcheck.c: Rewrote
-
-       * ircd/ircd.c: Add IPcheck_expire to main message loop
-
-       * ircd/s_user.c: Redo target hashing, refactor target code
-
-       * include/numeric.h: Cleaned up numerics, added which ones are
-       in use by other networks and what they are in use for.
-
-       * ircd/channel.c: cleaned can_join(), allow anyone through anything
-       if /invited, simplified the function.  Opers overusing OPEROVERRIDE
-       will get a message explaining to them not to cheat.
-
-       * ircd/m_join.c: cleaned up the various join functions, should be
-       a lot more efficient.  Still needs work.  Now assumes that s<->s
-       won't send it a JOIN 0.  Service coders - note this and tread with
-       care.
-
-       * ircd/m_stats.c: added Gte-'s stats doc patch.
-
-       * ircd/m_version.c: /version now returns the 005 numeric as well.
-       as requested by Liandrin.
-
-
-2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_clearmode.c: add include for support.h for write_log()
-
-       * configure: move ircd/crypt/* to tools/*
-
-2000-04-06  Thomas Helvey <tomh@inxpress.net>
-       * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
-          set client host to server alias if connection from localhost
-
-2000-04-06  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: Fix core during pinging (oops)
-       
-2000-04-06  Perry Lorier <isomer@coders.net>
-       * ircd/send.c: fixed wrong ident being sent to channels bug.
-       * include/numerics.h: Updated some of the numerics from other
-       networks.  Flagged some as 'unused' by undernet.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: Lets see if this helps the ping problem at all.
-       * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
-       time for local clients. (as requested), extended who now returns all
-       the flags (@+!) so you can tell the complete state of a client.
-
-2000-03-30  Thomas Helvey <tomh@inxpress.net>
-       * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/parse.c: oops, missed opers.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
-       for so long.  Remember: m_ping MUST be in the parse array. :)
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: test in check_pings was wrong.  I move that we
-       disallow cvs commit after 10pm localtime....
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/m_pong.c: Fix it for servers too.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/m_pong.c: Fix ping timeout bugs
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/channel.c: Bans had CurrentTime in their when field instead
-       of TStime()
-
-2000-03-31  Thomas Helvey <tomh@ixpress.net>
-       * ircd/numnicks.c (SetXYYCapacity): fix for extended
-       numerics.
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/m_nick.c: send kills both ways so when we add nick change
-       on collision we don't desync the network.
-
-       * ircd/map.c: Fixup the map a bit more.
-
-2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
-
-       * ircd/m_opmode.c: Log the mode changes to OPATH
-
-       * ircd/channel.c (modebuf_flush_int): Log the mode changes to
-       OPATH
-
-       * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
-       OPATH
-
-       * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
-
-       * config/config-sh.in: added OPATH for opmode log file
-
-       * ircd/m_clearmode.c (do_clearmode): updated uses of
-       modebuf_mode_string() for the new usage
-
-       * ircd/channel.c: added flag MODE_FREE and an int argument to
-       modebuf_mode_string() to indicate that the string must be free'd;
-       updated calls to modebuf_mode_string() for the new usage; called
-       collapse(pretty_mask()) on the ban string and use allocated memory
-       for it; added ban list length accounting; fixed a number of small
-       bugs in ban processing
-
-       * include/channel.h: added flag MODE_FREE and an int argument to
-       modebuf_mode_string() to indicate that the string must be free'd
-
-       * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
-       keys and limits that are set
-
-2000-03-30  Perry Lorier <isomer@coders.net>
-       * ircd/ircd.c: rewrote check_pings() for maintainability
-       and speed.  Also changed quit msg's so they don't have
-       redundant nick[host] info in them.
-
-       * ircd/send.c: Changed write errors to report what error
-       occured (if possible).
-
-       * ircd/gline.c: added gline comment to the quit.
-
-       * ircd/m_server.c: Added suggestions to server quits mentioning
-       what went wrong so the admin can fix it earlier instead of asking
-       questions...
-
-       * ircd/map.c: Changed m_map() to hide numerics, show a * beside
-       servers that aren't fully burst yet.  And show '(--s)' for servers
-       where its not sure.
-
-       * doc/example.conf: Fixed wrapped U:
-
-2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
-       mode_parse() (version selectable at compile time)
-
-       * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
-
-       * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
-
-       * config/config-sh.in: add new config option to enable new m_mode
-       implementation
-
-       * doc/Configure.help: add documentation for new config option
-       CONFIG_NEW_MODE
-
-       * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
-       MODE -v : Not enough parameters
-
-       * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
-       +k and +l even if they weren't set...
-
-       * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
-
-       * ircd/channel.c: make mode_process_clients() clear the DEOPPED
-       flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
-       for; test the 0-th member, not the i-th member, of the client
-       change state stuff
-
-       * ircd/m_clearmode.c (do_clearmode): use the new
-       mode_invite_clear() function
-
-       * ircd/channel.c: cleared up all the compile-time warnings and
-       errors
-
-       * include/channel.h: added declarations for mode_ban_invalidate()
-       and mode_invite_clear()
-
-       * ircd/channel.c: finished mode_parse(), then broke it up into a
-       dozen or so helper functions to make the code easier to read
-
-2000-03-29  Thomas Helvey <tomh@inxpress.net>
-       * ircd/ircd.c: refactor server initialization a bit, use
-       getopt for parsing command line, refactor init_sys, main,
-       and other bits.
-
-       * ircd/s_bsd.c: add functions for initialization to clean
-       up logic a bit and remove duplicated code.
-
-       * include/ircd.h: add struct for server process related
-       variables.
-
-2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c: initial definition of mode_parse(); flags to
-       prevent doing the same thing multiple times; helper method
-       send_notoper() to send a "Not oper"/"Not on channel" notice
-
-       * include/channel.h: declare mode_parse() and helper flags
-
-       * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
-       sending to match the current action of set_mode() closely enough
-       that hopefully there won't be major conflicts
-
-       * ircd/channel.c (modebuf_flush_int): consolidated the mode string
-       building logic, reversed the order of the arguments to mode
-       commands to have '-' preceed '+'
-
-2000-03-29  Thomas Helvey <tomh@inxpress.net>
-       * ircd/s_bsd.c (add_connection): don't disable socket options
-       let OS tune itself and allow important performance tweaks to 
-       work.
-
-2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
-
-       * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
-       confused by set_mode, which is doing some really weird logic;
-       guess what I'm going to rewrite next?  ;)
-
-2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
-
-       * include/channel.h: added MODE_SAVE for the bounds checking stuff
-       in modebuf_flush
-
-       * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
-       make it do bounds checking on the buffer; all modes are sent only
-       if the all parameter is 1; modebuf_flush is the exported wrapper
-
-       * include/channel.h: add BOUNCE, renumber flags to get a little
-       more space
-
-       * ircd/channel.c (modebuf_flush): don't overload HACK2, add
-       BOUNCE; send DESYNCH message
-
-2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
-
-       * ircd/m_clearmode.c (do_clearmode): only mark the modes the
-       channel actually has in effect for deletion
-
-       * ircd/channel.c: added explanatory comments to all added
-       functions; made flushing take place at the correct place even if
-       the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
-       to bash some stupid bugs; made modebuf_flush() return if ModeBuf
-       is empty, fixed the apparent source, removed some bogus string
-       termination code, properly terminate the mode strings, add support
-       for HACK2 and HACK3, made limit strings not be sent if the limit
-       is being removed, changed where '+' and '-' come from in sent
-       strings, added support for DEOP flag, set up bouncing code for
-       HACK2
-
-       * ircd/Makefile.in: ran make depend
-
-       * include/channel.h: added new defines for future functionality,
-       made modebuf_flush() return int so I can use tail recursion
-
-       * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
-       to make it all compile
-
-       * ircd/m_opmode.c: add msg.h to includes...
-
-       * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
-
-       * ircd/channel.c (modebuf_flush): realized I forgot to
-       nul-terminate addbuf/rembuf properly...
-
-       * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
-
-       * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
-       sendto_serv_butone--blah^2
-
-       * ircd/send.c (sendto_serv_butone): stupid comments confused me
-
-       * ircd/channel.c (modebuf_flush): if there are no mode changes to
-       propagate, we're done...
-
-       * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
-       not sendto_all_butone
-
-       * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
-
-       * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
-
-       * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
-       the list
-
-       * ircd/parse.c: added messages for opmode and clearmode
-
-       * include/handlers.h: added declarations for mo_opmode(),
-       ms_opmode(), mo_clearmode(), and ms_clearmode()
-
-       * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
-       TOK_CLEARMODE
-
-       * include/channel.h (MODEBUF_DEST_OPMODE): Define the
-       MODEBUF_DEST_OPMODE flag
-
-       * ircd/channel.c (modebuf_flush): added new flag,
-       MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
-       to originate from source's server (or source itself, if
-       IsServer(source)); also causes a server-level MODE to be sent as
-       OPMODE instead
-
-       * include/channel.h: defined MODEBUF_DEST_SERVER,
-       MODEBUF_DEST_HACK4
-
-       * ircd/channel.c: Add another argument to build_string() to handle
-       numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
-       servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
-       to be sent out
-
-2000-03-27  Perry Lorier <isomer@coders.net>
-
-       * ircd/s_bsd.c: fixed missing 'u' typo.
-
-2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
-
-       * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
-       _mode_string(), _mode_client(), _flush(); also implemented a
-       simple build_string()
-
-       * include/channel.h: added definition of ModeBuf, modebuf_*
-       manipulation functions, and a couple of helper macros
-
diff --git a/doc/irc.1 b/doc/irc.1
deleted file mode 100644 (file)
index 09b3ad3..0000000
--- a/doc/irc.1
+++ /dev/null
@@ -1,82 +0,0 @@
-.\" @(#)irc.1 2.6 7 Oct 90
-.TH IRC 1 "7 October 1990"
-.SH NAME
-irc \- User Interface to Internet Relay Chat Protocol
-.SH SYNOPSIS
-\fBirc\fP [\fB-p\fP \fIportnum\fP] [\fB-c\fP \fIchannel\fP] [ \fInickname\fP [ \fIserver\fP ]]
-.SH DESCRIPTION
-.LP
-\fBIrc\fP is a user interface to the Internet Relay Chat, a CB-like
-interactive discussion environment.  It is structured into \fIchannels\fP,
-which are public discussion forums, and also allows for private intercommunication.
-Each participant has a \fInickname\fP, which is the one specified in the command
-line or else his login name.
-.LP
-Once invoked, \fBirc\fP connects as a client to the specified server,
-\fIserver\fP or to the default one (see below).  The screen splits into a dialogue
-window (the major part
-of the screen) and a command line, from which messages can be sent and
-commands given to control irc.
-.SH COMMAND SYNTAX
-The syntax of irc commands is of the form \fB/COMMAND\fP.  The most notable
-ones are listed below.  For an uptodate list, use the \fBHELP\fP command
-of \fBirc\fP.  Case is ignored.
-.IP "\fB/ADMIN\fR [\fIserver\fP]"
-Prints administrative information about an IRC \fIserver\fP.
-.IP "\fB/AWAY\fP [\fImessage\fP]"
-Mark yourself as being away (with an automatic reply \fImessage\fP
-if specified)
-.IP "\fB/BYE\fR, \fB/EXIT\fR, \fB/QUIT\fR"
-Terminate the session
-.IP "\fB/CHANNEL\fR [\fIchannel\fP]"
-Join another \fIchannel\fP
-.IP "\fB/CLEAR\fR"
-Clear the screen
-.IP "\fB/HELP\fR [\fIcommand\fP]"
-Display a brief description of the \fIcommand\fP (or list all commands, if none
-specified).
-.IP "\fB/SUMMON\fR \fIuser\fP"
-Allows to summon a \fIuser\fP specified as a full Internet address, i.e.,
-\fIlogin@host.domain\fP, to an IRC dialogue session (in much the same
-way as the talk(1) command).  It is usable ONLY if the irc daemon runs on
-the target machine (host.domain).
-.IP "\fB/TOPIC\fR \fItopic\fP"
-Sets the \fItopic\fP for the current channel
-.IP "\fB/WHO\fR [\fIchannel\fP|*]"
-Lists all users of IRC if no argument, of the specified \fIchannel\fP or of the
-current channel (*).
-.SH ARGUMENTS
-.IP "\fB-p\fP \fIportnum\fP"
-TCP/IP "port number.  Default is 6667 and this option should seldom if ever"
-be used.
-.IP "\fB-c\fP \fIchannel\fP"
-\fIChannel\fP number to join upon beginning of the session.  Default is no channel.
-.IP "\fInickname\fP"
-\fINickname\fP used in the session (can be changed with the \fB/NICK\fP command).
-Default is user login name.
-.IP "\fIserver\fP"
-\fIServer\fP to connect to.  Default is specified in the irc system configuration
-file, and can be superseded with the environment variable IRCSERVER.
-.SH EXAMPLE
-.RS
-.nf
-tolmoon% \fBirc -p6667 Wizard tolsun\fP
-.fi
-.RE
-.LP
-connects you to irc server in host tolsun (port 6667) with nickname Wizard
-.SH COPYRIGHT
-Copyright (c) 1988 University of Oulu, Computing Center, Finland.
-.nf
-Copyright (c) 1988,1989,1990 Jarkko Oikarinen
-.nf
-All rights reserved.
-For full COPYRIGHT see LICENSE file with IRC package.
-.SH "SEE ALSO"
-ircd(8)
-.SH BUGS
-What bugs ?
-.SH AUTHOR
-Jarkko Oikarinen <jto@tolsun.oulu.fi>
-.nf
-Manual page updated by Michel Fingerhut <Michel.Fingerhut@ircam.fr>
diff --git a/doc/ircd.8 b/doc/ircd.8
deleted file mode 100644 (file)
index 681fbc3..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-.\" @(#)ircd.8 2.0 (beta version) 29 Mar 1989 
-.TH IRCD 8 "10 July 2000"
-.SH NAME
-ircd \- The Undernet Internet Relay Chat Daemon
-.SH SYNOPSIS
-.hy 0
-.IP \fBircd\fP
-[-t] [-d directory] [-f configfile] [-x debuglevel] [-h hostname]
-.SH DESCRIPTION
-.LP
-\fIircd\fP is the Undernet Internet Relay Chat daemon.  
-\fIircd\fP is a server in that its function is to "serve"
-the client program \fIirc(1)\fP with messages and commands.  All commands
-and user messages are passed directly to \fIircd\fP for processing
-and relaying to other servers.  \fIirc(1)\fP depends upon
-there being an \fIircd\fP server running somewhere for it to connect to
-and thus allow the user to begin talking to other users.
-.LP
-There are many common clients including ircII, EPIC, and BitchX for UNIX,
-mIRC and pIRCh for Windows, and IRCle and Homer for the Macintosh.
-.SH OPTIONS
-.TP
-.B \-d directory
-This option tells the server to change to that directory and use
-that as a reference point when opening \fIircd.conf\fP and other startup
-files.
-.TP
-.B \-t
-Instructs the server run in the foreground and to direct debugging output to
-standard output.
-.TP
-.B \-x#
-Defines the debug level for \fIircd\fP. The higher the debug level, the more
-messages get directed to debugging file (or standard output if the -t option is
-used).
-.TP
-.B \-w interface
-This option is deprecated.  Outgoing connections are bound to the
-interface specified in the M: line, and incoming connections are accepted only on
-interfaces specified in the P: lines.
-.TP
-.B \-f filename
-Specifies the \fIircd.conf\fP file to be used for this server. The option
-is used to override the default \fIircd.conf\fP given at compile time.
-.TP
-.B \-c
-This flag must be given if you are running \fIircd\fP from \fI/dev/console\fP or
-any other situation where fd 0 isn't a TTY and you want the server to fork
-off and run in the background. This needs to be given if you are starting
-\fIircd\fP from an \fIrc\fP (such as \fI/etc/rc.local\fP) file.
-.TP
-.B \-h hostname
-Allows the user to manually set the server name at startup. The default
-name is hostname.domainname.
-.TP
-.B \-p portname
-This is deprecated in favor of specifying server ports in P: lines.
-
-.SH CONFIGURATION
-If you plan to connect your \fIircd\fP server to an existing IRC network,
-you will need to alter your local \fIircd\fP configuration file (typically named
-\fIircd.conf\fP) so that it will accept and make connections to other IRC
-servers.  This file contains the hostnames, network addresses, and
-passwords for connections to other IRC servers around the world.  Because 
-the description of the \fIircd.conf\fP file is beyond the scope of this
-document, please refer to the INSTALL file in the \fIircd\fP
-documentation directory.
-.LP
-BOOTING THE SERVER:  The \fIircd\fP server can be started as part of the
-UNIX boot procedure or just by placing the server into Unix Background.
-Keep in mind that if it is *not* part of your UNIXES Boot-up procedure 
-then you will have to manually start the \fIircd\fP server each time your
-UNIX is rebooted.  This means if your UNIX is prone to crashing
-or going for for repairs a lot it would make sense to start the \fIircd\fP
-server as part of your UNIX bootup procedure.  In some cases the \fIirc(1)\fP
-will automatically attempt to boot the \fIircd\fP server if the user is
-on the SAME UNIX that the \fIircd\fP is supposed to be running on.  If the
-\fIirc(1)\fP cannot connect to the \fIircd\fP server it will try to start
-the server on it's own and will then try to reconnect to the newly booted
-\fIircd\fP server.
-.SH EXAMPLE
-.RS
-.nf
-tolsun% \fBircd\fP
-.fi
-.RE
-.LP
-Places \fIircd\fP into UNIX Background and starts up the server for use.
-Note:  You do not have to add the "&" to this command, the program will
-automatically detach itself from tty.
-.SH COPYRIGHT
-(c) 1988,1989 University of Oulu, Computing Center, Finland,
-.LP
-(c) 1988,1989 Department of Information Processing Science,
-University of Oulu, Finland
-.LP
-(c) 1988,1989,1990,1991 Jarkko Oikarinen
-.LP
-For full COPYRIGHT see LICENSE file with IRC package.
-.LP
-.RE
-.SH FILES
- /etc/utmp
- "ircd.conf"
-.SH "SEE ALSO"
-irc(1)
-.SH BUGS
-See the file 'BUGS' included in the distribution.
-.SH AUTHOR
-The current authors of the undernet IRC daemon are coder-com@undernet.org,
-the original author was Jarkko Oikarinen.
\ No newline at end of file
index ab1e045fb81dbcf5ecf800e11b27ad85dd972784..9637b89aa72ad77ccfd98932f1f660673cdcee49 100644 (file)
@@ -17,7 +17,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
-# $Id: ircd-patch,v 1.5.2.1 2005/12/29 03:41:56 entrope Exp $
+# $Id: ircd-patch,v 1.5.2.1 2005-12-29 03:41:56 entrope Exp $
 #
 #
 # Experimental centralized patch system for ircu