+2009-07-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (register_user): Use correct parc for
+ set_user_mode(). Do not increment UserStats fields here, because
+ set_user_mode() handles that.
+
+2009-07-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_gline.c (ms_gline): Fix the sense of the test for
+ strtoul() when parsing G-line lifetimes -- zero indicates failure.
+
+2009-07-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_client): Ignore anything after a
+ colon when the mode is CHFL_VOICE or the mode is being removed.
+
+2009-07-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (find_conf_client): New function.
+ (preregister_user): Use it to avoid assigning a second conf class
+ on client connection.
+ (auth_ping_timeout): Send the "T" message only if we do not kill
+ the client (and thus send a "D" message).
+ (auth_find_classs_conf): Do not allow IAuth to select a disabled
+ class. Unlink new conf items from GlobalConfList.
+ (iauth_cmd_done_client): Handle failures from attach_conf().
+ (iauth_parse): Behave decently when a client is killed by the
+ message handler.
+
+ * tools/iauth-test (%handlers): Add entries to help test this.
+
+2009-07-04 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (RevealDelayedJoinIfNeeded): Declare.
+
+ * ircd/channel.c (RevealDelayedJoinIfNeeded): Implement.
+
+ * ircd/ircd_relay.c (relay_channel_message): Only reveal the user
+ if he passes the check_target_limit() test.
+ (relay_channel_notice): Likewise.
+
+ * ircd/m_wallchops.c (m_wallchops): Likewise.
+
+ * ircd/m_wallvoices.c (m_wallvoices): Likewise.
+
+ * ircd/s_user.c (check_target_limit): Micro-optimize to only check
+ the user's channel list for invites if we are about to deny it.
+
+2009-03-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (main): Unconditionally set +6 flag on self.
+
+2009-03-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (iauth_cmd_hostname): Properly assign the spoofed
+ hostname (yea, even as the "real" host) in the hurry state.
+
+ * tools/iauth-test: Add reminder about perl's RTMIN signal and a
+ new handler to exercise the N command in the hurry state.
+
+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.
+
+2007-09-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_gline.c (ms_gline): Remove dead branch when 4 < parc < 5.
+ (mo_gline): Consistently use the last argument as the reason.
+
+2007-09-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/Makefile.in: Fix dependencies for version.h generation.
+
+2007-08-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/send.c (sendwallto_group_butone): Move a feature_bool()
+ call out of a loop. Convert HasFlag() uses to appropriate macros
+ from client.h.
+
+2007-08-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_string.c (ircd_aton_ip4): Allow a sequence of *.* at
+ the end of an IPv4 mask.
+ (ipmask_parse): Likewise for *:* at the end of IPv6 masks.
+
+ * ircd/test/ircd_in_addr_t.c (test_masks): Add tests for this.
+
+2007-08-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (register_user): Update inv_clients and opers
+ counts. Call client_set_privs() for local users.
+ (set_nick_name): Do not call client_set_privs() for remote users.
+ (set_user_mode): Move oper and invisible client checks inside the
+ IsRegistered() section.
+
+2007-08-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (DONE_*): Split key changes into _ADD and _DEL.
+ (mode_parse_key): Check both, to properly handle -k+k changes.
+ (mode_parse_upass): Likewise, for -U+U.
+ (mode_parse_apass): Liekwise, for -A+A (in case that ever happens).
+ (mode_parse): Update which "done" flag is checked during a wipeout.
+
+2007-08-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (whipser): CNOTICEs should not trigger away
+ messages, only CPRIVMSGs.
+
+2007-08-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_who.c (m_who): Reorder responses and change the
+ ERR_QUERYTOOLONG parameter to be consistent with m_whois().
+
+2007-08-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (register_user): Initialize umodev[] in a
+ C89-compatible way. (gcc 4.1.2 warned about it.)
+
+2007-08-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_names.c (do_names): Add NAMES_DEL to comment. Avoid use
+ of strcat(). Get rid of ms_names(), which was basically a copy of
+ m_names(), and merge the "showingdelayed" changes into m_names().
+ Replace the recursion with iteration.
+
+ * ircd/parse.c (msgtab): Use m_names(), not ms_names().
+
+2007-08-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (report_iauth_conf): Remove end-of-stats message;
+ m_stats() already does that.
+
+ (report_iauth_stats): Likewise.
+
+2007-08-08 Michael Poole <mdpoole@troilus.org>
+
+ * include/res.h (irc_in_addr_is_ipv4): Fix classification of
+ addresses like 0.0.0.0.
+
+2007-07-21 Perry Lorier <isomer@undernet.org>
+
+ * ircd/s_user.c: Move set_nick_name() to use set_user_mode(),
+ set_user_mode() now interprets +r usermodes properly (and ignores
+ them from non servers). This fixes a problem where remote users
+ weren't being counted properly anymore.
+
+2007-07-20 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c: create abs_expire() macro to convert an expire
+ timestamp from the network into an absolute time, if needed;
+ rename expire_off to expire globally, since it now represents an
+ absolute expiration time; use expire - CurrentTime in gline
+ forwarding statements; in ms_gline(), use abs_expire() to convert
+ network expiration timestamp into absolute timestamp; in
+ mo_gline(), add CurrentTime to oper-provided expiration offset to
+ convert to absolute timestamp
+
+ * ircd/gline.c: assume expire and lifetime arguments to
+ gline_add() and gline_modify() are already absolute timestamps;
+ send lifetime parameter as an absolute timestamp, but leave expire
+ timestamp as relative as first part of a 2-phase update
+
+2007-07-12 Perry Lorier <isomer@undernet.org>
+ Reconsider how we manage modes before registration, to avoid stats
+ getting out of sync.
+
+ * ircd/s_user.c (set_user_mode): Add new parameter to set_user_mode to
+ ignore some modes.
+ (register_user): Use set_user_mode to parse default usermode for
+ users.
+
+ * ircd/m_user.c: Add extra parameter to set_user_mode call
+
+ * ircd/s_auth.c: Add extra parameter to set_user_mode call
+
+ * ircd/m_mode.c: Add extra parameter to set_user_mode call
+
+ * ircd/s_misc.c: Verify stats are consistant.
+
+ * include/s_user.h: Change prototype, add flag definitions.
+
+ * ircd/m_lusers.c (m_users): Assert that we're generating sane stats,
+ include "unknowns" in the total user connections to avoid negative
+ wrap arounds.
+
+2007-07-12 Perry Lorier <isomer@undernet.org>
+
+ * ircd/m_user.c (m_luser): Fix broken RFC 2812 on connect user mode
+ setting
+
+2007-05-28 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h (ERR_INPUTTOOLONG): New numeric.
+
+ * ircd/s_bsd.c (read_packet): Use it.
+
+ * ircd/s_err.c (replyTable): Give it a format string.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_burst.c (ms_burst): Do not let bursting servers join a
+ user to a channel more than once.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_features.c (feature_set): Report new value of feature
+ for /set.
+ (feature_reset): Likewise, for /reset.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_burst.c (netride_modes): Return -1 if someone tries to
+ remove modes in the burst.
+ (ms_burst): Check for, and handle, that protocol violation.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_privs.c (mo_privs): Report "no such nickname" for unknown
+ nicks in the list. (Unfortunately, the nick is lost before ms_privs.)
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/listener.c (show_ports): Actually hide hidden ports from
+ clients that should not see them.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_err.c (ERR_DONTCHEAT): Add apparently missing %s.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_connect.c (mo_connect): Return an error to a locop who
+ tries to do a remote connect.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/parse.c (msgtab): Make SETTIME consistent with other
+ oper commands, in using m_not_oper for non-opered clients.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y (pseudoblock): Forbid pseudo commands that
+ are not all alphabetic characters.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in (maxcon): Check that maximum connections is
+ sufficiently large to avoid underflow in MAXCLIENTS.
+
+2007-05-20 Michael Poole <mdpoole@troilus.org>
+
+ * include/supported.h (FEATURES2): Remove extra space.
+
+ * ircd/m_admin.c (m_admin): Only check server mask against our
+ name, so that it cannot leak information about other linked
+ servers.
+
+ * ircd/m_version.c (m_version): Likewise.
+
+2007-04-15 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c: fix minor typo in code that forwards remote
+ local activations/deactivations: %c takes characters, not
+ pointers!
+ (mo_gline): fix similar typo in code forwarding remote local
+ G-lines by opers
+
+2007-04-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y (iauth): Avoid problems related to MyFree's
+ multiple evaluation of its argument.
+
+2007-04-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c (ms_gline): lastmod must be non-zero
+
+2007-04-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c (rehash): Restart resolver after reading the
+ config file; this un-breaks the resolver after /rehash if the
+ ircd.conf contains no "dns server = <ipstring>;" lines.
+
+2007-04-01 J. R. Lenz <ralf@starshadow.com>
+
+ * ircd/s_user.c (register_user): Check for host-hiding when fully
+ registering a user. [Comment added by Entrope.]
+
+2007-03-31 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.iauth (IAuth M): Document new command.
+
+ * ircd/m_user.c (m_user): Recognize RFC 2812 mode request and a
+ saner usermode request.
+
+ * ircd/s_auth.c (iauth_cmd_usermode): New command.
+ (iauth_parse): Dispatch to it.
+
+ * ircd/s_user.c (set_user_mode): Only broadcast usermode changes
+ for registered clients.
+
+ * tools/iauth-test (127.0.1.3): Test the new M command.
+
+2007-03-31 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_mode.c (m_mode): Check and report target/source
+ violations before calling set_user_mode().
+ (ms_mode): Likewise.
+
+ * ircd/s_user.c (set_user_mode): Remove those checks from here.
+
+2007-03-31 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_events.h (struct Generators): Convert elements to
+ be struct GenHeader*.
+ (timer_next): Update to match.
+
+ * ircd/ircd_events.c (timer_enqueue): Update to match.
+ (signal_callback): Likewise.
+ (timer_init): Remove a typecast with something slightly safer.
+ (timer_run): Update to deal with new type of Generator.g_timer.
+ (signal_add): Likewise.
+ (socket_add): Likewise.
+
+2007-03-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_asll.c (ms_asll): Count hits and report at the end, so
+ that a client is told whether any match (and has a hint that only
+ directly linked servers are checked).
+ (mo_asll): Likewise.
+
+2007-03-26 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_stats.c (m_stats): Move check for STAT_FLAG_LOCONLY (and
+ the assignment to "param") to the hunted server.
+
+2007-03-26 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (iauth_parse): Check for missing arguments when
+ parsing the iauth message.
+
+ * tests/bug-1685648.cmd: New file to test this.
+
+ * tests/iauth-test: New file to exercise the code path.
+
+ * tests/ircd.conf: Use the iauth-test helper program.
+
+2007-03-26 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_silence.c (forward_silences): Do not try twice to process
+ silences that were both added and deleted.
+
+2007-03-26 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y (portblock): Restore old behavior for Port
+ blocks with no host listed.
+
+2007-03-26 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.iauth (iauth I): Fix example and syntax.
+
+2007-03-18 Michael Poole <mdpoole@troilus.org>
+
+ * acinclude.m4 (unet_NONBLOCKING): Properly quote function name.
+ (unet_SIGNALS): Likewise.
+ (unet_CHECK_TYPE_SIZES): Likewise.
+ (AC_LIBRARY_NET): Likewise.
+
+2007-03-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c (mo_gline): add permissions checks I kept
+ forgetting to add--remote local modifications require
+ FEAT_CONFIG_OPERCMDS and PRIV_GLINE, local G-lines require
+ PRIV_LOCAL_GLINE, and global G-line changes (excluding local
+ activation/deactivation) require FEAT_CONFIG_OPERCMDS and
+ PRIV_GLINE
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (CRule): Document the support for multiple
+ server masks in a single CRule block.
+ (Port): Document the optional additional field for vhost entries.
+ Document the support for multiple vhost entries in a single Port
+ block.
+
+ * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
+ (USE_IPV6): Likewise.
+ (portblock): Iterate over hosts rather than using the single host.
+ (portitem): Add portvhostnumber alternative production.
+ (portnumber): Check port number here. If valid, combine address
+ family and port number in "port" variable. If a port-less item
+ exists in "hosts", set its port number.
+ (portvhost): Prepend mask to "hosts" list.
+ (portvhostnumber): New production.
+ (cruleblock): Iterate over hosts rather than using the single
+ host.
+ (cruleserver): Prepend server mask to "hosts" list.
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/listener.c (add_listener): Only try to create IPv6 sockets
+ for IPv6-compatible addresses; likewise for IPv4.
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Operator): Update documentation to mention
+ more than one host entry is allowed.
+ (Motd): Likewise.
+
+ * ircd/ircd_parser.y (hosts): New file-scope variable.
+ (free_slist): New helper function.
+ (operblock): Iterate over hosts instead of using the single host.
+ (operhost): Prepend the mask to hosts.
+ (motdblock): Iterate over hosts instead of using the single host.
+ (motdhost): Prepend the mask to hosts.
+ (motdfile): Fix possible leak of "pass" string (the filename).
+
+ * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
+ string; operblock (the only caller) frees it now.
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/list.c (free_link): Only decrement the in-use count of
+ links if we free a link.
+
+2007-03-17 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_err.c: update replies to handle new fields in
+ RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
+ G-line lifetime, and local activation status
+
+ * ircd/m_gline.c: update function documentation for ms_gline();
+ move test for server to before mask processing; don't look up
+ remote server too early; add code to process local activations and
+ deactivations early in ms_gline(); implement adding and destroying
+ local G-lines; don't try to locally activate or deactivate G-lines
+ that don't exist; add code to keep track of which fields were
+ available to ms_gline(); implement G-line modification and
+ creation; remove old ms_gline() code; convert
+ sendwallto_group_butone() calls to Debug() calls; reimplement
+ mo_gline() to take into account new syntax
+
+ * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
+ its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
+ G-line expires; add lifetime parameter to make_gline(); disable
+ overlapping G-line check; initialize gl_lifetime from lifetime
+ parameter; initialize gl_state to GLOCAL_GLOBAL; update
+ gline_propagate() to send lifetime parameter; add lifetime
+ parameter to gline_add(); remove some old code in gline_add();
+ figure out lifetime to set on new G-line; remove test for
+ make_gline() returning NULL, since it should never do so now; add
+ modify_gline() for modifying global G-lines; add gline_destroy()
+ for destroying local G-lines; update gline_burst() to send
+ lifetime parameter; update gline_resend() to send lifetime
+ parameter; update gline_list() to add lastmod, lifetime, and local
+ status indicators; update gline_stats() to send lastmod, lifetime,
+ and local status indicators; count BADCHANs in
+ gline_memory_count()
+
+ * include/gline.h: add enum GlineLocalState for keeping track of
+ local state changes to global G-lines; store state in struct
+ Gline; document enum GlineAction; add GLINE_EXPIRE,
+ GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
+ those fields to gline_modify(); add GLINE_UPDATE mask for checking
+ for the above flags; update GlineIsActive() to take into account
+ new gl_state field in struct Gline; add lifetime to gline_add();
+ add gline_modify() for modifying existing global G-lines, and
+ gline_destroy() for destroying local G-lines
+
+ * doc/readme.gline: update documentation to reflect changes made
+ to G-line command syntax
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
+ aborting on unrecognized arguments. It isn't nice to core on
+ "umkpasswd --help"..
+
+2007-03-16 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Class): Move the "Recommended client classes"
+ comment to a better place (and stop recommending them). Clarify
+ what maxlinks does. Make it clear that Operator password entries
+ only support umkpasswd formats.
+
+2007-03-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (parse_command_line): Emit a warning if using -x
+ when DEBUGMODE is disabled.
+
+2007-03-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
+ unlimited here, to match attach_conf()'s behavior.
+
+2007-03-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to
+ checking for a G-line matching a new user
+
+ * ircd/m_gline.c (ms_gline): rework ms_gline() to handle new
+ command syntax--although it can parse the new syntax, it doesn't
+ yet perform the actions demanded by that syntax
+
+ * ircd/ircd_features.c: trap-door feature FEAT_DISABLE_GLINES to
+ disable G-lines
+
+ * ircd/gline.c: create gliter() macro which performs an iteration
+ over all G-lines in a specified G-line list; initialize record
+ expire in make_gline() (to be redone); check FEAT_DISABLE_GLINES
+ in do_gline(); add and document what happens if GLINE_LOCAL is
+ passed to gline_find()
+
+ * include/ircd_features.h: trap-door feature FEAT_DISABLE_GLINES
+ to disable G-lines; intended use: accidental G-line of *@*
+
+ * include/gline.h: add rexpire (record expiration time) field to
+ gline description structure; add GlineAction enumeration (still
+ undocumented) to describe actions that may be performed on G-lines
+
+2007-03-09 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for .pre11 development.
+
+2007-03-09 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release.
+
+2007-03-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_privs.c (ms_privs): Use the correct source when
+ forwarding the PRIVS request.
+
+ * tests/bug-1674539.cmd: New file to test for this.
+
+ * tests/test-driver.pl: Recognize "oper" command from scripts.
+
+2007-03-05 Michael Poole <mdpoole@troilus.org>
+
+ * tests/ircd.conf: Make into a hub.
+
+ * tests/ircd-2.conf: New file, for a second server.
+
+ * tests/ircd-3.conf: Configuration for a third server.
+
+2007-03-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/whocmds.c (count_users): Fix length of ipbuf. (Spotted by
+ paulr.)
+
+2007-02-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/os_generic.c (sockaddr_from_irc): Zero out socket address
+ before setting family, and regardless of whether we have an
+ irc_sockaddr template.
+
+2007-02-25 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Document new options for General block.
+
+ * include/res.h (clear_nameservers): Declare new function.
+ (add_nameserver): Declare previously static function.
+
+ * include/s_bsd.h (VirtualHost_dns_v4): Declare.
+ (VirtualHost_dns_v6): Likewise.
+
+ * ircd/ircd_lexer.l (DNS): Recognize new token.
+
+ * ircd/ircd_parser.y (DNS): Declare new token.
+ (generalitem): Allow new items for dns vhost(s) and dns servers.
+ (generaldnsvhost): New production.
+ (generaldnsserver): New production.
+
+ * ircd/ircd_res.c (VirtualHost_dns_v4): New variable.
+ (VirtualHost_dns_v6): Likewise.
+ (clear_nameservers): New function.
+ (restart_resolver): Scan specified servers so we only try to open
+ DNS client sockets that we need.
+
+ * ircd/ircd_reslib.c (irc_nscount): Remove redundant initializer.
+ (irc_res_init): Only read the resolver config file if there are no
+ nameservers provided.
+ (add_nameserver): Make non-static. Remove off-by-one check
+ against IRCD_MAXNS.
+
+ * ircd/s_conf.c (read_configuration_file): Clear nameserver list
+ before reading the config file.
+
+2007-01-27 Jeannot Langlois <jeannot12@linuxmail.org>
+
+ * doc/example.conf (Features): Illustrate URLREG feature.
+
+ * doc/readme.features (URLREG): Define new feature.
+
+ * include/ircd_features.h (Feature): Add FEAT_URLREG.
+
+ * ircd/ircd_features.c (features): Set the default value.
+
+ * ircd/m_join.c (m_join): For ERR_NEEDREGGEDNICK, include the
+ URLREG value as a format argument.
+
+ * ircd/s_err.c (replyTable): Update ERR_NEEDREGGEDNICK
+ appropriately.
+
+2007-02-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_reply.c (protocol_violation): Avoid reusing the
+ va_list in vd.
+
+ * ircd/send.c (sendcmdto_channel_butone): Warn against using %v in
+ the pattern -- that will cause incorrect behavior.
+ (sendwallto_group_butone): Likewise.
+ (sendcmdto_match_butone): Likewise.
+
+2007-01-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_delayed_joins): New function.
+ (modebuf_flush): Handle +D-D and related cases.
+ (mode_parse_mode): It is too early to handle +D here, so don't.
+ (CheckDelayedJoins): Use find_delayed_joins().
+
+2007-01-22 Michael Poole <mdpoole@troilus.org>
+
+ * tests: New subdirectory for test framework.
+
+ * tests/ircd.conf: Helper file for testing.
+
+ * tests/readme.txt: Simple documentation of test framework.
+
+ * tests/test-driver.pl: Testing script interpreter.
+
+2007-01-22 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Fix potentially confusing comment about ip
+ mask syntax.
+
+2007-01-22 Michael Poole <mdpoole@troilus.org>
+
+ * INSTALL: Mention source directory naming; update the reference
+ to the config file converter (hah); update CVS directions.
+
+2007-01-22 Michael Poole <mdpoole@troilus.org>
+
+ * include/supported.h: Move parameters from FEATURES1 to FEATURES2
+ so that neither ISUPPORT line has more than 15 parameters. (Some
+ clients are picky about this.)
+
+2007-01-21 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for pre10 development.
+
+2007-01-20 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.09 release.
+
+2007-01-15 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.iauth (U): Document extended fields.
+
+ * include/s_auth.h (auth_set_user): Declare new parameters.
+
+ * ircd/m_user.c (m_user): Pass new parameters.
+
+ * ircd/s_auth.c (auth_set_user): Accept new parameters. When
+ using Undernet extensions, forward them to the iauth process.
+
+2007-01-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/os_generic.c (os_recv_nonb): Set errno to zero when
+ returning IO_FAILURE due to a closed connection.
+
+2006-12-31 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_mode.c (ms_mode): Bounce modes from deopped members.
+
+2006-12-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_string.c (ircd_strncpy): Make sure the output buffer
+ is terminated. We don't rely on the arguable strncpy semantics.
+
+2006-12-30 Michael Poole <mdpoole@troilus.org>
+
+ * include/struct.h (struct Server): Add asll_last field.
+
+ * ircd/ircd.c (check_pings): Add check for asll_last. When a
+ server doesn't ping, use an old-style ping rather than AsLL ping.
+
+ * ircd/m_pong.c (ms_pong): Use ClearPingSent() rather than
+ ClrFlag(). Set asll_last to current time.
+ (mr_pong): Use ClearPingSent() rather than ClrFlag().
+ (m_pong): Likewise.
+
+ * ircd/s_bsd.c (completed_connection): Likewise.
+ (read_packet): Likewise. Update cli_lasttime for servers in
+ addition to clients.
+
+2006-01-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_burst.c (ms_burst): Properly handle member mode :ov.
+
+2006-01-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_create.c (ms_create): Add channel name to the protocol
+ violation notice for a redundant CREATE.
+
+2006-01-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (set_nick_name): Use user's account name rather
+ than the account parameter, in case the parameter contains a colon
+ (i.e. "account:1234" format).
+
+2006-01-13 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.who: Document 'd' user-matching flag.
+
+2006-12-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_jupe.c (mo_jupe): Fix which privilege is tested.
+
+2006-12-07 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/listener.c (show_ports): Update to show '4' and/or '6' as
+ flags in response, with a '-' suffix if either one fails to open.
+
+2006-12-07 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Port): Document the method to select IPv4 or
+ IPv6 restriction for a port.
+
+ * include/listener.h (LISTEN_IPV4): New listener flag.
+ (LISTEN_IPV6): New listener flag.
+ (struct Listener): Split 'fd' and 'socket' fields into two each.
+
+ * ircd/ircd_lexer.l (gb): Move to be alphabetical.
+ (gigabytes): Likewise.
+ (ipv4): New token.
+ (ipv6): Likewise.
+ Adapted word matcher to handle digits in the non-leading character.
+
+ * ircd/ircd_parser.y (USE_IPV4): New macro.
+ (USE_IPV6): Likewise.
+ (TOK_IPV4): New token.
+ (TOK_IPV6): Likewise.
+ (address_family): New non-terminal rule.
+ (portblock): Default to listening on both IPv4 and IPv6.
+ (portnumber): Add address_family element and use it.
+ (portvhost): Likewise.
+
+ * ircd/listener.c (make_listener): Adjust for newly split fields
+ in struct Listener.
+ (inetport): Likewise. Adjust return value as well.
+ (add_listener): Update to handle both IPv4 and IPV6 support.
+ (close_listener): Likewise.
+ (accept_connection): Because each listener has two sockets, it is
+ no longer safe to free the listener when one is destroyed -- so
+ don't. Also accept() on the file descriptor from the incoming
+ event rather than on a fixed fd.
+
+ * ircd/os_generic.c (os_socket): For platforms with IPV6_V6ONLY,
+ enable it for AF_INET6 sockets rather than disabling it for
+ unspecified sockets.
+
+2006-12-06 Michael Poole <mdpoole@troilus.org>
+
+ * include/listener.h (enum ListenerFlag): New enum.
+ (struct Listener): Convert "active", "hidden" and "server" to a
+ flagset.
+ (add_listener): Convert "is_server" and "is_hidden" arguments to
+ use the same flagset structure.
+
+ * ircd/ircd_parser.y (listen_flags): New variable.
+ (general_vhost): Consolidate references to $3 to use a variable.
+ (portblock): Use listen_flags instead of tconn and tping.
+ (portserver): Likewise.
+ (porthidden): Likewise.
+
+ * ircd/listener.c (show_ports): Use new field in Listener.
+ (set_listener_options): New function.
+ (inetport): Use it.
+ (add_listener): Use new field in Listener. When reusing an extant
+ listener, call set_listener_options() so the options are updated.
+ (mark_listeners_closing): Use new field in Listener.
+ (close_listeners): Use new helper macro to check activeness.
+ (release_listener): Likewise.
+ (accept_connection): Likewise.
+
+ * ircd/s_bsd.c (report_error): Use the standard snotice rate
+ limiting here.
+ (add_connection): Use new helper macro to check serverness.
+
2006-11-04 Michael Poole <mdpoole@troilus.org>
* ircd/m_nick.c (m_nick): If we get NICK on a server port, tell