Author: Isomer <isomer@coders.net>
[ircu2.10.12-pk.git] / ChangeLog
index 1cdf64cdeadf02f4d7872b5c17db4e57743b890e..38e056bcff6a0bb9089f3c93b9d5b4426b09cf56 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,748 @@
+2001-01-02  Perry Lorier <isomer@coders.net>
+       * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
+       * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
+               to guppy for noticing, and hektik for providing the fix.
+       * misc others: Minor cleanups, added more protocol_violations, ripped
+               out more P09 stuffs, bit more protocol neg stuff.
+
+2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
+       space (*sigh* stupid clients...)
+
+       * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
+       ircd_features.[ch]
+
+       * ircd/s_err.c: get rid of GODMODE conditionals
+
+       * ircd/s_debug.c (debug_serveropts): switch to using appropriate
+       calls into the features subsystem for various serveropts
+       characters
+
+       * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
+
+       * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
+       to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
+       NOFLOWCONTROL conditional
+
+       * ircd/s_auth.c: use features subsystem to determine value of
+       KILL_IPMISMATCH
+
+       * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
+       features subsystem to determine the setting of IDLE_FROM_MSG
+
+       * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
+
+       * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
+       use features subsystem to get motd file names
+
+       * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
+       subsystem
+
+       * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
+       us no good; use features subsystem to figure out if we need to do
+       HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
+       the Debug(()) macro instead; get value of RELIABLE_CLOCK from
+       features subsystem
+
+       * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
+
+       * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
+       subsystem
+
+       * ircd/m_connect.c: get SERVER_PORT from the features subsystem
+
+       * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
+       from getting marked if they were already set to something...
+
+       * ircd/ircd_features.c: add a flag to indicates read-only access;
+       add several new features that used to be compile-time selected
+
+       * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
+       access to motd files (what the heck?); make sure to initialize the
+       feature subsystem before trying to write the config file
+
+       * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
+       use feature_bool() to figure out if we're using the FERGUSON
+       flusher
+
+       * ircd/Makefile.in: MPATH and RPATH are now done differently, so
+       remove the clause that creates empty files of that name; also ran
+       make depend
+
+       * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
+       there is no easy way to bounds-check it at present
+
+       * include/querycmds.h: make sure ircd_features.h is included; use
+       feature_str(FEAT_DOMAINNAME) in calls to match()
+
+       * include/ircd_features.h: many new features that used to be
+       compile-time selected
+
+       * config/config-sh.in: add * to DOMAINNAME; try also using first
+       argument to search in /etc/resolv.conf; removed many compile-time
+       options that now can be configured through the features system
+
+2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * doc/api/log.txt: how to use the logging API
+
+       * doc/api/features.txt: how to use the features API
+
+       * doc/api/api.txt: how to write API documentation
+
+       * include/ircd_features.h: rearranged a couple of features for
+       neatness purposes
+
+       * ircd/ircd_features.c: cleaned up the macros some; rearranged
+       some code to all go into the switch; rearranged a couple of
+       features for neatness purposes
+
+2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
+       * ircd/os_bsd.c: Added os_set_tos for BSD users.
+
+2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/ircd_features.c: Isomer almost got it right; you need to
+       use F_I(), since it's an integer value, not a boolean value.  The
+       asserts in feature_int would catch you out...  Also made the F_*
+       macros take flags
+
+       * ircd/s_err.c: define RPL_PRIVS reply
+
+       * ircd/parse.c: put new PRIVS command into command table
+
+       * ircd/m_privs.c (mo_privs): message handler to report operator
+       privileges
+
+       * ircd/ircd_features.c: declare new features OPER_SET and
+       LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
+       ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
+
+       * ircd/client.c: simplify client_set_privs() with a table that
+       defines what features to test for; add new client_report_privs()
+
+       * ircd/Makefile.in: compile new m_privs.c; run make depend
+
+       * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
+       an operator's privileges
+
+       * include/msg.h: define new command: PRIVS
+
+       * include/ircd_features.h: create new features OPER_SET and
+       LOCOP_SET for controlling access to /set
+
+       * include/handlers.h (mo_privs): declare message handler for
+       reporting oper privileges
+
+       * include/client.h (client_report_privs): declare function to
+       report what privileges an oper has
+
+       * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
+       report that a user is an oper if the oper doing the /whois had
+       PRIV_SEE_OPERS
+
+2000-12-17  Isomer <Isomer@coders.net>
+       * ircd/listener.c: added support for TOS twiddling as a 'feature'.
+
+2000-12-17  Isomer <Isomer@coders.net>
+       * ircd/os_linux.c: add TOS stuffs
+
+       * ircd/listener.c: add TOS stuffs
+
+2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
+       to indicate a user is an oper
+
+       * ircd/s_user.c: clear privileges setting when deopping; don't
+       propagate +o unless user has PRIV_PROPAGATE privilege
+
+       * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
+       function and replaced how the server option string is generated
+
+       * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
+
+       * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
+       not to indicate the user is an operator
+
+       * ircd/m_who.c: use HasPriv to determine whether or not a user
+       should be displayed in the list of opers
+
+       * ircd/m_version.c: call debug_serveropts() to get server option
+       string
+
+       * ircd/m_userip.c (userip_formatter): use HasPriv to determine
+       whether or not to show oper status
+
+       * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
+       whether or not to show oper status
+
+       * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
+       checks with HasPriv check; remove dead code
+
+       * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
+       checks with HasPriv check
+
+       * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
+       use feature_bool to check if disabled
+
+       * ircd/m_oper.c (m_oper): set oper priviliges
+
+       * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
+       check
+
+       * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
+       can kill
+
+       * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
+       check
+
+       * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
+       use feature_bool to check if disabled
+
+       * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
+       #ifdef conditional with a HasPriv check
+
+       * ircd/m_gline.c (mo_gline): rework permissions checking
+       structure; use feature_bool to check if any part is disabled
+
+       * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
+       check; remove dead code
+
+       * ircd/m_clearmode.c: use feature_bool() to detect if we're
+       disabled; use HasPriv to figure out what we're permitted to do;
+       only allow clearmode on moded channels
+
+       * ircd/ircd_features.c: define various features; use HasPriv to
+       verify permissions to set/reset
+
+       * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
+       conditionals
+
+       * ircd/client.c (client_set_privs): function to set an oper's
+       privileges
+
+       * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
+
+       * include/whocmds.h: deconditionalize several macros and
+       substitute appropriate calls to HasPriv()
+
+       * include/s_debug.h: get rid of global serveropts[]; define new
+       function debug_serveropts() to build that string on the fly
+
+       * include/ircd_features.h: define some features
+
+       * include/client.h: add privs member to struct Connection; define
+       various priviledges
+
+       * include/channel.h: no longer using IsOperOnLocalChannel; remove
+       conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
+
+       * doc/Configure.help: remove help information for deprecated
+       options
+
+       * config/config-sh.in: remove certain deprecated options having to
+       do with what opers can and cannot do--first stage in moving
+       compile-time constants into the .conf
+
+2000-12-16  Isomer <Isomer@coders.net>
+       * ircd/parse.c: detect if the prefix is missing and try and recover
+       instead of coring.
+
+2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/ircd_log.c: found and fixed some bugs in the debug logging
+       code that would sometimes result in the log file not being
+       reopened--which meant that a user could connect and get the
+       logging output--oops
+
+       * ircd/Makefile.in: run make depend...
+
+       * ircd/s_stats.c: get rid of report_feature_list()
+
+       * ircd/s_err.c: add the 'bad value' error message, shift error
+       messages over somewhat
+
+       * ircd/s_debug.c (debug_init): call log_debug_init with the
+       use_tty flag
+
+       * ircd/s_conf.c (read_configuration_file): unmark features before
+       reading the config file, then reset unmarked features after
+       reading the config file
+
+       * ircd/m_stats.c: use feature_report() instead of
+       report_feature_list()
+
+       * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
+       special 'mark' flags and use them; add the stuff needed by the
+       features API
+
+       * ircd/ircd_features.c: rework the features API and add gobs of
+       comments to try to explain what some of these complex functions
+       are actually doing
+
+       * include/s_stats.h: get rid of report_feature_list(); use
+       feature_report() instead
+
+       * include/numeric.h: added a new error message and shifted old
+       values over some--this is, after all, an alpha
+
+       * include/ircd_log.h: log_debug_init now takes an integer to tell
+       it if it should be using the tty; added a couple of functions
+       required by the features API
+
+       * include/ircd_features.h: add an enum and some more functions to
+       flesh out the feature API--it should now be possible to put all
+       those compile-time constants in the config file!
+
+       * ircd/send.c: got the direction of the assert incorrect...
+
+       * ircd/send.c: implement the efficiency of flush_connections by
+       creating a linked list of struct Connection's with queued data;
+       also get rid of flush_sendq_except and make sure to yank
+       connections out of the list when their sendQs become empty (notice
+       the assertion in flush_connections!)
+
+       * ircd/s_bsd.c (close_connection): must yank the Connection out of
+       the sendq list
+
+       * ircd/list.c (dealloc_connection): must yank the Connection out
+       of the sendq list
+
+       * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
+       deprecated flush_sendq_except
+
+       * ircd/client.c: define a couple new helper functions for sendq
+       threading--this will make the flush_connections function in send.c
+       considerably more efficient by creating a linked list of
+       Connections that have queued data to send
+
+       * include/send.h: remove flush_sendq_except, as it's not used
+       anymore
+
+       * include/client.h: declare a couple new helper functions for the
+       sendq threading system
+
+2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
+       parse all arguments
+
+       * ircd/s_debug.c (count_memory): modify to report for clients and
+       connections, not local clients and remote clients
+
+       * ircd/list.c: fiddle with the client-fiddling functions to take
+       into account the divorce of struct Connection from struct Client
+
+       * ircd/ircd.c: define a struct Connection for me, initialize it,
+       and link it into the right place (ewww, globals!)
+
+       * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
+       struct Client into struct Client and struct Connection; redefine
+       local-portion accessor macros to go through struct Client to the
+       struct Connection; define struct Connection accessor macros
+
+2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/whowas.c: missed a couple of accesses to a struct Client
+
+       * ircd/uping.c: missed a couple of accesses to a struct Client
+
+       * ircd/send.c: missed a couple of accesses to a struct Client
+
+       * ircd/s_user.c: missed a couple of accesses to a struct Client
+
+       * ircd/s_misc.c: missed a couple of accesses to a struct Client
+
+       * ircd/s_conf.c: missed a couple of accesses to a struct Client
+
+       * ircd/s_bsd.c: missed a couple of accesses to a struct Client
+
+       * ircd/s_auth.c: missed a couple of accesses to a struct Client
+
+       * ircd/res.c: missed a couple of accesses to a struct Client
+
+       * ircd/parse.c: missed a couple of accesses to a struct Client
+
+       * ircd/m_whois.c: use new accessor macros for struct Client
+
+       * ircd/m_who.c: use new accessor macros for struct Client
+
+       * ircd/m_wallchops.c: use new accessor macros for struct Client
+
+       * ircd/m_version.c: use new accessor macros for struct Client
+
+       * ircd/m_userip.c: use new accessor macros for struct Client
+
+       * ircd/m_userhost.c: use new accessor macros for struct Client
+
+       * ircd/m_user.c: use new accessor macros for struct Client
+
+       * ircd/m_uping.c: use new accessor macros for struct Client
+
+       * ircd/m_trace.c: use new accessor macros for struct Client
+
+       * ircd/m_topic.c: use new accessor macros for struct Client
+
+       * ircd/m_time.c: use new accessor macros for struct Client
+
+       * ircd/m_stats.c: use new accessor macros for struct Client
+
+       * ircd/m_squit.c: use new accessor macros for struct Client
+
+       * ircd/m_silence.c: use new accessor macros for struct Client
+
+       * ircd/m_server.c: use new accessor macros for struct Client;
+       remove dead code
+
+       * ircd/m_rpong.c: use new accessor macros for struct Client
+
+       * ircd/m_rping.c: use new accessor macros for struct Client
+
+       * ircd/m_quit.c: use new accessor macros for struct Client
+
+       * ircd/m_privmsg.c: use new accessor macros for struct Client
+
+       * ircd/m_pong.c: use new accessor macros for struct Client; remove
+       dead code
+
+       * ircd/m_ping.c: use new accessor macros for struct Client
+
+       * ircd/m_pass.c: use new accessor macros for struct Client
+
+       * ircd/m_part.c: use new accessor macros for struct Client
+
+       * ircd/m_oper.c: use new accessor macros for struct Client
+
+       * ircd/m_notice.c: use new accessor macros for struct Client
+
+       * ircd/m_nick.c: use new accessor macros for struct Client
+
+       * ircd/m_names.c: use new accessor macros for struct Client
+
+       * ircd/m_mode.c: use new accessor macros for struct Client
+
+       * ircd/m_map.c: use new accessor macros for struct Client
+
+       * ircd/m_list.c: use new accessor macros for struct Client
+
+       * ircd/m_links.c: use new accessor macros for struct Client;
+       remove some dead code
+
+       * ircd/m_kill.c: use new accessor macros for struct Client; remove
+       some dead code
+
+       * ircd/m_kick.c: use new accessor macros for struct Client
+
+       * ircd/m_join.c: use new accessor macros for struct Client; remove
+       some dead code
+
+       * ircd/m_ison.c: use new accessor macros for struct Client
+
+       * ircd/m_invite.c: use new accessor macros for struct Client
+
+       * ircd/m_info.c: use new accessor macros for struct Client
+
+       * ircd/m_gline.c: use new accessor macros for struct Client
+
+       * ircd/m_error.c: use new accessor macros for struct Client
+
+       * ircd/m_create.c: use new accessor macros for struct Client
+
+       * ircd/m_connect.c: use new accessor macros for struct Client;
+       removed some dead code
+
+       * ircd/m_burst.c: use new accessor macros for struct Client
+
+       * ircd/m_away.c: use new accessor macros for struct Client
+
+       * ircd/m_admin.c: use new accessor macros for struct Client
+
+       * ircd/hash.c: missed a couple of accesses to a struct Client
+
+       * ircd/gline.c: missed a couple of accesses to a struct Client
+
+       * ircd/crule.c: missed a couple of accesses to a struct Client
+
+       * ircd/class.c: missed an access to a struct Client
+
+       * ircd/channel.c: missed a couple of accesses to a struct Client
+
+       * ircd/IPcheck.c: missed an access to a struct Client
+
+       * include/querycmds.h: fix a couple of stats macros to use
+       structure accessor macros
+
+       * include/client.h: change structure member names to highlight any
+       places in the code I've missed
+
+2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/whowas.c: use new struct Client accessor macros
+
+       * ircd/whocmds.c: use new struct Client accessor macros
+
+       * ircd/send.c: use new struct Client accessor macros
+
+       * ircd/s_user.c: use new struct Client accessor macros; removed
+       some dead code
+
+       * ircd/s_serv.c: use new struct Client accessor macros; removed
+       some dead code
+
+       * ircd/s_numeric.c: use new struct Client accessor macros
+
+       * ircd/s_misc.c: use new struct Client accessor macros
+
+       * ircd/s_debug.c: use new struct Client accessor macros
+
+       * ircd/s_conf.c: use new struct Client accessor macros
+
+       * ircd/s_bsd.c: use new struct Client accessor macros
+
+       * ircd/s_auth.c: use new struct Client accessor macros
+
+       * ircd/parse.c: use new struct Client accessor macros
+
+       * ircd/packet.c: use new struct Client accessor macros
+
+       * ircd/numnicks.c: use new struct Client accessor macros
+
+       * ircd/motd.c: use new struct Client accessor macros
+
+       * ircd/listener.c: use new struct Client accessor macros
+
+       * ircd/list.c: use new struct Client accessor macros
+
+       * ircd/jupe.c: use new struct Client accessor macros
+
+       * ircd/ircd_snprintf.c: use new struct Client accessor macros
+
+       * ircd/ircd_reply.c: use new struct Client accessor macros
+
+       * ircd/ircd_relay.c: use new struct Client accessor macros
+
+       * ircd/ircd.c: use new struct Client accessor macros
+
+       * ircd/gline.c: catch some instances of me.<stuff> I missed
+       previously
+
+       * ircd/client.c: use cli_ instead of con_
+
+       * ircd/class.c: use cli_ instead of con_
+
+       * ircd/channel.c: use cli_ instead of con_
+
+       * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
+       of me.<stuff> I missed previously
+
+       * include/client.h: use cli_ instead of con_...seemed like a good
+       idea at the time *shrug*
+
+2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/hash.c: use struct Client accessor macros
+
+       * ircd/gline.c: use struct Client accessor macros
+
+       * ircd/crule.c: use struct Client accessor macros
+
+       * ircd/client.c: use struct Client accessor macros; remove some
+       dead code
+
+       * ircd/class.c: use struct Client accessor macros
+
+       * ircd/channel.c: use struct Client accessor macros; remove some
+       dead code
+
+       * ircd/IPcheck.c: use struct Client accessor macros
+
+       * include/numnicks.h: use struct Client accessor macros
+
+       * include/client.h: first step to divorcing struct Client and
+       struct Connection--define accessor macros and use them
+
+       * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
+       uplink would remove them.  This is because the removal protocol
+       message wasn't being sent to the uplinks.  This is fixed by fixing
+       propagate_gline() to send the proper number of arguments depending
+       on whether or not we're adding or deleting the Uworld gline, and
+       by having gline_deactivate() make sure to turn off the active bit
+       and call propagate_gline() if it's a Uworld gline
+
+2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
+
+       * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
+       anywhere intelligent...
+
+2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/send.c (send_queued): call deliver_it with appropriate
+       arguments
+
+       * ircd/s_serv.c: reorder a couple of headers--cosmetic
+
+       * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
+       MsgQ
+
+       * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
+       with appropriate iovec
+
+       * ircd/os_linux.c (os_sendv_nonb): function for calling writev
+       with appropriate iovec
+
+       * ircd/os_generic.c (os_sendv_nonb): function for calling writev
+       with appropriate iovec
+
+       * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
+       appropriate iovec
+
+       * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
+       exactly how much we're trying to write out to the fd
+
+       * include/s_bsd.h: make deliver_it take a struct MsgQ
+
+       * include/msgq.h: add a len_p argument to msgq_mapiov to help
+       detect short writes that indicate possible socket blocking
+
+       * include/ircd_osdep.h: declare os_sendv_nonb()
+
+       * ircd/channel.c (modebuf_mode): don't add empty modes...
+
+2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * include/send.h: add prio argument to send_buffer to select
+       between normal and priority queues
+
+       * ircd/s_user.c (send_user_info): add prio argument to send_buffer
+       call
+
+       * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
+
+       * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
+       call
+
+       * ircd/channel.c (send_channel_modes): add prio argument to
+       send_buffer call
+
+       * ircd/send.c (send_buffer): add a prio argument to select the
+       priority queue; update send.c functions to use it
+
+       * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
+       msgq_add; add a prio argument to msgq_add to select the priority
+       queue
+
+       * include/msgq.h: remove msgq_prio; add a prio argument to
+       msgq_add
+
+       * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
+       using msgq functions instead of dbuf functions; remove old, dead
+       sendto_* functions; redo send_buffer to take a struct MsgBuf;
+       rework sendcmdto_* functions to make use of the new struct MsgBuf
+
+       * ircd/s_user.c: remove hunt_server; restructure send_user_info to
+       make appropriate use of struct MsgBuf
+
+       * ircd/s_debug.c (count_memory): count memory used by the MsgQ
+       system and report it
+
+       * ircd/s_conf.c (read_configuration_file): use
+       sendto_opmask_butone instead of the now dead sendto_op_mask
+
+       * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
+       calls on sendQ
+
+       * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
+
+       * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
+       msgq_clean
+
+       * ircd/m_version.c: fix spelling in comments marking dead code
+
+       * ircd/m_userip.c (userip_formatter): restructure to make use of
+       struct MsgBuf
+
+       * ircd/m_userhost.c (userhost_formatter): restructure to make use
+       of struct MsgBuf
+
+       * ircd/m_stats.c: use MsgQLength on a sendQ
+
+       * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
+       sendQ; mark a piece of dead code
+
+       * ircd/m_names.c: use send_reply instead of sendto_one
+
+       * ircd/m_mode.c: use new mode; remove old dead code
+
+       * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
+
+       * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
+       dead code
+
+       * ircd/listener.c (accept_connection): use sendto_opmask_butone
+       instead of sendto_op_mask
+
+       * ircd/list.c (free_client): use MsgQClear to clear sendQ
+
+       * ircd/ircd_reply.c: remove send_error_to_client; restructure
+       send_reply to make use of struct MsgBuf
+
+       * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
+       since its no longer used (at least currently)
+
+       * ircd/channel.c: restructure send_channel_modes to make use of
+       struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
+       and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
+
+       * ircd/Makefile.in: add msgq.c to list of sources; run make depend
+
+       * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
+
+       * include/send.h: send_buffer now takes a struct MsgBuf * instead
+       of a char *; flush_sendq_except now takes no arguments, as sendq
+       flushing currently only happens in dbuf.h and sendQ is a struct
+       MsgQ; remove prototypes for a lot of old sendto_* functions that
+       aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
+       no longer needed, and the latter is identical to BUFSIZE in
+       ircd_defs.h
+
+       * include/s_user.h: make InfoFormatter take a struct MsgBuf*
+       instead of a char *; also make it return void, instead of char *
+
+       * include/msgq.h: add msgq_append and msgq_bufleft functions
+
+       * include/client.h: use a struct MsgQ instead of a struct DBuf for
+       sendq
+
+       * doc/Configure.help: Remove help for compile-time options that
+       have gone away
+
+       * config/config-sh.in: remove CONFIG_NEWMODE
+
+       * ircd/m_server.c (mr_server): don't send server IPs in any server
+       notices
+
+       * ircd/msgq.c (msgq_vmake): add \r\n to messages
+
+2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * include/msgq.h: declare the MsgQ API
+
+       * ircd/msgq.c: implementation of new MsgQ system
+
+2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/ircd_features.c: #include was supposed to be for
+         ircd_features.h, not features.h--missed when I had to do a
+         rename because of namespace collision
+
+2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
+       * ircd/m_topic.c: Added missing braces that caused all remote
+         topics to be ignored.
+
 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
 
        * ircd/m_create.c: I'm tired of the exit_client warning :)