Implement a per-connection-class default usermode option.
[ircu2.10.12-pk.git] / ChangeLog
index 97d34c7155798b08713ecb1550aabf03c9e4c1b2..44c72a6ae6d66053be0f81b433f3ab5193961c1c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,409 @@
+2004-05-10  Michael Poole <mdpoole@troilus.org>
+
+       Implement a per-connection-class default usermode option.
+
+       * doc/example.conf: Illustrate how to use the option.
+
+       * include/class.h (struct ConnectionClass): New "default_umode"
+       field.
+       (ConfUmode): New macro.
+
+       * include/client.h (client_get_default_umode): New function.
+
+       * ircd/client.c (client_get_default_umode): Implement it.
+
+       * ircd/ircd_lexer.l (usermode): New token.
+
+       * ircd/ircd_parser.y (classblock, etc): New syntax.
+
+       * ircd/s_user.c (register_user): Set default user modes for user.
+       This sends the new mode to the user, so the explicit send later
+       is no longer necessary.
+
+2004-05-10  Michael Poole <mdpoole@troilus.org>
+
+       Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
+       patch set.
+
+       * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
+
+       * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
+       also send a TOPIC to the peer.
+
+       * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
+       feature, defaulting to FALSE.
+
+       * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
+       and allow F:HIS_BANWHO to hide the originator of the topic.
+       (ms_topic): Parse optional timestamp arguments to TOPIC, and use
+       them to decide whether to ignore the topic.
+
+2004-05-10  Michael Poole <mdpoole@troilus.org>
+
+       Forward port of delayed-join.patch from Quakenet's "Asuka" patch
+       set (which was a port of code I wrote for the other ircu).
+
+       * include/channel.h (CHFL_DELAYED): New membership flag.
+       (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
+       (infochanmodes): Add +D to list of supported channel modes.
+       (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
+       (member_can_send_to_channel, client_can_send_to_channel): Add
+       "reveal" parameter to indicate whether a request should cause
+       a join-delayed user to become visible.
+       (RevealDelayedJoin, CheckDelayedJoins): New functions.
+
+       * include/numeric.h (RPL_DELNAMREPLY): New numeric.
+       
+       * include/s_user.h (NAMES_DEL): New flag for do_names().
+
+       * include/supported.h (FEATURESVALUES2): Add +D to list of
+       supported channel modes.
+
+       * ircd/channel.c (remove_member_from_channel,
+       member_can_send_to_channel, client_can_send_to_channel,
+       joinbuf_join): Handle join-delayed users.
+       (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
+       modebuf_extract, mode_process_clients, mode_parse_mode,
+       mode_parse): Handle delayed-join channels.
+       (RevealDelayedJoin, CheckDelayedJoins): New functions.
+
+       * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
+       server_relay_channel_message, server_relay_channel_notice): Add
+       argument for "reveal" parameter to client_can_send_to_channel().
+
+       * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
+
+       * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
+
+       * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
+       channel with JOIN 0.
+
+       * ircd/m_kick.c (m_kick): For join-delayed members, only send the
+       KICK to the kicker and kickee.  Then check whether +d can be
+       removed.
+
+       * ircd/m_names.c (do_names): Show join-delayed users if and only
+       if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
+       RPL_DELNAMREPLY instead of RPL_NAMREPLY.
+       (m_names): If NAMES -D, pass NAMES_DEL to do_names().
+
+       * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
+       member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
+       the user is join-delayed.
+
+       * ircd/m_quit.c (m_quit): Handle join-delayed users and new
+       argument for member_can_send_to_channel().
+
+       * ircd/m_topic.c (do_settopic): If a join-delayed channel member
+       changes the topic, reveal the member.
+
+       * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
+       "reveal" parameter to client_can_send_to_channel().
+
+       * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
+
+       * ircd/m_who.c (m_who): Skip join-delayed members where we skip
+       zombies.
+
+       * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
+       users.  Use slightly more efficient macros rather than function
+       calls to test for ops and voice.
+
+       * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
+
+       * ircd/s_user.c (hide_hostmask): For users with no modes in a
+       join-delayed channel, do not send JOIN to other members after the
+       QUIT :Registered.
+
+       * ircd/send.c (sendcmdto_common_channels_butone): Skip
+       join-delayed users where we skip zombies.
+       
+2004-05-10  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_events.c: Actually reference and try to use the epoll
+       event engine.  Omitted from yesterday's commit.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       Forward port of Paul "Zoot" Chang's pseudo-command.patch and
+       pseudo-support.patch.
+
+       * doc/example.conf: Illustrate how to use the feature.
+
+       * include/handlers.h (m_pseudo): Declare new handler function.
+
+       * include/ircd_features.h (HIS_STATS_R): Add a feature to control
+       user visibility of the pseudo-commands.
+
+       * include/msg.h: Add flag and field for the extra information used
+       to select a pseudo-command's target.
+
+       * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
+       definitions.
+
+       * include/parse.h (register_mapping, unregister_mapping): Declare.
+
+       * include/s_conf.h (struct nick_host, struct s_map,
+       GlobalServiceMapList): Define.
+
+       * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
+       files to "make depend" dependency list.  Update dependencies.
+
+       * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
+       default value.
+
+       * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
+
+       * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
+
+       * ircd/parse.c (msgtab): Add initializer for field "extra" to all
+       commands.
+       (msg_tree_insert, msg_tree_remove, register_mapping,
+       unregister_mapping): New functions.
+       (parse_client): Implement MFLG_EXTRA extra argument passing.
+
+       * ircd/s_conf.c (GlobalServiceMapList): New variable.
+
+       * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
+       strings for new numeric responses.
+
+       * ircd/s_stats.c (stats_mapping): New function.
+       (statsinfo): Add entry for /stats R and make old /stats r entry
+       case-sensitive.
+       
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
+       yyerror() so that configuration errors all go to the same place.
+
+       * ircd/s_conf.c: New variables conf_error and conf_already_read.
+       conf_error is cleared by read_configuration_file() and set by
+       yyerror(); conf_already_read is set by read_configuration_file()
+       and never cleared.  Make yyerror() display error to stderr before
+       conf_already_read is set.  Make configuration errors a fatal
+       condition in init_conf().
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/Makefile.in: Pass the source directory as an argument to
+       version.c.SH so it knows where to find the source files for an
+       out-of-srcdir build.
+
+       * ircd/version.c.SH: Use that information.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * Makefile.in: Ensure ${prefix}/include exists, since the adns
+       install puts files in that directory.  (The adns Makefile does
+       not use configure's ${includedir}.)
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * doc/readme.features: The logic for F:AUTOHIDE was removed, but
+       not its documentation.  Fix that omission.
+
+       * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
+       definitions for FEATURE_AUTOHIDE.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * doc/readme.who: Document the support for account matching and
+       display in the WHO command.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/ircd.c (main): Move check_pid() call until after we read
+       the configuration file so that F:PPATH works correctly.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/match.c (match): Use ToLower() instead of tolower() for
+       character comparisons.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/s_user.c (register_user): Initialize "flag" (user's old
+       modes) passed to send_umode() so that the real set of modes are
+       sent to the user.
+       
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
+       server, not to a hub between us and the new server.
+
+       * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
+       on target server rather than FLAG_CHSERV (so that directed
+       messages work at all).
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * configure.in: Add checks for epoll_* system call family.
+
+       * configure: Regenerate.
+
+       * ircd/engine_epoll.c: New file; forward ported from 2.10.11
+       branch.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * include/ircd_alloc.h: Add definitions for MyRealloc, since they
+       are needed by kqueue and epoll event engines; kill #if 0'd block.
+
+       * include/memdebug.h: Declare dbg_realloc() helper function.
+
+       * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
+
+       * ircd/memdebug.c: Implement dbg_realloc() helper function.
+
+2004-05-09  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/channel.c (find_no_nickchange_channel): Disallow nick
+       changes on a moderated channel with neither ops nor voice.
+
+       * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
+
+2004-01-20  Perry Lorier <isomer@undernet.org>
+
+       * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
+
+2004-01-21 Gavin Grieve <hektik@dimebox.net>
+
+       * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
+         code to resolve the multiple part messages bug written by Entrope.
+
+2003-08-12 Timothy Vogelsang <net@astrolink.org>
+
+        * ircd/match.c: (match) rewrote function based on existing
+          code from the hybrid ircd -- death to goto
+
+2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
+
+        * ircd/s_user.c: invalidate ban cache for user on host hiding/account
+
+2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
+
+        * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
+        ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
+        B is an oper", appeared in a lot of places. made it a define SeeOper.
+
+2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
+        * ircd/s_user.c: umode_str (user modes in N token) internal flags var
+       was not initialized to the user's flags, returned a string with
+       random modes set.
+
+2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
+
+        * ircd/m_names.c: length counter being incremented one too many
+        for each nick, resulting names reply messages are about 50 chars
+        shorter than possible. fixed.
+
+2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
+
+        * ircd/channel.c: don't ever send mode changes for local channels to
+       servers.
+
+2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
+
+        * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
+        moved the supported channel/user mode strings of the 004 reply from
+        s_err.c to the header files where the channels/user modes are
+        defined, and show or hide +Au based on OPLEVELS setting.
+
+2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
+
+        * ircd/m_burst.c: Clear topic set by netrider on burst.
+
+2003-08-05 Diane Bruce  <db@db.net>
+
+        * ircd/parse.c: Fixed the typo the fix of the typo created
+
+2003-08-01 Diane Bruce  <db@db.net>
+
+       * ircd/parse.c: Fixed typo
+
+2003-06-22  Diane Bruce  <db@db.net>
+
+       * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
+
+2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
+
+        * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
+       ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
+       Make ability to create local channels a feature which can be disabled.
+
+2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
+
+       * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
+       ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
+       makes it possible to disable the +Au/oplevels functions.
+
+2003-06-17  Alex Badea  <vampire@p16.pub.ro>
+
+       * ircd/res_adns.c: included sys/types.h, for non-Linux
+       headers
+
+>>>>>>> 1.388
+2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
+
+       * libs/dbprim: database primitives library, including
+       flexible linked lists, auto-resizing hash tables, and sparse
+       matrices.  Has a test suite for everything but portions of
+       the sparse matrix routines (I'm lazy; someone help me write
+       them!).  Documentation generated by doxygen--feel free to
+       critique, suggest phrasing improvements, etc.
+
+2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
+       * libs: put third-party libraries in this subdirectory.
+       Started by copying adns into it--will fix the rest and remove
+       the top-level copy later.
+
+2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
+       * ircd/m_settime.c: Fixed a minor format string issue.
+       
+2003-01-12  Thomas Helvey <tom.helvey@cox.net>
+       * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
+       ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
+       bugs in transmit.c and m_opmode.c.
+
+2003-01-12  Thomas Helvey <tom.helvey@cox.net>
+       * include/class.h, include/ircd_string.h, ircd/class.c,
+       ircd/gline.c, ircd_string.c: Fix undefined order
+       of evaluation bug in gline.c, add general purpose hasher for
+       conf entries. 
+
+2003-01-11  Thomas Helvey <tom.helvey@cox.net>
+       * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
+       ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
+       ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
+       ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
+       ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
+       ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
+       with g++ again, type safety, const correctness fixes,
+       remove C++ keywords again :/
+
+2003-01-11  Thomas Helvey <tom.helvey@cox.net>
+       * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
+       table data was in a different order than the feature data
+       structure, which resulted in a wild index being used in
+       feature_bool. The feature_bool function didn't check it's
+       index before indexing the features array resulting in
+       a core dump on /oper.
+
+2003-01-10  Thomas Helvey <tom.helvey@cox.net>
+       * include/client.h, include/res.h, include/s_bsd.h,
+       ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
+       ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
+       Remove resolver cache wart, change hostent representation, cleanup
+       resolver clients.
+
+2003-01-10  Thomas Helvey <tom.helvey@cox.net>
+       * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
+        HEAD_IN_SAND macros to get server to build, rebuild dependencies.
+
+2003-01-08  Fredrik Soderblom <froo@quakenet.org>
+        * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
+        RPL_HOSTHIDDEN and the use of it.
+
 2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
 
        * BUGS: removed from distribution