--- /dev/null
+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
+ the client to go away.
+
+2006-11-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/version.c.SH: Skip version.c.
+
+2006-11-04 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.who: Document new 'o' field flag.
+
+ * include/whocmds.h (WHO_FIELD_OPL): New flag.
+
+ * ircd/channel.c (send_channel_modes): Rename feat_oplevels to
+ send_oplevels and determine it automatically.
+ (modebuf_flush_int): Pass along oplevel if it's less than
+ MAXOPLEVEL.
+ (mode_process_clients): Allow oplevels to be inherited for -A
+ channels. Inherit the opper's oplevel if >= MAXOPLEVEL.
+
+ * ircd/m_who.c (m_who): Recognize 'o' flag as WHO_FIELD_OPL.
+
+ * ircd/whocmds.c (do_who): Send oplevel for WHO_FIELD_OPL, but
+ only show up to the requester's own oplevel.
+
+2006-10-21 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/convert-conf.c (finish_connects): Fix error display for
+ missing C: lines when an H: line is present.
+
+2006-08-02 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y (connectblock): Check for too-long password.
+ (operblock): Comment why we don't check password length. Move
+ PRIV_PROPAGATE test earlier (so a buggy edit, rehash, /oper will
+ not crash).
+ (clientblock): Check for too-long password.
+
+2006-08-02 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (struct Ban): Fix typo in doxygen comment.
+
+2006-07-09 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for pre09.
+
+2006-07-09 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.08 release.
+
+2006-07-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (auth_freelist): New static variable.
+ (check_auth_finished): Move call to destroy_auth_request().
+ (destroy_auth_request): Prepend auth request to freelist.
+ (start_auth): Use struct from auth freelist if possible.
+
+2006-06-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y (iauth*): Avoid leaking program name string.
+
+2006-06-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (check_auth_finished): Free auth structure when
+ done with it.
+ (sendto_iauth): Free message buffer when done with it.
+
+2006-06-26 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for pre08.
+
+2006-06-26 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHEVEL): Bump for release.
+
+2006-06-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe.
+
+2006-06-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local)
+ channels for locops as well as global opers.
+
+2006-06-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_gline.c (ms_gline): Use final argument as G-line reason.
+
+2006-06-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/gline.c (gline_stats): Show activation state in /stats g.
+
+ * ircd/s_err.c (RPL_STATSGLINE): Update format string to match.
+
+2006-06-07 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Document the list_chan privilege.
+
+ * ircd/ircd_lexer.l: Recognize the token.
+
+ * ircd/ircd_parser.y: Treat it appropriately.
+
+2006-06-07 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (auth_ping_timeout): If the client never had an
+ auth request, kill them on ping timeout.
+
+2006-06-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (auth_timeout_callback): Clear AR_DNS_PENDING when
+ destroying the lookup and reporting DNS failure.
+
+2006-05-28 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.features (MAXBANS): Update default value.
+ (NICKLEN): Likewise.
+ (HIS_STATS_*): Sort alphabetically.
+
+ * ircd/m_stats.c (m_stats): Describe the intention so that there
+ are not further questions about local opers and remote /stats.
+ Fix places that use cptr instead of sptr.
+
+2006-05-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (auth_dns_callback): Be more careful about
+ handling failed DNS lookups. Use a more standard function to
+ disconnect clients for IP mismatches.
+ (start_auth): Use a more standard function to disconnect clients
+ for peer or local socket address lookup failures.
+
+2006-05-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (auth_ping_timeout): Fix off-by-one error.
+
+2006-05-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/Makefile.in (install-*): Install convert-conf. Install
+ umkpasswd when ${BINDIR}/ircd is not a symlink.
+
+2006-05-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (check_auth_finished): Only check passwords on
+ user ports.
+
+2006-05-14 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Connect): Mention the vhost option.
+
+2006-05-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here...
+
+ * ircd/s_auth.c (auth_set_pong): ... to here.
+
+2006-05-07 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_auth.h (auth_ping_timeout): Declare new function.
+
+ * ircd/ircd.c (check_pings): Move auth timeout logic into that new
+ function.
+
+ * ircd/s_auth.c (HeaderMessages): Insert new message.
+ (auth_ping_timeout): Define new function.
+ (auth_timeout_callback): Remove "hurry" notification from here.
+
+2006-05-07 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_auth.h (destroy_auth_request): Remove second argument.
+
+ * ircd/list.c (free_client): Update to match.
+
+ * ircd/s_auth.c (check_auth_finished): Remove second argument and
+ update call to destroy_auth_request().
+ (send_auth_query): Update call to destroy_auth_request().
+ (destroy_auth_request): Remove second argument.
+ (auth_timeout_callback): Send timeout failure messages here
+ instead. Update call to check_auth_finished().
+ (auth_dns_callback): Update call to check_auth_finished().
+ (start_auth): Likewise.
+ (auth_set_pong): Likewise.
+ (auth_set_user): Likewise.
+ (auth_set_nick): Likewise.
+ (auth_cap_done): Likewise.
+ (iauth_parse): Likewise.
+
+2006-05-06 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED.
+ (check_auth_finished): Move password check out of iauth-only part
+ and use AR_PASSWORD_CHECKED to make sure we only check it once.
+
+2006-04-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field.
+ (check_auth_finished): Fix timeout update.
+ (destroy_auth_request): Only delete timer if it is active.
+ (auth_timeout_callback): Do not disconnect client on timeout, so
+ that the user can finish sending NICK/USER or doing iauth.
+
+2006-04-28 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Admin): Fix documentation of which line can be
+ listed twice.
+
+ * ircd/ircd_parser.y (adminblock): Allow admin information to be
+ changed via /rehash.
+
+2006-04-06 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (start_auth): Add client to list after getting
+ endpoint names (which can apparently fail for some reason).
+
+2006-04-06 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_snprintf.c: Use SIZEOF_LONG_LONG (which is 0 for
+ unknown types) instead of the never-defined HAVE_LONG_LONG.
+
+2006-04-06 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (IAuth): Update to reflect new syntax.
+
+ * doc/readme.who: Fix typo in metasyntactic variable name.
+
+2006-04-04 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h: Update for pre07.
+
+2006-04-04 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h: Update for u2.10.12.06 release.
+
+2006-04-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (bmatch): If ipmask_check() indicates old_ban is
+ a CIDR-wise superset of new_ban, check whether new_ban is a
+ text-wise superset of old_ban.
+
+2006-03-31 Michael Poole <mdpoole@troilus.org>
+
+ * tools/iauth-test (send_server_notice): Use a colon prefix before
+ the message.
+ (%handlers): Likewise.
+
+2006-03-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_signal.c (alloc_crec): Zero-fill returned
+ ChildRecord structs.
+
+ * ircd/jupe.c (make_jupe): Zero-fill newly allocated jupes.
+
+ * ircd/list.c (make_link): Zero-fill returned SLink structs.
+
+ * ircd/whowas.c (whowas_init): Delete function.
+ (whowas_alloc): Rewrite to follow the more common pattern and to
+ zero-fill returned Whowas structs.
+
+2006-03-23 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_auth.c: rewrite iauth_read(), spliting out the parsing
+ into iauth_parse(); change parsing to separate parameters and deal
+ with the ':' sentinel; send sentinel in multi-word parameters; fix
+ iauth_cmd_config() and iauth_cmd_stats() to clear the 'next'
+ pointer in the SLink structure; fix buffering in
+ iauth_read_stderr(); remove carriage returns from STDERR contents
+ as well
+
+ * doc/readme.iauth: fix a minor typo in comments for 'd' and 'N'
+ server messages
+
+2006-03-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/convert-conf.c (finish_features): Do not emit a feature
+ setting that has no values.
+
+2006-03-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_key): Outside of burst, allow
+ overwriting of keys by a service when a key is already set.
+ (mode_parse_upass): Likewise. Instead, ignore new Upass during
+ burst if it is lexicographically greater than the current one.
+ (mode_parse_apas): Likewise for Apass, but only allow overwiting
+ an existing Apass in a BURST.
+
+2006-03-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (modebuf_flush_int): Fix typo about changing
+ oplevels. Send correct channel TS for modes to other servers.
+ (mode_parse): Accept timestamps on modes from users on other
+ servers. If the received timestamp is too large, handle that.
+
+ * ircd/m_create.c (ms_create): Mention the CREATE-during-burst
+ case and handle it.
+
+ * ircd/m_mode.c (ms_mode): Put back HACK(3) when oplevels are off.
+
+2006-03-14 Wouter Coekarts <wouter@coekaerts.be>
+
+ * ircd/s_err.c (RPL_STATSILINE): Add two %s to the first field.
+
+ * ircd/s_stats.c (stats_configured_links): Use the new %s's to
+ show username masks for I: lines that have them.
+ (stats_access): Likewise.
+
+2006-03-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/msgq.c (msgq_vmake): Try to clear msgbuf freelist after
+ killing clients, so that that case does not lead immediately to a
+ server panic.
+ (msgq_count_memory): Report total buffer text used as a way to
+ determine whether the BUFFERPOOL value is marginal.
+
+2006-03-02 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_osdep.h (os_socket): New parameter.
+
+ * include/res.h (irc_in_addr_unspec): New macro.
+
+ * ircd/ircd_res.c (restart_resolver): Set family appropriately.
+
+ * ircd/listener.c (inetport): Let os_ library pick socket family.
+
+ * ircd/os_generic.c: Do not #define _XOPEN_SOURCE on FreeBSD 5+.
+ (sockaddr_from_irc): New parameter.
+ (os_sendto_nonb): Use new parameter to sockaddr_from_irc().
+ (os_socket): New parameter. Try to turn off IPV6_V6ONLY on
+ sockets that listen on unspecified addresses.
+ (os_connect_nonb): Use new parameter to sockaddr_from_irc().
+
+ * ircd/s_auth.c (start_auth_query): Let os_ library pick socket
+ family.
+
+ * ircd/s_bsd.c (connect_inet): If we pick the IPv4 vhost, specify
+ family for os_socket() as AF_INET.
+
+ * ircd/uping.c (uping_init): Set socket family appropriately.
+ (uping_server): Likewise.
+ (uping_end): Fix format strings (the ms_* fields are int, not
+ long, and this causes bad results on LP64 machines).
+
+2006-02-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_silence.c (apply_silence): Refuse to apply silences for
+ local users that are broader than an IPv4 /16 or an IPv6 /32,
+ unless they match every host indiscriminately.
+
+2006-02-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (check_auth_finished): Give non-iauth clients
+ connection classes, too.
+ (auth_close_unused): Remove redundant check for iauth != NULL.
+ (report_iauth_conf): Check iauth != NULL before deref'ing it.
+ (report_iauth_stats): Likewise.
+
+2006-02-22 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_auth.c: fix macros to not dereference a NULL pointer when
+ iauth is not connected
+
+2006-02-17 Alex Badea <vamposdecampos@gmail.com>
+
+ * ircd/s_auth.c (auth_set_username): Check if the last
+ character of the username is alphanumeric, instead of the
+ '\0' terminator.
+
+ * ircd/m_pong.c (mr_pong): Parse cookie with strtoul(),
+ since atol() causes signedness problems.
+
+2006-02-15 Michael Poole <mdpoole@troilus.org>
+
+ * include/res.h (NXDOMAIN): Define.
+
+ * ircd/ircd_res.c (res_readreply): Treat NXDOMAIN just like
+ SERVFAIL. Patch courtesy of Dianora.
+
+ * tools/iauth-test (Carp): This doesn't actually use Carp.
+
+2006-02-15 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Include new HIS_STATS_IAUTH feature.
+
+ * doc/readme.features: Document the feature.
+
+ * doc/readme.iauth: Rewrite to reflect the new progressive iauth
+ protocol, based on IRCnet's iauth.
+
+ * doc/snomask.html: Document SNO_AUTH server notice flag.
+
+ * include/client.h (FLAG_IAUTHED): Delete.
+ (con_cookie): Delete.
+ (con_unreg): Delete.
+ (con_auth): Make comment capitalization consistent.
+ (con_iauth): Delete.
+ (CLIREG_*): Delete.
+ (cli_unreg): Delete.
+ (cli_cookie): Delete.
+ (cli_iauth): Delete.
+ (con_unreg): Delete.
+ (con_iauth): Delete.
+ (IsIAuthed): Delete.
+ (SetIAuthed): Delete.
+ (SNO_AUTH): New server notice flag.
+ (SNO_ALL): Update to include SNO_AUTH.
+ (SNO_OPER): Update to include SNO_AUTH.
+
+ * include/ircd_auth.h: Delete file.
+
+ * include/ircd_features.h (HIS_STATS_IAUTH): New feature.
+
+ * include/s_auth.h: Rewrite almost everything for new auth system.
+
+ * include/s_user.h (COOKIE_VERIFIED): Delete.
+ (register_user): Remove redundant nick and username arguments.
+
+ * ircd/ircd_auth.c: Delete file.
+
+ * ircd/ircd_features.c (HIS_STATS_IAUTH): New feature.
+
+ * ircd/ircd_lexer.l (PROGRAM): New token in grammar.
+
+ * ircd/ircd_log.c (masks): Add SNO_AUTH flag.
+
+ * ircd/ircd_parser.y (stringlist): Simplify production.
+ (iauthblock): Revise to only include a PROGRAM production.
+
+ * ircd/list.c (make_client): Do not assign to deleted field.
+
+ * ircd/m_cap.c (cap_ls): Use auth_cap_start() instead of
+ cli_unreg().
+ (cap_req): Likewise.
+ (cap_end): Use auth_cap_done() instead of cli_unreg().
+
+ * ircd/m_pass.c (mr_pass): Merge arguments to PASS. Use
+ auth_set_password() to notify iauth of password.
+
+ * ircd/m_pong.c (mr_pong): Use auth_set_pong() instead of
+ cli_cookie() and cli_unreg().
+
+ * ircd/m_user.c (m_user): Use auth_set_user() instead of
+ cli_unreg(), etc.
+
+ * ircd/s_auth.c: Rewrite most of the infrastructure for the new
+ auth system.
+
+ * ircd/s_conf.c (rehash): Call auth_*() instead of iauth_*().
+
+ * ircd/s_misc.c (exit_one_client): Do not use iauth_exit_client().
+ (exit_client): Use auth_send_exit() instead.
+
+ * ircd/s_stats.c (statsinfo): Include iauth and iauthconf.
+
+ * ircd/s_user.c (clean_user_id): Delete (moved into s_auth.c).
+ (register_user): Remove nick and username parameters; move conf
+ interactions and username validation to s_auth.c.
+ (set_nick_name): Use auth_set_nick() instead of cli_cookie(),
+ cli_unreg(), etc.
+
+ * tools/iauth-test: Implementation of iauth for testing purposes.
+
+2006-02-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_snprintf.c (doprintf): Fix typecast for %hu.
+
+2006-02-15 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_signal.h (SigChldCallBack): New typedef.
+ (register_child): Declare.
+ (unregister_child): Declare.
+ (reap_children): Declare.
+
+ * ircd/ircd_signal.c (alloc_crec): New function.
+ (release_crec): New function.
+ (register_child): New function.
+ (do_unregister_child): New function.
+ (unregister_child): New function.
+ (sigchld_callback): New function.
+ (setup_signals): Hook SIGCHLD.
+ (reap_children): New function.
+
+ * ircd/ircd.c (server_restart): Call reap_children() on exit.
+
+2006-02-15 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_osdep.h (os_socketpair): Declare.
+
+ * ircd/os_generic.c (is_blocked): New local function.
+ (os_*): Use is_blocked() instead of cut-and-pasted code.
+ (os_socketpair): New function.
+
+2006-02-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c (match): Fix backtracking bug after an escape
+ (reported by Michael, I think).
+
+2006-02-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (try_connections): Scan all Connect blocks for the
+ earliest hold time (suggested by Michael).
+
+2006-02-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (m_join): Remove #if 0 code and update comment.
+
+ * ircd/m_mode.c (ms_mode): Remove self-op support.
+
+2006-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update for 2.10.12.pre06.
+
+2006-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update for release.
+
+2006-01-11 Michael Poole <mdpoole@troilus.org>
+
+ * doc/Makefile.in: Make install target VPATH-safe.
+
+ * doc/example.conf: Comment out example IAuth block.
+
+ * ircd/m_burst.c (ms_burst): Change isdigit() to IsDigit(),
+ silencing a warning on Solaris.
+
+2006-01-09 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (register_user): Do not send +r flag to user when
+ they first connect.
+
+2006-01-09 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_features.h (FEAT_ZANNELS): Actually, put it back.
+
+ * ircd/ircd_features.c (FEAT_ZANNELS): Likewise.
+
+2006-01-06 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_process_clients): Do not reveal zombies who
+ are being opped (MODE and KICK crossed). Reported by coekie.
+
+2006-01-06 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (ms_join): Wipe out all modes (not just chanops)
+ when replacing a resurrected channel.
+
+ * ircd/convert-conf.c (dupstring): Fix probable off-by-one size
+ passed to memcpy().
+
+2006-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (modebuf_flush_int): Also send timestamp when &me
+ originates the MODE going to other servers (currently just when a
+ client joins a zannel or uses an A/U password).
+
+2006-01-02 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_features.h (FEAT_ZANNELS): Remove.
+
+ * ircd/channel.c (sub1_from_channel): Remove reference to
+ FEAT_ZANNELS.
+
+ * ircd/ircd_features.c (FEAT_ZANNELS): Remove.
+
+ * ircd/m_destruct.c (ms_destruct): Do not try to remove a destruct
+ event for channels that do not have them (created by BURSTing a
+ zannel but not yet destroyed by EOB).
+
+2005-12-31 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_whowas.c (m_whowas): Mention that IP is untracked in WHOWAS.
+ Spotted by Progs.
+
+2005-12-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_topic.c: Remove block comment about sptr, cptr, etc.
+ (do_settopic): Add doxygen comment. Move permissions checks..
+ (m_topic): .. to here. Update doxygen comment.
+ (ms_topic): Update doxygen comment here too.
+
+2005-12-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c (conf_debug_iline): Fix display of null passwords.
+
+2005-12-30 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Mention removal of HIS_STATS_h.
+
+ * ircd/convert-conf.c (removed_features): Add AUTOHIDE,
+ HIS_DESYNCS and TIMESEC.
+ (get_connect): Do not downcase connection name on insert.
+ (do_feature): Do not upcase feature name (cf HIS_STATS_k).
+
+2005-12-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/engine_devpoll.c (engine_loop): Remove bogus assert.
+
+2005-12-31 Perry Lorier <isomer@undernet.org>
+
+ * convert-conf.c: Skip with a warning, H:'s that are missing a
+ corresponding C:
+
+2005-12-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd-patch: Do not use [ for test, and do not use $[] for expr.
+ (Solaris /bin/sh, among others, have problems with those.)
+
+2005-12-23 Michael Poole <mdpoole@troilus.org>
+
+ * config.guess: Update to current version.
+
+ * config.sub: Likewise.
+
+2005-12-23 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_join.c: get rid of MAGIC_REMOTE_JOIN_TS; perform the
+ deop-other-users loop only when creation < channel timestamp or
+ when the channel in question happens to be a zannel; actually deop
+ users, don't just say we are and not do it
+
+ * ircd/m_create.c (ms_create): get rid of MAGIC_REMOTE_JOIN_TS
+
+ * include/channel.h: get rid of MAGIC_REMOTE_JOIN_TS
+
+2005-12-13 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: Define a macro when compiling on Solaris.
+
+ * ircd/ircd_crypt_native.c (_XOPEN_SOURCE): Turn down to 500 so
+ that Solaris doesn't complain that SUSv3 requires C99.
+
+ * ircd/os_generic.c (_XOPEN_SOURCE): Likewise, but leave it at 600
+ on non-Solaris platforms so that IPv6 stays supported.
+
+2005-12-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (ms_join): Prevent net rides allowed by moving the
+ channel timestamp backwards in time without deopping current ops.
+ (Reported by Wouter Coekaerts.)
+
+2005-12-13 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Remove extraneous "Other" Client block.
+
+ * ircd/convert-conf.c (finish_operators): Fix operator precedence
+ bug.
+
+ * ircd/ircd_parser.y (clientclass): Fix typo in error message.
+
+2005-11-27 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/Makefile.in (version.c): version.c also depends on
+ version.h, patchlevel.h and source files.
+
+2005-11-27 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (m_join): Count a join to a new channel as a
+ target change.
+
+2005-11-19 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_stats.c (stats_servers_verbose): Display IPv6 support
+ flag with the other per-server flags.
+
+2005-11-19 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/convert-conf.c (finish_features): Only emit "Features {"
+ once in the converted configuration file. Display the original
+ input line for each feature line in the output.
+
+2005-11-18 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update for pre05.
+
+2005-11-18 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update for release.
+
+2005-11-15 Brian Cline <brian.cline@gmail.com>
+
+ * doc/example.conf: Add new line for HIS_MODEWHO feature.
+
+ * doc/readme.features: Document new HIS_MODEWHO feature.
+
+ * include/ircd_features.h: Declare new HIS_MODEWHO feature.
+
+ * ircd/channel.c (modebuf_flush_int): Use new HIS_MODEWHO feature
+ to show or hide the server name that performed a channel mode change.
+
+ * ircd/ircd_features.c: Place new HIS_MODEWHO setting in the feature
+ table and give it a default value of true, which will hide the
+ originating server name.
+
+2005-11-16 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Features): Mention ZANNELS default.
+
+ * doc/readme.features: Document OPLEVELS and ZANNELS.
+
+2005-11-17 Carlo Wood <run@alinoe.com>
+
+ * include/ircd_features.h (Feature): Add ZANNELS.
+ * ircd/ircd_features.c (FeatureDesc): idem.
+ * ircd/channel.c (sub1_from_channel): Don't keep zannels
+ around when ZANNELS and OPLEVELS are FALSE.
+ * ircd/m_destruct.c (ms_destruct): Use JOIN instead of
+ CREATE to recreate a non-empty channel after DESTRUCT.
+
+2005-11-16 Michael Poole <mdpoole@troilus.org>
+
+ * tools/convert-conf.py: Delete obsolete code.
+
+2005-11-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_names.c (m_names): Fix handling of NAMES #a,#b.
+ (ms_names): Likewise.
+
+2005-11-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_nick.c (ms_nick): Clarify message when an older nick
+ overrules a newer nick. When killing a client for a nick
+ collision, make sure to use the numnick as the first argument.
+
+2005-11-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (member_can_send_to_channel): After prodding from
+ reed, always allow remote users to send to a channel. He also
+ pointed out a bug in the first version of this change.
+
+2005-11-14 Carlo Wood <run@alinoe.com>
+
+ * ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
+ (modebuf_mode_uint): Make sure the limit is included as an
+ argument when necessary (and only when necessary) in a bounce.
+
+ * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead
+ of burst to resynchronize a non-empty destructed channel.
+
+2005-11-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_no_nickchange_channel): Disallow nick
+ changes by voiceless no-account users on a +r channel.
+
+2005-11-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
+ server is kicking him.
+
+2005-11-13 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for pre04.
+
+2005-11-13 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update for release.
+
+2005-11-13 Carlo Wood <run@alinoe.com>
+
+ * ircd/m_create (ms_create): Accept CREATE for zannels.
+
+ * ircd/m_join.c (m_join): MODE +o for a zannel must come from the
+ server for compatibility with older versions.
+
+2005-11-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Bump for pre03.
+
+2005-11-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update for release.
+
+2005-11-11 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A
+ and AAAA lookups as well as PTR.
+
+2005-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_client): Allow clients to specify
+ oplevel in MODE #channel +o.
+ (mode_process_clients): Allow oplevel 999 to deop another 999.
+
+ * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999.
+
+2005-10-31 Michael Poole <mdpoole@troilus.org>
+ (Based on a patch by Romain Bignon <progs@ir3.org>)
+
+ * ircd/channel.c: Some modes (currently only WASDELJOINS) should
+ not be propagated to remote servers.
+
+2005-10-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
+ inside an if (MyUser(state->sptr)) test.
+
+ * ircd/m_join.c (m_join): Reorganize zannel join check to match
+ surrounding code.
+
+2005-10-30 Carlo Wood <run@alinoe.com>
+
+ * ircd/channel.c (sub1_from_channel): Delay destruction for -A
+ channels. They become zombie channels (zannels).
+ (mode_parse_upass): Add duration to ERR_NOMANAGER message.
+ (mode_parse_apass): Likewise. Unconditionally set the member who
+ sets Apass as oplevel 0. Clear Upass when clearing Apass.
+ (joinbuf_join): Remove code to pass oplevel in JOIN.
+
+ * ircd/m_burst.c (ms_burst): Handle zannels.
+
+ * ircd/m_join.c (m_join): Handle a join to a zannel. If the user
+ is joining with ops and/or an oplevel, send those.
+ (ms_join): Stop trying to parse oplevels in JOIN. Copy join
+ timestamp when a user joins a zannel.
+
+ * ircd/m_mode.c (ms_mode): Never generate HACK3. Silently allow a
+ user to op himself if he is the only one in a channel.
+
+ * ircd/s_err.c (ERR_UPASSSET): Remove extra space.
+ (ERR_UPASSNOTSET): Likewise.
+ (ERR_NOMANAGER): Add field for channel lifetime.
+
+2005-10-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real
+ channel key is OVERRIDE. (Reworked patch from a1kmm.)
+
+2005-10-30 Michael Poole <mdpoole@troilus.org>
+
+ * .cvsignore: Add autom4te.cache.
+
+ * ircd/.cvsignore: Add convert-conf.
+
+ * ircd/test/.cvsignore: Add ircd_match_t.
+
+ * patches/.cvsignore: Add marks.
+
+2005-10-28 Alex Badea <vamposdecampos@gmail.com>
+
+ * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538)
+
+2005-10-17 Diane Bruce <db@db.net>
+
+ * ircd/ircd_res.c: Don't send retries if the client did
+ not resolve (SERVFAIL); this fixes a bug causing a flurry
+ of retries in this case
+
+2005-10-14 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update to pre02.
+
+2005-10-14 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.cvs: Document tag name consistently with the release
+ name.
+
+ * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release
+ of 2.10.12.01.
+
+2005-10-12 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Update documentation to match this change.
+
+ * ircd/client.c (client_set_privs): Make default global oper
+ privileges match what was in 2.10.11.
+
+2005-10-11 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE
+ to mitigate bug #1313429.
+
+2005-10-12 Perry Lorier <isomer@undernet.org>
+
+ * include/s_stats.h: Add new "Local" only flag to /stats.
+
+ * ircd/m_stats.c: Consult it.
+
+ * ircd/s_stats.c: Use the flag.
+
+2004-01-04 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is
+ sent to a channel...
+
+2005-10-06 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (m_join): Report too-long channel names as
+ non-existent.
+
+2005-10-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_names.c (m_names): Fix format string when forwarding
+ /names -D to other servers.
+ (ms_names): Likewise. Add support for remote /names -D.
+
+2005-10-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/class.c (do_find_class): Fix bug from previous commit.
+
+ * ircd/ircd_parser.y (clientblock): Allow setting Client port.
+
+ * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline.
+ (attach_iline): Only set FLAG_DOID when we are sure we will attach
+ this Client block to the client. [Credit: Jukka Ollila and others]
+
+2005-10-04 Michael Poole <mdpoole@troilus.org>
+ [Based on a patch by Jukka Ollila]
+
+ * include/class.h (find_class): Rename to do_find_class().
+
+ * ircd/class.c (class_delete_marked): Keep invalid classes in list
+ until next rehash.
+ (add_class): Use new parameter to do_find_class() to allow a class
+ to be "resurrected".
+ (find_class): Rename.
+ (report_classes): Use 'y' instead of 'Y' when reporting invalid
+ classes.
+
+2005-10-01 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_kick.c (ms_kick): If the kick target is join-delayed,
+ only send the KICK to the kicker. Spotted by Cesar_.
+
+2005-10-01 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Update to pre1.
+
+ * ircd/class.c (init_class): Only set default class's ->next
+ pointer when first allocating it.
+
+2005-09-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when
+ matching users.
+
+2005-09-30 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h: Update for release.
+
+2005-09-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a
+ chanop being kicked.
+
+2005-09-26 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/whocmds.c (do_who): Fix uninitialized variable warning
+ about 'chan'.
+
+2005-09-26 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/parse.c (del_msg_element): Only delete empty subtrees, and
+ leave subtrees that may still contain data.
+
+2005-09-26 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (struct ModeBuf): Add mbm_oplevel to args
+ array.
+ (MB_OPLEVEL): New corresponding macro.
+ (modebuf_mode_client): Add corresponding argument.
+
+ * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer
+ usage to include :999 suffix. Change format for oplevel passing.
+ (modebuf_mode_client): Set oplevel field in mbuf args array.
+ (struct ParseState): Add oplevel field to cli_change array.
+ (mode_parse_client): Accept and record oplevel suffix from
+ servers; fix it up if we're bouncing a deop.
+ (mode_process_clients): If a valid oplevel was parsed, use it.
+
+ * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client().
+
+ * ircd/m_clearmode.c (do_clearmode): Likewise.
+
+ * ircd/m_create.c (ms_create): Likewise.
+
+ * ircd/m_kick.c (ms_kick): Likewise.
+
+2005-09-23 Michael Poole <mdpoole@troilus.org>
+
+ * include/whocmds.h (WHOSELECT_DELAY): Define new constant.
+
+ * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set
+ WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER. Do not skip
+ join-delayed users if WHOSELECT_DELAY is set.
+
+ * ircd/whocmds.c (do_who): Remember membership for shared channel
+ if one exists. Use it when displaying flags, adding '<' for
+ join-delayed users.
+
+2005-09-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_key): Only accept the new key when
+ the current one is empty or "greater" than the new one.
+ (mode_parse_upass): Likewise, for upass.
+ (mode_parse_apass): Likewise, for apass.
+
+2005-09-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/gline.c (gline_checkmask): Add missing digit in mask length
+ check.
+
+2005-09-21 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Remove confused and outdated references to
+ Martians.
+
+2005-09-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/Makefile.in: Regenerate "make depend" dependencies.
+
+ * ircd/test/Makefile.in: Likewise.
+
+2005-09-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_join.c (last0): fix problem leading to protocol
+ violations on certain combinations of /join 0 from remote servers
+ (probably from local users, too) [bug #1291029]; remove redundant
+ !IsChannelChar() check
+
+2005-09-14 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.cvs: Document the branching scheme for 2.10.12.
+
+2005-09-14 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Increment to reflect the
+ pre-release code freeze.
+
+2005-09-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_ban): Fix the sense of another check.
+
+2005-09-13 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (clean_channelname): Remove prototype.
+
+ * ircd/m_invite.c (m_invite): Do not clean channel name; just
+ reject invalid channel names.
+
+ * ircd/m_join.c (m_join): Likewise.
+
+ * ircd/m_mode.c (m_mode): Do not clean channel name.
+
+ * ircd/m_names.c (m_names): Likewise.
+
+ * ircd/m_opmode.c (mo_opmode): Likewise.
+
+2005-09-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_ban): Revert to older style of comparison,
+ fixing the sense of one check. Spotted by Alex Badea.
+
+2005-09-13 Alex Badea <vamposdecampos@gmail.com>
+
+ * ircd/ircd.c (try_connections): modify autoreconnect logic to
+ allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq
+
+2005-09-13 Alex Badea <vamposdecampos@gmail.com>
+
+ * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList,
+ otherwise the linked list has an invalid ending sentinel on rehash
+
+2005-09-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_ban): Compare ban mask against hostname
+ even when it looks like an IP, to match things like *!*@1.* when
+ users have a hostname like 1.2.3.example.com.
+
+2005-09-12 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Note the resolution of ambiguous ipmasks.
+
+ * ircd/ircd_string.c (ipmask_parse): Implement it.
+
+2005-09-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_join.c (m_join): If we find an empty key, null out the
+ key pointer.
+
+2005-09-11 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Mention the side benefits of this change.
+
+ * include/ircd_string.h (ipmask_parse): Declare function here.
+ (ircd_aton): Becomes a special case of ipmask_parse().
+
+ * include/match.h (check_if_ipmask): Undeclare function.
+ (ipmask_parse): Remove function prototype from this file.
+
+ * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter
+ to accept ipmask length. Rework to fill that in.
+ (ircd_aton): Rework into...
+ (ipmask_parse): this function, which knows how to fill in its own
+ pbits parameter.
+
+ * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban
+ flags correctly, to avoid call to check_if_ipmask().
+
+ * ircd/match.c (ipmask_parse_ipv4): Delete function.
+ (check_if_ipmask): Likewise.
+ (ipmask_parse): Delete this version in favor of ircd_string.c's.
+
+ * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type.
+ (test_masks): New array of ipmask_test.
+ (test_ipmask): Function to run one of those tests.
+ (main): Call test_ipmask().
+
+2005-09-11 Alex Badea <vamposdecampos@gmail.com>
+
+ * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code
+ (probably during the forward port) which broke AsLL; fixed.
+
+2005-09-01 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/gline.c (make_gline): Remove debug output from when IPv6
+ support was being debugged.
+ (do_gline): Likewise.
+ (gline_lookup): Likewise, plus remove redundant code.
+
+2005-09-01 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining
+ 0, since no other call passes a null channel.
+
+ * ircd/m_join.c: Remove comment discussing argument meanings.
+ (last0): Make this also handle the JOIN 0 logic, doxyfy.
+ (join0): Merge into last0.
+ (m_join): Doxygenate. Remove check for join0. Further
+ reorganize, so new versus old channel handling are moved to just
+ one place each within this function.
+ (ms_join): Doxygenate. Remove check for join0.
+
+2005-09-01 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Bump revision date and highlight this change.
+
+ * include/channel.h (MAGIC_OPER_OVERRIDE): Remove.
+ (can_join): Remove declaration.
+
+ * ircd/channel.c (compall): Remove.
+ (can_join): Remove.
+
+ * ircd/m_join.c (m_join): Remove redundant check for control
+ characters (clean_channelname() will get them). Reorganize initial
+ flags calculation. Accept channel keys like RFC 1459 says; this
+ requires the old compall()/can_join() logic to modify 'keys', so
+ inline the code and reorganize it.
+
+2005-08-30 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (PASSLEN): Remove; use KEYLEN instead.
+
+ * ircd/channel.c (mode_parse_upass): Likewise.
+ (mode_parse_apass): Likewise.
+ The inconsistency (in clean_key()) was reported by Reed.
+
+2005-08-30 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Document +D and +d channel modes.
+
+2005-08-29 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h (ERR_NOMANAGER_LONG): Undefine.
+ (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER.
+
+ * ircd/s_err.c (replyTable): Change to reflect that.
+
+ * ircd/channel.c (clean_key): New function.
+ (mode_parse_key): Use it, and check that keys do not start with :.
+ (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER.
+ (mode_parse_apass): Likewise.
+ The key and password changes fix bugs reported by coekie.
+
+2005-08-27 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
+ of assigning directly to member->oplevel.
+ (mode_parse_apass): Likewise.
+ (mode_process_clients): Users opped by outsiders should get
+ oplevel 1, since they are not channel managers.
+
+ * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
+ directly to member->oplevel.
+
+2005-08-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (member_can_send_to_channel): At coekie's
+ suggestion, disallow channel manager talking after Apass is set,
+ so they set and use Upass sooner.
+
+ * ircd/class.c (init_class): Default class should have 1 link.
+ (report_classes): Return links count minus one to match old output.
+
+ * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by
+ Reed).
+
+2005-08-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse): Accept +A/+U from servers
+ regardless of FEAT_OPLEVELS.
+
+2005-08-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (parse_command_line): Mention epoll engine when run
+ with -v.
+
+2005-08-24 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h (PATCHLEVEL): Increment.
+
+ * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or
+ 1 when propagating JOIN <level>:#channel, to avoid PV on receiver.
+
+ * ircd/engine_epoll.c: Add system call numbers for more CPU types.
+
+ * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls;
+ anyone who writes logs over NFS is mental. (Thanks to D. Bruce.)
+
+2005-08-21 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_conf.h (free_mapping): Declare new function.
+
+ * ircd/ircd_parser.y (pseudoblock): Use it.
+
+ * ircd/s_conf.c (free_mapping): Define it.
+ (close_mappings): New function.
+ (rehash): Call close_mappings() before reading file.
+
+ * ircd/m_kill.c (do_kill): Revert 2005-08-18 change.
+
+2005-08-19 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/parse.c (tok_tree): Re-add token tree structure.
+ (initmsgtree): Populate it.
+ (parse_server): Prefer it to full message tree.
+
+2005-08-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent
+ source of KILLs to &his instead of &me.
+
+2005-08-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
+ newban->banstr[] when the source is a server. (Spotted by jcq.)
+
+2005-08-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
+ announcements to local users in a channel.
+
+ * ircd/m_burst.c (ms_burst): Likewise.
+
+ * ircd/m_invite.c (m_invite): Likewise.
+ (ms_invite): Likewise.
+
+ * ircd/m_kick.c (ms_kick): Likewise.
+
+ * ircd/m_topic.c (do_settopic): Another &me -> &his change for
+ HIS, and use that apparent source for the channel localcast.
+
+2005-08-16 Jukka Ollila <jaollila@niksula.hut.fi>
+
+ * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the
+ real thing for the post-mode-x rejoin.
+
+2005-08-15 Michael Poole <mdpoole@troilus.org>
+
+ * include/supported.h (FEATURESVALUES2): Add +d channel mode.
+
+ * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not
+ a varadic function. (Suggested by Ian Kumlien.)
+
+ * ircd/convert-conf.c (finish_operators): Likewise.
+
+ * ircd/listener.c (close_listeners): Likewise.
+
+ * ircd/channel.c (CheckDelayedJoins): Use HIS server name to
+ remove channel mode +d.
+
+2005-08-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (pretty_mask): Recognize ':' as unique to the
+ host part of a ban mask.
+
+2005-08-03 Jan Krueger <jast@heapsort.de>
+
+ * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on
+ invisible member.
+
+2005-08-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (find_ban): For non-IPmask bans, match the ban
+ string against the string form of the client's IP address.
+
+2005-07-16 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: Apply a test for socklen_t that Reed found.
+
+ * configure: Regenerate.
+
+2005-07-16 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels.
+
+ * README.FreeBSD: Remove (merged into README).
+
+ * README.Solaris: Remove (merged into README).
+
+ * README: Merge in the above; also update for 2.10.12.
+
+ * doc/example.conf: Change mention of K-lines to say Kill blocks
+ instead.
+
+ * doc/iauth.txt: Remove (out of date).
+
+ * doc/readme.features: Update to reflect that 2.10.11 is not the
+ current release. Change mention of various config lines to use
+ the equivalent config entries or blocks instead.
+
+ * doc/readme.log: Likewise.
+
+ * doc/api/features.txt: Change F-line mentions to say Feature
+ entry instead.
+
+ * doc/api/modebuf.txt: Change U-line mention to say Uworld entry.
+
+ * doc/api/motd.txt: Change T-line mentions to say Motd entry.
+
+2005-07-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_features.c (feature_init): Always call
+ feature_notify_server*() so that 'his' is initialized.
+
+ * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose
+ between user->server and &his.
+
+2005-07-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_apass): Update oplevels when setting
+ or removing the +A password. Partial credit goes to Reed Loden.
+
+2005-07-14 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_features.h: Declare new "his" pseudo-server to hold
+ FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place.
+
+ * ircd/ircd_features.c: Initialize and update it.
+
+ * ircd/channel.c (modebuf_flush_int): Use it as the apparent
+ source for opmodes and server mode changes (also when the source
+ is me).
+
+ * ircd/m_burst.c (ms_burst): Use it as the apparent source for net
+ rider kicks.
+
+ * ircd/m_whois.c (do_whois): Use it to simplify code here.
+
+ * ircd/s_misc.c (exit_client): Use it as the apparent killer.
+
+2005-07-14 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (General): Update comment about vhost to match
+ the code change below.
+
+ * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a
+ synonym for the default behavior (for backwards compatibility).
+ Spotted by Kev.
+
+ * ircd/channel.c (sub1_from_channel): Remove stale code and
+ comment, replacing with an up-to-date comment. Spotted by skx.
+
+2005-07-11 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/engine_select.c: Remove outdated comment about USE_POLL.
+
+ * ircd/parse.c (msgtab): #if out CAP handler until we have caps.
+
+ * RELEASE.NOTES: Remove mention of capabilities for now.
+
+2005-07-11 Stephan Peijnik <speijnik@gmail.com>
+
+ * ircd/gline.c (gline_add): It's only a protocol violation when a
+ server issues a "whacky" gline. If it's an oper, only tell opers
+ with SNO_GLINE.
+
+ * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole
+ network is not likely to care about IAuth PVs, so only tell opers
+ with SNO_CONNEXIT.
+
+2005-07-11 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.features: Document FEAT_CHANNELLEN.
+
+ * doc/example.conf: Give an example of it.
+
+ * ircd/m_join.c (ms_join): Do not clean channel names from remote
+ servers, to avoid desynchs.
+
+ * ircd/m_names.c (ms_names): Likewise.
+
+2005-07-11 Stephan Peijnik <speijnik@gmail.com>
+
+ * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
+
+ * include/supported.h: Add it to the ISUPPORT display.
+
+ * ircd/channel.c (clean_channelname): Impose the lower limit
+ between FEAT_CHANNELLEN and CHANNELLEN.
+
+ * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
+
+2005-07-11 Reed Loden <reed@reedloden.com>
+
+ * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
+
+ * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c
+ Remove unused #include <sys/poll.h>.
+
+ * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity
+ checks here, since they are not used elsewhere in the daemon.
+ [Order slightly changed by Michael Poole to compile.]
+
+2005-07-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/convert-conf.c: New file.
+
+ * ircd/Makefile: Compile it.
+
+2005-06-27 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_bsd.c (add_connection): Split logic for server versus
+ client listeners; only do IPcheck for client connections.
+
+ * ircd/s_serv.c (server_estab): There is no longer a need to
+ remove IPcheck reference, so don't.
+
+2005-06-27 Michael Poole <mdpoole@troilus.org>
+
+ * include/client.h (struct Connection): Remove con_dns_reply (and
+ associated macros).
+
+ * include/res.h (gethost_byname): Change calling signature to
+ clarify memory ownership.
+ (gethost_byaddr): Likewise.
+
+ * include/s_bsd.h (release_dns_reply): Remove function.
+
+ * ircd/hash.c: #include "match.h" to quash warning.
+
+ * ircd/ircd_auth.c (struct IAuth): Remove i_query field.
+ (iauth_dns_callback): Adjust for new gethost_byname signature.
+ (iauth_reconnect): Likewise.
+
+ * ircd/ircd_res.c (struct reslist): Make elements of query field
+ inline rather than in a contained structure.
+ (make_request): Reflect removal of DNSQuery.
+ (do_query_name): Likewise.
+ (do_query_number): Likewise.
+ (make_dnsreply): Remove now-unused function.
+ (timeout_resolver): Adjust to new callback signature.
+ (delete_resolver_queries): Reflect removal of DNSQuery.
+ (gethost_byname): Update to new signature.
+ (gethost_byaddr): Likewise.
+ (res_readreply): Reflect removal of DNSReply.
+
+ * ircd/list.c (dealloc_connection): con_dns_reply no longer
+ exists, so do not free it.
+
+ * ircd/s_auth.c (auth_verify_hostname): constify.
+ (auth_dns_callback): Adjust to new callback signature.
+ (start_auth): Adjust to new gethost_byaddr() signature.
+
+ * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback
+ signature.
+ (release_dns_reply): Remove unused function.
+ (connect_server): Adjust to new gethost_byname() signature.
+
+ * ircd/s_conf.c (conf_dns_callback): Adjust to new callback
+ signature.
+ (conf_dns_lookup): Adjust to new gethost_byname() signature.
+ (attach_iline): Use cli_sockhost() instead of DNS reply.
+ (conf_check_server): Simplify use of DNS results.
+
+ * ircd/s_serv.c (server_estab): Remove call to removed function.
+
+ * ircd/s_user.c (register_user): Remove call to removed function.
+
+2005-06-27 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_misc.h (get_sockhost): Remove the unused (and
+ deceptively named) get_sockhost().
+
+ * ircd/s_misc.c (get_sockhost): Likewise.
+
+2005-06-25 Andrew Miller <a1kmm@amxl.com>
+
+ * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to
+ DupStr so memdebug works.
+
+ * doc/debug_memleak_gc.patch : Update to gc6.5
+
+2005-06-24 Andrew Miller <a1kmm@amxl.com>
+ * ircd/m_invite.c (m_invite): Don't propagate invites to local channels.
+
+2005-06-21 Andrew Miller <a1kmm@amxl.com>
+
+ * ircd/m_list.c (param_parse): Add support for channel wildcards.
+ * ircd/m_list.c (show_usage): Document the new format.
+ * ircd/hash.c (list_next_channels): Check channel wildcard in list.
+ * include/channel.h (ListingArgs): Add the wildcard member.
+
+2005-06-19 Andrew Miller <a1kmm@amxl.com>
+
+ * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more
+ gracefully.
+
+ * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking
+ the pending request list, to make DoS attacks harder.
+
+ * ircd/m_invite.c (m_invite): Give no such channel rather than not on
+ channel when the channel being invited to does not exist.
+
+2005-06-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_debug.c (count_memory): Consolidate several lines; make
+ initial letter capitalization consistent.
+
+2005-06-19 Andrew Miller <a1kmm@amxl.com>
+
+ * ircd/s_stats.c: Remove the "debug only" label on memusage stats,
+ since it no longer applies.
+
+2005-05-16 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (struct Ban): Make 'who' and 'banstr' direct
+ arrays, rather than pointers.
+
+ * ircd/channel.c (bans_alloc): New variable to count number of ban
+ structures allocated.
+ (bans_inuse): New variable to count number of ban structures
+ currently in use.
+ (set_banmask): Adapt to changes in struct Ban.
+ (make_ban): Likewise, and update ban counts.
+ (free_ban): Likewise.
+ (bans_send_meminfo): New function.
+ (apply_ban): Adapt to changes in struct Ban.
+ (mode_parse_ban): Likewise.
+ (mode_process_bans): Likewise.
+ (mode_parse): Likewise.
+ (RevealDelayedJoin): Fix brace placement.
+ (CheckDelayedJoins): Fix brace placement and whitespace.
+
+ * ircd/list.c (struct liststats): Add new fields to eliminate the
+ separate count variables.
+ (init_list): Adapt to those changes.
+ (alloc_client): Likewise.
+ (dealloc_client): Likewise.
+ (alloc_connection): Likewise.
+ (dealloc_connection): Likewise.
+ (make_server): Likewise.
+ (remove_client_from_list): Likewise.
+ (verify_client_list): Likewise.
+ (make_link): Likewise.
+ (free_link): Likewise.
+ (send_liststats): New function.
+ (send_listinfo): Rewrite to use new struct liststats layout.
+
+ * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban.
+
+ * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct
+ Ban.
+
+ * ircd/s_stats.c (stats_meminfo): Define unconditionally and call
+ bans_send_meminfo().
+ (statsinfo): Always give access to stats_meminfo.
+
+2005-06-16 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_string.h: Include necessary <string.h> header.
+
+ * ircd/test/.cvsignore: Ignore log output files.
+
+ * ircd/test/Makefile.in: Remove log output files.
+
+ * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills.
+
+ * ircd/test/run-tests.sh: Switch sense of argument. Send an IRC
+ debug dump to log files.
+
+2005-06-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (make_user): Unconditionally increment userCount.
+ (free_user): Unconditionally decrement it here.
+
+ * ircd/s_conf.c (make_conf): Unconditionally increment
+ GlobalConfCount.
+ (free_conf): Unconditionally decrement it here.
+
+ * ircd/s_debug.c (count_memory): Fix termination condition for
+ ban-walking loop. Add missing "e" to "members".
+
+
+2005-06-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot
+ be true IP masks.
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes.
+
+ * ircd/test/ircd_match_t.c: Test recovery from backtracking.
+
+ * ircd/test/channel-1.cmd: Modify to improve code coverage.
+
+ * ircd/test/client-1.cmd: Likewise.
+
+ * ircd/test/gline-1.cmd: Likewise.
+
+ * ircd/test/ircd-t1.conf: Likewise.
+
+ * ircd/test/stats-1.cmd: Likewise.
+
+ * ircd/test/run-tests.sh: Explicitly start ircds. Add new test scripts.
+
+ * ircd/test/test-driver.pl: Silently handle more signals from IRC.
+
+ * ircd/test/commands-1.cmd: New test script.
+
+ * ircd/test/feature-1.cmd: New test script.
+
+ * ircd/test/jupe-1.cmd: New test script.
+
+ * ircd/test/kill-block-1.cmd: New test script.
+
+ * ircd/test/ircd-t1-2.conf: New configuration file for test scripts.
+
+ * ircd/test/ircd-t2.conf: Likewise.
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_debug.c (count_memory): Use count_listener_memory() to
+ report memory used by listener structures.
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * include/class.h (get_con_freq): Remove unused function.
+
+ * include/list.h (find_user_link): Remove unused function.
+
+ * include/class.c (get_con_freq): Remove.
+
+ * ircd/list.c (find_user_link): Remove.
+
+ * include/string.h (string_is_hostname, string_is_address,
+ strnChattr): Remove unused functions.
+ (init_string): Remove function that becomes a noop.
+
+ * ircd/string.h (init_string): Remove.
+ (string_is_hostname, string_is_address, strnChattr): Likewise.
+
+ * ircd/ircd.c (main): Remove call to init_string().
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS,
+ RPL_NOTOPERANYMORE): Undefine unused numeric replies.
+
+ * ircd/s_err.c (replyTable): Fix format fields for certain numeric
+ arguments. Remove some unused entries.
+
+ * ircd/s_stats.c (stats_configured_links): Move invariant
+ parameters to message format string.
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move
+ WIDE_GLINE to reflect its enumerated value.
+
+ * ircd/s_debug.c (count_memory): Use user_count_memory() function
+ to count User structs in-use.
+
+ * ircd/m_server.c (mr_server): Change "C:line" to "Connect block".
+
+ * ircd/s_bsd.c (connect_server): Likewise.
+
+ * ircd/s_conf.c (conf_check_server): Likewise.
+
+ * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block".
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c (match): Rewrite to handle globs that end in an
+ escaped wildcard (and hopefully clarify the code).
+
+ * ircd/test/Makefile.in: Add new ircd_match_t test program.
+
+ * ircd/test/ircd_match_t.c: New file.
+
+ * ircd/test/test_stub.c: Emite newlines after log and debug
+ messages.
+
+2005-05-25 Reed Loden <reed@reedloden.com>
+
+ * ircd/s_err.c (replyTable): Allow for the specification of 'O' or
+ 'o' in RPL_STATSOLINE.
+
+ * ircd/s_stats.c (stats_configured_links): In /stats o/O, display
+ 'O' if either the oper block or the connection class has
+ PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE
+ (local oper).
+
+2005-05-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/IPcheck.c: Add Debug()s to try to track why the connected
+ count underflows.
+
+ * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan'
+ after it may be freed (in sub1_from_channel).
+
+ * ircd/s_user.c (register_user): Rearrange code to reduce number
+ of "if (MyConnect(sptr))" checks.
+
+2005-05-12 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: Do not try to outsmart the default CFLAGS.
+ Simply add parameters explicitly requested by the user.
+
+ * configure: Regenerate.
+
+ * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is
+ used in os_generic.c) to get crypt() on NetBSD.
+
+2005-05-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and
+ -x given), reserve fd 2 for the use of the debugging log;
+ otherwise, some engines may attempt to use fd 2, which would end
+ up getting closed by debug_init() (actually, by
+ log_debug_reopen(), called by log_debug_init(), called by
+ debug_init())
+
+2005-08-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a
+ local user creates a channel.
+
+ * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of
+ memory for the tagged output string.
+
+ * ircd/test/test-driver.pl: Add -vhost=... option.
+
+ * ircd/test/ircd-t1.conf: Add new Operator blocks.
+
+ * ircd/test/*.cmd: Rearrange and add more coverage tests.
+
+2005-08-09 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y: Move error tokens to top level of parse, and
+ make ';' a synchronizing token for them. This avoids crashes in
+ situations like missing ';' between two Kill blocks. Move several
+ ';'s earlier for earlier detection of syntax errors.
+
+ * ircd/motd.c (motd_memory_count): Use size_t for memory counts to
+ match the format strings used for those variables.
+
+ * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of
+ unsigned int, not unsigned long; use correct format string.
+
+ * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd'
+ based on crule type, rather than query type.
+ (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and
+ "help" stats, which don't use the varparam.
+
+ * ircd/test/test-driver.pl: Interpreter for test scripts.b
+
+ * ircd/test/ircd-t1.conf: Configuration file for test scripts.
+
+ * ircd/test/*.cmd: New test scripts for test-driver.pl.
+
+2005-05-08 Jukka Ollila <jaollila@niksula.hut.fi>
+ (Adapted slightly by Michael Poole.)
+
+ * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
+ addresses event when !defined(IPV6).
+
+2005-05-07 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (joinbuf_join): Be smarter about what source to
+ use when opping a user that joins a channel.
+
+2005-05-04 Reed Loden <reed@reedloden.com>
+
+ * ircd/m_trace.c (do_trace): Show the real nickname instead of the
+ numnick.
+
+2005-05-02 Jan Krueger <jast@heapsort.de>
+
+ * ircd/channel.c (member_can_send_to_channel): if the channel can only
+ be joined by users with accounts (+r), do not allow users without
+ accounts to speak.
+
+2005-05-07 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
+ addresses.
+ * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry.
+ (test_address): Test base64toip() as well.
+
+2005-05-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (umode_str): Only clear the operator flag when not
+ propagating; never set it.
+
+2005-05-04 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (joinbuf_join): Include channel manager flag in
+ determination of oplevel. If opping the user for a non-local
+ non-create, include oplevel in message to other servers. Send
+ "MODE +o <client>" to local users whenever opping the client.
+
+ * ircd/m_join.c (m_join): Remove logic that moved into
+ joinbuf_join().
+ (ms_join): Look for level 0 and 1 joins from remote servers
+ and adjust value of 'flags' appropriately.
+
+2005-05-04 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h: Remap oplevel numerics to new range.
+
+ * ircd/s_err.c: Likewise.
+
+2005-05-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT
+ fields, fixing crash found by nighty.
+
+2005-05-02 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when
+ trying to set +U pass to the same as the +A pass.
+
+ * ircd/channel.c (mode_parse_upass): Use it.
+
+ * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if
+ there is an active IAuth connection, fixing PR#1193808.
+ (iauth_dispose_request): Only delete the timer if it is active.
+
+ * ircd/m_invite.c (m_invite): Always forward the invite in the
+ correct direction, and then skip it as 'one' if announcing.
+ (ms_invite): Likewise.
+
+ * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as
+ ::ffff:0.0.0.0; keep it as ::.
+
+ * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS.
+
+2005-05-01 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.log: Document IAUTH log target, remove docs for
+ OLDLOG log target.
+
+ * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG.
+
+ * ircd/ircd_log.c (logDesc): Likewise.
+
+ * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all
+ sockets (e.g. when connecting) and do not generate read/write
+ events in the same pass as error or EOF events.
+
+ * ircd/ircd_auth.c: Convert old sendto and debug messages to use
+ the LS_IAUTH log target. Consistently use IAUTH_CONNECTED flag
+ instead of comparing fd to -1.
+ (iauth_reconnect): If already connected, disconnect and schedule a
+ reconnect later, since an immediate reconnect can cause assertion
+ failure in the event engine. Also schedule a reconnect when the
+ connection attempt fails.
+ (iauth_read): Reconnect on IO_FAILURE.
+ (iauth_sock_callback): Disconnect and schedule a reconnect on both
+ error (after reporting the error) and EOF.
+ (iauth_start_client): Record the IAuth request in the client.
+ (iauth_exit_client): Report the client exit.
+
+ * ircd/s_misc.c (exit_one_client): Fix formatting.
+
+2005-04-30 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add)
+ timer here and set fd to -1.
+ (iauth_schedule_reconnect): Rewrite to handle previously
+ initialized timer.
+ (iauth_reconnect): If server is connected, disconnect first.
+ Update socket generator fd before calling socket_add().
+ (iauth_read): When reading 0 bytes (EOF), reconnect.
+
+2005-04-27 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y: Report non-existent class names as errors
+ earlier, and do not fall back to "default" for Client blocks.
+
+2005-04-25 Reed Loden <reed@reedloden.com>
+
+ * ircd/ircd_lexer.l: Add missing header to squash a warning.
+
+2005-04-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (register_user): Replace call with set_user_mode()
+ with a direct parsing of user modes. To match this, revert the
+ initial display of usermode to how it was done before.
+
+2005-04-24 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Document new autoconnect field of Connect.
+
+ * include/s_conf.h: Add CONF_AUTOCONNECT and field for it.
+
+ * ircd/ircd.c (try_connections): Skip non-autoconnect servers.
+
+ * ircd/ircd_lexer.l: Recognize autoconnect token.
+
+ * ircd/ircd_parser.y: Add autoconnect= option to Connect block.
+
+ * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to
+ user being invited.
+ (ms_invite): Likewise.
+
+ * ircd/s_user.c (register_user): Show class name rather than
+ pointer-as-integer.
+
+2005-04-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y: Rewrite so each error condition gets its own
+ error message, and so that invalid parameters are printed out.
+
+2005-04-23 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (apply_ban): Consistently free newban->banstr
+ when the function fails.
+ (mode_process_bans): Free banstr for all BAN_DEL bans.
+
+ * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
+
+2005-04-23 Michael Poole <mdpoole@troilus.org>
+
+ * include/patchlevel.h: Bump to being a beta.
+
+ * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that
+ parser actions don't have to be immediately after a QSTRING.
+
+ * ircd/ircd_parser.y (FNAME): Remove unused token.
+ (QSTRING): Adjust for QSTRING being an already-copied version.
+
+2005-04-23 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (UWorld): Illustrate new config extension.
+
+ * ircd/ircd_parser.y (uworldblock): Do the expected thing when
+ multiple name= entries are present.
+
+2005-04-22 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Silence exceptions use ~, not -. Oops!
+
+ * doc/example.conf: Fix typo in example Kill block.
+
+ * ircd/channel.c (mode_parse_ban): Use correct test for flag_p.
+
+ * ircd/m_silence.c (apply_silence): Make mask pretty so that later
+ processing does not convert * to @ (and match no one).
+
+2005-04-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_userip.c (userip_formatter): /userip should *never*
+ report the user's real IP unless its answering the user
+ him/herself
+
+ * ircd/m_userhost.c (userhost_formatter): /userhost should *never*
+ report the user's real host unless its answering the user
+ him/herself
+
+2005-04-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (parse_command_line): Update usage text.
+
+ * ircd/numnicks.c (base64toip): Use v4mapped address range instead
+ of v4compat address range, fixing IPv4-based /who.
+
+2005-04-19 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: When --enable-profile, add -pg to LDFLAGS.
+
+ * configure: Regenerate.
+
+2005-04-19 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo.
+
+ * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks
+ once a matching Client block is found.
+
+ * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp().
+
+2005-04-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c (check_if_ipmask): Do not interpret masks that
+ start with . or / as IP-based host masks.
+
+2005-04-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_process_clients): Only prohibit deops of
+ users with the same or higher oplevel where apass is set.
+ Likewise, when opping users, give them MAXOPLEVEL for non-apass
+ channels.
+ (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels.
+
+ * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the
+ same or higher oplevel where apass is set.
+
+ * ircd/s_user.c (register_user): Fix order of server version vs
+ various mode strings.
+
+ * tools/linesync/linesync.sh: Add revision id field.
+
+2005-04-17 Michael Poole <mdpoole@troilus.org>
+
+ * tools/linesync/linesync.sh: Fix typo comment. Check for
+ multiple blocks per line in the linesync input.
+
+2005-04-17 Dan <daniel@undernet.org>
+
+ * tools/linesync/linesync.sh: Update to support new syntax and to
+ avoid rehashing the ircd when the config is the same.
+
+ * tools/linesync/linesync.conf: Update allowed conf items.
+
+2005-04-16 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Kill): Document newly supported syntax.
+
+ * include/s_conf.h (DenyConf): Split realname mask into its own
+ field. Remove the unused DENY_FLAGS_{IP,REALNAME}.
+
+ * ircd/ircd_parser.y (Kill): Only require one of usermask,
+ hostmask, realmask to be set for a valid block.
+ (killitem): Add new production killusername.
+
+ * ircd/s_conf.c (conf_erase_deny_list): Free realmask field.
+ (find_kill): Rearrange slightly to clarify control flow.
+
+ * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask,
+ so the old usermask field can be adopted for realname mask. Add
+ double quotes around the realmask field.
+
+ * ircd/s_stats.c (report_deny_list): Do so.
+ (stats_klines): Likewise.
+
+2005-04-17 Perry Lorier <isomer@undernet.org>
+
+ * tools/convert-conf.py: Fix lots of conversion problems with
+ oper privielges (now they are converted),
+ features (deprecated features commented out, most converted to
+ priviliges),
+ realname klines (also add host= lines)
+ quarintines (generate blocks for them),
+ connect blocks (don't generate empty port config lines)
+ etc...
+
+2005-04-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/gline.c (do_gline): Fix typo when activating IP-based
+ G-lines.
+
+2005-04-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/class.c (free_class): Free default_umode field.
+
+ * ircd/ircd_parser.y (classblock): Free default_umode field before
+ overwriting it.
+
+ * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit
+ fields.
+ (find_kill): Realname Kill blocks no longer have $R at the start,
+ so do not skip over the first two characters of the mask.
+
+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
+ getsockopt prototype, so it compiles without warning on amd64
+
+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.
+ (RPL_STATSOLINE): Add format field for username.
+
+ * 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>
+
+ * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP
+ address to look up and compare against hash entries.
+
+ * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban.
+
+ * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name.
+ (clienthost): Split hosts that contain '@' into username and host.
+ (clientip): Split IPs that contain '@' into username and IP.
+ (killreason): Add missing ~ to mask off DENY_FLAGS_FILE.
+
+ * ircd/m_silence.c (forward_silences): When we reject a silence,
+ splice it out of the ban list. Warn the user if he is local.
+
+ * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server
+ connections.
+
+ * ircd/s_stats.c (stats_configured_links): Display correct field
+ when listing CONF_UWORLD entries.
+
+2005-02-09 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in (YACC): Only warn if we cannot get a version number
+ from $YACC.
+
+ * configure: Regenerate.
+
+ * ircd/ircd_res.c (check_resolver_timeout): Try another way to
+ avoid timer_chg() on a non-queued/active timer.
+
+ * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
+ strings like "::127.0.0.1".
+
+ * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
+
+2005-02-02 Michael Poole <mdpoole@troilus.org>
+
+ * Makefile.in (install): Do not create ${prefix}/include since it
+ is no longer used.
+
+ * ircd/Makefile.in (install-*): Remove commented-out code to touch
+ and chown MPATH and RPATH.
+
+ * ircd/gline.c (gline_find): Allow searching for host-based
+ G-lines by plain hostname (not *@host), thus preventing "GLINE
+ test ..." from inserting duplicate G-lines.
+
+ * ircd/motd.c (motd_create): Null out new Motd's hostmask when
+ appropriate, avoiding an uninitialized or stale pointer.
+
+2005-01-26 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_alloc.h (DoMallocZero): Parenthesize macro
+ arguments, fixing operator precedence problems.
+ (DoFree): Make debug version also overwrite p.
+
+ * include/memdebug.h (fda_get_byte_count, fda_get_block_count):
+ Declare functions used outside memdebug.c.
+
+ * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c.
+
+ * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not
+ use these if using the memdebug version.
+
+ * ircd/memdebug.c: #include "send.h" and <string.h> to get
+ declarations for certain functions.
+
+ * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug.
+ (sendto_opmask_butone): Likewise.
+
+2005-01-25 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: Fix typos and thinkos in previous commut.
+
+ * configure: Regenerate.
+
+ * doc/example.conf: Change class name in Connect block to be
+ consistent with earlier Class block.
+
+ * ircd/ircd.c (try_connections): Consider Connect blocks with hold
+ time of 0. Fix Links() vs MaxLinks() comparison to reflect ref
+ count starting at 1.
+
+ * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused
+ variables after use.
+
+2005-01-24 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: Make sure that $LEX and $YACC are reasonable and
+ actually run.
+
+ * configure: Regenerate.
+
+ * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to
+ test whether the timer is already pending.
+
+2005-01-23 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Kill): Fix typo in realname Kill block
+
+ * include/client.h (infousermodes): Fix typo in comment.
+
+ * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY.
+ (main): Move daemon_init() before event_init() to work around BSD
+ lameness.
+
+2005-01-23 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/test/Makefile.in: Add missing "install" target. Make
+ compatible with BSD make (which has no $^ and no $(CPPFLAGS) in
+ its default .c.o rule).
+
+2005-01-21 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/engine_kqueue.c: Move <sys/types.h> earlier to fix build on
+ FreeBSD 5.x (which needs it for <sys/event.h>).
+
+ * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with
+ portable equivalents.
+
+ * ircd/ircd_log.c (log_open): Likewise.
+
+ * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so
+ that IPv6 definitions become visible on FreeBSD 5.3.
+
+ * ircd/s_auth.c: Remove apparently unused <sys/file.h> because
+ it fails to compile on FreeBSD 5.3.
+
+2005-01-22 Perry Lorier <isomer@undernet.org>
+
+ * ircd/ircd_parser.y: Fix missing ;
+
+2005-01-19 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in
+ outbound INVITE messages. On incoming INVITEs, ignore if the
+ timestamp is too recent or if the timestamp is missing and the
+ peer server is in burst.
+
+2005-01-15 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans
+ and silences. Mention net.rider kick change.
+
+ * doc/example.conf (Class): Add documentation for restart and
+ local_opmode privileges. Fix name of local_jupe privilege.
+
+ * ircd/ircd_lexer.l: Recognize local_opmode privilege.
+
+2005-01-14 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify
+ CAP comment, mention named /stats, list config heteromorphisms.
+
+ * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L,
+ HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST.
+
+ * ircd/channel.c (mode_parse_apass): Change old mention of +u mode
+ to say +U.
+
+2005-01-13 Michael Poole <mdpoole@troilus.org>
+
+ * RELEASE.NOTES: Update for 2.10.12.
+
+2005-01-08 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (@page zombie): Add synopsis to explain what
+ zombies are supposed to do.
+
+ * doc/example.conf (Features): Transfer recommended LOG features
+ from 2.10.11 example.conf.
+
+2005-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (try_connections): Test Connect hold time before
+ updating it (spotted by Kev).
+
+2005-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * Makefile.in: Add ircd/test as a subdirectory.
+
+ * ircd/.cvsignore: Ignore umkpasswd binary.
+
+ * ircd/Makefile.in: Update dependencies.
+
+ * ircd/test/.cvsignore: New file.
+
+ * ircd/test/Makefile.in: Use ${} instead of $(). Add build,
+ depend, distclean targets to integrate with rest of build system.
+
+2005-01-03 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
+ that have an invalid IP address.
+
+ * ircd/ircd.c (try_connections): Update Connect hold time before
+ skipping it, to prevent infinite loops.
+
+2005-01-03 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
+ was a server; fixed to skip servers
+
+2004-12-28 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_bsd.h (VirtualHost): Replace with separate variables
+ for IPv4 and IPv6 virtual hosts.
+
+ * include/uping.h (uping_echo): Remove declaration.
+
+ * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
+ VirtualHost_v6 based on iauth server address family.
+
+ * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
+
+ * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
+ (RESOLVER): Remove definition.
+ (generalresolver): Remove.
+ (generalvhost): Assign address to either VirtualHost_v4 or
+ VirtualHost_v6, depending on format.
+
+ * ircd/ircd_res.c (res_socket): Replace with separate variables
+ for IPv4 and IPv6 resolver sockets.
+ (ResolverAddr): Remove definition.
+ (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
+ (send_res_msg): Select outbound FD based on resolver address type.
+ (res_readreply): Recognize either inbound socket FD.
+
+ * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
+ (os_socket): Require local != NULL.
+
+ * ircd/s_bsd.c (VirtualHost): Replace with separate variables
+ for IPv4 and IPv6 virtual hosts.
+ (connect_inet): Select virtual host based on destination address.
+
+ * ircd/uping.c (UPingFIleDescriptor): Remove.
+ (upingSock): Split into separate IPv4 and IPv6 variables.
+ (uping_echo_callback): Incorporate uping_echo() body here, so the
+ proper socket FD can be used.
+ (uping_init): Attempt to set up both v4 and v6 UPING sockets.
+ (uping_server): Create uping socket with appropriate local address.
+
+ * doc/example.conf (General): Update example config file to
+ reflect removal of Resolver setting and support for separate IPv4
+ and IPv6 VHost settings.
+
+2004-12-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
+ DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
+ unused macros.
+
+ * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
+ ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
+ #include <arpa/inet.h>.
+
+2004-12-28 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
+ (ipmask_parse_ipv4): We already parse the dotted quads from the
+ input string, so use them instead of inet_addr() to populate
+ out->s_addr.
+
+ * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
+ (do_gline): Pass SHOW_IP instead of TRUE as argument to
+ get_client_name().
+
+ * ircd/ircd.c (try_connections): Revise to use fewer temporary
+ variables.
+
+2004-12-28 Michael Poole <mdpoole@troilus.org>
+
+ * include/res.h: Implement irc_in_addr_* as macros.
+
+ * ircd/ircd_res.c: Remove the function bodies.
+
+ * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
+ (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
+ (ircd_aton): Accept IPv6 addresses with all eight segments
+ specified (e.g. 0:0:0:0:0:0:0:0). Correctly parse addresses
+ with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
+
+ * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
+
+ * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
+ support. Add test_stub.c and ircd_in_addr_t.c references.
+
+ * configure.in: Generate ircd/test/Makefile as an output file.
+
+ * configure: Update.
+
+2004-12-18 Michael Poole <mdpoole@troilus.org>
+
+ * include/client.h: Move unreg, privs, capab and active fields
+ from struct Client to struct Connection since that is how they
+ are really associated. Adjust macros to match.
+ (SetPriv, ClrPriv): New macros.
+
+ * ircd/client.c (client_set_privs): Exit earlier for remote
+ clients. Adjust macro use to correspond.
+
+ * ircd/m_server.c (mr_server): Grant all privileges except
+ PRIV_SET to peer servers.
+
+2004-12-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
+ #1087461.
+
+2004-12-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
+ socket's FD is the same after processing as it was before; local
+ clients apparently have s_fd() == -1 after close.
+
+2004-12-18 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c: make absolutely certain register_user() is never
+ called with cli_unreg non-zero; transition set_nick_name() over to
+ the new way of determining whether client is ready for
+ register_user()
+
+ * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
+ understand a given CAP subcommand
+
+ * ircd/parse.c: add "CAP" command
+
+ * ircd/m_user.c (m_user): transition over to new way of
+ determining whether client is ready for register_user()
+
+ * ircd/m_pong.c (mr_pong): transition over to new way of
+ determining whether client is ready for register_user()
+
+ * ircd/m_cap.c: implementation of the IRC capabilities draft
+
+ * ircd/list.c (make_client): initialize cli_unreg element of
+ client structure
+
+ * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
+ functions that were never found because cross-case ordering has
+ not been needed until now
+
+ * ircd/Makefile.in: add m_cap.c to list of .c files
+
+ * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
+ indicate an unknown CAP subcommand
+
+ * include/msg.h: add "CAP" command
+
+ * include/handlers.h: add m_cap() to list of handlers
+
+ * include/client.h: add support for client capabilities; rototill
+ the registration mechanism to dovetail well with the capability
+ system--i.e., allow the capability system to suspend registration
+ if the user issues one of the CAP commands
+
+ * include/capab.h: header file to define client capabilities
+
+2004-12-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.h (apply_ban): Add new flag to indicate whether
+ newban should be free()'d after it is used.
+
+ * ircd/channel.c (apply_ban): Likewise. Also set BAN_DEL flag
+ when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
+ (mode_parse_ban): Delete buggy shortcut when channel banlist is
+ empty.
+ (mode_process_bans): Always give ownership of ban->banstr to the
+ mode buffer, avoiding a memory leak.
+
+ * ircd/m_silence.c (apply_silence): Pass new parameter to
+ apply_ban.
+
+2004-12-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (sub1_from_channel): Immediately destroy
+ non-Apass channels when oplevels are enabled; otherwise, they can
+ stay opless for a considerable period.
+ (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
+ does not try to free() an invalid pointer.
+
+ * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
+ aconf->host, not aconf->name.
+
+ * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
+ by host here..
+
+ * ircd/s_conf.c (conf_check_server): .. rather than by name here.
+ (attach_conf_uworld): New function to attach CONF_UWORLD items.
+ (rehash): Use attach_conf_uworld() instead of attaching by name.
+
+2004-12-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
+ channels they are not joined.
+
+2004-12-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
+ warning.
+ (ip_registry_canonicalize): New function to convert an IP address
+ into a canonical form for clone checks.
+ (ip_registry_hash): Update to reflect canonical form.
+ (ip_registry_find): Use ip_registry_canonicalize().
+ (ip_registry_check_local, ip_registry_check_remote): Likewise.
+
+ * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
+ sending them to a non-IPv6 server.
+
+2004-02-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
+ +D channel when they hide their hostmask.
+
+2004-12-15 Michael Poole <dmpoole@troilus.org>
+
+ * doc/example.conf: Remove the example Server blocks since they
+ are no longer used (were merged into Connect).
+
+ * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
+
+ * ircd/m_server.c (check_loop_and_lh): Use a different argument to
+ test whether an introduced server is directly connected or not.
+
+2004-12-14 Michael Poole <mdpoole@troilus.org>
+
+ * include/client.h (FLAG_IPV6): New value for enum Flag.
+ (IsIPv6, SetIPv6): Accessor macros for it.
+
+ * include/numnicks.h (iptobase64): Add flag indicating whether to
+ use full IPv6 addresses or fake them in an IPv4-compatible way.
+
+ * ircd/numnicks.c (iptobase64): Use the new flag.
+
+ * include/send.h (sendcmdto_flag_serv_butone): New function to
+ send different lines to servers based on flags (like FLAG_IPV6).
+
+ * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
+
+ * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
+ our server flags.
+
+ * ircd/s_serv.c (server_estab): Likewise. Also make sure we send
+ compatible IP addresses for the new server.
+
+ * ircd/s_user.c (register_user): Only send full IPv6 addresses to
+ links that have FLAG_IPV6 set.
+
+2004-12-13 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Update General block comment to mention
+ new RESOLVER option and to explain IPv6 support.
+
+ * ircd/ircd_lexer.l: Recognize RESOLVER token.
+
+ * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
+ alternative for generalitem.
+
+ * ircd/ircd_res.c: Define global ResolverAddr variable. If it is
+ valid, use it instead of VirtualHost in restart_resolver().
+
+2004-12-13 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Update configuration to move Client block
+ comment after sample Class blocks, and update entries in it.
+
+ * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
+
+ * ircd/ircd_parser.y: Add ip and username global variables and IP
+ and USERNAME tokens. Add clientip and clientusername alternatives
+ for clientitem, and update clientblock to correspond.
+
+ * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
+ the request_list before request_list is initialized.
+ (cres_mem): Likewise.
+
+ * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
+ proper address family.
+
+ * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
+ means DNS reply is optional. If aconf->addrbits >= 0, test it.
+
+ * tools/crypter: Delete.
+
+2004-12-11 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/*.c: use new assert() in ircd_log.h in preference to system
+ assert()
+
+ * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
+ glue so that umkpasswd will successfully compile and link
+
+ * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
+ there are no calls to assert()
+
+ * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
+ from looping should there be an assertion failure somewhere in the
+ logging subsystem
+
+ * include/ircd_log.h: custom implementation of assert() that calls
+ log_write()
+
+2004-11-21 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
+ be done by non-channel-managers, fixing a crash from OPMODE.
+ (mode_parse_apass): Likewise.
+
+2004-11-20 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
+ a channel they are already in, but do not add them again.
+
+2004-11-09 Michael Poole <mdpoole@troilus.org>
+
+ * include/res.h (init_resolver): Delete, and initialize lazily.
+
+ * ircd/ircd.c (main): Do not call init_resolver().
+
+ * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
+ local resolver socket address.
+ (init_resolver): Delete.
+ (make_request): Call restart_resolver() if necessary.
+ (query_name): Use ircrandom() instead of rand().
+
+ * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
+ a file descriptor that indicates the socket family to use.
+ (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
+
+2004-11-09 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
+ socket from epoll on delete, since the kernel does that for us.
+
+2004-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_server.c (m_server, ms_server): Assign timestamp before
+ it might be used in exit_new_server().
+
+2004-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
+ to reflect the changes since these files' last rebuild.
+
+2004-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_crypt.h (ircd_crypt): This should return char*, not
+ const char*, since it does not own the returned pointer.
+
+ * ircd/ircd_crypt.c (ircd_crypt): Change return type.
+
+ * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
+ field since it is returned but this function must own the buffer.
+
+ * ircd/m_oper.c (oper_password_match): Free the string returned by
+ ircd_crypt().
+
+ * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
+
+2004-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * acinclude.m4: Look for a 64-bit integer type.
+
+ * configure.in: Look for inttypes.h, since some systems have that
+ but not stdint.h (and define 64-bit integers therein).
+
+ * include/client.h: Delete con_sendK, con_receiveK. Make
+ con_sendB and con_receiveB 64 bits wide.
+
+ * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
+ Convert the other byte counters and the connected time counters to
+ 64 bits wide.
+
+ * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
+ HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
+
+ * ircd/packet.c (update_bytes_received): Remove use of
+ cli_receiveK().
+
+ * ircd/s_bsd.c (deliver_it): Likewise.
+ (close_connection): Likewise.
+
+ * ircd/s_misc.c (tstats): Likewise. Update format strings to use
+ %Lu for 64-bit integer parameters.
+
+ * ircd/s_stats (stats_links): Convert cli_sendK() and
+ cli_receiveK() use shifted versions of the byte counters, and
+ update format strings to use %Lu for 64-bit integer parameters.
+
+2004-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_user.h (add_silence): Delete.
+ (del_silence): Delete.
+
+ * include/struct.h (struct User): Convert silence list to struct Ban.
+
+ * ircd/m_silence.c (apply_silence, forward_silences): New functions.
+ (m_silence): Use forward_silences() instead of add_silence().
+ (ms_silence): Likewise.
+
+ * ircd/s_err.c (replyTable): Update RPL_SILELIST.
+
+ * ircd/s_misc.c (exit_one_client): Update to new silence list type.
+
+ * ircd/s_user.c (is_silenced): Use find_ban() to search for
+ silences. If one is found, send it plus any silence exceptions.
+ (del_silence): Delete.
+ (add_silence): Delete.
+
+2004-11-07 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h: Remove declarations for undefined functions
+ cancel_mode(), add_token_to_sendbuf(), IsMember(). Delete
+ add_banid(), next_removed_overlapped_ban(). Add BAN_EXCEPTION
+ flag and new functions find_ban(), apply_ban().
+
+ * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
+ LocalChanOperMode): Remove unused variable definitions.
+ (make_nick_user_host): Delete.
+ (add_banid): Delete.
+ (next_removed_overlapped_ban): Delete.
+ (find_ban): New function, which knows about exceptions.
+ (is_banned): Use find_ban() and only work on a struct Membership.
+ (bmatch): New function, which knows about CIDR bans.
+ (apply_ban): New function to replace add_banid().
+ (mode_parse_ban): Use apply_ban().
+
+2004-10-28 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
+ new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
+
+2004-10-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
+ with announcements enabled (do not "announce" to the recipient,
+ and unconditionally send to the recipient).
+
+ * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
+ the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
+
+2004-10-21 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h (Ban): Add fields address, nu_len, addrbits to
+ support netmask-based bans.
+
+ * ircd/channel.c (set_ban_mask): New function to parse a ban as
+ either netmask-based or not.
+ (make_ban): Use set_ban_mask().
+ (make_nick_user_ip): Becomes unused; remove it.
+ (is_banned): Rewrite to match only once against the nick!user part
+ of a ban, and compare addresses if BAN_IPMASK is set.
+ (mode_parse_ban): Use set_ban_mask().
+
+2004-10-21 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c (attach_iline): Test resolved host names against
+ aconf->host, not the (NULL) aconf->name.
+
+2004-10-19 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h: Move ban flags out of channel flags and
+ rename to reflect this.
+
+ * ircd/channel.c: Update ban constant names.
+
+ * ircd/m_burst.c: Likewise.
+
+2004-10-18 Michael Poole <mdpoole@troilus.org>
+
+ * include/list.h (SLink): Remove ban elements from here...
+
+ * include/channel.h (Ban): And move to the new struct Ban.
+ (Channel): Update banlist field to match.
+ (next_removed_overlapped_ban): Update return type to match.
+ (make_ban, free_ban): New functions.
+
+ * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
+ list types.
+ (free_bans): New variable to hold unused Ban elements.
+ (make_ban, free_ban): New functions.
+ (destruct_channel, add_banid, next_removed_overlapped_ban): Update
+ to use struct Ban.
+ (is_banned, send_channel_modes, send_ban_list): Likewise.
+ (ParseState, mode_parse_ban, mode_process_bans): Likewise.
+ (mode_parse): Likewise.
+
+ * ircd/m_burst.c (ms_burst): Update to use struct Ban.
+
+ * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
+
+ * ircd/s_debug.c (count_memory): Update to use struct Ban.
+
+2004-10-18 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/gline.c (gline_find): unless we're looking for an exact
+ match, we should call match() on hostnames, not ircd_strcmp()
+
+2004-10-17 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_conf.h (ConfItem): Add new field username. Replace
+ unused field bits with addrbits.
+ (find_conf_exact): Replace user and host arguments with cptr.
+ (find_conf_name, read_tlines, find_restrict): Remove declaration
+ for undefined functions.
+ (conf_parse_userhost): New function.
+
+ * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
+ resolved hostname and IP are matched in one pass now.
+
+ * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
+
+ * ircd/s_conf.c (conf_parse_userhost): New function.
+ (check_limit_and_attach): Use correct ConfItem field to determine
+ maximum connections per IP.
+ (attach_iline): Replace user@host matching with shorter, clearer
+ matching against username and host/IP fields.
+ (find_conf_exact): Likewise.
+
+ * ircd/ircd_parser.y: Replace assignment to aconf->host for
+ CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
+ conf_parse_userhost(). This means CONF_CLIENT ConfItems no longer
+ use the name field or the IP token. Remove the latter.
+
+ * ircd/ircd_lexer.l: Remove unused token IP.
+
+2004-10-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/crule.c (crule_via): Simplify the lookup for the directly
+ connected server name.
+
+2004-10-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/class.c: Make find_class() return NULL for unknown classes,
+ rather than returning the start of connClassList.
+
+ * ircd/match.c (parse_ipmask): Translate IPv4 masks as
+ IPv4-compatible addresses.
+ (check_ipmask): Fix comparison of IP masks.
+
+ * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
+ uses CIDR style masks in the hostname field of a Motd block.
+
+2004-10-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/numeric.h: Remove the unused RPL_STATMEM and
+ RPL_STATMEMTOT. Move the RPL_BOUNCE comment to its current
+ value (the former RPL_STATMEM).
+
+ * ircd/s_err.c: Remove format strings for RPL_STATMEM and
+ RPL_STATMEMTOT.
+
+2004-10-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_server.c: Look up server configuration by name of our
+ directly connected peer rather than the server being introduced.
+
+2004-10-13 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.h: Delete MODE_LISTED and is_listed(). Replace
+ ListingArgs.chptr with ListingArgs.bucket. Move declaration of
+ list_next_channels() to..
+
+ * include/hash.h: here, and drop the "nr" argument.
+
+ * ircd/channel.c: Remove redundant scan of local clients for
+ channels being listed. Delete list_next_channels() function.
+
+ * ircd/hash.c: Add list_next_channels() here, revising to not use
+ MODE_LISTED and to use ListingArgs.bucket instead of chptr. Also
+ decide when to stop sending RPL_LISTs based on a half-full sendq.
+
+ * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
+
+ * ircd/m_list.c: Delete mention of MODE_LISTED. Unconditionally
+ call list_next_channels(sptr).
+
+ * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
+
+ * ircd/Makefile.in: Update dependencies (for hash.c).
+
+2004-10-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y: Consistently zero out global variables after
+ they are used (prevents double frees and other problems).
+
+2004-10-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
+ Set, Clr respectively. Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
+ Delete con_fd (get from con_socket) and con_port. Move sentalong
+ from send.c to struct Connection, and cli_lasttime and cli_since
+ from struct Client to struct Connection. Update cli_*() macros to
+ use con_*(cli_connect(cli)).
+
+ * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
+ FlagClr(), PrivHas() with FlagHas().
+
+ * ircd/ircd_parser.y: Likewise.
+
+ * ircd/list.c: Remove assignment to cli_local() since it is now a
+ calculated value.
+
+ * ircd/s_bsd.c: Remove uses of cli_port().
+
+ * ircd/s_conf.c: Remove uses of ClearAccess().
+
+ * ircd/send.c: Delete sentalong array and replace with references
+ to con_sentalong().
+
+2004-10-12 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Update example config to reflect the changes
+ made in the remainder of this patch.
+
+ * include/list.h: Make make_conf() take a type argument.
+
+ * include/s_conf.h: Delete CONF_LEAF and CONF_HUB. Add "maximum"
+ and "hub_limit" to ConfItem to compensate.
+
+ * ircd/ircd_lexer.l: Recognize MAXHOPS token.
+
+ * ircd/ircd_parser.y: Get rid of aconf global variable and add
+ hub_limit global variable. Add MAXHOPS token, and productions
+ inside connectblock to recognize it and hub masks. Allow maxlinks
+ field in a Client block, rather than overloading password field.
+ Convert serverblock to uworldblock and remove extraneous fields.
+
+ * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
+ calculate LHcptr and active_lh_line. Merge some duplicated code
+ so handling active_lh_line cases is clearer.
+
+ * ircd/s_conf.c: Make make_conf() take a type argument. Delete
+ CONF_LEAF and CONF_HUB. Do not overwrite server name with what
+ is specified in the config file.
+
+ * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
+ RPL_STATSHLINE. Remove useless parameters and format fields from
+ RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
+ RPL_STATSULINE.
+
+ * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
+
+ * ircd/s_stats.c: Get rid of report_array and make
+ stats_configured_links() directly use RPL_STATSxLINE (adding the
+ new fields for Server and Client blocks). Remove /stats h, since
+ that has no meaning.
+
+2004-10-12 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
+ default rather than by listing which should be wiped out.
+
+2004-10-09 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_server.c: Forward port checks for leaf and hub config
+ rules, and reorganize mr_server() and ms_server() by moving out
+ common code. Add doxygen comments for the file.
+
+2004-10-09 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/hash.c: Fix thinko in hash function: It is not indexed
+ simply by character value, so we cannot just remap the values
+ by case.
+
+2004-10-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/hash.c: Replace the old hash function with one based on
+ randomized CRC-32. The new one avoids a big table from the old
+ function.
+
+2004-10-05 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/random.c: Convert to use ircd_md5 interface and hopefully
+ keep more internal random state.
+
+2004-10-05 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
+ ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
+ prefixes.
+
+2004-10-05 Michael Poole <mdpoole@troilus.org>
+
+ * adns, lib/adns: Remove unused adns library.
+
+2004-10-05 Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
+
+ * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
+ format, and add new comments where needed.
+
+ * Doxyfile: New file to tell Doxygen how to run.
+
+2004-09-21 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
+ programmer, generate magic numbers.
+ (AuthIncompleteList): Remove.
+ (AuthPollList): Remove.
+
+2004-09-19 Michael Poole <mdpoole@troilus.org>
+
+ * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
+ acconfig.h.
+
+ * acconfig.h: Remove since it is now redundant.
+
+ * aclocal.m4, config.h.in, configure: Regenerate.
+
+2004-09-19 hikari <hikari@undernet.org>
+
+ * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison
+ aren't found as they're essential for compilation. Regenerated files with
+ autreconf.
+
+2004-09-18 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Add NETWORK feature example. Fix typos in
+ eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
+
+ * include.class.h: Make max_links and ref_count unsigned ints.
+ Make ping_freq and conn_freq unsigned short. (No more negative
+ numbers in /stats y.)
+
+ * ircd/ircd.c: Report configuration file name for "ircd -k".
+
+2004-09-18 hikari <hikari@undernet.org>
+
+ * ircd/Makefile.in: Fixed a missing internal build dependency.
+
+2004-09-16 Michael Poole <mdpoole@troilus.org>
+
+ * INSTALL: Fix name of example.conf and mention its installed
+ location.
+
+ * include/supported.h (FEATURESVALUES2): Fix a reference to
+ channel mode +u that escaped earlier rename attempts.
+
+ * ircd/ircd_auth.c (iauth_connect): Assign port number after
+ zeroing out the destination address.
+ Add some additional debug statements to help follow operations.
+
+ * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
+
+2004-09-11 Bas Steendijk <steendijk@xs4all.nl>
+
+ * include/channel.h, include/supported.h, ircd/channel.c,
+ ircd/s_err.c: Use +U instead of +u for user keys.
+
+2004-09-13 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Remove sample VIRTUAL_HOST setting.
+
+ * doc/readme.features: Remove VIRTUAL_HOST documentation, and
+ update NODNS documentation to match current behavior.
+
+ * include/s_conf.h: Remove now-unused vhost_address field and
+ set_virtual_host() function.
+
+ * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
+ Remove VIRTUAL_HOST.
+
+ * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
+ if we do not have a more specific alternate.
+
+ * ircd/ircd_parser.y: Check for sanity in General blocks (from old
+ conf_add_local()) and assign vhost directly to VirtualHost.
+
+ * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
+ value will be either != 0 or != 0xffff.
+
+ * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
+ local addresses are specified as IPv4 addresses.
+
+ * ircd/s_conf.c: Remove unused conf_add_local() and
+ set_virtual_host().
+
+2004-09-13 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/listener.c (add_listener): Consolidate duplicated code, and
+ make sure listener->server is set before calling inetport() on it.
+
+2004-09-12 Michael Poole <mdpoole@troilus.org>
+
+ * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
+ services (not normal opers) force a change of +A or +u.
+
+2004-09-11 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_stats.h: Add sd_name to struct StatDesc. Stop
+ publishing the statsinfo and statsmap arrays; replace them with
+ stats_find(). Change argument list of StatFunc() to work with
+ names.
+
+ * ircd/m_stats.c: Use stats_find() instead of statsmap[]. Use the
+ full argument instead of just the first character in reports.
+
+ * ircd/s_stats.c: Adapt individual stats handler functions to new
+ argument list. Add long names to statsinfo[]. Add new functions
+ stats_cmp(), stats_search(), stats_find(). Sort statsinfo[] in
+ stats_init().
+
+ * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
+ a single character.
+
+ * ircd/s_user.c: Send an error to the user when a message loses
+ its target in transit.
+
+ * include/class.h include/gline.h include/ircd_features.h
+ include/listener.h include/motd.h include/msgq.h include/res.h
+ include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
+ ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
+ ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
+ ircd/userload.c: Adjust stats handlers to new argument list.
+
+2004-09-11 Michael Poole <mdpoole@troilus.org>
+
+ * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
+ replace with RPL_TRACEEND.
+
+ * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
+ do_trace(). Implement RPL_TRACEEND, per RFE#830291.
+
+2003-06-20 Alexander Maassen <outsider@key2peace.org>
+
+ * ircd/m_topic.c : Don't allow banned users to set a topic in a
+ channel.
+
+2004-09-11 Kevin L Mitchell <klmitch@mit.edu>
+
+ * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
+ comment in header.
+
+ * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
+ header comment.
+
+ * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
+ ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
+ ircd/m_version.c: Remove "template" moniker from comments.
+
+ * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
+ channel prefix list.
+
+2004-09-11 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Add examples for FEAT_HIS_* features.
+
+2003-06-08 Matthias Crauwels <ultimate_@wol.be>
+ [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
+
+ * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
+
+ * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
+
+ * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
+
+ * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
+
+ * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
+
+2004-09-11 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_relay.c (server_relay_channel_message,
+ server_relay_channel_notice): Do not allow other servers to send
+ or relay to local channels.
+
+ * ircd/m_wallchops (ms_wallchops): Likewise.
+
+ * ircd/m_wallvoices (ms_wallvoices): Likewise.
+
+2004-09-11 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
+
+ * ircd/channel.c: removing limits shouldn't gobble an argument;
+ this was a subtle interaction issue with modebuf...fixed by adding
+ MODE_LIMIT to modebuf_flush_int() and short-circuiting
+ modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
+ removal case. Note that this is not proof against the sequence,
+ "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
+ modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
+ (Bug #916138)
+
+2004-09-11 Michael Poole <mdpoole@troilus.org>
+
+ * include/supported.h: Kev pointed out I misinterpreted the
+ meaning of CHANMODES; fix this. Also define CHANNELLEN and
+ STATUSMSG from the ISUPPORT draft.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
+ when oplevels are enabled.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (send_channel_modes): Only send oplevels for
+ channels that actually use them -- for -A channels, send chanops
+ as :o even if OPLEVELS is enabled.
+
+ * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
+
+ * ircd/numnicks.c (base64toip): Fill in the right number of 0
+ words when we see _ in a base64-encoded IPv6 address.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c: Add -k as a chkconf-like option to exit after
+ reading the configuration file.
+
+ * ircd/chkconf.c: Remove as unused.
+
+ * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Remove examples for unused features (TIMESEC,
+ CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
+
+ * doc/readme.features: Remove documentation for unused features
+ (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
+ HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
+ add documentation for ANNOUNCE_INVITES.
+
+ * include/ircd_features.h: Remove unused features (TIMESEC,
+ CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
+
+ * include/ircd_features.c: Likewise.
+
+ * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
+ FEAT_IRCD_RES_TIMEOUT where appropriate.
+
+ * ircd/s_debug.c: Do not display setting of unused (and now
+ non-existent) FEAT_CRYPT_OPER_PASSWORD.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
+ to use the correct address family and IP offset.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * include/s_conf.h (struct ConfItem): Add origin and origin_name
+ fields.
+
+ * ircd/ircd_parser.y: Add new global variable "origin." Add a new
+ "connectionvhost" production that accepts vhost = "IP" inside a
+ Connect block and assigns the IP to origin_name.
+
+ * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
+ as the local address. Otherwise, fall back to the old logic (if
+ VIRTUAL_HOST="TRUE", use the virtual host setting).
+
+ * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
+ origin_name, try to parse it as an IP address.
+
+2004-04-17 Isomer <isomer@undernet.org>
+ * ircd/parse.c: Don't rate limit /gline messages
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y: Replace references to yylval.whatever with
+ references to the appropriate term. This fixes bugs like
+ "1 hour 30 minutes" being misrecognized as 30 seconds.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_features.c (features): Change default values for
+ SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
+ need not specify them in ircd.conf.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y (serverblock): Server blocks should default
+ to CONF_LEAF status.
+
+ * doc/example.conf: Update example to reflect this.
+
+2004-09-10 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/parse.c (msg_tree_parse): Reject commands that contain
+ non-alphabetic characters.
+
+2004-09-09 Michael Poole <mdpoole@troilus.org>
+
+ * config.h.in: Remove duplicated and unused macro definitions.
+
+2004-08-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/client.h: Properly parenthesize "flag" argument to
+ FLAGSET_INDEX() and FLAGSET_MASK() macros.
+
+2004-08-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (send_channel_modes): If oplevels are disabled,
+ send 'o' for chanops instead of the member's oplevel.
+
+2004-08-22 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
+ instead of memcmp(). (Fixes IPv4 servers linking to an IPv6
+ server.)
+
+2004-08-22 Alex Badea <decampos@users.sourceforge.net>
+
+ * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
+
+2004-08-19 Michael Poole <mdpoole@troilus.org>
+
+ * include/res.h: Remove unused function gethost_byname_type().
+
+ * ircd/ircd_res.c: Likewise, and clean up some small functions
+ only used once (remove_dlink(), timeout_resolver()). Use rand()
+ for random request IDs instead of the deprecated *rand48(). Make
+ resolver timeout event fire only when needed instead of once a
+ second.
+
+2004-08-17 Michael Poole <mdpoole@troilus.org>
+
+ IPv6 support, with lots of code and design borrowed from a patch
+ by Alex Badea.
+
+ * config.h.in: Add place to #define IPV6 support.
+
+ * configure.in: Check for struct sockaddr_in6, and use that as
+ the default choice for IPv6 support.
+
+ * configure: Regenerate.
+
+ * include/IPcheck.h, include/client.h, include/gline.h,
+ include/ircd_string.h, include/listener.h, include/match.h,
+ include/res.h, include/s_bsd.h: Convert from struct in_addr (from
+ <netinet/in.h>) to struct irc_in_addr (from "res.h").
+
+ * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
+ from struct sockaddr_in (from <netinet/in.h>) to struct
+ irc_sockaddr (from "res.h"). Add new functions os_socket(),
+ os_accept(), os_sendto_nonb() to help abstract away actual
+ sockaddr types.
+
+ * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
+ characters valid in IPv6 addresses.
+
+ * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
+ and base64toip() to convert from base64 to struct irc_in_addr.
+
+ * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
+ ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
+ ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
+ irc_in_addr instead of unsigned int or struct in_addr.
+
+ * ircd/gline.c: Use new more-generic ipmask functions.
+
+ * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
+ fields.
+
+ * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
+ instead of irc_ssaddr and irc_getaddrinfo().
+
+ * ircd/ircd_string.c: Implement new functions: IPv6-capable
+ ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
+
+ * ircd/match.c: Delete IPv4-only matchcompIP(). Replace with
+ IPv6-capable ipmask_parse() and ipmask_check().
+
+ * ircd/numnicks.c: Implement new functions: iptobase64() and
+ base64toip().
+
+ * ircd/os_generic: Convert external parameters to be struct
+ irc_addrinfo. When using IPv6 support, sockaddr_in6 is native.
+ Implement new functions os_sendto_nonb(), os_socket() and
+ os_accept().
+
+ * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
+ ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
+ ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
+ irc_sockaddr instead of separate in_addr and port fields and new
+ OS support functions.
+
+ * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
+ ircd/ircd_getnameinfo.c: Remove, since these functions are no
+ longer used.
+
+ * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
+ ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
+ since these are unused and not compatible with IPv6 support.
+
+ * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
+ Regenerate dependencies.
+
+2004-08-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
+ states and be case-insensitive again.
+
+2004-08-15 Michael Poole <mdpoole@troilus.org>
+
+ * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
+ former is from C99 (and the latter is absent on Solaris).
+
+ * configure.in: Remove check for inttypes.h (which is a C99 format
+ string header); replace with check for stdint.h. Add checks for
+ sys/param.h and sys/socket.h. Check for socklen_t being defined
+ (OS X does not set it). Run program tests for lex and yacc, and
+ use them rather than assuming flex and bison. Remove OSDEP_C and
+ mention to adns. Remove check for res_mkquery().
+
+ * config.h.in: Update u_intNN_t #undef lines. Add #undef
+ socklen_t so configure test can set it.
+
+ * configure: Regenerate.
+
+ * include/ircd_addrinfo.h: #include headers needed for netdb.h and
+ to define struct addrinfo and uintNN_t.
+
+ * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
+
+ * include/res.h: #include "ircd_addrinfo.h" to get proper type
+ definitions. #define INADDR_NONE if it is not defined (as on
+ Solaris).
+
+ * ircd/Makefile.in: Replace LEX and YACC definitions. Remove
+ OSDEP_C and OSDEP_SRC; always compile os_generic.c. Remove adns
+ directory from CPPFLAGS. Regenerate dependencies.
+
+ * ircd/client.c: Return when no propagation set for oper, to
+ squash warning about use of "defaults" before it is set.
+
+ * ircd/engine_epoll.c: #include correct C99 integer header.
+
+ * ircd/engine_poll.c: Last argument to getsockopt() should be of
+ socklen_t, not size_t; fix.
+
+ * ircd/engine_select.c: Squash warning about bzero().
+
+ * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
+ with uint32_t. We need <stdint.h> for that, so include it.
+
+ * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
+ uint32_t.
+
+ * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
+ There is no portable way to do %option, so remove that. lex on
+ Solaris needs several of its internal tables to be bigger, so
+ increase those sizes.
+
+ * ircd/ircd_parser.y: Remove the second declarations of two
+ tokens, since standard yacc warns about changing precedence.
+
+ * ircd/os_generic.c: Make this compile on common OSes (Linux,
+ Solaris, OS X, FreeBSD, OpenBSD).
+
+ * ircd/table_gen.c: Make arguments to isprint() all unsigned char
+ to squash warnings on Solaris that array index is "char."
+
+ * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
+ portable, and replace basename() with an equivalent.
+
+ * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
+
+2004-07-27 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_burst.c: Add new netride_modes() function to check
+ which modes could be used in a net.ride. Use this instead
+ of the old check for just +i or +k.
+ (Based on patches by beware and pomac.)
+
+2004-07-25 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd_parser.y: Remove redundant semicolon; it causes
+ errors on some versions of yacc.
+
+2004-07-21 Michael Poole <mdpoole@troilus.org>
+
+ * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
+ ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
+
+2004-07-21 Michael Poole <mdpoole@troilus.org>
+
+ New DNS resolver code, courtesy of Dianora and the rest of the
+ Hybrid team. (Bugs are of course my fault.)
+
+ * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
+ libresolv from the build process. Update dependencies.
+
+ * configure: Regenerate.
+
+ * include/client.h: Change connection's DNS reply type.
+
+ * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
+
+ * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
+ RPL_STATSALINE and /stats a to list DNS servers.
+
+ * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
+ ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
+ ircd/ircd_reslib.c: New resolver files.
+
+ * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
+ Update to new resolver callback interface and to only deal with
+ one IP and one name per DNS reply.
+
+ * ircd/parse.c: Remove /DNS command, since new resolver does not
+ track those statistics.
+
+2004-07-20 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.features: Change references to O:, Y:, etc lines into
+ references to the appropriate block types.
+
+2004-07-01 Michael Poole <mdpoole@troilus.org>
+
+ * include/fileio.h: Elaborate on "works for any file descriptor."
+
+ * include/iauth.h: Remove unused file.
+
+2004-07-01 Michael Poole <mdpoole@troilus.org>
+
+ * include/map.h, ircd/map.c: Remove unused code.
+
+ * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
+ map.h and a call to map_update().
+
+ * ircd/Makefile.in: Remove map.c and regenerate dependencies.
+
+ * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
+ for the new config parser.
+
+ * ircd/match.c: Remove pointless pointer dereference (Reed points
+ out that this generates a warning with old gcc).
+
+ * ircd/s_user.c: Display connection class in CONNEXIT connection
+ notice as a string rather than an integer.
+
+ * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
+ lines (falsely) identifying ringlog as related to IRC; the files
+ are general purpose.
+
+ * configure.in, include/ircd_snprintf.h: Add checks for
+ va_copy()-like alternatives and use them if va_copy() is missing.
+
+ * configure, config.h.in: Regenerate.
+
+2004-02-01 beware <steendijk@xs4all.nl>
+
+ * ircd/channel.c: Check bans that look like IP bans against user's
+ hostname just in case they have a host like 1234.domain.tld.
+
+2003-12-18 Timothy Grant Vogelsang <net@astrolink.org>
+
+ * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
+
+2004-04-02 Gavin Grieve <hektik@dimebox.net>
+
+ * ircd/ircd_parser.y: Fix rehash warnings for servername and
+ numeric so they only warn if changed in the config file.
+
+2004-06-30 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
+ files.
+
+ * doc/example.conf: Illustrate IAUTH configuration.
+
+ * include/client.h: Add fields to record IAUTH status.
+
+ * ircd/Makefile.in: Add ircd_auth.c to Makefile.
+
+ * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
+
+ * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
+ so that an obsolete connection can be abandoned.
+
+ * ircd/s_misc.c: Report client exits via IAUTH.
+
+ * ircd/s_user.c: If IAUTH is active and a connecting user has not
+ been checked against it, interrogate the IAUTH server.
+
+2004-06-25 Michael Poole <mdpoole@troilus.org>
+
+ * configure.in: Check for crypt.h as well.
+
+ * configure: Regenerate.
+
+ * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
+ affect the first includes of system headers. Include crypt.h if
+ it is available.
+
+ * ircd/umkpasswd.c: Quash a gcc warning.
+
+2004-06-23 Michael Poole <mdpoole@troilus.org>
+
+ * doc/Authors: Add contributors to ircu2.10.11 and myself.
+
+ * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
+
+ * configure.in: Add missing check for inttypes.h; remove obsolete
+ display of Head-in-sand, add display of epoll() engine.
+
+ * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
+ to use SourceForge's CVS server, from the u2.10.11 branch.
+
+2003-11-09 beware <steendijk@xs4all.nl>
+
+ * ircd/s_user.c: move assigning a numeric to a local client from
+ when nick is set, to when connection becomes client, to not waste
+ numerics.
+
+2004-06-08 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/parse.c: don't let rank-and-file users escape HIS
+ limitations with /jupe...
+
+2004-06-18 Alex Badea <decampos@users.sourceforge.net>
+
+ * ircd/gline.c (gline_lookup): only return a gline if it's
+ active
+
+ * ircd/s_conf.c (find_kill): don't check for active gline,
+ since gline_lookup does now
+
+2002-11-11 hikari <shadow@undernet.org>
+ * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and
+ modularise :P
+
+ * ircd/ircd_xopen.c: removed, superseded by new crypto system.
+
+ * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
+ wrote ircd_crypt_mech_register() function, various other bits
+ designed to create a near-pluggable crypto system for ircu. currently
+ this code also loads the various mechanisms i've written code for.
+
+ * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from
+ elsewhere, manipulated to suit ircu, returns a salted MD5 password.
+
+ * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
+ generate a crypted password using the systems native crypt() function.
+
+ * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
+ only be used for testing purposes.
+
+ * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
+ elsewhere, ircuified.
+
+ * ircd/umkpasswd.c: mkpasswd program for ircu.
+
+ * include/ircd_xopen.h: removed, superseded by new crypto system.
+
+ * include/ircd_crypt.h: external definitions for the new ircd_crypt()
+ function and definition of the ircd_crypt_mech structure for containing
+ crypto mechanism data.
+
+ * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
+ mechanism.
+
+ * include/ircd_crypt_native.h: sundary definitions for the native
+ crypt() mechanism.
+
+ * include/ircd_crypt_plain.h: sundary definitions for the plain text
+ mechanism.
+
+ * include/umkpasswd.h: fluff for umkpasswd.
+
+2003-03-11 Landon Fuller (landonf) <landonf@sf.net>
+
+ * configure.in: allow ircu to build on OS X.
+
+2004-05-24 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_invite.c (m_invite): Include channel name in invitation
+ announcements.
+ (ms_invite): Likewise, and also fix a use-before-assignment bug in
+ them.
+
+2004-05-18 Michael Poole <mdpoole@troilus.org>
+
+ Announce invitations to other channel operators.
+
+ * include/ircd_features.h, ircd/ircd_features.c
+ (ANNOUNCE_INVITES): Add new boolean feature, default off.
+
+ * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
+ reply.
+
+ * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
+ Add 'skip' parameter that is needed elsewhere.
+ (sendcmdto_channel_servers_butone): New function.
+
+ * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
+ ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
+
+ * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
+ the INVITE message to all interested servers, and send a numeric
+ to all local chanops.
+
+2004-05-18 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/res_adns.c (res_ourserver): Remove unused function.
+ (validate_name): Likewise.
+
+2004-05-17 Michael Poole <mdpoole@troilus.org>
+
+ * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
+ Rip out feature settings related to oper privileges.
+
+ * include/client.h: Comment a few unexplained privileges.
+
+ * ircd/ircd_lexer.l: Rename privilege keywords to match their
+ names in code and /PRIVS output. Add support for two "new"
+ privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
+
+ * include/class.h, ircd/client.c, ircd/ircd_parser.y,
+ ircd/m_oper.c: Replace the removed feature settings with
+ per-connection class operator privileges.
+
+ * doc/example.conf: Document the change.
+
+ * ircd/ircd_parser.y (portblock): Fix slight memory leak.
+
+2004-05-16 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Make this show the new NICKLEN default.
+
+2004-05-14 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
+ to 12
+
+2004-05-14 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c: process account creation timestamp if present in
+ user mode portion of a N protocol message; add account creation
+ timestamp to outgoing N protocol messages if that timestamp is
+ non-zero
+
+ * ircd/m_account.c: process account creation timestamp if present
+ in AC protocol message
+
+ * include/struct.h: add account creation timestamp
+
+2004-05-16 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf: Document operator privilege settings.
+
+2004-05-16 Michael Poole <mdpoole@troilus.org>
+
+ Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
+
+ * ircd/ircd_parser.y (invert): New variable.
+ (operlocal): Remove production.
+ (operpriv): Use "invert" variable.
+ (privtype): Add LOCAL alternative production.
+
+ * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
+ with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
+
+ * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
+ Likewise.
+
+ * ircd/s_stats.c (report_array, statsinfo): Likewise.
+
+ * ircd/s_user.c (set_user_mode): Likewise.
+
+2004-05-15 Michael Poole <mdpoole@troilus.org>
+
+ * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
+ patches obsoleted by F: lines.
+
+ * patches/diffs/topicburst.diff: Remove patch that was integrated
+ into the main code.
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-11-05 -MDP]
+
+ * ircd/m_whois.c: On remote whois, show +s local channels with a *
+ prefix to opers.
+
+2004-05-15 Michael Poole <mdpoole@troilus.org>
+
+ * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
+ of gline-related fixes from 2.10.11. Things that work are due to
+ Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
+ to figure out who did what. Any mistakes are mine.
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-11-05 -MDP]
+
+ * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
+ messages (so you can match EXIT's to CONN's)
+
+2004-05-15 Reed Loden <reed@reedloden.com>
+
+ [Original ChangeLog date: 2003-05-01 -MDP]
+
+ * ircd/s_err.c: Added network to text and edited 001 a bit.
+
+ * ircd/s_user.c: Send network with 001.
+
+2004-05-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_user.c (add_target): Move free target invite check...
+
+ * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
+ behavior.
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-11-23 -MDP]
+
+ * ircd/s_user.c: Don't credit users with an extra attempt if they
+ are klined/glined, throttle them!
+
+2004-05-15 Jeekay <jeekay@netgamers.org>
+
+ [Original ChangeLog date: 2003-04-24 -MDP]
+
+ * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
+
+2004-05-15 splidge <splidge@quakenet.org>
+
+ [Original ChangeLog date: 2003-09-03 -MDP]
+
+ * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
+ channels where the user is a zombie.
+
+2004-05-15 beware <steendijk@xs4all.nl>
+
+ [Original ChangeLog date: 2003-10-25 -MDP]
+
+ * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
+ cpu hog bug
+
+2004-05-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
+ 2.10.11 does. Show ident and IP for clients being killed by new
+ G-lines and K-lines.
+
+2004-05-15 hikari <shadow@undernet.org>
+
+ [Original ChangeLog date: 2003-06-27 -MDP]
+
+ * ircd/ircd.c: After thought, update the next check time based on
+ when an unregistered client should expire.
+
+2004-05-15 hikari <shadow@undernet.org>
+
+ [Original ChangeLog date: 2003-06-22 -MDP]
+
+ * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
+ clients not being able to connect anymore.
+
+2004-05-15 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (can_join): Revert to using IsInvited() rather
+ than walking the list directly.
+ (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
+ use feature_bool(FEAT_HIS_SNOTICES) instead.
+
+2004-05-15 Kevin L Mitchell <klmitch@mit.edu>
+
+ [Original ChangeLog date: 2004-01-31 -MDP]
+
+ * ircd/channel.c (mode_parse_key): don't allow , in keys!
+
+2003-04-12 David Mansell (splidge) <splidge@sf.net>
+
+ [Original ChangeLog date: 2003-04-14 -MDP]
+
+ * ircd/channel.c: When keys and limits conflict on burst, the key
+ which is first alphabetically or the limit which is lower will be
+ used by both servers. This matches pre-2.10.11 behaviour.
+ Closes: (#713930)
+
+2004-05-15 David Mansell <splidge@quakenet.org>
+
+ [Original ChangeLog date: 2002-12-28 -MDP]
+
+ * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
+ set, don't allow -l with negative parameter (or unsigned >2^31).
+
+2004-05-15 David Mansell <splidge@quakenet.org>
+
+ [Original ChangeLog date: 2002-12-31 -MDP]
+
+ * ircd/m_burst.c (ms_burst): when kicking net riders, clear
+ invites too.
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-11-04 -MDP]
+
+ * ircd/s_serv.c: Burst glines/jupes early
+
+2004-05-15 volta <volta2@gmx.de>
+
+ [Original ChangeLog date: 2003-04-26 -MDP]
+
+ * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
+ allows users to see their own ip & hostname. (Should solve
+ all problems with dcc)
+
+2004-05-15 Kevin L Mitchell <klmitch@mit.edu>
+
+ [Original ChangeLog date: 2003-06-13 -MDP]
+
+ * ircd/m_settime.c: it's supposed to be %ld, not %l
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2004-03-20 -MDP]
+
+ * ircd/m_invite.c: Disallow invites to non existant channels
+
+2004-05-15 David Mansell <splidge@quakenet.org>
+
+ [Original ChangeLog date: 2003-04-26 -MDP]
+
+ * ircd/m_invite.c: let +k users invite into channels they aren't on.
+
+2004-05-15 hikari <shadow@undernet.org>
+
+ [Original ChangeLog date: 2003-07-13 -MDP]
+
+ * ircd/IPcheck.c: Fixed (another) overflow problem in
+ ip_registry_check_local()
+
+ [Original ChangeLog date: 2003-06-29 -MDP]
+
+ * ircd/IPcheck.c: Fixed overflow problem in
+ ip_registry_connect_fail()
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-05-02 -MDP]
+
+ * ircd/IPcheck.c: Added assert()'s to check for underflow
+
+2004-05-15 Kevin L Mitchell <klmitch@mit.edu>
+
+ [Original ChangeLog date: 2003-11-22 -MDP]
+
+ * tools/wrapper.c: commit uid on chroot fix from ubra
+
+ * ircd/version.c.SH: fix generation generation
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-11-23 -MDP]
+
+ * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
+ to off. if an admin is smart enough to understand these features
+ they can enable them manually.
+
+2004-05-15 splidge <splidge@quakenet.org>
+
+ [Original ChangeLog date: 2003-03-26 -MDP]
+
+ * ircd/include/ircd_features.h, include/ircd_osdep.h,
+ ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c,
+ ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
+ ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be
+ altered via F: lines
+
+2004-05-15 Isomer <isomer@undernet.org>
+
+ [Original ChangeLog date: 2003-11-18 -MDP]
+
+ * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
+ the preregistration subsystem allowing customisation of timers,
+ make the dns resolver stats oper only, and make it much more clear
+ what all the numbers are.
+
+2004-05-15 Spike <spike@undernet.org>
+
+ [Original ChangeLog date: 2003-11-23 -MDP]
+
+ * ircd/IPcheck.c: Make IPcheck constants configurable
+
+2004-05-14 Kevin L Mitchell <klmitch@mit.edu>
+
+ [Original ChangeLog date: 2003-11-22 -MDP]
+
+ * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
+ the maximum allowed length (NICKLEN) or the allowed nickname
+ length specified as the NICKLEN feature
+
+ * ircd/ircd_features.c: declare NICKLEN and set its default value
+ to 9
+
+ * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
+ rearranging...
+
+ * include/ircd_features.h: add NICKLEN feature
+
+ * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
+
+ * doc/readme.features: document new NICKLEN feature
+
+ * doc/example.conf: list new NICKLEN F-line
+
+2004-05-14 Matthias Crauwels <ultimate_@wol.be>
+
+ [Original ChangeLog date: 2003-06-08 -MDP]
+
+ * ircd/gline.c: fixed the counting bug in gline_memory_count
+
+ * ircd/jupe.c: fixed the counting bug in jupe_memory_count
+
+2004-05-14 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/m_mode.c (ms_mode): Do not always try to call
+ set_user_mode() when parv[1] is a channel name.
+
+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
+
+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
+
+ * ChangeLog.07: moved into doc/history
+
+ * ChangeLog.10: moved into doc/history
+
+ * INSTALL: pulled up from u2.10.11.04
+
+ * README: pulled up from u2.10.11.04
+
+ * README.FreeBSD: pulled up from u2.10.11.04
+
+ * README.Solaris: pulled up from u2.10.11.04
+
+ * RELEASE.NOTES: add sysctl note from u2.10.11.04
+
+ * TODO: removed from distribution
+
+ * configure.in: add extra check for res_mkquery; remove
+ --disable-headinsand since it no longer has any effect; pull up
+ "Enable" vs. "Disable" changes from u2.10.11.04
+
+ * doc/readme.asll: pulled up from u2.10.11.04
+
+ * doc/readme.features: pull up missing documentation, including a
+ couple of corrections
+
+ * doc/readme.log: correct text to read FACILITY instead of SYSLOG
+ in the documentation for configuring syslog facility
+
+ * include/channel.h: declare IsInvited()
+
+ * include/handlers.h: do some minor reorderings
+
+ * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
+ #define's
+
+ * include/ircd_policy.h: removed from the distribution
+
+ * include/jupe.h: declare jupe_memory_count()
+
+ * include/msgq.h: remove MsgCounts structure
+
+ * include/numeric.h: add a blank line after RPL_STATSQLINE; add
+ RPL_HOSTHIDDEN
+
+ * include/s_stats.h: include ircd_features.h for definition of the
+ enum; remove extraneous declarations
+
+ * ircd/Makefile.in: add LDFLAGS to table_gen
+
+ * ircd/engine_poll.c: remove commented-out assertion
+
+ * ircd/ircd.c: include s_stats.h and call stats_init()
+
+ * ircd/ircd_features.c: feature names have to be case-sensitive
+ because of some of the HIS features
+
+ * ircd/ircd_relay.c: reorder includes
+
+ * ircd/m_account.c: include string.h for strlen()
+
+ * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
+ sure to refer to chname, not parv[1]
+
+ * ircd/m_create.c: remove the broken code that squits servers that
+ are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
+ desyncs
+
+ * ircd/m_gline.c: if it's a server, force the gline; don't
+ gline_find() before determining if the oper had the privilege
+
+ * ircd/m_kick.c: kicks by servers should appear to be from the
+ local server thanks to HIS
+
+ * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
+
+ * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
+
+ * ircd/m_nick.c: added an assertion and some explanatory comments
+ pulled up from u2.10.11.04
+
+ * ircd/m_opmode.c: no longer requiring oper to be on the channel;
+ search for quarantines before allowing ops
+
+ * ircd/m_privmsg.c: one character typo that probably means nothing
+
+ * ircd/m_settime.c: add back comments I left in the code
+
+ * ircd/m_squit.c: remove protocol_violation() notices
+
+ * ircd/m_userhost.c: return realhost if user is an oper
+
+ * ircd/m_wallvoices.c: only m_wallvoices() should add a +
+
+ * ircd/m_who.c: add handling for the 'a' field
+
+ * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
+ FEAT_HIS_SERVERINFO
+
+ * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
+ ancient bug fixes from the u2.10.11 branch
+
+ * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
+ call motd_memory_count(), gline_memory_count(), and
+ jupe_memory_count() when reporting memory usage; add back a
+ comment regarding "DBuf caveats"
+
+ * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
+ change to ERR_NOPRIVILEGES wording
+
+ * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
+
+ * ircd/s_stats.c: count from 0 and not 1 when initializing the
+ stats
+
+ * ircd/s_user.c: comment out assertion; remove extraneous
+ definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
+ hidden" reply; don't detach oper confs unless sptr is not an oper
+
+ * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
+ change channel name character range to be from '\041' (!) to
+ UCHAR_MAX
+
+ * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
+
+ * tools/linesync/linesync.conf: pull up from u2.10.11.04
+
+ * tools/linesync/linesync.sh: pull up from u2.10.11.04
+
+2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
+ * almost everything: Forward ported numerous changes from .11 to .12
+
+2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
+ * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
+ when they become a server.
+ * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
+ packet is sent.
+ * ircd/class.c(make_class): Fixed an assert to be more useful.
+
+2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
+ * ircd/packet.c
+ * ircd/packet.h: (connect_dopacket): Made a dopacket function for
+ connecting links which sends the messages through the correct message
+ handler.
+ * ircd/s_bsd.c(read_packet): Put packets through the correct handler
+ for connecting links. Properly handle unknown links becoming
+ connecting or servers.
+
+2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
+ * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
+ with, this is used quite a lot.
+ * ircd/class.c (make_class): Initialise the ref_count to 1 so that
+ we don't leak.
+ * ircd/class.c (add_class): When updating a class, free the old name
+ first to prevent leakage.
+ * ircd/class.c (class_delete_marked): Decrement the ref_count for the
+ class after it is removed from the linked list.
+ * ircd/ircd_parser.y: Changed a free to MyFree().
+ * ircd/ircd_parser.y: Removed a few debugging messages.
+
+2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
+ * s_bsd.c (read_packet): Our daily addition to the list of entities to
+ treat as servers - Connecting servers.
+
+2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
+ * doc/debug_memleak_gc.patch,
+ * include/ircd_ircd_alloc.h,
+ * include/memdebug.h,
+ * configure.in,
+ * ircd/Makefile.in,
+ * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
+ and notify the operators.
+
+2002-06-29 Andrew Miller <a1kmm@mware.virtualave.net>
+
+ * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
+ the dbufs.
+
+2002-06-18 Andrew Miller <a1kmm@mware.virtualave.net>
+
+ * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
+ the server.
+
+2002-06-18 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/m_burst.c (ms_burst): kick local members if the channel
+ has a larger local TS and it's +i or +k remotely (anti net.ride)
+
+ * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
+
+ * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
+
+ * include/s_conf.h: externalized lookup_confhost
+
+ * adns/Makefile.in: compilation-outside-source-tree fix
+
+2002-06-17 Alex Badea <vampire@p16.pub.ro>
+
+ * adns/*: added a slightly hacked copy of adns
+
+ * configure.in: added a --disable-adns switch if you want
+ to use the old libresolv res.c
+
+ * configure: ran autoconf
+
+ * ircd/res_libresolv.c: renamed from res.c
+
+ * ircd/res_adns.c: added adns resolver
+
+2002-06-17 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/ircd_parser.y: fixed 'Connect' block processing so now
+ you can actually connect to other servers
+
+2002-06-04 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
+ it displays all servers, not just local connects
+
+2002-05-30 Jean-Edouard Babin <Jeb@jeb.com.fr>
+
+ * ircd/m_server.c (mr_server): fixed core bug on insufficient
+ arguments
+
+2002-05-26 Jeekay <jeekay@irc.planetarion.com>
+
+ * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
+
+2002-05-26 Jeekay <jeekay@irc.planetarion.com>
+
+ * ircd/m_join.c (m_join,HasControlChars): check if a channel
+ name has any control chars (<=32) in it before allowing a
+ local user to join.
+
+2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
+ * ircd/ircd_relay.c: stop an information leak about the
+ the network topography from relayed messages.
+
+2002-04-19 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/m_who.c (m_who): disallow non-opers to /who server.name
+
+2002-04-18 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/s_err.c (RPL_STATSILINE): connection classes are now
+ strings
+
+2002-04-17 beware <steendijk@tomaatnet.nl>
+
+ * m_whois.c (m_whois): disallow remote queries for non-existent
+ local users when originated by a non-oper
+
+2002-04-16 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
+ reply if the servername contains a '*' and it doesn't exist
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+2002-04-16 beware <steendijk@tomaatnet.nl>
+
+ * ircd/m_whois.c: the previous patch broke whois, fixed it
+ another way
+
+ * ircd/m_admin.c: cleaned up m_admin too while we're here,
+ hunt_server_cmd can do all the work for us
+
+2002-04-15 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/m_stats.c: added verbose server reporting (/stats v
+ or /stats V for machine-readable format) (bugzilla bug 52)
+
+ * include/numeric.h: added RPL_STATSVERBOSE 236
+
+ * ircd/s_err.c: added RPL_STATSVERBOSE
+
+ * ircd/s_stats.c: added help for stats 'v'
+
+2002-04-15 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/class.c (get_client_class): fixed typo which caused
+ /trace (and perhaps motd) to core
+
+2002-04-15 beware <steendijk@tomaatnet.nl>
+
+ * ircd/m_whois.c: Fixed /whois servermask nomatch bug
+ where normal users could use the function to discover servers,
+ also the NOSUCHSERVER check code was missing.
+
+2002-04-14 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/ircd_parser.y: fixed cli_info(&me) not being set
+ from 'description' conf
+
+2002-04-13 Stephane Thiell <mbuna@undernet.org>
+
+ * ircd/m_whois.c: removed FindUser() in ms_whois to fix
+ remote whois relaying.
+
+ * ircd/class.c: removed unused (and duplicated) code
+ get_client_ping().
+
+ * include/class.h: removed unused function prototype.
+
+ * config.guess: upgraded with latest
+
+ * config.sub: upgraded with latest
+
+2002-04-12 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd-patch: report which files failed the dry run (so the
+ user may force the patch if the rejects are in less-than-vital
+ files, such as ChangeLog or documentation)
+
+2002-04-12 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/m_invite.c: don't propagate invites for local channels
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/ircd.c: The last fix broke autoconnects completely.
+ Fixed it another way.
+
+2002-04-09 Brian Cline <clineb@cs.winthrop.edu>
+
+ * ircd/ircd.c (try_connections): To avoid problems with infinite event
+ loops, don't try connecting to servers whose connect frequency is 0.
+
+2002-04-10 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/ircd_parser.y: fixed a "features" block parse bug
+
+ * tools/convert-conf.py: added a configuration file converter
+ from 2.10.11 to 2.10.12 format
+
+ * ircd-patch: added GPL information to top of file
+
+2002-04-09 Alex Badea <vampire@p16.pub.ro>
+
+ * configure.in: added a human-readable report of configured
+ options at the end of the configure process
+
+ * configure: regenerated with autoconf
+
+2002-04-08 Gavin Grieve <ggrieve@ihug.co.nz>
+
+ * include/supported.h: change CHARSET to CASEMAPPING after
+ discussions as to what would be the preferred name.
+
+2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
+ * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
+ specification.
+ * Fix a minor parser bug that meant rehash didn't always
+ work correctly.
+
+2002-04-03 Alex Badea <vampire@p16.pub.ro>
+
+ * include/channel.h: fix compiler warnings (paratheses around &&)
+
+ * ircd/channel.c (modebuf_extract): fix compiler warnings
+ (uninitialized variables)
+
+ * ircd/Makefile.in: make ircd properly compile outside the
+ source tree
+
+2002-04-03 Alex Badea <vampire@p16.pub.ro>
+
+ * include/s_user.h: added a sptr parameter to InfoFormatter
+ function type
+
+ * ircd/m_who.c: don't match IPs for clients which have a hidden host,
+ except when the inquiring user is an oper
+
+ * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
+ target has a hidden host, but show real IP to opers
+
+ * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
+ fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
+ show real IP to opers
+
+ * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
+
+ * ircd/s_user.c (send_user_info): pass sptr to the formatting function
+
+ * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
+ fake IP to show for clients with a hidden host)
+
+ * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
+
+ * doc/example.conf: default value for FEAT_HIDDEN_IP
+
+ * doc/readme.features: documented FEAT_HIDDEN_IP
+
+2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
+ * doc/example.conf: Cleaned up some comments that ended up in
+ strange places due to problems in the merge process.
+ * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
+ probably dates back to Jarkko code.
+
+2002-04-02 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
+ from the path before calling do_kill(); add a msg argument to
+ do_kill() and use it in preference to comment; remove all that old
+ code that fiddled with the buf and the comment
+
+ * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
+
+ * include/ircd_log.h: add a seperate msg argument to
+ log_write_kill()
+
+ * ircd/ircd.c: display event engine and MAXCONNECTIONS information
+
+2002-04-02 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd-patch: Automatically generate a version string from patches
+
+2002-04-02 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd-patch: Test before doing anything dangerous, provide -f to
+ to it anyway. exit levels for easy scripting.
+
+2002-04-01 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c (joinbuf_join): don't add a channel to the list
+ in the joinbuf unless when we flush it, we empty the list
+
+2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
+ * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
+ old configuration file format.
+ * ircd/ircd_lexer.l
+ * ircd/s_conf.c
+ * doc/example.conf
+
+2002-03-23 Bert Faes <bert.faes@pandora.be>
+
+ * s_misc.c made /trace reply always show the username
+
+2002-03-28 Kevin L Mitchell <klmitch@mit.edu>
+
+ * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
+ for setrlimit, getrusage, and times
+
+ * configure: rerun auto-conf
+
+ * config.h.in: rerun autoheader
+
+2002-03-27 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
+ sending of the key to the channel
+
+ * ircd/channel.c (modebuf_flush_int): when processing keys, only
+ include the actual key in the mode sent to the channel if
+ MODEBUF_DEST_NOKEY is not set
+
+ * include/channel.h: needed more bits for MODEBUF_DEST_*,
+ especially when adding MODEBUF_DEST_NOKEY to force keys in the
+ BURST to be reported as "*" to the channel
+
+ * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
+ inherited from the class associated with the O-line
+
+2002-03-25 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
+ when a user changes his nickname so we can catch if he now matches
+ a ban
+
+2002-03-20 Reed Loden <reed@redmagnet.com>
+ * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
+
+ * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
+
+2002-03-20 LordLuke <lordluke@undernet.org>
+ * ircd/client.c: Add LOCOP_LIST_CHAN feature.
+
+ * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
+
+2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_links.c: Make /links behave like /map for head_in_sand.
+ cleaned up excess code.
+
+ * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
+ map_add() and map_update() for links changes.
+
+ * include/map.h: Added info and prot to struct Map
+
+ * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
+ servers are cached in MapList
+
+ * ircd/s_misc.c: changed #ifdef for map_update()
+
+ * ircd/m_server.c: changed #ifdef for map_update()
+
+ * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
+ hiding features.
+
+ * configure.in: add --disable-headinsand
+
+ * configure: Ran autoconf
+
+ * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show
+ connect limits
+
+ * ircd/s_stats.c: Made /stats i report connect limits
+
+ * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of
+ "*" for the password field.
+
+2002-03-19 LordLuke <lordluke@undernet.org>
+
+ * include/channel.h: Allow opers to view +s channels in /list
+
+ * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
+
+ * include/ircd_features.h: added "LIST_CHAN" feature
+
+ * ircd/channel.c: Allow opers to view +s channels in /list
+
+ * ircd/client.c: Add "PRIV_LIST_CHAN"
+
+ * ircd/ircd_features.c: Add "LIST_CHAN" feature
+
+2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
+ Must be more careful when forward porting by hand...
+
+2002-03-13 Carlo Wood <run@alinoe.com>
+
+ * include/channel.h: CHFL_CHANNEL_MANAGER, new local
+ channel flag set when someone creates a channel or joins
+ using the Apass. IsChannelManager(), SetChannelManager():
+ macros to manipulate new channel flag.
+ channel_modes: Added new argument to avoid calling
+ find_member_link more often than needed.
+
+ * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
+ ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
+ ERR_UPASSNOTSET: new numeric replies.
+
+ * ircd/channel.c: is_level0_op: removed.
+ member_can_send_to_channel: disallow channel manager
+ to talk. channel_modes: show upass to level0 ops.
+ mode_parse_upass: Only the channel manager is allowed
+ to change the upass. Only allow to set upass when apass
+ is also set. mode_parse_apass: Don't allow to change the
+ Apass if the channel is older than 48 hours. Only allow
+ to remove the apass when upass is not set. Send clear
+ warnings regarding the importance of apass.
+ mode_process_clients: Don't change the oplevel of an opped
+ member in a channel where upass is not set.
+
+ * ircd/destruct_event.c: exec_expired_destruct_events:
+ Bug fix: send DESTRUCT message when destructing a channel.
+
+ * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
+ prefix for DESTRUCT message.
+
+ * ircd/m_join.c: m_join: Handle apass and upass.
+
+ * ircd/m_kick.c: m_kick: Don't allow to kick member with
+ a higher or equal op-level.
+
+ * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
+ ms_mode: Allow server to do modes on channels with apass
+ set.
+
+ * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
+ ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
+ ERR_UPASSNOTSET: new numeric replies.
+
+
+2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_kill.c: Last of the bug fixes for do_kill()
+
+ * ircd/list.c: Don't remove clients from the linked list
+ that aren't actually in the list.
+
+2002-03-08 Carlo Wood <run@alinoe.com>
+ * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
+ and CHFL_BURST_ALREADY_VOICED.
+
+ * ircd/m_burst.c: Allow BURST outside net-burst
+ and take into account that users are already joined
+ to the channel in that case.
+
+ * ircd/m_destruct.c: Implementation of DESTRUCT
+ handling code.
+
+ * ircd/m_join.c: Set the channel creationtime to
+ the timestamp of a message when that timestamp is
+ smaller.
+2002-02-27 Reed Loden <reed@redmagnet.com>
+ * tools/crypter: Updated some variables, added another notice,
+ added CVS Id tag, and updated Perl location.
+
+ * tools/ringlog.c: Added IRC - Internet Relay Chat,
+ tools/ringlog.c
+
+ * tools/ringlog.pl: Added IRC - Internet Relay Chat,
+ tools/ringlog.pl
+
+ * tools/wrapper.c: Added IRC - Internet Relay Chat,
+ tools/wrapper.c
+
+ * tools/mkpasswd.c: Added CVS Id tag
+
+ * tools/sums: Updated to comply with sums being moved to tools/
+ and added CVS Id tag
+
+ * tools/README: Updated location of file and partly rewrote to fit
+ u2.10.11's Features
+
+ * tools/Makefile.crypt: Updated location of file and added CVS Id
+ tag
+
+ * acconfig.h: Updated location of file
+
+ * config.h.in: Updated location of file
+
+ * tools/Bounce/bounce.conf: Added CVS Id tag
+
+ * tools/Bounce/Bounce.cpp: Updated location of file
+
+ * tools/Bounce/Bounce.h: Updated location of file
+
+ * tools/hashtoy: Added CVS Id Tag
+
+2002-02-27 Carlo Wood <run@alinoe.com>
+
+ * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
+
+2002-03-01 Carlo Wood <run@alinoe.com>
+
+ * include/channel.h: struct Channel: new attribute destruct_event.
+ Prototype for destruct_channel().
+
+ * include/destruct_event.h: new header file for destruct_event.c.
+
+ * ircd/Makefile.in: New source file: destruct_event.c.
+
+ * ircd/channel.c: sub1_from_channel: Don't destruct channel
+ immedeately but instead schedule it for destruction after
+ some time when a channel becomes empty (and clear invite
+ only and limit in that case).
+ destruct_channel: new function, was previously the destructing
+ part of sub1_from_channel.
+ add_user_to_channel: remove destruction request if any.
+
+ * ircd/destruct_event.c: New file. Implementation of functions
+ schedule_destruct_event_1m, schedule_destruct_event_48h,
+ remove_destruct_event and exec_expired_destruct_events.
+
+ * ircd/ircd.c: destruct_event_timer: new timer.
+ main: use destruct_event_timer to call exec_expired_destruct_events
+ once per minute.
+
+ * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
+ channels. Schedule new empty channels for destruction.
+
+ * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
+
+2002-03-01 Carlo Wood <run@alinoe.com>
+ * ircd/s_misc.c: exit_client: Only call map_update()
+ for servers.
+
+2002-02-28 Carlo Wood <run@alinoe.com>
+ * include/channel.h: New attribute 'oplevel' in struct Membership.
+ Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
+ New macros: OpLevel(member): returns op-level of member and
+ SetOpLevel(member, value): sets op-level of member.
+ Prototype of add_user_to_channel: add oplevel to parameters.
+ Prototype of mode_parse: add member to to parameters.
+
+ * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
+
+ * ircd/s_err.c: idem.
+
+ * ircd/channel.c: Removed unmatched '{' braces from comments
+ (confuses vi). add_user_to_channel: oplevel is passed to function
+ and added in the created MemberShip structure. send_channel_modes:
+ Generate the nick:mode list of the BURST msg in the new style (with
+ op-levels). DONE_UPASS/DONE_APASS: fixed typo in comment. struct
+ ParseState: New attribute: member. mode_process_clients: Disallow
+ deopping someone with an equal or higher op-level, take care of
+ inheritance of op-level. mode_parse: member is passed to function
+ and added in the created ParseState structure. joinbuf_join: pass 0
+ as oplevel to add_user_to_channel as needed initialization of oplevel
+ in struct MemberShip.
+
+ * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
+ decoding of a BURST message and passing on a BURST message.
+ Renamed default_mode to current_mode.
+
+ * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
+
+ * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
+ to mode_parse (causes opped member to get op-level 0).
+
+2002-02-25 Carlo Wood <run@alinoe.com>
+ * include/channel.h: Added two new strings to struct Mode,
+ upass and apass, both with maximum length PASSLEN (a new
+ define in this file). Two new mode defines MODE_UPASS and
+ MODE_APASS.
+
+ * ircd/channel.c: is_level0_op: Added as dummy function.
+ channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
+ Added support for MODE_APASS (+A) and MODE_UPASS (+u).
+ mode_parse_upass: New function to parse mode +u.
+ mode_parse_apass: New function to parse mode +A.
+
+ * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).
+
+2002-02-25 Carlo Wood <carlo@alinoe.com>
+
+ * ircd/m_server.c: remove unused variables
+
+2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_map.c: Modified to show a useful output to non-opered
+ clients when HEAD_IN_SAND_MAP is defined. Servers are added to
+ the list when first seen (after receiving SERVER) and that list
+ is sent to clients. Servers are excluded from the list if they are
+ hubs, services, or have been missing for more than 1 week.
+
+ * ircd/map.c: Created file for map_* functions
+
+ * include/map.h: Created file for map_* functions
+
+ * ircd/m_server.c: Added calls to map_update()
+
+ * ircd/s_misc.c: Added call to map_update()
+
+ * ircd/parse.c: Changed to use m_map() and mo_map()
+
+2002-02-22 Reed Loden <reed@redmagnet.com>
+
+ * ircd/m_connect.c: Removed an extra : in remote connect message.
+
+2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/whocmds.c: Local opers should also be able to
+ see servernames in /who
+
+ * ircd/gline.c: Fix core bug in gline_find()
+
+ * ircd/m_kill.c: Bug fix for HIS_KILLWHO
+
+2002-02-19 John Buttery <john@io.com>
+
+ * ircd/ircd.c: Updated "No such file" error message.
+
+2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
+ a message handler, and some general cleanups and bug fixes.
+
+ * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
+ kill source.
+
+2002-02-16 Tim Vogelsang <net@astrolink.org>
+
+ * ircd/m_kill.c: added a new static function, m_kill, which
+ performs the actual kill.
+
+2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * Added support for LIST STOP
+
+2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * Merged changes from u2_10_11 to main branch.
+
+2002-02-08 Tim Vogelsang <net@astrolink.org>
+
+ * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
+ reason is supplied.
+
+2002-02-06 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_auth.c (read_auth_reply): left out an = in an
+ assertion--shouldn't have had any impact, though
+
+ * ircd/Makefile.in: add a hook for using ringlog; run make depend
+
+ * tools/ringlog.c: for the heck of it, add a comment including
+ rules for /etc/magic
+
+2002-02-05 Kevin L Mitchell <klmitch@mit.edu>
+
+ * tools/ringlog.pl: perl script to take output from ringlog and
+ pass it to addr2line to get function, file, and line number
+ information
+
+ * tools/ringlog.c: program/object to help in building function
+ trace information
+
+2002-02-04 Alex Badea <vampire@p16.pub.ro>
+
+ * include/ircd_features.h: added new feature MOTD_BANNER
+
+ * ircd/ircd_features.c: added new feature MOTD_BANNER
+
+ * ircd/motd.c (motd_signon): send a one-line banner from
+ FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
+ is set
+
+ * doc/example.conf: default value for MOTD_BANNER feature
+
+ * doc/readme.features: documented the MOTD_BANNER feature
+
+2002-02-04 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
+ check; added character 'A' to the server options string to
+ indicate when assertion checking is enabled
+
+2002-02-03 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
+ event if the errno is EBADF, since the caller probably already
+ knows about it and just hasn't gotten around to processing it yet
+
+ * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
+ is generated; don't process socket_events() or socket_state() if
+ an error occurred; add GEN_ERROR to list of flags in gen_flags()
+
+ * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
+ clear it
+
+2002-02-01 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c: change make_nick_user_{ip,host} to not use a
+ static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
+ NUI_BUFSIZE--I confess they're not well-named) is allocated by the
+ caller
+
+2002-02-02 Alex Badea <vampire@p16.pub.ro>
+
+ * include/client.h: added user flag FLAGS_HIDDENHOST
+
+ * include/ircd_features.h: added FEAT_HOST_HIDING and
+ FEAT_HIDDEN_HOST
+
+ * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
+ to report real hostnames and IPs to opers
+
+ * include/s_user.h: exported hide_hostmask()
+
+ * include/send.h: changed sendcmdto_channel_butserv to
+ sendcmdto_channel_butserv_butone; ditto for
+ sendcmdto_common_channels
+
+ * include/struct.h: added realhost to struct User
+
+ * include/whowas.h: added realhost to struct Whowas
+
+ * ircd/channel.c: match bans against both real and hidden
+ hostmasks; moved some calls to use sendcmdto_*_butone
+
+ * ircd/gline.c: match glines agains real host
+
+ * ircd/ircd_features.c: added FEAT_HOST_HIDING and
+ FEAT_HIDDEN_HOST
+
+ * ircd/m_account.c: call hide_hostmask() for possibly
+ hiding the user's host
+
+ * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
+
+ * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
+
+ * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
+ host
+
+ * ircd/m_who.c: match real hosts, if the query comes from an oper
+
+ * ircd/m_whois.c: report real hostname and IP to opers
+
+ * ircd/m_whowas.c: report real hostname to opers
+
+ * ircd/s_err.c: added user mode 'x' to the list of supported user
+ modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
+ real hostnames to opers
+
+ * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
+
+ * ircd/s_serv.c: send real hostname to servers
+
+ * ircd/s_user.c: send real hostname to servers; added processing
+ of usermode 'x'; added hide_hostmask() which actually does the work
+ of hiding a user's host; moved some calls to use sendcmdto_*_butone
+
+ * ircd/send.c: changed sendcmdto_channel_butserv to
+ sendcmdto_channel_butserv_butone; ditto for
+ sendcmdto_common_channels
+
+ * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
+ it's host hidden
+
+ * ircd/whowas.c: if needed, store a user's real host so we can
+ report it to opers later
+
+ * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
+ features
+
+ * doc/example.conf: default values for HOST_HIDING and
+ HIDDEN_HOST features
+
+2002-02-01 Tim Vogelsang <net@astrolink.org>
+
+ * ircd/send.c (sendwallto_group_butone): don't sent wallops to
+ ordinary users
+
+2002-01-28 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/jupe.c (jupe_activate): remove a bogus assertion
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_err.c: added new channel mode 'r' to list of supported
+ channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
+ numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
+ informing users why they can't join a +r channel
+
+ * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
+ (+r) to do_clearmode(); note that it is *not* being added to the
+ default clearmode mask!
+
+ * ircd/channel.c: don't allow non-+r users to send messages to +r
+ channels from off the channel; add support for MODE_REGONLY (+r)
+ to channel_modes(); don't allow non-+r users to join +r channels
+ without an invite; add support for MODE_REGONLY to the modebuf_*()
+ family of functions (changes in modebuf_flush_int(),
+ modebuf_mode(), and modebuf_extract()); add support for
+ MODE_REGONLY to mode_parse()
+
+ * include/supported.h (FEATURESVALUES2): added the new channel
+ mode 'r' to the list of supported channel modes
+
+ * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
+ conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
+
+ * include/channel.h: remove unused MODE_SENDTS; add new
+ MODE_REGONLY
+
+ * ircd/s_bsd.c (read_packet): remove call to timer_verify()
+
+ * ircd/list.c: remove calls to timer_verify() from
+ alloc_connection() and dealloc_connection()
+
+ * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
+ from timer_run()
+
+2002-01-27 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/ircd_events.c (timer_run): why did I ever use a next
+ pointer when the algorithm guarantees that the head pointer will
+ always be the next pointer?
+
+2002-01-26 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
+ client process timer to catch any list corruption
+
+ * ircd/list.c: surround alloc_connection() and
+ dealloc_connection() with calls to timer_verify()
+
+ * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
+ verify the timer list's structure; call it around timer_run()
+
+2002-01-22 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c (sendcmdto_common_channels): don't send message to a
+ channel that the source is a zombie on
+
+2002-01-13 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c (timer_enqueue): one more assertion--make
+ sure a timer has the ACTIVE flag set before enqueueing the timer
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/list.c (dealloc_connection): assert that the process timer
+ has been removed from the timer queue before dealloc_connection()
+ is called
+
+2002-01-12 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/res.c: don't accept T_A when we're looking for T_PTR
+
+ * ircd/channel.c (modebuf_flush_int): nuke the code that would
+ send a HACK DESYNCH notice on a HACK(2)--it would be far too
+ chatty
+
+ * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
+
+ * include/supported.h: add AWAYLEN to the list of supported
+ features
+
+ * include/ircd_defs.h: add AWAYLEN to specify the maximum length
+ of an away message
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
+
+ * ircd/channel.c: pass a buflen parameter to channel_modes() for
+ pbuf--we were using sizeof(pbuf), which would always be
+ sizeof(char*) before; change send_channel_modes() to pass extra
+ parameter to channel_modes()
+
+ * include/channel.h: pass a buflen parameter to channel_modes()
+ for pbuf
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/uping.c (uping_start): initialize some timers
+
+ * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
+ out when we need to re-add the process timer
+
+ * ircd/s_auth.c (make_auth_request): initialize a timer
+
+ * ircd/res.c (init_resolver): initialize some timers
+
+ * ircd/list.c (alloc_connection): initialize the client process
+ timer
+
+ * ircd/ircd_events.c: add a function, timer_init(), to initialize
+ a struct Timer; recast timer_add() to catch when adding a marked
+ timer and not re-enqueue it--but mark it for re-enqueuing; update
+ timer_del() to turn off the GEN_READD flag and to ignore reference
+ counts when destroying the timer--we're using GEN_MARKED as an
+ ersatz referance count; changed timer_run() to work with the new
+ way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
+ map[]
+
+ * ircd/ircd.c: initialize some timers
+
+ * ircd/engine_select.c (engine_loop): initialize a timer
+
+ * ircd/engine_poll.c (engine_loop): initialize a timer
+
+ * ircd/engine_kqueue.c (engine_loop): initialize a timer
+
+ * ircd/engine_devpoll.c (engine_loop): initialize a timer
+
+ * ircd/IPcheck.c (IPcheck_init): initialize a timer
+
+ * include/ircd_events.h: add GEN_READD flag for timers to indicate
+ that a timer must be readded; add t_onqueue() macro to check to
+ see if a timer is on the queue (this is a hack, though); added
+ timer_init() to initialize a struct Timer--we're no longer doing
+ the initialization in timer_add()
+
+2002-01-11 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
+ prevent a core bug *in* the assertion
+
+ * doc/readme.features: document new POLLS_PER_LOOP feature; change
+ documentation to reflect that OPER_SET now defaults to FALSE
+
+ * doc/p10.html: documented the new ACCOUNT stuff
+
+ * doc/example.conf: document new POLLS_PER_LOOP default; change
+ default for OPER_SET
+
+ * RELEASE.NOTES: changed documentation to reflect the fact that
+ assertions are now enabled by default and do not cause memory
+ leaks
+
+ * ircd/res.c (make_cache): removed a bogus assertion we probably
+ never caught because assertions haven't been enabled on production
+ servers for any length of time before
+
+ * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
+
+ * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
+ instance of POLLS_PER_KQUEUE
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_bsd.c (client_timer_callback): only clear the
+ FREEFLAG_TIMER flag when the timer is being destroyed
+
+ * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
+ default it to 200; turn OPER_SET off by default
+
+ * ircd/engine_kqueue.c: dynamically allocate and reallocate the
+ array of events to obtain from the kernel
+
+ * ircd/engine_devpoll.c: dynamically allocate and reallocate the
+ array of events to obtain from the kernel
+
+ * include/ircd_features.h: add a new feature for tuning how many
+ events to get from the kernel, for engines that support that
+
+ * ircd/Makefile.in: re-run make depend to correct dependancies
+
+ * ircd/m_who.c: remove unneeded inclusion of list.h
+
+ * ircd/ircd_events.c: remove unneeded inclusion of list.h
+
+ * ircd/whocmds.c (do_who): hide server name in /who unless
+ requester is an operator; simplify hop count insertion
+
+ * ircd/s_misc.c (exit_one_client): make sure client's snomask is
+ cleared
+
+ * ircd/parse.c: use mo_version and mo_admin when opers do /version
+ or /admin
+
+ * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
+ of the static string "*.undernet.org"
+
+ * ircd/m_version.c: only let ordinary users get version
+ information for the server they are on
+
+ * ircd/m_admin.c: only let ordinary users get admin information
+ for the server they are on
+
+ * ircd/channel.c (client_can_send_to_channel): check is_banned()
+ before letting the client speak on a channel s/he is not on
+
+ * include/supported.h: add NETWORK to feature list
+
+ * include/handlers.h: declare mo_admin() and mo_version()
+
+2002-01-10 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
+ of !NDEBUG
+
+ * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
+ !NDEBUG
+
+ * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
+ !NDEBUG
+
+ * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
+
+ * ircd/Makefile.in: run make depend on chkconf.c as well
+
+ * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
+ conditionalize on MDEBUG
+
+ * include/fda.h: instead of conditionalizing on !NDEBUG,
+ conditionalize on MDEBUG
+
+ * configure: rebuild configure script
+
+ * configure.in: enable assertion checking by default, since we
+ have now decoupled memory debugging from the NDEBUG macro
+
+ * ircd/s_user.c (set_nick_name): remove calls to
+ verify_client_list()
+
+ * ircd/s_misc.c (exit_one_client): remove calls to
+ verify_client_list()
+
+ * ircd/s_conf.c (rehash): remove calls to verify_client_list()
+
+ * ircd/m_who.c (m_who): remove calls to verify_client_list()
+
+ * ircd/list.c: remove calls to verify_client_list(); keep
+ verify_client_list() around just in case we ever need it again,
+ but never compile it in
+
+ * ircd/ircd_events.c (event_execute): remove calls to
+ verify_client_list()
+
+ * ircd/client.c (client_get_ping): remove calls to
+ verify_client_list()
+
+ * include/list.h (send_listinfo): remove temporary debugging
+ function verify_client_list()
+
+ * ircd/uping.c: don't die if the event type is ET_ERROR in socket
+ callback functions
+
+ * ircd/res.c (res_callback): don't die if the event type is
+ ET_ERROR
+
+ * ircd/listener.c (accept_connection): don't die if the event type
+ is ET_ERROR
+
+2002-01-09 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_nick_name): bracket call to
+ add_client_to_list() with calls to verify_client_list()
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
+
+ * ircd/list.c (verify_client_list): add a probabilistic loop
+ detector: for every client added, there is a 2% probability that
+ it will be used to replace the value of sentinel; if at any time,
+ sentinel is found again, we know we're in a loop
+
+ * ircd/ircd_events.c (event_execute): add verify_client_list()
+ calls wrapping event_execute; at the very least, I'll figure out
+ what event the corruption occurred in
+
+ * ircd/list.c: moved verify_client_list() to try to keep it from
+ being inlined
+
+ * ircd/Makefile.in (version.c): version.c wasn't dependant on
+ version.h and patchlevel.h, like it was supposed to be
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_auth.c (destroy_auth_request): overload send_reports
+ argument to also indicate whether or not to call
+ release_auth_client() and thereby enter the client into the linked
+ list
+
+ * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/list.c (free_client): verify that destroy_auth_request()
+ didn't automagically re-add us to the list; we might have to think
+ about this interaction more carefully, actually
+
+ * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
+ calling free_client(); otherwise, free_client() will try to free
+ the auth by calling destroy_auth_request(), which will call
+ add_client_to_list()
+
+ * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
+ verify_client_list() around to catch any corruption that might
+ occur here
+
+ * ircd/s_conf.c (rehash): liberally sprinkle calls to
+ verify_client_list() here, since this is about the only routine I
+ can think of that could cause the "core on kill -HUP" bug
+
+ * ircd/m_who.c: sprinkle calls to verify_client_list() around
+ liberally, since we've seen crashes here; temporarily include the
+ otherwise unneeded list.h header
+
+ * ircd/list.c: sprinkle calls to verify_client_list() around quite
+ liberally; add debugging asserts to list manipulation functions to
+ catch strange settings for next and prev pointers; define
+ verify_client_list(), which walks the client list and verifies
+ that everything is as it's supposed to be
+
+ * ircd/client.c: wrap client_get_ping with calls to
+ verify_client_list() to see if that's where we're dying
+
+ * include/patchlevel.h (PATCHLEVEL): bump to 03
+
+ * include/list.h: declare verify_client_list() if DEBUGMODE
+ enabled; otherwise, define it to be empty
+
+2002-01-08 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/m_quit.c (m_quit): remove an unused variable
+
+ * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
+
+ * ircd/s_user.c: when building the user mode to send to the user,
+ don't include +r; add an extra set of parens to squelch a warning
+
+ * ircd/m_quit.c (m_quit): use exit_client_msg()
+
+ * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
+ keep track of who's running what version
+
+ * ircd/m_squit.c (ms_squit): remove debugging calls to
+ protocol_violation()
+
+ * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
+ new gmake "feature" (pull-up from trunk)
+
+ * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
+ from trunk)
+
+2002-01-07 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
+ list of user modes; process account name as part of user mode in
+ NICK decoding (set_nick_name()); add account name to usermode when
+ building the usermode to incorporate in outgoing NICK messages
+
+ * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
+ user is logged in to
+
+ * ircd/parse.c: define the new ACCOUNT command, usable only by
+ servers and ignored by everything else
+
+ * ircd/m_whois.c: report what account name is associated with a
+ user, if any
+
+ * ircd/m_account.c: implement the ACCOUNT command
+
+ * ircd/Makefile.in: add m_account.c to the list of sources; ran
+ make depend
+
+ * include/struct.h: add an account field to struct User
+
+ * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
+ what username a user is logged in under
+
+ * include/msg.h: add ACCOUNT command and token (AC)
+
+ * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
+ the maximum length of a username for X
+
+ * include/handlers.h: add declaration for ms_account()
+
+ * include/client.h: add FLAGS_ACCOUNT to flag when a user account
+ name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
+ IsAccount() and SetAccount() to manipulate the flag
+
+ * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
+ name like "Amsterdam2.NL.EU.undernet.org", we get the struct
+ Client for the server with numeric "Am", which happens to be
+ stockholm! To fix this, we look up the full name *first*; if that
+ doesn't get it, *then* we look up by numeric.
+
+2001-12-24 Perry Lorier <isomer@coders.net>
+ * ircd/m_server.c: cleanups, maybe this will make the bug easier
+ to find.
+
+ * ircd/m_stats.c: display maximum number of connects in an I:
+
+2001-11-22 Perry Lorier <isomer@coders.net>
+ * ircd/m_squit.c: Bug fix in squit
+
+2001-11-03 Greg Sikorski <gte@atomicrevs.demon.co.uk>
+ * ircd/parse.c, include/handlers.h: Give remote whois the correct
+ handler.
+
+2001-11-01 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: some minor white-space fiddling; recast selector
+ test in sendwallto_group_butone() to remove a warning regarding
+ putting & within parentheses
+
+ * ircd/m_create.c (ms_create): use time_t instead of int as a
+ declaration for rate
+
+ * ircd/ircd_reply.c (protocol_violation): it's supposed to be
+ WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
+ wonder we weren't seeing any protocol violations!
+
+ * include/send.h: include time.h for time_t; move WALL_* closer to
+ the function they're used in; some white-space fiddling; add
+ declaration of sendto_opmask_butone_ratelimited()
+
+ * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
+ cases where we ignore a squit, so we aren't taken by surprise, at
+ least...
+
+ * ircd/m_create.c (ms_create): Display origin server, not origin
+ user
+
+ * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
+
+2001-10-31 Perry Lorier <isomer@coders.net>
+ * include/m_ping.c: Forward port ping bug
+
+2001-10-31 Perry Lorier <isomer@coders.net>
+ * include/patchlevel.h: We're beta now
+
+2001-10-31 Perry Lorier <isomer@coders.net>
+ * ircd/s_user.c: fixed hunt_server
+
+2001-09-21 Perry Lorier <isomer@coders.net>
+ * ircd/send.c and various: replace sendcmdto_flag_butone with
+ sendwallto_group_butone
+
+2001-09-21 Vampire- <unknown>
+ * ircd/ircd_string.c: unique_name_vector round II.
+
+2001-09-21 mbuna <mbuna@undernet.org>
+ * configure.in: Add support for darwin
+
+2001-09-21 Perry Lorier <isomer@coders.net>
+ * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
+
+2001-09-20 Perry Lorier <isomer@coders.net>
+
+ * Pullups from 2.10.10.pl16
+ * Added some warnings, and the concept of rate limited snotices
+
+2001-08-31 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c: use "%u" to format limit arguments; use
+ strtoul() to process limit arguments in a /mode command--note:
+ most clients seem to truncate the integer, probably because
+ they're using atoi, and perhaps signed ints
+
+2001-08-17 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/numnicks.c: include stdlib.h for exit()
+
+ * ircd/ircd_log.c: include stdlib.h for exit()
+
+ * ircd/ircd_events.c: include stdlib.h for exit()
+
+ * ircd/s_stats.c: remove description of /stats v, since it's gone
+
+ * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
+ /wallops to distinguish wallops from wallusers
+
+ * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
+ in the "handshake" or "connecting" states--I think the latter will
+ never happen, but...
+
+ * doc/Authors: apply delete's Authors patch
+
+ * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
+ Braden's version
+
+ * README: rewrite README
+
+2001-07-31 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_serv.c (server_estab): remove unused variable split
+
+ * ircd/parse.c: add mr_error to the parse table
+
+ * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
+ unregistered connections--if IsUserPort() is true, the ERROR is
+ ignored, otherwise, the message is saved
+
+2001-07-28 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_kill.c (ms_kill): another minor typo *sigh*
+
+ * ircd/s_user.c (send_supported): oops, minor typo...
+
+ * ircd/s_user.c: implement send_supported() to send two ISUPPORT
+ messages containing our feature buffers; make register_user() use
+ send_supported()
+
+ * ircd/s_misc.c (exit_client): make sure not to give away a remote
+ server in the ERROR message sent to the client; if the killer is a
+ server, we substitute our name in its place
+
+ * ircd/m_version.c (m_version): use send_supported() to send the
+ ISUPPORT values to the user
+
+ * ircd/m_nick.c: shave nick collision kills here a bit, too, for
+ the same reasons as for m_kill.c
+
+ * ircd/m_kill.c: shave kills a bit so that the results look
+ exactly the same no matter where you are; if we didn't do this, it
+ would be possible to map the network by looking at the differences
+ between kills originating under various circumstances
+
+ * include/supported.h: split the features into two, so as to not
+ bust the parameter count when sending the features list
+
+ * include/s_user.h: declare new send_supported() function to send
+ the ISUPPORT information
+
+2001-07-27 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
+ source-routed spoofing attacks; this is only available under
+ u2.10.11, so don't even bother, since no one but testers are using
+ the source base
+
+2001-07-25 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
+
+ * ircd/s_err.c: put in a . for reporting link version on /trace,
+ to match what /version does
+
+2001-07-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_misc.c (exit_client): servers don't understand what the
+ numeric nick ERROR is supposed to mean, so they ignore error
+ messages, resulting in not knowing why we were rejected; use
+ sendcmdto_one for servers and sendrawto_one for clients
+
+2001-07-17 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
+ a nick collide, a bare BURST may be propagated; adjust the
+ enforced parameter count to accept the bare BURST
+
+2001-07-12 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c: mark a client as having been IP checked
+
+ * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
+ second call to SetIPChecked()
+
+2001-07-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
+
+ * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
+
+2001-07-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
+ sections so that if neither is used, the declaration of buf will
+ not elicit an "unused variable" warning under NetBSD
+
+ * ircd/m_map.c: include string.h to declare strcpy (fix warnings
+ on alpha)
+
+ * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
+ warnings on alpha)
+
+ * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
+ warnings on alpha)
+
+ * ircd/client.c: include string.h to declare memset (fix warnings
+ on alpha)
+
+ * ircd/channel.c: remove unused functions next_overlapped_ban,
+ del_banid, and is_deopped (fix warnings under -O1)
+
+ * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
+ warnings on alpha)
+
+2001-06-29 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_user_mode): clear the snomask if the user
+ isn't supposed to receive server notices anymore
+
+ * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
+
+ * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
+ installation prefix; default devpoll and kqueue to on (they get
+ turned off if the required headers aren't present)
+
+ * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
+ sprintf_irc(); it's a bit hackish, but it'll do for now
+
+ * ircd/support.c: remove unused #include
+
+ * ircd/send.c: remove unused #include
+
+ * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/s_serv.c: remove unused #include
+
+ * ircd/s_misc.c: use ircd_snprintf() and friends instead of
+ sprintf_irc() and friends
+
+ * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
+ ircd/s_err.c, which is the only other file to refer to it
+
+ * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
+ sprintf_irc()
+
+ * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
+ sprintf_irc()
+
+ * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
+ instead of sprintf_irc()
+
+ * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
+ make depend
+
+ * include/ircd_string.h: remove declaration of sprintf_irc() (what
+ was it doing here anyway?)
+
+ * include/sprintf_irc.h: removed unneeded source file
+
+ * ircd/sprintf_irc.c: removed unneeded source file
+
+ * ircd/s_debug.c (count_memory): remove some dead code
+
+ * ircd/s_auth.c: remove some dead code
+
+ * ircd/res.c (update_list): remove some dead code
+
+ * ircd/m_whowas.c: remove some dead code
+
+ * ircd/m_whois.c: remove some dead code
+
+ * ircd/m_who.c: remove some dead code
+
+ * ircd/m_wallusers.c: remove some dead code
+
+ * ircd/m_wallops.c: remove some dead code
+
+ * ircd/m_wallchops.c: remove some dead code
+
+ * ircd/m_version.c: remove some dead code
+
+ * ircd/m_userip.c: remove some dead code
+
+ * ircd/m_userhost.c: remove some dead code
+
+ * ircd/m_uping.c: remove some dead code
+
+ * ircd/m_trace.c: remove some dead code
+
+ * ircd/m_topic.c: remove some dead code
+
+ * ircd/m_tmpl.c: remove some dead code
+
+ * ircd/m_time.c: remove some dead code
+
+ * ircd/m_squit.c: remove some dead code
+
+ * ircd/m_silence.c: remove some dead code
+
+ * ircd/m_settime.c: remove some dead code
+
+ * ircd/m_set.c: remove some dead code
+
+ * ircd/m_server.c: remove some dead code
+
+ * ircd/m_rpong.c: remove some dead code
+
+ * ircd/m_rping.c: remove some dead code
+
+ * ircd/m_restart.c: remove some dead code
+
+ * ircd/m_reset.c: remove some dead code
+
+ * ircd/m_rehash.c: remove some dead code
+
+ * ircd/m_quit.c: remove some dead code
+
+ * ircd/m_proto.c: remove some dead code
+
+ * ircd/m_privs.c: remove some dead code
+
+ * ircd/m_privmsg.c: remove some dead code
+
+ * ircd/m_pong.c: remove some dead code
+
+ * ircd/m_ping.c: remove some dead code
+
+ * ircd/m_pass.c: remove some dead code
+
+ * ircd/m_part.c: remove some dead code
+
+ * ircd/m_opmode.c: remove some dead code
+
+ * ircd/m_oper.c: remove some dead code
+
+ * ircd/m_notice.c: remove some dead code
+
+ * ircd/m_nick.c: remove some dead code
+
+ * ircd/m_map.c: remove some dead code
+
+ * ircd/m_lusers.c: remove some dead code
+
+ * ircd/m_list.c: remove some dead code
+
+ * ircd/m_links.c: remove some dead code
+
+ * ircd/m_kill.c: remove some dead code
+
+ * ircd/m_kick.c: remove some dead code
+
+ * ircd/m_jupe.c: remove some dead code
+
+ * ircd/m_join.c: remove some dead code
+
+ * ircd/m_ison.c: remove some dead code
+
+ * ircd/m_invite.c: remove some dead code
+
+ * ircd/m_info.c: remove some dead code
+
+ * ircd/m_help.c: remove some dead code
+
+ * ircd/m_gline.c: remove some dead code
+
+ * ircd/m_get.c: remove some dead code
+
+ * ircd/m_error.c: remove some dead code
+
+ * ircd/m_endburst.c: remove some dead code
+
+ * ircd/m_die.c: remove some dead code
+
+ * ircd/m_desynch.c: remove some dead code
+
+ * ircd/m_destruct.c: remove some dead code
+
+ * ircd/m_defaults.c: remove some dead code
+
+ * ircd/m_create.c: remove some dead code, along with an #if 1
+
+ * ircd/m_cprivmsg.c: remove some dead code
+
+ * ircd/m_connect.c: remove some dead code
+
+ * ircd/m_close.c: remove some dead code
+
+ * ircd/m_clearmode.c: remove some dead code
+
+ * ircd/m_burst.c: remove some dead code
+
+ * ircd/m_away.c: remove some dead code
+
+ * ircd/m_admin.c: remove some dead code
+
+ * ircd/listener.c (accept_connection): remove some dead code
+
+ * ircd/ircd_reply.c (need_more_params): remove some dead code
+
+ * ircd/channel.c (add_banid): remove some dead code
+
+ * include/support.h: remove some dead code
+
+ * include/querycmds.h: remove some dead code
+
+ * doc/readme.chroot: document how to do chroot operation
+
+2001-06-28 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
+ force bin directory to be created if necessary prior to
+ installation; run make depend
+
+ * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
+ the ${srcdir}
+
+ * Makefile.in: tune to detect Makefile.in changes in
+ subdirectories and to create installation directory indicated by
+ ${prefix}
+
+ * ircd/whocmds.c (count_users): routine to count the number of
+ users matching a given user@host mask
+
+ * ircd/s_err.c: add error messages for ERR_LONGMASK,
+ ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
+
+ * ircd/m_gline.c: look for and advance past '!' flag on G-lines
+ from operators; only set GLINE_OPERFORCE flag if oper has the
+ PRIV_WIDE_GLINE privilege
+
+ * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
+ maximum number of users a G-line can impact before it has to be
+ forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
+ wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
+ operators to use ! to force a wide G-line to be set
+
+ * ircd/gline.c: make make_gline() be called with separate user and
+ host arguments, and not call canon_userhost() directly; implement
+ gline_checkmask() to verify that a host mask is acceptable; move
+ BADCHAN check up in gline_add(), and check passed-in mask under
+ certain circumstances for acceptability; fix call to
+ sendto_opmask_butone() to handle separation of userhost into user
+ and host in gline_add(); update call to make_gline()
+
+ * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
+ FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
+ PRIV_WIDE_GLINE to privtab[] for client_report_privs()
+
+ * include/whocmds.h (count_users): declare routine to count users
+ matching a given user@host mask
+
+ * include/numeric.h: added three new error returns: ERR_LONGMASK
+ -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
+ many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
+ contains wildcards in the wrong places
+
+ * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
+ FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
+
+ * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
+ to signal to gline_add() that the operator attempted to force the
+ G-line to be set
+
+ * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
+
+ * doc/readme.gline: update to document new "!" prefix to a G-line
+ user@host mask
+
+ * doc/readme.features: document GLINEMAXUSERCOUNT,
+ OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
+
+ * doc/example.conf: update to mention new features along with
+ their defaults
+
+2001-06-27 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * doc/example.conf: updated example.conf from Braden
+ <dbtem@yahoo.com>
+
+ * include/supported.h: forward-port from pl15
+
+2001-06-25 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/whocmds.c: include ircd_policy.h and implement
+ HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
+
+ * ircd/m_whois.c: forward-port of the idle-time hiding code from
+ pl15; this also required passing parc into do_whois(), which also
+ meant passing parc into do_wilds()--*sigh*
+
+ * include/ircd_policy.h: add a couple more HEAD_IN_SAND
+ #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
+
+2001-06-22 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * tools/wrapper.c: add a wrapper program that can be used to
+ adjust file descriptor limits and root directories; program must
+ be run as root--NOT SETUID!--and given appropriate -u arguments
+
+ * doc/readme.log: documentation of how to configure logging
+
+ * doc/readme.features: documentation of each feature (except for
+ logging)
+
+2001-06-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * Makefile.in (config): add a deprecation notice with a pointer to
+ tools/transition
+
+ * tools/transition: shell script to convert old compile-time
+ options into new compile-time options and appropriate F-lines
+
+ * tools/mkchroot: shell-script to prepare the chroot area by
+ copying over all the necessary libraries so they can be found
+
+2001-06-20 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * INSTALL: partial update of INSTALL for u2.10.11 release...
+
+2001-06-14 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/table_gen.c (makeTables): finally got tired of the
+ "overflow in implicit conversion" warning, so just got rid of it
+ by explicitly casting UCHAR_MAX to a (default) char; diffs show no
+ differences in the tables generated
+
+2001-06-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c (sendcmdto_match_butone): don't let the server crash
+ if a client is in the STAT_CONNECTING status
+
+2001-06-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
+ into sendcmdto_one(); define new sendcmdto_prio_one(), which
+ places the message into the priority queue
+
+ * ircd/s_user.c (hunt_server_prio_cmd): definition of
+ hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
+ instead of sendcmdto_one()
+
+ * ircd/m_settime.c: use sendcmdto_prio_one() and
+ hunt_server_prio_cmd() to send SETTIME
+
+ * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
+
+ * include/send.h: removed declaration for unused vsendcmdto_one();
+ added a declaration for sendcmdto_prio_one()
+
+ * include/s_user.h: declare hunt_server_prio_cmd(), which calls
+ sendcmdto_prio_one()
+
+ * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
+ put in the server's priority queue, too...
+
+ * ircd/ircd.c: don't check LPATH for accessibility at all
+
+2001-06-08 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
+ command if we're configured as a hub; send individual server flags
+ in SERVER commands
+
+ * ircd/s_bsd.c (completed_connection): send a +h flag in our
+ SERVER command if we're configured as a hub
+
+ * ircd/m_server.c: implement parv[7] as a mode-like string; +h
+ sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
+ flag for a server; +hs sets both flags; also modify CMD_SERVER
+ format string to send the flags
+
+ * include/client.h: define two new flags, FLAGS_HUB and
+ FLAGS_SERVICE to mark services and hubs as such; define testing
+ macros, setting macros
+
+ * ircd/s_user.c: remove deprecated struct Gline* argument to
+ register_user(); remove GLINE rebroadcast; do not send GLINE
+ acknowledgement parameter to NICK; do not look for GLINE
+ acknowledgement parameter to NICK while parsing
+
+ * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
+ argument to server_estab(); do not send JUPE/GLINE acknowledgement
+ parameters for SERVER or NICK
+
+ * ircd/m_user.c (m_user): remove deprecated argument to
+ register_user()
+
+ * ircd/m_server.c: remove deprecated argument to server_estab();
+ remove documentation comment regarding JUPE acknowledgement
+ parameter to SERVER; remove JUPE rebroadcast
+
+ * ircd/m_pong.c (mr_pong): remove deprecated argument to
+ register_user()
+
+ * ircd/m_nick.c: remove documentation comment regarding GLINE
+ acknowledgement parameter to NICK
+
+ * ircd/jupe.c: use user's real name in JUPE server notices if
+ HEAD_IN_SAND_SNOTICES is defined
+
+ * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
+ setuid code; correct ancient DEBUG vs DEBUGMODE typo
+
+ * ircd/gline.c: use user's real name in GLINE server notices if
+ HEAD_IN_SAND_SNOTICES is defined
+
+ * ircd/channel.c (modebuf_flush_int): make apparent source be
+ local server, not oper's server; use user's real name in hack
+ notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
+
+ * include/s_user.h: remove struct Gline pre-declaration; remove
+ deprecated struct Gline argument from register_user()
+
+ * include/s_serv.h: remove struct Jupe pre-declaration; remove
+ deprecated struct Jupe argument from server_estab()
+
+2001-06-07 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
+ changes required to control remote stats
+
+ * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
+ recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
+ [forward-port from pl15]
+
+ * ircd/m_whowas.c (m_whowas): report server name only if requester
+ is an operator [forward-port from pl15]
+
+ * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
+ my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
+ and obtain the report from the user's server [forward-port from
+ pl15]
+
+ * ircd/m_who.c: add missing include for ircd_policy.h
+ [forward-port from pl15]
+
+ * ircd/m_version.c (m_version): require oper access for remote
+ /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_time.c (m_time): require oper access for remote /time if
+ HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
+ missing semicolon [forward-port from pl15]
+
+ * ircd/m_nick.c (ms_nick): hide the origin of certain collision
+ kills [forward-port from pl15]
+
+ * ircd/m_motd.c (m_motd): require oper access for remote /motd if
+ HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_lusers.c (m_lusers): require oper access for remote
+ /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_burst.c (ms_burst): server-added bans are stored using
+ local server name, to hide remote server names; modes also are to
+ originate from the local server [forward-port from pl15]
+
+ * ircd/m_admin.c (m_admin): require oper access for remote /admin
+ if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/channel.c (add_banid): if a server is adding a ban, use my
+ server name to hide the remote server's name [forward-port from
+ pl15]
+
+ * ircd/Makefile.in: ran make depend
+
+ * include/s_stats.h: hunt_stats() has to have an extra argument to
+ support the forward-port from pl15
+
+ * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
+ HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
+
+ * ircd/engine_poll.c (engine_loop): remove bogus assert that I
+ forgot to check in the events branch
+
+2001-06-06 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/res.c (init_resolver): don't start DNS expires with a 0
+ relative timeout--if the server starts slow, timeouts could be
+ messy...there's probably a better solution, but this'll do for now
+
+ * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
+ headers very well; include stropts.h; define an os_set_tos()
+
+ * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
+ os_generic.c
+
+ * ircd/ircd.c: if there are no C-lines, we don't want to have a
+ timer that expires at the absolute time of 0--it kinda blocks all
+ the other timers!
+
+ * ircd/engine_devpoll.c: some includes for open(); declare errcode
+ and codesize in engine_loop()
+
+ * ircd/list.c (free_client): remove bogus check on timer active
+ flag
+
+ * ircd/s_auth.c: pull out destruction code in
+ auth_timeout_request() into an externally-visible
+ destroy_auth_request(); manage cli_auth pointer in client
+ structure; use it for an extra assertion check
+
+ * ircd/list.c: include s_auth.h for destroy_auth_request(); add
+ debugging notices to show flow when deallocating
+ connections/clients; call destroy_auth_request() when free'ing a
+ client that has an auth outstanding; don't free the connection if
+ the process timer is unmarked but still active
+
+ * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
+ and reset it before calling the event handler for an ET_DESTROY
+ event
+
+ * include/s_auth.h (destroy_auth_request): declare
+ destroy_auth_request(), which can be used to destroy an
+ outstanding auth request if a client socket goes away before the
+ auth exchange is completed
+
+ * include/ircd_events.h: add an active flag to keep track of
+ whether or not particular generators are active, for the
+ convenience of functions using the API
+
+ * include/client.h: add a pointer for auth requests to struct
+ Connection so we can kill outstanding auth requests if a client
+ socket closes unexpectedly
+
+ * ircd/s_bsd.c: cli_connect() could become 0 during the course of
+ the sock or timer callback; take that into account in the assert
+
+ * ircd/list.c: add magic number checking and setting--magic
+ numbers are zero'd on frees to detect double-frees; add back
+ setting of cli_from() to 0 to break the back-link from the struct
+ Connection (duh)
+
+ * ircd/ircd.c: set me's magic number correctly
+
+ * include/client.h: define magic numbers and accessor/verifier
+ macros
+
+ * ircd/list.c: assert that dealloc_client() is called with
+ cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
+ dealloc_client(); don't mess with cli_from(cptr)
+
+ * ircd/s_bsd.c: only attempt to dealloc a connection if the
+ associated client has already been destroyed, or at least delinked
+
+2001-06-05 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/list.c (free_client): only try to delete the socket when
+ the fd hasn't already been closed, avoiding a double-free
+
+ * ircd/list.c (free_connection): make sure the client is really
+ gone before doing away with the connection
+
+ * ircd/s_bsd.c: record that socket has been added in con_freeflag
+ field; queue a socket_del() as soon as the socket is close()'d;
+ use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
+ FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
+ then dealloc the connection if safe; mark socket as dead when
+ there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
+ to client_timer_callback(); dealloc connection if safe upon
+ ET_DESTROY event in client_timer_callback()
+
+ * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
+ the connection if both socket and timer have been destroyed;
+ destroy both socket and timer explicitly and carefully
+
+ * include/client.h: replace the con_timer field with a
+ con_freeflag field, to indicate what still needs freeing; define
+ the freeflags
+
+ * ircd/engine_select.c (engine_loop): duh...sockList[i] could
+ become 0
+
+ * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
+ become 0
+
+ * ircd/s_bsd.c: add some extra assertions to try to track down a
+ corruption problem
+
+ * ircd/engine_select.c (engine_loop): add an extra assert to try
+ to track down a corruption problem
+
+ * ircd/engine_poll.c (engine_loop): add an extra assert to try to
+ track down a corruption problem
+
+ * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
+ to track down a corruption problem
+
+ * ircd/engine_devpoll.c (engine_loop): skip slots that have become
+ empty during processing; add an extra assert to try to track down
+ a corruption problem
+
+ * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
+ entries
+
+2001-06-04 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c (client_sock_callback): client is no longer
+ blocked, so we must mark it as unblocked
+
+ * ircd/engine_select.c: add Debug() calls galore; add handling for
+ SS_NOTSOCK; use a dummy sock variable to keep things from
+ disappearing on us; correct timeout calculation; update nfds for
+ efficiency
+
+ * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
+ remove a spurious "if (sock)" which will always be true; update
+ nfds for efficiency
+
+ * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
+ SS_NOTSOCK (just in case); correct timeout calculation
+
+ * ircd/engine_devpoll.c: add Debug() calls galore; add handling
+ for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
+
+ * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
+ pretty-indent numbers
+
+ * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
+ case--it's not a socket; the check for writability is most likely
+ not needed, but present for completeness
+
+2001-05-24 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
+ no newline flag is set; call read_packet() when the timer expires,
+ regardless of what's in the buffer--read_packet() should be able
+ to deal properly
+
+ * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
+ sent to clients to include the client nickname (duh)
+
+ * ircd/ircd_events.c: don't destroy a timer if it's already marked
+ for destruction; replace a missing ! in socket_del()
+
+ * ircd/engine_poll.c (engine_loop): reference a temporary variable
+ so we don't have to worry about sockList[i] going away
+
+ * ircd/s_bsd.c (client_sock_callback): add Debug messages
+
+ * ircd/s_auth.c: add Debug messages all over the place
+
+ * ircd/ircd_events.c: add and edit some Debug messages; add a list
+ of routines to convert some of the enums and flags from numbers
+ into human-readable strings for the Debug messages
+
+ * ircd/engine_poll.c: hack some Debug messages to use the new name
+ conversion routines in ircd_events.c; add an extra assert for a
+ condition that shouldn't ever happen; apparently recv() can return
+ EAGAIN when poll() returns readable--I wonder why...
+
+ * include/ircd_events.h: declare some helper routines under
+ DEBUGMODE
+
+2001-05-23 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c (client_sock_callback): add an extra assertion
+ check
+
+ * ircd/s_auth.c: add more Debug messages
+
+ * ircd/list.c (make_client): add an extra assertion check
+
+ * ircd/ircd_events.c (socket_events): don't call the engine events
+ changer if we haven't actually made any changes to the event mask
+
+ * ircd/uping.c: add some Debug messages
+
+ * ircd/s_stats.c: document new /STATS e
+
+ * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
+
+ * ircd/s_bsd.c: remove static client_timer variable; in
+ read_packet(), if there's still data in the client's recvQ after
+ parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
+ of client_sock_callback to handle destroying the timer properly;
+ rewrote client_timer_callback from scratch to be called on an
+ individual client
+
+ * ircd/m_stats.c: add /STATS e to report the engine name
+
+ * ircd/list.c: deal with con_timer field in struct Connection
+ properly; correct a core-level bug in remove_client_from_list--if
+ the client is the only one in the list, we try to update
+ GlobalClientList's cli_prev pointer--not good
+
+ * ircd/ircd.c: remove call to init_client_timer()
+
+ * ircd/engine_poll.c: made Debug messages more uniform by
+ prepending "poll:" to them all; corrected an off-by-one error that
+ caused poll_count to be 1 less than the actual count and removed
+ my work-around; added Debug messages to indicate which socket is
+ being checked and what the results are
+
+ * ircd/Makefile.in: ran a make depend
+
+ * include/s_bsd.h: remove init_client_timer(), since we're doing
+ it differently now
+
+ * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
+ engine name
+
+ * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
+ reports for non-opers
+
+ * include/client.h: add con_timer and con_proc fields to struct
+ Connection and define accessor macros--con_timer marks that
+ con_proc contains a valid timer, and con_proc is used to pace user
+ data
+
+ * ircd/s_bsd.c (close_connection): let free_client() destroy the
+ socket
+
+ * ircd/s_auth.c (start_auth): add a Debug call to indicate when
+ auth has begun on a client
+
+ * ircd/ircd_events.c: ensure that event_execute() is called with a
+ non-NULL event; modify event_add() macro to properly zero list
+ bits; modify gen_dequeue() to not try to clip it out of a list
+ it's already been clipped out of; change signal socket
+ initialization to use state SS_NOTSOCK; permit timeout values of
+ 0 in add_timer(); add many Debug calls; change socket_del() and
+ timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
+ timer_run() instead of GEN_DESTROY so that event_generate() will
+ pass on the events; remove the switch and replace with a simpler
+ if-then-else tree in timer_run(); don't allow destroyed sockets to
+ be destroyed again, nor their states or event masks to be changed
+
+ * ircd/ircd.c: initialize "running" to 1
+
+ * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
+ messages all over the place; fix a counting problem in
+ engine_add(); turn wait into a signed integer and set it to -1
+ only if timer_next() returns 0; adjust wait time to be relative;
+ don't call gen_ref_dec() if socket disappeared while we were
+ processing it
+
+ * include/ircd_events.h: the pipe for signals is not a socket, so
+ we must mark it as such--added SS_NOTSOCK for that special socket;
+ events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
+ for the benefit of timer_run()
+
+ * configure.in: add --enable-pedantic and --enable-warnings to
+ turn on (and off) -Wall -pedantic in CFLAGS
+
+2001-05-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_conf.c: change "s_addr" element accesses to "address"
+ element accesses
+
+ * include/s_conf.h: on some systems, "s_addr" is a macro; use
+ "address" instead
+
+2001-05-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
+ void in this file; add a missing semi-colon; declare errcode,
+ codesize
+
+ * ircd/uping.c (uping_sender_callback): it's pptr, not uping
+
+ * ircd/s_user.c (register_user): comment out spurious reference to
+ nextping
+
+ * ircd/s_serv.c (server_estab): comment out spurious reference to
+ nextping
+
+ * ircd/s_conf.c (read_configuration_file): comment out spurious
+ reference to nextping and nextconnect
+
+ * ircd/s_bsd.c: comment out some spurious references to formerly
+ global (now non-existant) variables; correct a couple of typos
+
+ * ircd/s_auth.c: pre-declare some functions referenced in the
+ callback; correct a typo
+
+ * ircd/res.c (start_resolver): pass errno value of ENFILE
+
+ * ircd/listener.c (accept_connection): you know your API is messed
+ up when...variables that shouldn't have been global crop up in
+ other files
+
+ * ircd/list.c (free_client): substitution of == for =
+
+ * ircd/ircd_signal.c: include assert.h for assertion checking;
+ check ev_data() to find out what signal generated event
+
+ * ircd/ircd_events.c: some references to the variable "timer"
+ should have been references to the variable "ptr"
+
+ * ircd/engine_select.c: it's struct fd_set, not struct fdset;
+ ev_timer(ev) is already a timer pointer; declare codesize as a
+ size_t to correct signedness issue; use timer_next(), not
+ time_next()
+
+ * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
+ select fd out of struct pollfd in assertion checking; declare
+ errcode and codesize; use timer_next(), not time_next()
+
+ * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
+ use function timer_next(), not time_next()
+
+ * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
+ use function timer_next(), not time_next()
+
+ * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
+ compiled sources; do make depend
+
+ * include/list.h: pre-declare struct Connection
+
+ * include/ircd_events.h (gen_ref_inc): cast to the right structure
+ name
+
+ * include/s_auth.h: duh; missing */
+
+2001-05-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: update write events status after sending data or
+ accumulating data to be sent
+
+ * ircd/m_list.c (m_list): update write events status after
+ canceling a running /list
+
+ * ircd/channel.c (list_next_channels): update write events status
+ after listing a few channels
+
+ * ircd/s_bsd.c: extensive changes to update to new events model;
+ remove on_write_unblocked() and the two implementations of
+ read_message(), which have been deprecated by this change
+
+ * ircd/s_auth.c: set the socket events we're interested in for
+ clients; simplify some logic that does the connect_nonb followed
+ by the socket_add
+
+ * ircd/list.c: define free_connection() to free a connection
+ that's become freeable once the struct Socket has been
+ deallocated; fix up free_client() to take this new behavior into
+ account
+
+ * ircd/ircd.c: call init_client_timer()
+
+ * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
+ to register connect-in-progress with events system; declare
+ init_client_timer() (HACK!) to preserve rate-limiting behavior
+
+ * include/list.h: declare new free_connection()
+
+ * include/client.h: add a struct Socket to struct Connection
+
+2001-05-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
+ SIGTERM into event callbacks; perform the actions in the
+ callbacks, since they're not called in the context of the signal;
+ set up the signal callbacks in the event engine
+
+ * ircd/ircd_events.c (signal_callback): we're supposed to look for
+ a specific signal; don't generate an event if there is no signal
+ structure for it
+
+ * ircd/ircd.c: nuke nextconnect and nextping and replace them with
+ connect_timer and ping_timer; massage try_connections() and
+ check_pings() into timer callbacks that re-add themselves at the
+ right time; remove ircd.c's "event_loop()"; initialize the event
+ system and the connect_timer and ping_timer
+
+ * ircd/uping.c: correct a couple more typos
+
+ * ircd/s_auth.c: rework to use new events system
+
+ * ircd/os_solaris.c (os_connect_nonb): update to new interface
+
+ * ircd/os_openbsd.c (os_connect_nonb): update to new interface
+
+ * ircd/os_linux.c (os_connect_nonb): update to new interface
+
+ * ircd/os_generic.c (os_connect_nonb): update to new interface
+
+ * ircd/os_bsd.c (os_connect_nonb): update to new interface
+
+ * include/s_auth.h: remove deprecated members of struct
+ AuthRequest, replacing them with struct Socket and struct Timer
+ structures; add flags to indicate when these structures have been
+ released by the event system; remove the deprecated
+ timeout_auth_queries()
+
+ * include/ircd_osdep.h (os_connect_nonb): connect could complete
+ immediately, so change the interface to handle that possibility
+
+ * ircd/uping.c (uping_server): noticed and corrected a typo
+
+ * ircd/listener.c: set up to use ircd_event's struct Socket by
+ adding an socket_add() call to inetport(), replacing
+ free_listener() with socket_del() in close_listener(), and
+ reworking accept_connection to be called as the callback
+
+ * ircd/ircd.c: add a call to IPcheck_init()
+
+ * ircd/IPcheck.c: remove IPcheck_expire(); rework
+ ip_registry_expire() to be called from a timer; write
+ IPcheck_init() to set up the expiration timer (hard-coded for a
+ 60-second expiration time)
+
+ * include/listener.h: add a struct Socket to the struct Listener;
+ remove accept_connection()
+
+ * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
+
+2001-05-08 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
+ USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
+
+ * ircd/engine_select.c: include config.h; set FD_SETSIZE to
+ MAXCONNECTIONS, not IRCD_FD_SETSIZE...
+
+ * ircd/engine_poll.c: include config.h
+
+ * ircd/engine_kqueue.c: include config.h
+
+ * ircd/engine_devpoll.c: include config.h
+
+ * ircd/Makefile.in: include engine sources in compilation and make
+ depend steps
+
+ * configure.in: add checks for enabling the /dev/poll- and
+ kqueue-based engines
+
+ * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
+
+ * ircd/Makefile.in: work in the engine sources
+
+2001-05-07 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_settime.c: include ircd_snprintf.h
+
+ * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
+ parens around a construct that had both || and &&
+
+ * ircd/chkconf.c: #include "config.h" to get some important
+ definitions
+
+ * ircd/Makefile.in: revamp ircd makefile for new build system
+
+ * doc/Makefile.in: revamp doc makefile for new build system
+
+ * config/*: Removed old build system files
+
+ * stamp-h.in: a stamp file
+
+ * install-sh: install-sh for new build system
+
+ * configure.in: configure.in for new build system
+
+ * configure: configure script for new build system (built by
+ autoconf)
+
+ * config.sub: config.sub for new build system
+
+ * config.h.in: config.h.in for new build system (built by
+ autoheader)
+
+ * config.guess: config.guess for new build system
+
+ * aclocal.m4: aclocal.m4 for new build system (built by aclocal
+ 1.4)
+
+ * acinclude.m4: aclocal.m4 macros for new build system
+
+ * acconfig.h: config.h skeleton for new build system
+
+ * Makefile.in: modify for new build system
+
+2001-05-01 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
+
+ * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
+
+ * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
+
+2001-05-01 Perry Lorier <Isomer@coders.net>
+ * doc/iauth.doc: Protocol for iauth server. (from hybrid).
+ * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
+ when you have far far too many sockets in use.
+ * {include,ircd}/iauth.c: A start on iauth support.
+
+2001-05-01 Perry Lorier <Isomer@coders.net>
+ * ircd/s_err.c: Suggested wording change.
+ * ircd/s_user.c: Users aren't target limited against +k users.
+ * ircd/chkconf.c: Made it compile again, who knows if it works, but
+ now I can at least make install
+ * various: Cleanups on m_*.c files.
+
+
+2001-04-23 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_misc.c (exit_client): make netsplit server notice say the
+ right thing
+
+ * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
+ change to make Khaled happy...
+
+ * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
+ (do_whois): duh...
+
+2001-04-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
+ turned up no more bugs
+
+ * ircd/ircd.c: use /* */ comments instead of // comments--all the
+ world's not gcc :(
+
+ * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
+ // comments--all the world's not gcc :(
+
+ * ircd/runmalloc.c: finally garbage-collect unused file
+
+ * include/runmalloc.h: finally garbage-collect unused file
+
+ * ircd/<multiple files>: addition of '#include "config.h"' before
+ all other includes in most .c files
+
+ * include/<multiple files>: remove includes of config.h, which are
+ now going into the raw .c files
+
+2001-04-20 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_whois.c (do_whois): display proper server name if the
+ user is looking up himself
+
+ * ircd/m_who.c (m_who): disable match by servername or display of
+ server names by non-opers
+
+ * include/ircd_policy.h: add define for
+ HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
+ of CFV 165
+
+2001-04-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_conf.c: keep the $R in memory so we can see it clearly
+ when we do a /stats k
+
+ * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
+ users from turning on +s and +g
+
+ * ircd/s_misc.c (exit_client): pull-up of changes to turn off
+ net.split notice
+
+ * ircd/parse.c: pull-up of changes to disable /trace, /links, and
+ /map for users
+
+ * ircd/m_whois.c (do_whois): pull-up of server name masking for
+ /whois
+
+ * ircd/m_user.c (m_user): removal of umode and snomask defaulting
+ functions, pull-up
+
+ * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
+
+ * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
+
+ * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
+
+ * ircd/channel.c (channel_modes): pull-up of channel key display
+ as *
+
+ * include/ircd_policy.h: pull-up of ircd_policy.h
+
+ * include/client.h: pull-up of Set/ClearServNotice()
+
+ * ircd/gline.c (do_gline): report client name in G-line message
+ (pull-up)
+
+ * ircd/s_user.c (register_user): pull-up--show IP address in some
+ server notices dealing only with users; report which connection
+ class has filled up
+
+ * ircd/s_stats.c (report_deny_list): use conf->flags &
+ DENY_FLAGS_IP insteaf of conf->ip_kill
+
+ * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
+ insteaf of conf->ip_kill
+
+ * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
+ K-line by real name
+
+ * include/s_conf.h: use a flags field in struct DenyConf; define
+ DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
+ pull-up of K-line by real name
+
+ * ircd/m_trace.c: pull-up of IP show for user connections
+
+ * doc/example.conf: pull-up of the realname K-line documentation
+
+ * ircd/ircd.c: forward port of pid file advisory locking mechanism
+
+2001-04-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
+ all servers, rather than to only servers that have +w/+g/whatever
+ users on them; among other things, this removes that atrocity
+ known as sentalong[] from this function
+
+ * ircd/m_admin.c: must include ircd.h to declare "me"; must
+ include hash.h to declare FindUser()
+
+ * ircd/m_wallusers.c: implementation of WALLUSERS
+
+ * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
+
+ * ircd/m_wallops.c: only send WALLOPS to opers
+
+ * ircd/parse.c: add WALLUSERS command to parser table
+
+ * include/handlers.h: declare wallusers handlers
+
+ * include/msg.h: add WALLUSERS command
+
+ * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
+ flag, send only to appropriate opers
+
+2001-04-13 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/uping.c: refit to use the new events interface
+
+ * ircd/res.c: refit to use the new events interface
+
+ * ircd/ircd_events.c: create timer_chg(), which permits a
+ (non-periodic) timer's expire time to be modified; change the
+ logic in timer_run() so that timers that were re-added while the
+ event was being processed will not be destroyed prematurely
+
+ * include/uping.h: include the events header, declare some extra
+ fields in struct UPing, remove timeout value, and define some
+ flags for marking which cleanup items have yet to be done
+
+ * include/ircd_events.h: add a prototype for timer_chg() to change
+ the expire time of a running timer
+
+2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
+ * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
+
+2001-03-07 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * config/configure.in: Add check for OpenBSD
+
+ * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
+ differs from generic BSD, particularly in its handling of
+ _XOPEN_SOURCE.
+
+2001-02-12 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
+ have been added by a U-lined server, rather than going through the
+ activate/deactivate logic; propagate G-line removals by U-lined
+ servers as well
+
+ * ircd/gline.c: rename propagate_gline() to gline_propagate();
+ make gline_propagate() return an int 0 (convenience return); only
+ update lastmod in gline_activate() and gline_deactivate() if the
+ current lastmod is non-zero, since 0 lastmod is our flag of a
+ U-lined server having added a G-line
+
+ * include/gline.h (gline_propagate): exporting the G-line
+ propagation function
+
+ * ircd/m_list.c (m_list): duh; permit explicit channel name
+ specification only when /list gets two arguments ("Kev
+ #wasteland") rather than when /list gets more than two
+ arguments--nice braino
+
+2001-01-29 Thomas Helvey <twhelvey1@home.com>
+
+ * ircd/ircd_reply.c (need_more_params): fix bug that allowed
+ unregistered clients to spam opers with protocol violation
+ messages. Note: the bugfix may have eliminated some useful
+ protocol violation messages.
+ Please send protocol violation messages explicitly from the
+ functions they are discovered in, you have much better context
+ for the error there and it helps to document the behavior of the
+ server. This was also a design bug in that it violated the
+ "A function should do one thing" heuristic. Patching this one
+ would have resulted in a continuous spawning of other bugs over
+ the next 3 years, so I killed it. Check around for stuff this
+ broke and readd the calls to protocol_violation in the functions
+ that need to send the message.
+
+2001-01-29 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
+ already existed, then the logic would (attempt to) skip it, but
+ would not free the ban string; now the ban string is free'd and
+ the ban count is decremented, releasing the ban for use
+
+ * ircd/s_user.c: make send_umode_out() take a prop argument
+ instead of testing for the PRIV_PROPAGATE privilege itself; fix
+ set_umode() to use this new argument, calculating it before
+ calculating the new privileges for a -o'd user
+
+ * ircd/m_oper.c (m_oper): pass the new prop argument to
+ send_umode_out()
+
+ * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
+ that we're not actually going to add because they already exist;
+ test that particular bit before adding to the linked list
+
+ * include/s_user.h: add a prop argument to send_umode_out() to
+ indicate whether or not to propagate the user mode
+
+2001-01-24 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
+ it would have written; upper-bound the number to prevent overflows
+ by proxy; also, tune buffer size given to ircd_vsnprintf() to take
+ into account the fact that ircd_vsnprintf() already takes the
+ terminal \0 into account
+
+2001-01-22 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/msgq.c: add an incredibly ugly hack to attempt to track
+ down an apparent buffer overflow; remove msgq_map(), since it's no
+ longer used anywhere; slight tweaks to prevent off-by-one errors,
+ but these can't explain the problems we've seen
+
+ * include/msgq.h: remove msgq_map(), since it's no longer used
+ anywhere
+
+2001-01-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_nick_name): call client_set_privs() after
+ parsing user modes
+
+2001-01-17 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c (read_message): fix a typo in the select version of
+ read_message()
+
+ * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
+ its argument to be an lvalue, which means we can't use
+ whowas_clean()'s handy-dandy "return ww" feature
+
+ * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
+
+2001-01-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c (timer_run): it's possible that the timer got
+ deleted during the callback processing, so don't go to the bother
+ of requeuing it if the destroy flag is set
+
+ * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
+ out of config.h if this is a *BSD; include errno.h (oops);
+ decrement error count after an hour using a timer; use FD_SETSIZE
+ constant instead of IRCD_FD_SETSIZE constant; fill in event
+ processing code
+
+ * ircd/engine_poll.c: include errno.h (oops); decrement error
+ count after an hour using a timer; fill in event processing code
+
+ * ircd/engine_kqueue.c: include errno.h (oops); decrement error
+ count after an hour using a timer; assert events filter is either
+ EVFILT_READ or EVFILT_WRITE; fill in event processing code
+
+ * ircd/engine_devpoll.c: include errno.h (oops); decrement error
+ count after an hour using a timer; fill in event processing code
+
+2001-01-15 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/client.c: fixed feattab; basically, when I changed features
+ to use small integers specifying bit positions, instead of the
+ bits themselves, I forgot to update feattab to not | these
+ privileges together; also fixed a bug in the antiprivs masking
+ loop in client_set_privs()--last index wouldn't get parsed
+
+2001-01-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c: call event_generate() with new data
+ argument; make it set that field in struct Event; make
+ socket_add() return the value of the eng_add callback
+
+ * ircd/engine_select.c: make engine_add() return a
+ successful/unsuccessful status; add bounds-checking outside of an
+ assert; use accessor macros; use log_write(), not the deprecated
+ ircd_log(); add an assert to engine_loop() to double-check for
+ data structure corruption
+
+ * ircd/engine_poll.c: make engine_add() return a
+ successful/unsuccessful status; add bounds-checking outside of an
+ assert; use accessor macros; use log_write(), not the deprecated
+ ircd_log(); add an assert to engine_loop() to double-check for
+ data structure corruption
+
+ * ircd/engine_kqueue.c: implementation of an engine for kqueue()
+
+ * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
+
+ * include/ircd_events.h: define some accessor macros; add ev_data
+ to struct Event for certain important data--errno values, for
+ instance; make EngineAdd callback tell us if it was successful or
+ not; add extra argument to event_generate(); make socket_add()
+ return the status from EngineAdd
+
+2001-01-10 &nbs