+2005-03-19 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.