+2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
+ * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
+
+2001-03-07 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * config/configure.in: Add check for OpenBSD
+
+ * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
+ differs from generic BSD, particularly in its handling of
+ _XOPEN_SOURCE.
+
+2001-02-12 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
+ have been added by a U-lined server, rather than going through the
+ activate/deactivate logic; propagate G-line removals by U-lined
+ servers as well
+
+ * ircd/gline.c: rename propagate_gline() to gline_propagate();
+ make gline_propagate() return an int 0 (convenience return); only
+ update lastmod in gline_activate() and gline_deactivate() if the
+ current lastmod is non-zero, since 0 lastmod is our flag of a
+ U-lined server having added a G-line
+
+ * include/gline.h (gline_propagate): exporting the G-line
+ propagation function
+
+ * ircd/m_list.c (m_list): duh; permit explicit channel name
+ specification only when /list gets two arguments ("Kev
+ #wasteland") rather than when /list gets more than two
+ arguments--nice braino
+
+2001-01-29 Thomas Helvey <twhelvey1@home.com>
+
+ * ircd/ircd_reply.c (need_more_params): fix bug that allowed
+ unregistered clients to spam opers with protocol violation
+ messages. Note: the bugfix may have eliminated some useful
+ protocol violation messages.
+ Please send protocol violation messages explicitly from the
+ functions they are discovered in, you have much better context
+ for the error there and it helps to document the behavior of the
+ server. This was also a design bug in that it violated the
+ "A function should do one thing" heuristic. Patching this one
+ would have resulted in a continuous spawning of other bugs over
+ the next 3 years, so I killed it. Check around for stuff this
+ broke and readd the calls to protocol_violation in the functions
+ that need to send the message.
+
+2001-01-29 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
+ already existed, then the logic would (attempt to) skip it, but
+ would not free the ban string; now the ban string is free'd and
+ the ban count is decremented, releasing the ban for use
+
+ * ircd/s_user.c: make send_umode_out() take a prop argument
+ instead of testing for the PRIV_PROPAGATE privilege itself; fix
+ set_umode() to use this new argument, calculating it before
+ calculating the new privileges for a -o'd user
+
+ * ircd/m_oper.c (m_oper): pass the new prop argument to
+ send_umode_out()
+
+ * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
+ that we're not actually going to add because they already exist;
+ test that particular bit before adding to the linked list
+
+ * include/s_user.h: add a prop argument to send_umode_out() to
+ indicate whether or not to propagate the user mode
+
+2001-01-24 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
+ it would have written; upper-bound the number to prevent overflows
+ by proxy; also, tune buffer size given to ircd_vsnprintf() to take
+ into account the fact that ircd_vsnprintf() already takes the
+ terminal \0 into account
+
+2001-01-22 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/msgq.c: add an incredibly ugly hack to attempt to track
+ down an apparent buffer overflow; remove msgq_map(), since it's no
+ longer used anywhere; slight tweaks to prevent off-by-one errors,
+ but these can't explain the problems we've seen
+
+ * include/msgq.h: remove msgq_map(), since it's no longer used
+ anywhere
+
+2001-01-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_nick_name): call client_set_privs() after
+ parsing user modes
+
+2001-01-17 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c (read_message): fix a typo in the select version of
+ read_message()
+
+ * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
+ its argument to be an lvalue, which means we can't use
+ whowas_clean()'s handy-dandy "return ww" feature
+
+ * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
+
+2001-01-15 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/client.c: fixed feattab; basically, when I changed features
+ to use small integers specifying bit positions, instead of the
+ bits themselves, I forgot to update feattab to not | these
+ privileges together; also fixed a bug in the antiprivs masking
+ loop in client_set_privs()--last index wouldn't get parsed
+
+2001-01-03 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/whowas.c: Completely re-did the old allocation scheme by
+ turning it into a linked list, permitting the
+ NICKNAMEHISTORYLENGTH feature to be changed on the fly
+
+ * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
+ feature instead of old #define
+
+ * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
+ integer feature with a notify callback (whowas_realloc)
+
+ * ircd/client.c (client_set_privs): second memset was supposed to
+ be over antiprivs, not privs; thanks, Chris Behrens
+ <cbehrens@xo.com> for pointing that out...
+
+ * include/whowas.h: new elements for an extra linked list in
+ struct Whowas; a notify function for feature value changes
+
+ * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
+
+ * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
+
+2001-01-02 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
+ compile-time option--now in features subsystem
+
+ * ircd/motd.c (motd_init): rework motd_init() to be called as the
+ notify function for MPATH and RPATH features (should probably
+ split it up a bit, though...)
+
+ * ircd/m_privs.c (mo_privs): if called with no parameters, return
+ privs of the caller, rather than an error
+
+ * ircd/m_list.c: pull usage message into its own function; pull
+ list parameter processing into its own function that does not
+ modify the contents of the parameter; add list_set_default() to
+ set the default list parameter (uses the notify hook); rework
+ m_list() to make use of these functions; removed dead code
+
+ * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
+ we have no notify handler
+
+ * ircd/ircd_features.c: add notify callback for notification of
+ value changes; give mark callback an int return value to indicate
+ whether or not to call the notify callback; fix up feature macros
+ for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
+ string handling in feature_set() to deal with def_str being a null
+ pointer; wrote feature_init() to set up all defaults appropriately
+
+ * ircd/ircd.c (main): call feature_init() instead of
+ feature_mark(), to avoid calling notify functions while setting up
+ defaults
+
+ * ircd/client.c: updated to deal with new privileges structure
+
+ * ircd/class.c: updated so init_class() can be called should one
+ of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
+ DEFAULTMAXSENDQLENGTH be changed
+
+ * include/ircd_log.h: log_feature_mark() updated to fit with new
+ API changes
+
+ * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
+ feature_init() function (found necessary since adding the notify
+ stuff and notifying motd.c during start-up...before we defined
+ RPATH!)
+
+ * include/client.h: move privs around to enable addition of more
+ bits if necessary; based on the FD_* macros
+
+ * include/channel.h: declare list_set_default (actually located in
+ m_list.c *blanche*)
+
+ * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
+ AVBANLEN*MAXSILES) from features subsystem
+
+ * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
+ anything anymore
+
+ * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
+ the features subsystem
+
+ * ircd/s_auth.c (start_auth): NODNS migrated to the features
+ subsystem
+
+ * ircd/random.c: created random_seed_set() function to set seed
+ value, along with some stuff to make ircrandom() a little more
+ random--state preserving, xor of time instead of direct usage,
+ etc.; it's still a pseudo-random number generator, though, and
+ hopefully I haven't broken the randomness
+
+ * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
+
+ * ircd/m_join.c: use features interface to retrieve
+ MAXCHANNELSPERUSER
+
+ * ircd/ircd_features.c: add NODISP flag for super-secret features;
+ add a whole bunch of new features migrated over from make config
+
+ * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
+ CONNECTTIMEOUT, and TIMESEC
+
+ * ircd/client.c (client_get_ping): use features interface to
+ retrieve PINGFREQUENCY
+
+ * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
+ CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
+
+ * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
+ features subsystem, we have to add something explicit
+
+ * ircd/channel.c: use features interface to retrieve
+ KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
+ note that MAXBANLENGTH is now calculated dynamically from MAXBANS
+ and AVBANLEN
+
+ * ircd/Makefile.in: run make depend
+
+ * include/supported.h (FEATURESVALUES): update to reference
+ feature settings
+
+ * include/random.h: add prototype for random_seed_set
+
+ * include/ircd_features.h: add several more features
+
+ * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
+ subsystem
+
+ * config/config-sh.in: feature-ized some more stuff
+
+ * include/motd.h: some new elements in motd.h for motd.c changes
+
+ * ircd/motd.c: motd_cache() now searches a list of already cached
+ MOTD files; saves us from having duplicate caches in memory if
+ there are two identical T-lines for two different sites...
+
+2001-01-02 Perry Lorier <isomer@coders.net>
+ * ircd/motd.c: don't core if the motd isn't found. Bug found by
+ Amarande.
+
2001-01-02 Perry Lorier <isomer@coders.net>
* ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic.
* ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks