Author: Carlo Wood <run@alinoe.com>
[ircu2.10.12-pk.git] / ChangeLog
index 76d6d35b372b85884fc069455b8bac6d6d2360d1..d3b33e789e6d35a13c2272595084bf6cb7213929 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+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
 
        * 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
        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
        * 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
-#-----------------------------------------------------------------------------