+2010-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_bsd.c (client_sock_callback): Invalidate cli_fd() when we
+ receive an EBADF error.
+
+2010-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/engine_select.c (engine_loop): Remove a bogus assert() that
+ the structure's FD is correct after the event-handling callback
+ returns. Also fix a warning about the type of the last parameter
+ passed to getsockopt().
+
+2010-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_names.c (m_names): Terminate the buffer used for listing
+ clients who are not in any channel.
+
+2010-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_delayed_joins): Move earlier in the file.
+ (modebuf_flush_int): Move the checks for changing between +D and
+ +d to here...
+ (modebuf_flush): ... from here.
+
+2010-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_server.c (check_loop_and_lh): Never return 1 when we kill
+ another server. Update the squit message text for maxhops and hub
+ violations.
+
+2010-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/Makefile.in (IRCD_SRC): Add m_xquery.c and m_xreply.c to
+ the build.
+
+ * ircd/m_xquery.c: Add missing include.
+ (mo_xquery): Fix spelling of struct Client.
+ (ms_xquery): Likewise.
+
+ * ircd/m_xreply.c: Add missing includes.
+ (ms_xreply): Fix spelling of struct Client and findNUser().
+
+2010-01-01 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * doc/readme.xquery: documentation for design and use of the
+ extension query mechanism
+
+ * doc/readme.iauth: document X iauth message and X and x server
+ messages
+
+ * include/msg.h: declare XQUERY/XQ and XREPLY/XR commands/tokens
+
+ * include/handlers.h: declare mo_xquery(), ms_xquery(), and
+ ms_xreply() message handlers
+
+ * include/s_auth.h: declare auth_send_xreply() to forward replies
+ to extension queries to the iauth instance
+
+ * ircd/m_xquery.c: process extension queries
+
+ * ircd/m_xreply.c: process replies to extension queries
+
+ * ircd/parse.c: add XQUERY and XREPLY commands to the list
+
+ * ircd/s_auth.c: add support for extension queries to iauth
+ protocol
+
+2010-01-01 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (iauth_do_spawn): Add debug output to diagnose
+ which system call might be failing.
+ (auth_spawn): Avoid reading past the end of iauth->i_argv[]. When
+ discarding an existing IAuth instance, use auth_close_unused() to
+ close the sockets and avoid leaking memory.
+
+2010-01-01 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_process_bans): Bypass total ban count and
+ length checks for OPMODEs.
+
+2010-01-01 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_features.c (feature_report): If sd->sd_funcdata is
+ non-zero, report even unchanged features (using prefix 'f').
+
+ * ircd/s_stats.c (statsinfo): Make "/stats f" case-sensitive, and
+ use the upper case variant to report all features.
+
+2009-07-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (register_user): Move the default-usermodes call
+ to set_user_mode() to before SetUser(), so that the former does
+ not increment the UserStats fields. Add back the explicit
+ adjustments to UserStats for invisible and opered clients.
+
+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.
+