Fix bugs spotted in beta testing: Quarantine blocks not working or
[ircu2.10.12-pk.git] / ChangeLog
index 1d5dfdeafbbd7ddb9acd432ec3f425fa7ee37ed1..2f772aff8f7f086481f93678ce6f51be0f1c37d3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,458 @@
+2005-04-15  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (Operator): Properly qualify plaintext password.
+       (Quarantine): Document (new) syntax.
+
+       * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
+       correctly on BSDs.
+
+       * ircd/ircd_parser.y (qconf): Remove global variable.
+       (killuhost): Null terminate username when present.
+       (quarantineblock): Replace with a syntax that works.
+
+       * ircd/s_stats.c: #include <querycmds.h> for UserStats.
+       (stats_server_verbose): Reinstate check for UserStats.
+
+2005-04-09  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * ircd/ircd.c: conditionally include sys/resource.h; otherwise,
+       RLIMIT_CORE will not be defined and so set_core_limit() will never
+       be defined, much less run.
+
+       * configure.in: add sys/resource.h to the list of headers to
+       search for
+
+       * configure: regenerate configure
+
+       * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to
+       config.h.in
+
+2005-04-08  Michael Poole <mdpoole@troilus.org>
+
+       * include/s_conf.h (conf_debug_iline): Declare new function.
+
+       * ircd/ircd.c (dbg_client): New file-scoped variable.
+       (parse_command_line): Set it from the new -c option.
+       (main): If dbg_client is set during chkconf, use it.
+
+       * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses,
+       not IPv4-compatible addresses, to match ipmask_parse().
+
+       * ircd/m_whowas.c (m_whowas): Split display of real host to a
+       separate line, in hopes of not confusing opers in the future.
+
+       * ircd/s_conf.c (conf_debug_iline): Implement new function.
+
+2005-04-06  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping
+       out locally opped and voiced channel members.
+
+2005-04-06  Michael Poole <mdpoole@troilus.org>
+
+       * include/numeric.h (RPL_APASSWARN): Replace with three distinct
+       values.
+       (ERR_NOMANAGER_LONG): Assign new numeric.
+       (ERR_NOMANAGER_SHORT): Assign new numeric.
+
+       * ircd/channel.c (parse_mode_upass): Adapt to new formats for
+       ERR_NOTMANAGER separation.
+       (parse_mode_apass): Likewise.  Also adapt to RPL_APASSWARN split.
+
+       * ircd/s_err.c (RPL_APASSWARN): Replace with three message
+       strings, to avoid embedding long message strings in the logic
+       implementation.
+       (ERR_NOTMANAGER): Likewise (but not the same strings).
+
+2005-04-06  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_parser.y (clientblock): Use the password field.
+
+       * ircd/s_user.c (register_user): Allow aconf->password to be a
+       single digit, since per-IP limit is now in a separate field.
+
+2005-04-06  Michael Poole <mdpoole@troilus.org>
+
+       * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in
+       current gcc releases and is slower than files for previous
+       releases on most OSes.
+
+       * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING.
+       (unet_PIPE_CFLAGS): Remove use of macro.
+
+       * aclocal.m4: Regenerate.
+
+       * configure: Likewise.
+
+2005-04-04  Michael Poole <mdpoole@troilus.org>
+
+       * configure.in: For developers' ease, allow passing an option to
+       configure to persistently set optimization CFLAGS.
+
+       * configure: Regenerate.
+
+2005-04-04  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (Jupe): Make the default Jupe block follow
+       CFV-0255.  (Thanks to FrankP for pointing me at this and to DinTn
+       for getting me a copy of the CFV.)
+
+2005-04-04  Michael Poole <mdpoole@troilus.org>
+
+       * include/capab.h (CAPFL_STICKY): Define.
+       (CAPLIST): Remove the entries used for testing.
+
+       * include/client.h (Connection): Clarify comment about the
+       distinction between con_capab and con_active.
+
+       * ircd/m_cap.c: Add doxygen comments and replace the long
+       discussion of m_handler functions with an xref to it.
+       (send_caplist): Add new parameters and change the terminal vs
+       non-terminal line distinction to make compliant with current draft
+       specification.
+       (cap_empty): Rename to cap_ls().
+       (cap_req): Track modified capabilities bitwise, so that the
+       responding ACK contains all the appropriate flags.
+       (cap_ack): Add comment explaining why there is no response.
+       (cap_clear): Build and send a list of cleared capabilities, as
+       required by the current draft.
+       (cap_list): Send capability list using LIST subcommand.
+       (cmdlist): Add handler for LS subcommand.  Remove entries for the
+       empty and LSL subcommands, which are no longer allowed.
+       (m_cap): Require at least one argument from user.
+
+2005-04-01  Michael Poole <mdpoole@troilus.org>
+
+       * include/s_conf.h (SMAP_FAST): Define.
+       (s_map): Add 'flags' field.
+
+       * ircd/ircd_lexer.l: Recognize 'FAST' token.
+
+       * ircd/ircd_parser.y (FAST): New token.
+       (pseudoitem): Add pseudoflags alternative.
+       (pseudoflags): New production, recognizing FAST token.
+
+       * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally.
+       Remove outdated comment.
+
+2005-04-01  Michael Poole <mdpoole@troilus.org>
+
+       * include/handlers.h (ms_privs): Declare.
+
+       * include/msg.h (TOK_PRIVS): Assign token.
+       (CMD_PRIVS): Define.
+
+       * ircd/m_privs.c: Add doxygen comments and replace the long
+       discussion of m_handler functions with an xref to it.
+       (mo_privs): Forward requests for non-local users
+       to their own server.
+       (ms_privs): Implement.
+
+       * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends
+       the message.
+
+2005-03-30  Michael Poole <mdpoole@troilus.org>
+
+       * include/client.h (struct Client): Explain where cli_username
+       comes from.
+
+       * include/struct.h (struct User): Explain where this username
+       comes from, too
+
+       * ircd/ircd_res.c (timeout_resolver): Update parameter name in
+       Doxygen comment, too.
+
+       * ircd/s_misc.c (get_client_name): Reorganize to have less
+       indentation and behave like 2.10.11 when client is not idented.
+
+2005-03-29  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf: Remove no-longer-used HIS_STATS_h.
+
+       * doc/readme.features: Likewise.
+
+       * include/ircd_features.h: Likewise.
+
+       * ircd/ircd_features.c: Likewise.
+
+2005-03-20  Reed Loden <reed@reedloden.com>
+
+       * include/ircd_features.h: Alphabetize HIS_STATS_? features.
+
+       * ircd/ircd_features.c: Likewise.
+
+2005-03-29  Michael Poole <mdpoole@troilus.org>
+       (The previously unapplied part of another patch (by Carlo Wood?).)
+
+       * ircd/m_part.c (ms_part): Remove a check that should already be
+       done by the user's own server.
+
+2005-03-29  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf: Add HIS_STATS_J entry.
+
+       * doc/readme.features: Likewise.
+
+2005-03-25  Reed Loden <reed@reedloden.com>
+
+       * include/hash.h: Add needed prototypes for new
+       stats_nickjupes() function.
+
+       * include/ircd_features.h: Add FEAT_HIS_STATS_J.
+
+       * include/numeric.h: Add RPL_STATSJLINE (222) for new nick
+       jupes stats. Correct a typo in a comment.
+
+       * ircd/hash.c: Add stats_nickjupes() function to report all
+       nick jupes to an oper. Because of the nature of hash tables,
+       there is no way to sort this list so the results look weird.
+
+       * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE).
+
+       * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes
+       stats.
+
+       * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes
+       stats. Make 'j' case sensitive. Modify the comment for stats
+       uworld.
+
+2005-03-27  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A
+       channel when forwarding a channel burst line.
+
+2005-03-25  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_server.c (set_server_flags): New function.  Unlike the
+       old code, this recognizes the IPv6 flag.  (Spotted by Reed.)
+       (mr_server): Use the new function.
+       (ms_server): Likewise.  Also don't show "Net junction:" message if
+       any closer server is still bursting (also spotted by Reed).
+       Finally, forward the +6 flag to other servers.
+
+       * ircd/s_serv.c (server_estab): Forward the +6 flag here, too.
+
+       * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it
+       may be cleared by completed_connection().
+
+2005-03-23  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
+       is wiped out during burst.
+
+2005-03-22  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
+       kludgy earlier version of the timeout fix.
+
+2005-03-22  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (send_channel_modes): Fix test for when to send
+       membership mode suffix, to avoid sending it more than once.
+
+2005-03-22  Michael Poole <mdpoole@troilus.org>
+       (Many thanks to nex and Reed for helping hunt this down and
+       doing the testing of various patches.)
+
+       * ircd/ircd_events.c (timer_chg): Properly change a timer that is
+       in the middle of executing its expiration event.
+
+       * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for
+       whether to use timer_chg() or timer_add().
+       On second thought, use timer_add() unconditionally; the server
+       connection loop does.
+       (timeout_resolver): Do not try to re-schedule the DNS timeout
+       unless it is the expiration event.
+       (do_query_number): Properly initialize request->state.
+       (res_readreply): Mention the response code that was bad.
+
+2005-03-22  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/engine_kqueue.c (engine_delete): The kernel removes
+       close()'d FDs from the activity list, so don't try to remove the
+       FD here (the caller may have already close()'d it).
+
+2005-03-20  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/IPcheck.c: Fix typos in comments and strings to reduce
+       future slumming for credit.
+
+       * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise.
+       * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise.
+       * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise.
+       * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise.
+       * ircd/ircd_features.c, ircd/ircd_log.c: Likewise.
+       * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise.
+       * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise.
+       * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise.
+       * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise.
+       * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise.
+       * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise.
+       * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise.
+       * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise.
+       * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise.
+       * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise.
+       * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise.
+       * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise.
+
+       * ircd/test/test_stub.c: Make exit_client() argument list
+       consistent with that in s_misc.c so doxygen is not confused.
+
+2005-03-20  Michael Poole <mdpoole@troilus.org>
+       (Thanks to Reed Loden for pointing these out.)
+
+       * ircd/channel.c: Fix typos in comments.
+
+       * ircd/m_create.c: Likewise.
+
+       * ircd/m_list.c: Likewise.
+
+       * ircd/m_names.c: Likewise.
+
+       * ircd/numnicks.c: Likewise.
+
+       * ircd/s_bsd.c: Likewise.
+
+2005-03-20  Michael Poole <mdpoole@troilus.org>
+       (Thanks to Reed Loden for pointing these out.)
+
+       * doc/Configure.help: Remove outdated file.
+
+       * doc/exaconf.2: Likewise.
+
+       * doc/snomask.html: Add missing <tr>, SNO_AUTO, SNO_DEBUG, and
+       update SNO_OPERDEFAULT list.
+
+       * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd
+       instead).
+
+       * tools/Makefile.crypt: Remove outdated file.
+
+       * tools/mkpasswd.c: Likewise.
+
+       * tools/transition: Likewise.
+
+2005-03-19  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (sub1_from_channel): Check apass rather than mode
+       to determine whether an apass is set (MODE_KEY/APASS/UPASS are not
+       set in mode.mode).
+       (send_channel_modes): Use the same change when determining how to
+       send oplevels for channels.
+
+2005-03-19  Michael Poole <mdpoole@troilus.org>
+
+       * include/IPcheck.h (IPcheck_connect_fail): Take a Client
+       parameter instead of irc_in_addr.
+
+       * ircd/IPcheck.c (IPcheck_connect_fail): Likewise.  Assert that
+       the client has been IP-checked.
+       (IPcheck_remote_connect): Assert that the client has not yet been
+       charged for connecting.
+       (IPcheck_connect_succeeded): Assert that the client has been
+       charged for connecting.
+       (IPcheck_disconnect): Likewise.
+
+       * ircd/m_nick.c (m_nick): Pass rejected client to
+       IPcheck_connect_fail() when somebody takes the nick first.
+       (ms_nick): Likewise.
+
+       * ircd/s_serv.c (server_estab): Pass new server to
+       IPcheck_connect_fail().
+
+       * ircd/s_user.c (register_user): When rejecting a user, pass
+       the struct Client to IPcheck_connect_fail().
+
+2005-03-19  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (Connect): Remove a buggy comment about leaf
+       directives; refer the reader to the Connect block instead.
+
+       * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;"
+
+2005-03-19  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf (Operator): Correct the comment explaining
+       hashed passwords.
+
+       * ircd/m_oper.c (oper_password_match): Check correct variable to
+       determine whether the hashed password matched.
+
+2005-03-08  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask
+       and bit count for "*".
+       (ipmask_check): Make more robust to similar errors.
+
+2005-03-07  Michael Poole <mdpoole@troilus.org>
+
+       * configure.in: Consistently use a constant in AC_DEFINE().
+
+       * configure: Regenerate.
+
+       * doc/example.conf (Port): Add comment about the mask option.
+       (Port): Fix the vhosted Port example.
+
+       * ircd/ircd_parser.y (clientblock): Correctly initialize the IP
+       address and addrbits for a Client block with no IP mask.
+
+       * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask.
+
+       * ircd/s_auth.c (start_auth_query): Count socket allocation
+       failure as a failed auth check, as .11 does.
+
+       * ircd/s_debug.c (debug_serveropts): Add '6' to server options
+       when compiled with IPv6 support.
+
+2005-02-23  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf: Explain apass_opmode privilege, pointing out
+       that, unlike previous privs, the default is OFF for global opers.
+
+       * include/client.h (PRIV_APASS_OPMODE): Define new privilege.
+
+       * ircd/channel.c (mode_parse_upass): Only prevent local opers
+       without the apass_opmode privilege from forcing a +U change.
+       (mode_parse_apass): Likewise, for +A.
+
+       * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in
+       the default privileges for global opers.
+
+       * ircd/ircd_lexer.l (apass_opmode): Recognize keyword.
+
+       * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token.
+       (privtype): Fix typo for local_badchan privilege value.
+       Accept apass_opmode token.
+
+2005-02-23  Michael Poole <mdpoole@troilus.org>
+
+       * doc/example.conf: Fix comment's description of "whox" privilege.
+
+2005-02-21  Michael Poole <mdpoole@troilus.org>
+
+       * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check
+       from here, so /whois does not show secret global channels.
+
+       * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use
+       "/list s".
+       (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels.
+
+2005-02-21  Perry Lorier <isomer@undernet.org>
+
+       * ircd/s_stats.c: Hide the hub IP's.  They're kinda important.
+
+2005-02-20  Perry Lorier <isomer@undernet.org>
+
+       * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to
+       parse_error()'s so that ./ircd -k will display them.  Also clarified
+       the warning about oper blocks.
+
+2005-02-20  Perry Lorier <isomer@undernet.org>
+
+       * tools/convert-conf.py: A multitude of changes to deal with parsing
+       mistakes, generate a newer config file, better error handling,
+       being smarter about what config elements you generate etc.
+       
 2005-02-20  Perry Lorier <isomer@undernet.org>
 
        * ircd/engine_epoll.c: Change a size_t to socklen_t to match
@@ -5,6 +460,9 @@
 
 2005-02-19  Michael Poole <mdpoole@troilus.org>
 
+       * ircd/ircd_parser.y (clientblock): Parse IP address before
+       allocating ConfItem; if the parse fails, generate an error.
+
        * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6
        addresses starting with ':'.
        (RPL_STATSILINE): Likewise.
 
        * ircd/s_stats.c (stats_configured_links): Pass the appropriate
        argument for the RPL_STATSxLINE changes.
+       Change RPL_STATSILINE to use * instead of <NULL> when IP or host
+       is null.
 
 2005-02-18  Michael Poole <mdpoole@troilus.org>