+2009-03-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse): Add Doxygen comment. When bouncing
+ a mode from a desynced U-lined server, do not set the modes or
+ send the change as a HACK(4) message.
+
+2009-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/send.c (sendcmdto_match_butone): Move match_it() to the end
+ of the if() to minimize the number of expensive function calls.
+
+2009-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * patches/diffs/antispambot.diff: Forward port a patch by Dianora
+ to add rudimentary spam bot detection to ircu.
+
+2009-02-08 Michael Poole <mdpoole@troilus.org>
+
+ * include/client.h (ClearHub): New macro.
+
+ * ircd/ircd.c (main): Set IPv6 flag on &me if appropriate.
+
+ * ircd/ircd_features.c (feature_notify_hub): New function.
+ (features[]): Register it for FEAT_HUB.
+
+ * ircd/ircd_parser.y (connectblock): Do not default maxlinks to
+ 65535 unless "hub" is specified.
+ (clientblock): Reset maxlinks on cleanup.
+
+2009-02-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (clean_channelname): Delete this function; it is
+ no longer used, and had the same length-off-by-one bug.
+
+ * ircd/m_join.c (m_join): Use > instead of >= with CHANNELLEN.
+
+ * tests/ircd.conf: Set CHANNELLEN to make it easier to test this.
+
+ * tests/bug-2328334.cmd: New file for regression testing.
+
+2009-02-08 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h (ERR_INVALIDKEY): Define new numeric.
+
+ * ircd/s_err.c (ERR_INVALIDKEY): Give it a text string.
+
+ * ircd/channel.c (is_clean_key): Rename from clean_key(), and make
+ this function responsible for sending error messages to the client
+ when necessary.
+ (mode_parse_key): Update to match the new is_clean_key() behavior.
+ (mode_parse_upass): Likewise.
+ (mode_parse_apass): Likewise.
+
+ * tests/channel-keys.cmd: New file for regression testing.
+
+2009-02-08 Michael Poole <mdpoole@troilus.org>
+
+ * include/gline.h (gline_forward_deactivation): Undeclare.
+
+ * ircd/m_gline.c (mo_gline): Remove the special case to call
+ gline_forward_deactivation().
+
+ * ircd/gline.c (gline_add): Mention if the new G-line is already
+ deactivated.
+ (gline_forward_deactivation): Delete implementation.
+
+ * tests/glines.cmd: Update the expected output to match.
+
+2009-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_topic.c (do_settopic): Just before sending the topic out,
+ check to see if the user is join-delayed and should be shown.
+
+ * ircd/m_wallchops.c (m_wallchops): Allow this command to expose
+ join-delayed users.
+ (ms_wallchops): Likewise.
+
+ * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose
+ join-delayed users.
+ (ms_wallvoices): Likewise.
+
+2009-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
+
+2009-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/gline.c (count_users): Accept "flags" mask to limit count
+ to local users.
+ (gline_add): Pass the flags to count_users().
+
+2009-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/gline.h (gline_forward_deactivation): Declare.
+
+ * ircd/gline.c (count_users): Use ipmask-based checks too.
+ (gline_add): Require flags to have exactly one of the GLINE_GLOBAL
+ and GLINE_LOCAL bits set.
+ (gline_forward_deactivation): Implement new function.
+ (gline_find): Only require the GLINE_LOCAL flag to be set in the
+ gline structure; infer GLINE_GLOBAL when it is cleared. (This
+ matches the value and usage of GLINE_MASK.)
+
+ * ircd/m_gline.c (ms_gline): Default lastmod to the known lastmod
+ time for GLINE_LOCAL_{DE,}ACTIVATE.
+ (mo_gline): Check that expiration times parse as expected. Reject
+ "*" as a target for GLINE_LOCAL_{DE,}ACTIVATE. Require reason and
+ expiration time for new G-lines. Allow deactivation of an unknown
+ G-line without creating it ("so-and-so ... creating new G-line" is
+ a confusing message for a deactivation).
+
+ * tests/glines.cmd: New test script for G-line parsing tests.
+
+ * tests/ircd.conf: Enable CONFIG_OPERCMDS for glines.cmd.
+
+ * tests/ircd-2.conf: Likewise.
+
+ * tests/readme.txt: Add section on command syntax.
+
+ * tests/test-driver.pl: Report line numbers more clearly.
+ Fix (somewhat kludgily) the brokenness of consecutive "expect"
+ lines, as demonstrated by the numeric 219 and 281 expects in
+ glines.cmd.
+
+2008-11-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_kick.c (ms_kick): Properly handle crossing net rider and
+ normal KICKs (in the case where we get the normal kick first).
+
+2008-11-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c (match): Fix an error in backtracking (apparently
+ exacerbated by escapes).
+
+ * ircd/test/ircd_match_t.c: Update headers and make sure we have a
+ mmap() anonymous request flag.
+ (test_match): New function.
+ (do_match_test): Use it instead of calling match() directly.
+
+2008-09-07 Perry Lorier <isomer@undernet.org>
+
+ * ircd/m_kill.c: Remove the . from the end of the nickname in kill
+ messages to make cut and pasting easier.
+
+2008-03-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_string.c (ircd_aton_ip4): Reject strings with more
+ than 3 dots in them.
+
+ * ircd/test/ircd_in_addr_t.c (test_addrs): Update the expected
+ parsing for a bare IPv4 address to a IPv4-mapped address.
+ (test_masks): Add a test for the ircd_string.c change.
+
+2008-03-20 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/client.h: IsLocOp() now checks to see if its MyUser() as
+ well; IsAnOper() uses IsOper() and IsLocOp() instead of directly
+ testing the flags
+
+2008-03-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_bsd.c (init_connection_limits): Remove errant apostrophe.
+ Print text error message when unable to set max FDs.
+
+2008-03-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (set_user_mode): Check for end of argument list
+ when processing 'r' modes.
+
+2008-01-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+2008-01-02 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_burst.c (ms_burst): surround protocol_violation() and
+ break in braces to do what Jan Krueger was trying to do...
+
+2008-01-03 Jan Krueger <jast@heapsort.de>
+
+ * ircd/m_burst.c: prevent leaking the next nick into the current one's
+ oplevel. Add protocol_violation when an invalid nick flag appears.
+
+2007-12-28 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c: add MODE_REGISTERED, mapped to +R; arrange to
+ only have it settable or clearable by remote users or /opmode
+
+ * include/supported.h (FEATURESVALUES2): update to include 'R'
+ channel mode
+
+ * include/channel.h: add MODE_REGISTERED, update infochanmodes to
+ include 'R' channel mode
+
+2007-12-13 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c (ms_gline): if we got an activate or deactivate
+ for a global G-line we never heard of, and we cannot create it
+ because no expire time was sent, manually propagate the G-line
+ instead of trying to call gline_add()
+
+ * ircd/gline.c (make_gline): never allow a G-line to be created
+ with a 0 expire time
+
+2007-12-03 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.12 release.
+
+2007-12-03 Michael Poole <mdpoole@troilus.org>
+
+ * doc/Makefile.in (DATAROOTDIR): Define.
+ (DATADIR): Likewise.
+
+2007-11-30 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/version.c.SH: correct invalid syntax in shell case/esac
+
+ * ircd/ircd_lexer.l: provide an implementation of yywrap() so we
+ no longer have to link against -lfl
+
+ * configure.in: drop tests on LEXLIB and don't add it to the list
+ of libs
+
+ * ircd/gline.c (gline_add): apply too-many-users test to realname
+ G-lines *only* when the origin is my user (or a user, for
+ remote-local G-lines)
+
+2007-11-28 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for pre12 development.
+
+2007-11-28 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.11 release.
+
+2007-11-28 Michael Poole <mdpoole@troilus.org>
+
+ * tests/test-driver.pl (drv_default): Fix expect for numeric
+ responses that have non-trivial parameters.
+ (check_expect): Simplify (and fix) sender name check.
+
+ * tests/bug-1640796.cmd: Update expect NNN for new POE behavior
+ and part to not try to part the channel named "leaving".
+
+ * tests/bug-1674539.cmd: Update expect NNN for new POE behavior.
+
+ * tests/bug-1840011.cmd: New test script.
+
+2007-11-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
+ (apply_ban): Only block narrower bans if the wider ban is active.
+
+2007-11-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_names.c (do_names): Don't try to re-initialize the start
+ of buf[] for each line. It's done the first time around and that
+ can be reused safely.
+
+2007-11-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_stats.c (m_stats): Properly assign param before it is
+ used in the hunt_server_cmd() call.
+
+2007-11-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (iauth_disconnect): Avoid destroying invalid
+ sockets.
+ (iauth_stderr_callback): Disconnect iauth child if stderr has
+ EOF (in case stdin notification is delayed somehow).
+
+2007-11-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/umkpasswd.c (sum): Typecast buffer to avoid a warning about
+ the parameter type being passed to strlen().
+
+2007-11-04 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Document /LIST M as controlled by list_chan.
+
+ * include/channel.h (LISTARG_SHOWMODES): Define.
+
+ * ircd/hash.c (list_next_channels): Handle it.
+
+ * ircd/m_list.c (show_usage): Document 'M' flag.
+ (param_parse): Recognize 'M' as LISTARGS_SHOWMODES.
+
+2007-11-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_list.c (param_parse): Reverse comparison direction when
+ converting from minutes to time_t, and which bound is set (so that
+ T<time_t works correctly). Also switch is_time cases so that 'T'
+ and 'C' work as documented. Remove a "break" after a "return".
+
+ (m_list): Remove a "break" after a "return".
+
+2007-10-29 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_lexer.l (YY_INPUT): Redefine to use fbgets().
+ (init_lexer): Return a value to indicate failure. Use fbopen().
+ (deinit_lexer): New function.
+
+ * ircd/s_conf.c (read_configuration_file): Update extern
+ declarations. Bail if init_lexer() fails. Call deinit_lexer()
+ rather than directly munging yyin.
+
+2007-10-29 Michael Poole <mdpoole@troilus.org>
+
+ * include/gline.h: Delete declaration of gline_propagate().
+
+ * include/whocmds.h: Delete declaration of count_users().
+
+ * ircd/whocmds.c (count_users): Move to gline.c as a static.
+
+ * ircd/gline.c (whocmds.h): Remove #include.
+ (gliter): Document boolean trickiness. Add missing trickiness
+ when gl_flags has bits set besides GLINE_ACTIVE.
+ (make_gline): Get rid of now-unused "after" variable and the
+ comments related to overlapping G-lines.
+ (gline_propagate): Make static.
+ (count_users): Move from whocmds.c as a static function.
+ (count_realnames): New function.
+ (gline_add): Require a force to hit lots of users with a realname
+ G-line.
+