+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