Author: Carlo Wood <run@alinoe.com>
[ircu2.10.12-pk.git] / ChangeLog
index ab8c6fe1b661490c8fb800cc8ea552afa724f997..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>
        * 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
-#-----------------------------------------------------------------------------