Various I/O cleanups and fixes.
[srvx.git] / ChangeLog
index a482643a456078ba90c73ab1564a6c4989f3cb52..2e42b83d9a75e2fc9900f88eb77640a2cc36a31c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 # do not edit -- automatically generated by arch changelog
-# arch-tag: automatic-ChangeLog--srvx@srvx.net--2005-srvx/srvx--devo--1.3
+# arch-tag: automatic-ChangeLog--srvx@srvx.net--2006/srvx--devo--1.3
 #
 
-2005-12-23 03:14:44 GMT        Michael Poole <mdpoole@troilus.org>     patch-36
+2006-10-21 16:06:47 GMT        Michael Poole <mdpoole@troilus.org>     patch-60
 
     Summary:
-      Update rx/Makefile.in for current automake.
+      Various I/O cleanups and fixes.
     Revision:
-      srvx--devo--1.3--patch-36
+      srvx--devo--1.3--patch-60
 
-    rx/Makefile.in: Update to use the same version of automake as the
-        project's other Makefile.in files.
+    src/ioset.c (ioset_add): Set FD_CLOEXEC flag on all managed sockets.
+      (ioset_try_write): Tidy formatting.
+      (ioset_close): Add another bit to "os_close".
+    
+    src/proto-common.c (close_socket): Pass the new bit to ioset_close().
 
     modified files:
-     ChangeLog rx/Makefile.in
+     ChangeLog src/ioset.c src/proto-common.c
 
 
-2005-12-23 03:11:09 GMT        Michael Poole <mdpoole@troilus.org>     patch-35
+2006-10-21 16:04:19 GMT        Michael Poole <mdpoole@troilus.org>     patch-59
 
     Summary:
-      Default to not trimming users on vacation.
+      Add 'tell' command; update copyright message.
     Revision:
-      srvx--devo--1.3--patch-35
+      srvx--devo--1.3--patch-59
 
-    chanserv.c (cmd_trim_users): New argument to indicate whether users on
-        vacation should be included.
-      (cmd_trim): Parse an extra option to control that argument.
-    
-    chanserv.help: Document this change.
+    src/modcmd.c (cmd_version): Update copyright years.  Move the multi-line
+        credits to a separate message and make it actually send properly.
+      (cmd_tell): New command.
+      (modcmd_init): Register cmd_tell.
 
     modified files:
-     ChangeLog src/chanserv.c src/chanserv.help
+     ChangeLog src/modcmd.c
 
 
-2005-12-23 03:06:55 GMT        Michael Poole <mdpoole@troilus.org>     patch-34
+2006-10-07 00:03:52 GMT        Michael Poole <mdpoole@troilus.org>     patch-58
 
     Summary:
-      Update config.guess and config.sub
+      Fix a (tiny) memory leak in mod-sockcheck.c.
     Revision:
-      srvx--devo--1.3--patch-34
+      srvx--devo--1.3--patch-58
 
-    config.guess: Update to support newer targets.
-    config.sub: Likewise.
+    src/mod-sockcheck.c (sockcheck_begin_test): Make io_fd assignment
+        clearer.
+      (sockcheck_read_conf): Free the addrinfo we get.
 
     modified files:
-     ChangeLog config.guess config.sub
+     ChangeLog src/mod-sockcheck.c
 
 
-2005-11-17 20:43:26 GMT        Michael Poole <mdpoole@troilus.org>     patch-33
+2006-10-06 23:18:58 GMT        Michael Poole <mdpoole@troilus.org>     patch-57
 
     Summary:
-      Fixes for LP64 models; announce IPv6 support.
+      Fix sending P10 bursts with many bans.
     Revision:
-      srvx--devo--1.3--patch-33
+      srvx--devo--1.3--patch-57
+
+    src/proto-p10.c (irc_burst): Only send modes and user list once.
+
+    modified files:
+     ChangeLog src/proto-p10.c
 
-    src/alloc-slab.c (SMALL_CUTOFF): Adjust to a multiple of 8.
+
+2006-10-06 23:16:58 GMT        Michael Poole <mdpoole@troilus.org>     patch-56
+
+    Summary:
+      Remove "wants_reads" field from struct io_fd.
+    Revision:
+      srvx--devo--1.3--patch-56
+
+    Everybody wants read information, so give it to them!
+    
+    src/ioset-epoll.c (ioset_epoll_events): Make EPOLLIN unconditional.
     
-    src/alloc-srvx.c (srvx_malloc): Fix format string for LP64.
+    src/ioset-impl.h (fd_wants_reads): Delete.
     
-    src/md5.h (UINT4): Fix typedef for LP64.
+    src/ioset-select.c (ioset_select_loop): Unconditionally set read bit for fd.
     
-    src/opserv.c (cmd_warn): Fix whitespace.
+    src/ioset.c (ioset_add): Add fd to engine after marking it non-blocking.
+      (ioset_buffered_reads): Remove check for fd->wants_reads.
     
-    src/proto-p10.c (irc_server): Announce IPv6 support.
+    src/ioset.h (struct io_fd): Delete "wants_reads" field.
+    
+    src/mod-qserver.c (qserver_readable): Add missing newline.
+      (qserver_accept): Delete assignment to fd->wants_reads.
+    
+    src/mod-sockcheck.c (sockcheck_connected): Delete assignment to
+        fd->wants_reads.
+    
+    src/proto-common.c (create_socket_client): Delete assignment to
+        fd->wants_reads.
 
     modified files:
-     ChangeLog src/alloc-slab.c src/alloc-srvx.c src/md5.h
-     src/opserv.c src/proto-p10.c
+     ChangeLog src/ioset-epoll.c src/ioset-impl.h
+     src/ioset-select.c src/ioset.c src/ioset.h src/mod-qserver.c
+     src/mod-sockcheck.c src/proto-common.c
 
 
-2005-11-01 00:37:44 GMT        Michael Poole <mdpoole@troilus.org>     patch-32
+2006-10-06 23:12:20 GMT        Michael Poole <mdpoole@troilus.org>     patch-55
 
     Summary:
-      Avoid leaking information through ChanServ's ban matching.
+      Fix detection of gettimeofday().
     Revision:
-      srvx--devo--1.3--patch-32
+      srvx--devo--1.3--patch-55
 
-    src/common.h (user_matches_glob): Convert last argument to be flags.
-    
-    src/tools.c (user_matches_glob): Reorder tests to properly implement
-        the MATCH_VISIBLE flag.
+    configure.in: Since we have a fallback for gettimeofday, move it in with
+        the functions for which we do.
+
+    modified files:
+     ChangeLog configure.in
+
+
+2006-10-04 01:41:05 GMT        Michael Poole <mdpoole@troilus.org>     patch-54
+
+    Summary:
+      Make timeq_init() automatic.
+    Revision:
+      srvx--devo--1.3--patch-54
+
+    src/main.c (main): Remove call to timeq_init().
     
-    src/chanserv.c: Update callers of user_matches_glob() to set
-        the MATCH_VISIBLE flag (in addition to MATCH_USENICK).
+    src/timeq.h (timeq_init): Remove declaration.
     
-    src/opserv.c: Update callers of user_matches_glob() to pass the
-        MATCH_USENICK flag.
+    src/timeq.c (timeq_cleanup): Assign NULL to timeq to handle late timeq_del() calls.
+      (timeq_init): Make static.
+      (timeq_next): If timeq is NULL, return a large positive number.
+      (timeq_add): If timeq is NULL, initialize it.
+      (timeq_del): If timeq is NULL, do nothing.
 
     modified files:
-     ChangeLog src/chanserv.c src/common.h src/opserv.c src/tools.c
+     ChangeLog src/main.c src/timeq.c src/timeq.h
 
 
-2005-11-01 00:23:14 GMT        Michael Poole <mdpoole@troilus.org>     patch-31
+2006-10-04 01:37:40 GMT        Michael Poole <mdpoole@troilus.org>     patch-53
 
     Summary:
-      Handle default oplevels.
+      Allow log_module() to NULL log types.
     Revision:
-      srvx--devo--1.3--patch-31
+      srvx--devo--1.3--patch-53
 
-    src/chanserv.c (cmd_mode): Calculate base oplevel as 1 plus one point
-        for each access level below owner.
-      (chan_opt_modes): Add new argument for mod_chanmode_parse().
-      (chanserv_conf_read): Likewise.
-      (chanserv_channel_read): Likewise.
-    
-    src/hash.c (AddChannel): Likewise.
-      (AddChannelUser): Set oplevel by default.
+    src/log.c (log_module): To make cleanup easier, allow NULL log types.
+
+    modified files:
+     ChangeLog src/log.c
+
+
+2006-10-04 01:32:57 GMT        Michael Poole <mdpoole@troilus.org>     patch-52
+
+    Summary:
+      Fix some startup-related glitches.
+    Revision:
+      srvx--devo--1.3--patch-52
+
+    src/ioset.h (ioset_update): Declare new function.
     
-    src/hash.h (MAXOPLEVEL): New define value.
-      (modeNode): Shrink modes and oplevel fields.
+    src/ioset.c (ioset_init): If we have an engine, return early.
+      (ioset_add): If no engine, try to initialize.
+      (ioset_update): New function.
+
+    modified files:
+     ChangeLog src/ioset.c src/ioset.h
+
+
+2006-10-04 01:23:10 GMT        Michael Poole <mdpoole@troilus.org>     patch-51
+
+    Summary:
+      Update time for ioset backend.
+    Revision:
+      srvx--devo--1.3--patch-51
+
+    src/ioset-epoll.c (ioset_epoll_loop): Set now after epoll_wait() returns.
+
+    modified files:
+     ChangeLog src/ioset-epoll.c
+
+
+2006-10-03 23:18:25 GMT        Michael Poole <mdpoole@troilus.org>     patch-50
+
+    Summary:
+      I18n'ize the staff descriptors in !access.
+    Revision:
+      srvx--devo--1.3--patch-50
+
+    src/chanserv.c (msgtab): Add new entries for staff descriptors.
+      (cmd_access): Use them.
+
+    modified files:
+     ChangeLog src/chanserv.c
+
+
+2006-09-23 01:14:35 GMT        Michael Poole <mdpoole@troilus.org>     patch-49
+
+    Summary:
+      ioset event handling fixups
+    Revision:
+      srvx--devo--1.3--patch-49
+
+    src/ioset.c (ioset_connect): Properly handle the situation if the connect
+        handler closes the fd.
+      (ioset_accept): Rename "old_active_fd" to "old_active" for consistency.
+      (ioset_buffered_read): Make sure we bail if the fd is closed.
+      (ioset_events): Handle 'readable' on a connecting fd as an error.
+
+    modified files:
+     ChangeLog src/ioset.c
+
+
+2006-09-23 01:03:08 GMT        Michael Poole <mdpoole@troilus.org>     patch-48
+
+    Summary:
+      Dummy handling fixes.
+    Revision:
+      srvx--devo--1.3--patch-48
+
+    src/proto-p10.c (irc_notice): Fix the conditions for sending message to
+        IRC.
+      (irc_privmsg): Likewise.
+      (parse_cleanup): Zero num_*_funcs when freeing the corresponding
+        arrays, so that DelUser() doesn't read after free.
+
+    modified files:
+     ChangeLog src/proto-p10.c
+
+
+2006-09-23 00:58:27 GMT        Michael Poole <mdpoole@troilus.org>     patch-47
+
+    Summary:
+      Fix hostmask generation for hostnames without dots.
+    Revision:
+      srvx--devo--1.3--patch-47
+
+    src/proto-common.c (generate_hostmask): Keep no-dot hostnames as the
+        mask -- mod-qserver can generate hostnames like "localhost".
+
+    modified files:
+     ChangeLog src/proto-common.c
+
+
+2006-09-23 00:55:02 GMT        Michael Poole <mdpoole@troilus.org>     patch-46
+
+    Summary:
+      Default qserver clients to being opers.
+    Revision:
+      srvx--devo--1.3--patch-46
+
+    src/mod-qserver.c (qserver_accept): Default dummy client to having
+        usermode +o, so they can use privileged services.
+
+    modified files:
+     ChangeLog src/mod-qserver.c
+
+
+2006-09-23 00:52:48 GMT        Michael Poole <mdpoole@troilus.org>     patch-45
+
+    Summary:
+      Further giveownership confirmation fixes.
+    Revision:
+      srvx--devo--1.3--patch-45
+
+    src/chanserv.c (CSMSG_CONFIRM_GIVEOWNERSHIP): Prepend * to account name.
+      (cmd_giveownership): Check invoker access to determine need for confirmation.
+
+    modified files:
+     ChangeLog src/chanserv.c
+
+
+2006-09-22 03:33:25 GMT        Michael Poole <mdpoole@troilus.org>     patch-44
+
+    Summary:
+      Fix comment about +O vs +o.
+    Revision:
+      srvx--devo--1.3--patch-44
+
+    src/hash.h (FLAGS_OPER): The user mode is actually +o, not +O.
+
+    modified files:
+     ChangeLog src/hash.h
+
+
+2006-09-22 03:28:08 GMT        Michael Poole <mdpoole@troilus.org>     patch-43
+
+    Summary:
+      Fix license notice for mod-qserver.c
+    Revision:
+      srvx--devo--1.3--patch-43
+
+    src/mod-qserver.c: Since this was for public distribution, use the
+        standard GPL header notice.
+
+    modified files:
+     ChangeLog src/mod-qserver.c
+
+
+2006-09-22 03:05:54 GMT        Michael Poole <mdpoole@troilus.org>     patch-42
+
+    Summary:
+      Add win32 specific files to tarballs.
+    Revision:
+      srvx--devo--1.3--patch-42
+
+    Makefile.am (EXTRA_DIST): Include Makefile.win32.
     
-    src/opserv.c (cmd_chaninfo): Fix indentation; show oplevel after
-        nickname rather than before it.
+    src/Makefile.am (EXTRA_srvx_SOURCES): Include config.h.win32 and ioset-win32.c.
+
+    modified files:
+     ChangeLog Makefile.am src/Makefile.am
+
+
+2006-09-22 03:02:07 GMT        Michael Poole <mdpoole@troilus.org>     patch-41
+
+    Summary:
+      First pass at native Win32 support (does not compile).
+    Revision:
+      srvx--devo--1.3--patch-41
+
+    src/compat.h: Handle Windows Sockets 2 headers.
     
-    src/proto.h (mod_chanmode_parse): Declare new parameter.
+    src/mod-memoserv.c (KEY_READ): #undef'ine to avoid its registry access
+        meaning on Windows.
     
-    src/proto-bahamut.c (mod_chanmode_parse): Add new parameter (and
-        ignore it).
+    Makefile.win32: New Makefile for native or cross builds targeting Win32.
     
-    src/proto-common.c (mod_chanmode): Find the default oplevels for
-        parsing the mode change.
+    src/config.h.win32: Pregenerated config.h for Win32.
     
-    src/proto-p10.c (create_desc): Remove oplevel field.
-      (join_helper): Do not try to set oplevel for new modeNode.
-      (parse_foreach): Do not bother parsing oplevels in JOIN, since they
-        are no longer used.
-      (mod_chanmode_parse): Add new parameter and use it to determine the
-        oplevel to set when a valid oplevel one is not specified.
+    src/ioset-win32.c: First attempt at a Win32 ioset backend.
+
+    new files:
+     .arch-ids/Makefile.win32.id Makefile.win32
+     src/.arch-ids/config.h.win32.id src/.arch-ids/ioset-win32.c.id
+     src/config.h.win32 src/ioset-win32.c
 
     modified files:
-     ChangeLog src/chanserv.c src/hash.c src/hash.h src/opserv.c
-     src/proto-bahamut.c src/proto-common.c src/proto-p10.c
-     src/proto.h
+     ChangeLog src/compat.h src/mod-memoserv.c
 
 
-2005-10-13 02:20:55 GMT        Michael Poole <mdpoole@troilus.org>     patch-30
+2006-09-22 02:51:50 GMT        Michael Poole <mdpoole@troilus.org>     patch-40
 
     Summary:
-      Default ?block (etc) to G-line by IP; fix a buffer issue.
+      Add direct query server module.
     Revision:
-      srvx--devo--1.3--patch-30
+      srvx--devo--1.3--patch-40
 
-    src/opserv.c (opserv_block): Rewrite to block by IP rather than
-        hostname.
-      (opserv_new_user_check): Avoid overrunning the target buffer.
+    srvx.conf.example: Document qserver configuration.
+    
+    src/Makefile.am (EXTRA_srvx_SOURCES): Add mod-qserver.c.
+    
+    src/mod-qserver.c: New file.
+
+    new files:
+     src/.arch-ids/mod-qserver.c.id src/mod-qserver.c
 
     modified files:
-     ChangeLog src/opserv.c
+     ChangeLog src/Makefile.am src/ioset-epoll.c srvx.conf.example
 
 
-2005-10-08 14:56:31 GMT        Michael Poole <mdpoole@troilus.org>     patch-29
+2006-09-22 02:45:20 GMT        Michael Poole <mdpoole@troilus.org>     patch-39
 
     Summary:
-      Initial oplevel support.
+      Add epoll_* ioset backend.
     Revision:
-      srvx--devo--1.3--patch-29
+      srvx--devo--1.3--patch-39
 
-    src/proto-p10.c: Fix a few bugs and compile errors in oplevel code.
+    configure.in: Check for epoll_create(); demote select() from being required.
     
-    Patches applied:
+    src/Makefile.am (EXTRA_srvx_SOURCES): Add ioset-epoll.c.
     
-     * sp@gamesurge.net--2005/srvx--sp--1.3--patch-1
-       Oplevel support
-    
-     * sp@gamesurge.net--2005/srvx--sp--1.3--patch-2
-       Oplevel support (part 2)
+    src/ioset-epoll.c: New file.
+
+    new files:
+     src/.arch-ids/ioset-epoll.c.id src/ioset-epoll.c
 
     modified files:
-     ChangeLog src/hash.c src/hash.h src/opserv.c
-     src/proto-common.c src/proto-p10.c src/proto.h
+     ChangeLog configure.in src/Makefile.am
 
-    new patches:
-     sp@gamesurge.net--2005/srvx--sp--1.3--patch-1
-     sp@gamesurge.net--2005/srvx--sp--1.3--patch-2
 
+2006-09-22 02:38:21 GMT        Michael Poole <mdpoole@troilus.org>     patch-38
 
-2005-10-08 14:33:12 GMT        Michael Poole <mdpoole@troilus.org>     patch-28
+    Summary:
+      Allow multiple ioset backends.
+    Revision:
+      srvx--devo--1.3--patch-38
+
+    configure.in: Add framework to check for ioset backends.
+    
+    src/Makefile.am (noinst_DATA): Reorganize for easier patching.
+      (checkversion): Avoid spurious error message if $(GNU_ARCH) is missing.
+      (EXTRA_srvx_SOURCES): Reorganize for easier patching; add ioset-select.c.
+      (srvx_SOURCES): Add ioset-impl.h.
+    
+    src/ioset.c (ioset.h): #include "ioset-impl.h" instead.
+      (clock_skew): Make non-static for backends.
+      (engine): New variable.
+      (active_fd): New variable (kind of kludgy).
+      (io_engine_*): New variables, only one exists so far.
+      (ioset_init): New function.
+      (ioset_cleanup): Call engine's cleanup function.
+      (ioset_add): Call engine's add function.
+      (ioset_listen): New function.
+      (ioset_connect): Call engine's update functions at appropriate points.
+      (ioset_try_write): Call engine's update function on success.
+      (ioset_close): Change signature; check against active_fd; call engine's
+        remove function.
+      (ioset_accept): New function.
+      (ioset_buffered_read): Update fd->state instead of fd->eof and call
+        engine's update function as appropriate.  Use active_fd.
+      (ioset_line_read): Check fd->state instead of fd->eof.
+      (debug_fdsets): Move to ioset-select.c.
+      (ioset_events): New function.
+      (ioset_run): Move most of the logic into ioset-select loop function;
+        call it.  Rename "select_timeout" to "timeout" to match.
+      (ioset_write): Call engine->update function.
+      (ioset_printf): New function.
+    
+    src/ioset.h (common.h): #include this header to get PRINTF_LIKE macro.
+      (struct io_fd): Replace 'connected' and 'eof' fields with 'state' field.
+      (ioset_init): Declare new function.
+      (ioset_listen): Declare new function.
+      (ioset_printf): Declare new function.
+      (ioset_close): Update signature.
+    
+    src/main.c (main): Call ioset_init().
+    
+    src/mod-sockcheck.c (sockcheck_free_client): Can unconditionally call
+        ioset_close() now.
+      (expand_var): Always use C99 type names.
+      (sockcheck_begin_test): Can unconditionally call ioset_close() now.
+      (sockcheck_read_conf): Only warn about unknown host if the user set
+        one; it is silly to arn about unknown host `(null)'.
+    
+    src/proto-common.c (socket_destroyed): Check fd->state rather than
+        fd->eof.
+      (close_socket): Update signature for ioset_close().
+
+    new files:
+     src/.arch-ids/ioset-impl.h.id src/.arch-ids/ioset-select.c.id
+     src/ioset-impl.h src/ioset-select.c
+
+    modified files:
+     ChangeLog configure.in src/Makefile.am src/ioset.c src/ioset.h
+     src/main.c src/mod-sockcheck.c src/proto-common.c
+
+
+2006-09-22 02:15:55 GMT        Michael Poole <mdpoole@troilus.org>     patch-37
 
     Summary:
-      Add IPv6 support.
+      Add "dummy client" support.
     Revision:
-      srvx--devo--1.3--patch-28
+      srvx--devo--1.3--patch-37
+
+    src/hash.h (FLAGS_DUMMY): New flag for non-propagated clients.
+      (IsDummy): Check it.
+    
+    src/helpfile.c (send_message): Allow sending to dummy clients.
+      (send_message_type): Likewise.
+    
+    src/proto-bahamut.c (irc_user): Bail if user is NULL or has a dummy nickname.
+      (deliver_to_dummy): New function.
+      (irc_privmsg): Try to deliver via dummy method before sending to IRC.
+      (irc_notice): Likewise.
+      (irc_notice_user): Likewise.
+      (AddUser): If the first user mode character is '*', mark as a dummy.
+      (DelUser): Unregister callback functions when destroying local clients.
+    
+    src/proto-p10.c (irc_user): Bail if user is NULL or has a dummy nickname.
+      (deliver_to_dummy): New function.
+      (irc_notice): Try to deliver via dummy method before sending to IRC.
+      (irc_notice_user): Likewise.
+      (irc_privmsg): Likewise.
+      (AddUser): If the first user mode character is '*', mark as a dummy.
+      (DelUser): Unregister callback functions when destroying local clients.
 
-    configure.in: Check for struct sockaddr.sa_len and struct addrinfo.
-        Also check for freeaddrinfo, getaddrinfo and getnameinfo.
-    
-    src/common.h: Define irc_in_addr and macros to operate on it.  Declare
-        irc_ntop(), irc_ntop_mask(), irc_pton(), irc_check_mask() and
-        irc_ntoa().  Remove declaration for parse_ipmask() and undefine
-        INADDR_NONE, INADDR_LOOPBACK and MATCH_IPMASK().
-    
-    src/compat.h (struct addrinfo): Define if it and some flags if not
-        defined by the system.
-      (getaddrinfo): Declare if necessary.
-      (getnameinfo): Likewise.
-      (freeaddrinfo): Likewise.
-    
-    src/compat.c (memcpy): Do not try to fall back onto bcopy.
-      (getaddrinfo): Define if it is not defined by the system.
-      (freeaddrinfo): Likewise.
-    
-    src/gline.c (gline_alternate_target): Gut in preparation of a
-        necessary rewrite.  Blah.
-    
-    src/hash.h (struct userNode): Change type of ip field.
-    
-    src/ioset.c (ioset_connect): Update to support non-IPv4 protocols.
-    
-    src/main.c (uplink_insert): Update to support non-IPv4 protocols.
-    
-    src/mod-snoop.c (snoop_new_user): Use irc_ntoa() instead of inet_ntoa().
-    
-    src/mod-sockcheck.c (sockcheck_cache_info): Update address field type
-        and length of hostname field.
-      (sockcheck_conf): Update type of local_addr.
-      (sockcheck_issue_gline): Update to use irc_ntop().
-      (expand_var): Get client IPv4 address from its new place.
-      (sockcheck_decide): Do not print the IP twice.
-      (sockcheck_begin_test): Remove unnecessary typecast.
-      (sockcheck_start_client): Do not print the IP twice.
-      (sockcheck_queue_address): Use irc_in_addr_t and irc_ntoa() to form
-        the target hostname.
-      (cmd_hostscan): Update manipulation functions to use new macros and
-        functions for irc_in_addr_t.
-      (cmd_clearhost): Likewise.
-      (sockcheck_new_user): Likewise.
-      (sockcheck_read_conf): Use getaddrinfo() instead of IPv4-only
-        functions.
-    
-    src/nickserv.c (cmd_register): Use newer validity checks for IP.
-    
-    src/opserv.c (IDENT_DATA): Use irc_ntoa() instead of inet_ntoa().
-      (struct opservDiscrim): Update ip_mask and ip_mask_bits type.
-      (cmd_whois): Use irc_ntoa() instead of inet_ntoa().
-      (opserv_new_user_check): Use irc_ntop() instead of inet_ntoa() and
-        update to newer validity check macros.
-      (opserv_user_cleanup): Use irc_ntop() instead of inet_ntoa().
-      (cmd_addtrust): Update to irc_in_addr_t and its functions.
-      (foreach_matching_user): Use irc_pton() instead of the mess that
-        existed before.
-      (opserv_discrim_create): Use irc_pton() instead of parse_ipmask().
-      (discrim_match): Use irc_check_mask() instead of MATCH_IPMASK(), and
-        remove ip_mask_str check.
-      (opserv_discrim_search): Decide whether an IP match is fully
-        qualified based on ip_mask_bits instead of ip_mask_str.
-      (trace_domains_func): Add IPv6 support.
-      (opserv_staff_alert): Update to new IP validity check macro.
-    
-    src/proto.h (struct uplinkNode): Fix type of bind_addr field.
-    
-    src/proto-bahamut.c (AddUser): Use irc_in_addr_t.
-      (AddService): Default to an all-zero IP instead of loopback.
-      (AddClone): Likewise.
-      (irc_user): Use new layout for IPv4 in irc_in_addr_t.
-      (cmd_nick): Likewise.
-    
-    src/proto-common.c (create_socket_client): Remove unnecessary
-        typecast.
-      (generate_hostmask): Update to use irc_in_addr_t and support
-        functions instead of IPv4-specific things.
-    
-    src/proto-p10.c (irc_p10_pton): New function.
-      (irc_p10_ntop): New function.
-      (irc_user): Use irc_p10_ntop().
-      (AddClone): Use irc_p10_pton().
-    
-    src/tools.c (ctype): New array holding values of characters as hex.
-      (irc_ntop): New function.
-      (irc_ntop_mask): New function.
-      (irc_pton_ip4): New helper function.
-      (irc_pton): New function.
-      (irc_ntoa): New function.
-      (irc_check_mask): New function.
-      (user_matches_glob): Use irc_ntoa() instead of inet_ntoa().
-      (parse_ipmask): Delete this function.
-
-    modified files:
-     ChangeLog configure.in src/common.h src/compat.c src/compat.h
-     src/gline.c src/hash.h src/ioset.c src/main.c src/mod-snoop.c
-     src/mod-sockcheck.c src/nickserv.c src/opserv.c
-     src/proto-bahamut.c src/proto-common.c src/proto-p10.c
-     src/proto.h src/tools.c
-
-
-2005-10-07 02:51:12 GMT        Michael Poole <mdpoole@troilus.org>     patch-27
-
-    Summary:
-      Fix compiler warnings on AMD64 Linux.
+    modified files:
+     ChangeLog src/hash.h src/helpfile.c src/proto-bahamut.c
+     src/proto-p10.c
+
+
+2006-09-22 01:56:07 GMT        Michael Poole <mdpoole@troilus.org>     patch-36
+
+    Summary:
+      Delete obsolete and non-propagated user modes.
     Revision:
-      srvx--devo--1.3--patch-27
+      srvx--devo--1.3--patch-36
 
-    src/gline.c (gline_alternate_target): Typecast format field precision
-        argument.
+    src/hash.h (FLAGS_LOCOP): Delete.
+      (FLAGS_SERVNOTICE): Delete.
+      (FLAGS_HELPER): Delete.
+      (IsServNotice): Delete.
+      (IsHelperIrcu): Delete.
     
-    src/helpfile.c (helpfile_eval_identifier): Likewise.
-      (helpfile_eval_atomicexpr): Likewise.
-      (helpfile_eval_expr): Likewise.
-      (helpfile_eval_condition): Likewise.
+    src/opserv.c (cmd_whois): Remove IsServNotice() or IsHelperIrcu().
     
-    src/log.c (log_audit): Change typecast used to make types compatible.
+    src/proto-bahamut.c (mod_usermode): Do not handle +O/+s/+h, we never see them.
     
-    src/main.c (set_item_rlimit): Use long instead of int as contained value.
+    src/proto-p10.c (irc_user): Do not emit +s or +h, we never set them..
+      (mod_usermode): Do not handle +O/+s/+h, we never see them.
+
+    modified files:
+     ChangeLog src/hash.h src/opserv.c src/proto-bahamut.c
+     src/proto-p10.c
+
+
+2006-09-22 01:48:00 GMT        Michael Poole <mdpoole@troilus.org>     patch-35
+
+    Summary:
+      Merge AddService(), AddClone() into AddLocalUser()
+    Revision:
+      srvx--devo--1.3--patch-35
+
+    src/chanserv.c (init_chanserv): Convert AddService() call to AddLocalUser().
+    
+    src/global.c (init_global): Likewise.
+    
+    src/mod-helpserv.c (register_helpserv): Likewise.
+    
+    src/modcmd.c (cmd_service_add): Likewise.
+      (modcmd_load_bots): Likewise.
+    
+    src/nickserv.c (regex.h): Fall back to rxposix.h from local rx package.
+      (init_nickserv): Convert AddService() call to AddLocalUser().
+    
+    src/opserv.c (opserv_add_reserve): Convert AddClone() call to AddLocalUser().
+      (cmd_clone): Likewise.
+      (add_reserved): Likewise.
+      (init_opserv): Convert AddService() call to AddLocalUser().
     
-    src/sendmail.c (send_flowed_text): Typecast format field precision
-        argument.
+    src/proto-bahamut.c (AddService): Convert into AddLocalUser().
+      (AddClone): Delete.
+    
+    src/proto-p10.c (AddService): Convert into AddLocalUser().
+      (AddClone): Delete.
+    
+    src/proto.h (AddService): Convert into AddLocalUser().
+      (AddClone): Delete.
 
     modified files:
-     ChangeLog src/gline.c src/helpfile.c src/log.c src/main.c
-     src/sendmail.c
+     ChangeLog src/chanserv.c src/global.c src/mod-helpserv.c
+     src/modcmd.c src/nickserv.c src/opserv.c src/proto-bahamut.c
+     src/proto-p10.c src/proto.h
 
 
-2005-08-14 01:34:04 GMT        Michael Poole <mdpoole@troilus.org>     patch-26
+2006-09-22 01:35:03 GMT        Michael Poole <mdpoole@troilus.org>     patch-34
 
     Summary:
-      Improve channel merging and restrict channel age display.
+      Make IRC message handler 'text' const.
     Revision:
-      srvx--devo--1.3--patch-26
+      srvx--devo--1.3--patch-34
 
-    src/chanserv.c (merge_data): Merge registered and owner-transfer
-        timestamps, may_opchan flag, and max visitor count.
-      (cmd_info): Only show channel age if the user is privileged.
+    src/chanserv.c (chanserv_ctcp_check): Make 'text' parameter const.
+    
+    src/mod-helpserv.c (helpserv_usermsg): Likewise.
+      (helpserv_botmsg): Likewise.
+    
+    src/modcmd.c (svccmd_invoke): Likewise.
+      (modcmd_privmsg): Likewise.
+      (modcmd_chanmsg): Likewise.
+    
+    src/modcmd.h (SVCMSG_HOOK): Likewise.
+    
+    src/proto.h (chanmsg_func_t): Likewise.
+      (privmsg_func_t): Likewise.
 
     modified files:
-     ChangeLog src/chanserv.c
+     ChangeLog src/chanserv.c src/mod-helpserv.c src/modcmd.c
+     src/modcmd.h src/proto.h
 
 
-2005-07-19 18:31:26 GMT        Michael Poole <mdpoole@troilus.org>     patch-25
+2006-09-22 01:23:43 GMT        Michael Poole <mdpoole@troilus.org>     patch-33
 
     Summary:
-      Properly check alerts based on numchannels criteria
+      Add autogen.sh to distribution tarball.
     Revision:
-      srvx--devo--1.3--patch-25
+      srvx--devo--1.3--patch-33
 
-    src/opserv.c (opserv_add_user_alert): Channel alerts also include ones
-      with non-zero min_channels.  Allow an alert to be both channel-based
-      and nick-based.
+    Makefile.am: Add autogen.sh to the "extra" distributed files.
 
     modified files:
-     ChangeLog src/opserv.c
+     ChangeLog Makefile.am
 
 
-2005-07-19 18:18:48 GMT        Michael Poole <mdpoole@troilus.org>     patch-24
+2006-09-11 01:03:14 GMT        Michael Poole <mdpoole@troilus.org>     patch-32
 
     Summary:
-      Fix gcc-4.0 compile warnings and errors.
+      Support and use G-line lastmod timestamp.
     Revision:
-      srvx--devo--1.3--patch-24
+      srvx--devo--1.3--patch-32
 
-    configure.in: Make sure socklen_t is defined.
+    src/gline.c (KEY_LASTMOD): New key string.
+      (gline_add): Use new parameter to set lastmod.
+      (gline_add_record): Look for KEY_LASTMOD values.
+      (gline_write_entry): Set KEY_LASTMOD if lastmod is set.
+      (gline_discrim_create): Allow specification of lastmod criteria.
+      (gline_discrim_match): Check lastmod if appropriate.
     
-    src/chanserv.c (bad_channel_ban): Make victimCount unsigned.
+    src/gline.h (struct gline): Add lastmod field.
+      (struct gline_discrim): Add lastmod fields.
+      (gline_add): New parameter.
     
-    src/ioset.c (ioset_run): Fifth argument to getsockopt() should be
-      socklen_t.
+    src/mod-sockcheck.c (sockcheck_issue_gline): Set lastmod.
     
-    src/ioset.h (clock_skew): Undeclare; it is defined as static.
+    src/opserv.c (OSMSG_NO_GLINE): New format string.
+      (opserv_block): Set lastmod.
+      (cmd_gline): Set lastmod.
+      (cmd_stats_glines): Allow searching for a particular G-line (just like
+        gtrace).
+      (opserv_new_user_check): Set lastmod.
+      (gtrace_print_func): Use intervals rather than fixed dates and show
+        lastmod.
     
-    src/nickserv.c (is_secure_password): Create appropriately typed local
-      variable for third argument of dict_find().
+    src/opserv.help (GTRACE CRITERIA): Mention lastmod criteria.
     
-    src/opserv.c (opserv_bad_channel): Likewise.
+    src/proto-p10.c (irc_gline): Send lastmod if it is set.
+      (cmd_num_gline): Parse out lastmod if it is set.
+      (cmd_gline): Parse out lastmod if it is set.
+
+    modified files:
+     ChangeLog src/gline.c src/gline.h src/mod-sockcheck.c
+     src/opserv.c src/opserv.help src/proto-p10.c
+
+
+2006-09-09 21:37:28 GMT        Michael Poole <mdpoole@troilus.org>     patch-31
+
+    Summary:
+      Network event handler fixup when ChanServ is disabled.
+    Revision:
+      srvx--devo--1.3--patch-31
+
+    src/chanserv.c (init_chanserv): Do not register network event handlers if
+        ChanServ is disabled.
+
+    modified files:
+     ChangeLog src/chanserv.c
+
+
+2006-09-03 15:24:48 GMT        Michael Poole <mdpoole@troilus.org>     patch-30
+
+    Summary:
+      Make srvx compile on cygwin again.
+    Revision:
+      srvx--devo--1.3--patch-30
+
+    configure.in (AC_CHECK_HEADERS): Look for <arpa/inet.h>.
+      (AC_CHECK_FUNCS): Look for inet_aton().
+    
+    src/compat.c: Try to include <arpa/inet.h> so we get inet_addr().
+      (getaddrinfo): If inet_aton() is not provided, use inet_addr() instead.
+    
+    src/compat.h (AI_NUMERICHOST): Define this too.
+    
+    src/tools.c (irc_pton): Use the pedantically correct type for ip4.
+
+    modified files:
+     ChangeLog configure.in src/compat.c src/compat.h src/tools.c
+
+
+2006-09-03 15:21:10 GMT        Michael Poole <mdpoole@troilus.org>     patch-29
+
+    Summary:
+      DelChannelUser call and semantic fixups
+    Revision:
+      srvx--devo--1.3--patch-29
+
+    src/hash.c (DelChannel): Fix type of 'reason' arg to DelChannelUser().
+      (DelChannelUser): Only send part message if user is local.
     
-    src/proto-p10.c (call_oper_funcs): Declare at file scope rather than
-      locally to mod_usermode() function.
+    src/proto-bahamut.c (DelUser): Unswap arguments to DelChannelUser().
+      (cmd_part): Move to proto-common.c.
     
-    src/proto.h (dead_users): Undeclare; it is defined as static.
+    src/proto-common.c (part_desc): New structure type.
+      (part_helper): Use it to capture user and reason.
+      (cmd_part): New common function.
     
-    src/saxdb.c (saxdb_write_int): Fix type of string buffer.
+    src/proto-p10.c (cmd_part): Move to proto-common.c.
+      (DelUser): Unswap arguments to DelChannelUser().
+
+    modified files:
+     ChangeLog src/hash.c src/proto-bahamut.c src/proto-common.c
+     src/proto-p10.c
+
+
+2006-09-03 15:17:05 GMT        Michael Poole <mdpoole@troilus.org>     patch-28
+
+    Summary:
+      Do not try to moderate join-flood channels with no OpServ.
+    Revision:
+      srvx--devo--1.3--patch-28
+
+    src/opserv.c (opserv_join_check): As feigling points out, it is bad for a
+        service that does not exist to join a channel and hack modes.
+
+    modified files:
+     ChangeLog src/opserv.c
+
+
+2006-09-03 15:13:31 GMT        Michael Poole <mdpoole@troilus.org>     patch-27
+
+    Summary:
+      Fix ounregnick access check.
+    Revision:
+      srvx--devo--1.3--patch-27
+
+    src/nickserv.c (cmd_ounregnick): Use the standard rank-checking function.
+
+    modified files:
+     ChangeLog src/nickserv.c
+
+
+2006-09-03 15:11:29 GMT        Michael Poole <mdpoole@troilus.org>     patch-26
+
+    Summary:
+      Fix giveownership to how it should be
+    Revision:
+      srvx--devo--1.3--patch-26
+
+    src/chanserv.c (cmd_giveownership): Only require confirmation code if the
+      user has real (normal) access and is not forcing the giveownership.
+
+    modified files:
+     ChangeLog
+
+
+2006-09-03 15:10:58 GMT        Michael Poole <mdpoole@troilus.org>     patch-25
+
+    Summary:
+      Fix giveownership to how it should be
+    Revision:
+      srvx--devo--1.3--patch-25
+
+    src/chanserv.c (cmd_giveownership): Only require confirmation code if the
+      user has real (normal) access and is not forcing the giveownership.
+
+    modified files:
+     ChangeLog src/chanserv.c
+
+
+2006-08-19 13:31:08 GMT        Michael Poole <mdpoole@troilus.org>     patch-24
+
+    Summary:
+      Mark channels as visited when high-level users leave.
+    Revision:
+      srvx--devo--1.3--patch-24
+
+    src/chanserv.c (handle_part): At ThiefMaster's suggestion, update a
+      channel's visited time when a high-level user leaves (parts, gets
+      kicked, or quits).
 
     modified files:
-     ChangeLog configure.in languages/validate.pl src/chanserv.c
-     src/ioset.c src/ioset.h src/nickserv.c src/opserv.c
-     src/proto-p10.c src/proto.h src/saxdb.c
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2004-srvx/patch-log/patch-71
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2004-srvx/patch-log/patch-76
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2004-srvx/patch-log/patch-77
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2004-srvx/patch-log/patch-81
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2004-srvx/patch-log/patch-84
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2005-srvx/patch-log/patch-22
-     {arch}/srvx/srvx--devo/srvx--devo--1.3/srvx@srvx.net--2005-srvx/patch-log/patch-23
+     ChangeLog src/chanserv.c
 
 
-2005-07-04 00:37:07 GMT        Zoot <zoot@gamesurge.net>       patch-23
+2006-08-07 03:11:10 GMT        Michael Poole <mdpoole@troilus.org>     patch-23
 
     Summary:
-      Fix match_ircglob() and globtest
+      Require confirmation cookie for giveownership.
     Revision:
       srvx--devo--1.3--patch-23
 
-     * Fix a reversed test in match_ircglob() and make globtest compiles again.
+    src/chanserv.c (CSMSG_CONFIRM_GIVEOWNERSHIP): New translation string.
+      (cmd_giveownership): Fail for non-force unconfirmed giveownerships.
 
     modified files:
-     ChangeLog src/globtest.c src/tools.c
+     ChangeLog src/chanserv.c
 
 
-2005-06-01 19:05:39 GMT        Zoot <zoot@gamesurge.net>       patch-22
+2006-07-29 01:36:39 GMT        Michael Poole <mdpoole@troilus.org>     patch-22
 
     Summary:
-      Integrate Global "from" option; reorganize code
+      Add CSMSG_INVALID_CFLAG string.
     Revision:
       srvx--devo--1.3--patch-22
 
-     * src/global.c: Integrate SF.net patch #1211520 (from bruder2k) with a small
-       bug fix; this patch adds a "from" option to Global notices and messages.
-    
-     * src/global.c, src/global.h: Make struct globalMessage private; cache text
-       form of message's post date/time to avoid repeated strftime() calls.
+    src/chanserv.c (msgtab): Add entry for "CSMSG_INVALID_CFLAG".
 
     modified files:
-     ChangeLog src/global.c src/global.h src/global.help
+     ChangeLog src/chanserv.c
 
 
-2005-05-30 15:14:56 GMT        Michael Poole <mdpoole@troilus.org>     patch-21
+2006-07-29 01:34:17 GMT        Michael Poole <mdpoole@troilus.org>     patch-21
 
     Summary:
-      Make match_ircglob() work more like the ircd.
+      Fix ?csearch max timestamp default value.
     Revision:
       srvx--devo--1.3--patch-21
 
-    src/tools.c (match_ircglob): Limit glob backtracking in the same way
-    that ircds generally do.
+    src/opserv.c (opserv_cdiscrim_create): Fix default value for max_ts.
+        (With an expression only a coder could love.  Improvements wanted.)
 
     modified files:
-     ChangeLog src/tools.c
+     ChangeLog src/opserv.c
 
 
-2005-05-01 17:16:58 GMT        Michael Poole <mdpoole@troilus.org>     patch-20
+2006-07-18 03:13:31 GMT        Michael Poole <mdpoole@troilus.org>     patch-20
 
     Summary:
-      Fix en_GB language name, fix NickServ mergedb command.
+      Update arch-inventory files for in-tree builds.
     Revision:
       srvx--devo--1.3--patch-20
 
-    FAQ: Clarify FAQ #8.
-    
-    src/nickserv.c: Avoid losing channel information when replacing an
-    account using the mergedb command.
+    .arch-inventory: Add "libtool" as a preserved file.
     
-    languages/en_UK: Rename to en_GB.
+    src/.arch-inventory: Add ".libs" as a preserved directory.  Put a \
+        before the . in .cvsignore to avoid capturing too much.
 
     modified files:
-     ChangeLog FAQ src/nickserv.c
-
-    renamed files:
-     languages/en_UK/.arch-ids/=id
-       ==> languages/en_GB/.arch-ids/=id
-     languages/en_UK/.arch-ids/README.id
-       ==> languages/en_GB/.arch-ids/README.id
-     languages/en_UK/.arch-ids/chanserv.help.id
-       ==> languages/en_GB/.arch-ids/chanserv.help.id
-     languages/en_UK/.arch-ids/opserv.help.id
-       ==> languages/en_GB/.arch-ids/opserv.help.id
-     languages/en_UK/.arch-ids/strings.db.id
-       ==> languages/en_GB/.arch-ids/strings.db.id
-
-    new directories:
-     languages/en_GB/.arch-ids
+     .arch-inventory ChangeLog src/.arch-inventory
 
-    removed directories:
-     languages/en_UK/.arch-ids
 
-    renamed directories:
-     languages/en_UK
-       ==> languages/en_GB
-
-
-2005-03-15 23:12:58 GMT        Michael Poole <mdpoole@troilus.org>     patch-19
+2006-07-18 02:48:32 GMT        Michael Poole <mdpoole@troilus.org>     patch-19
 
     Summary:
-      Clarify NickServ REGISTER help messages; fix ?raw and ?dump errors.
+      Make !bans searching more flexible
     Revision:
       srvx--devo--1.3--patch-19
 
-    src/nickserv.help (REGISTER): Rephrase the message about using the
-    same password to hopefully make it clearer.
+    src/chanserv.c (cmd_bans): Allow specifying a complete hostmask or a
+        nickname when searching bans.
     
-    src/opserv.c (cmd_dump, cmd_raw): Use local buffers to hold the
-    original message, so that parse_line() will not unsplit the line into
-    the "original" buffer and strip out the sentinel :.
+    src/chanserv.help (BANS): Document the searching functions.
 
     modified files:
-     ChangeLog src/nickserv.help src/opserv.c
+     ChangeLog src/chanserv.c src/chanserv.help
 
 
-2005-02-17 21:42:43 GMT        Michael Poole <mdpoole@troilus.org>     patch-18
+2006-07-18 01:49:56 GMT        Michael Poole <mdpoole@troilus.org>     patch-18
 
     Summary:
-      Fix registered channel desync; fix HelpServ crash for old cfg files
+      Simplify cdiscrim_match() max tests.
     Revision:
       srvx--devo--1.3--patch-18
 
-    src/hash.c (AddChannelUser): Do not give ops to the first user to join
-    a persistent channel.
-    
-    src/helpserv.c (helpserv_conf_read): Use a default description for bots.
+    src/opserv.c (opserv_cdiscrim_create): Explicitly initialize max_users
+        and max_ts.
+      (cdiscrim_match): Simplify the bounds tests for timestamp and users.
 
     modified files:
-     ChangeLog src/hash.c src/mod-helpserv.c
+     ChangeLog src/opserv.c
 
 
-2005-02-11 03:10:49 GMT        Michael Poole <mdpoole@troilus.org>     patch-17
+2006-07-18 01:46:10 GMT        Michael Poole <mdpoole@troilus.org>     patch-17
 
     Summary:
-      Mention 'slab' in --with-malloc docs.  Merge fakehosts when merging accounts.
+      Fix reclaim KILL behavior.
     Revision:
       srvx--devo--1.3--patch-17
 
-    configure.in (--with-malloc): Mention the awesome 'slab' allocator option.
-    
-    src/nickserv.c (cmd_merge): Copy fakehost to target account if appropriate.
+    src/nickserv.c (nickserv_reclaim): Use DelUser() instead of irc_kill(),
+        so that srvx's databases are appropriately updated.
 
     modified files:
-     ChangeLog configure.in src/nickserv.c
+     ChangeLog src/nickserv.c
 
 
-2005-02-08 04:42:43 GMT        Michael Poole <mdpoole@troilus.org>     patch-16
+2006-07-18 01:12:16 GMT        Michael Poole <mdpoole@troilus.org>     patch-16
 
     Summary:
-      Fix memory corruption when removing certain bans from a channel.
+      Fix typo in English error message text.
     Revision:
       srvx--devo--1.3--patch-16
 
-    src/proto-common.c (mod_chanmode_apply): Make sure we get a pointer to
-    the ban we want to deallocate BEFORE we remove it from the banlist.
+    src/chanserv.c (CSMSG_TOPICMASK_CONFLICT2): Add missing "is".  Reported
+      by Harm, by way of Byte.
 
     modified files:
-     ChangeLog src/proto-common.c
+     ChangeLog src/chanserv.c
 
 
-2005-02-05 13:03:21 GMT        Michael Poole <mdpoole@troilus.org>     patch-15
+2006-05-14 02:54:24 GMT        Michael Poole <mdpoole@troilus.org>     patch-15
 
     Summary:
-      Rearrange slab allocation header; minor slab fixes.
+      Update version tag for 1.3.1 release.
     Revision:
       srvx--devo--1.3--patch-15
 
-    src/alloc-slab.c (ALLOC_MAGIC, FREE_MAGIC): Replace with single-byte values.
-    (struct alloc_header): Move file_id and line into second 32-bit word
-    of header.
-    (slab_alloc): Remove commented-out debug statements.
-    (slab_unalloc): Remove memset() of freed block and commented-out debug
-    statements.
-    (slab_free): memset() freed blocks here instead.  Try to fix
-    *_alloc_size counting errors (use the originally requested length
-    rather than rounded-up length)
+    configure.in: Update version tag for 1.3.1 release.
 
     modified files:
-     ChangeLog src/alloc-slab.c
+     ChangeLog configure.in
 
 
-2005-02-05 03:52:51 GMT        Michael Poole <mdpoole@troilus.org>     patch-14
+2006-05-02 02:46:39 GMT        Michael Poole <mdpoole@troilus.org>     patch-14
 
     Summary:
-      Even more slab allocator updates.
+      Make some ChanServ ban checks see through hidden hosts.
     Revision:
       srvx--devo--1.3--patch-14
 
-    src/slab-alloc.c (SLAB_DEBUG): Default to on.
-    (SMALL_CUTOFF): Fix default value (must be a multiple of 4).
-    (slab_unalloc): Fix slab counting.  When SLAB_RESERVE, allocate the
-    set of pages in a burst, rather than supplementing them as we unmap.
-    (slab_realloc): Fix a rather embarassing (and LARGE) memory leak.
+    src/chanserv.c (handle_join): Make this function see through hidden
+        hosts when matching users against bans.  Add comment before the
+        non-burst section; remove a redundant burst check there.
+      (handle_auth): See through hidden hosts when checking against active
+        bans.  Inactive ban check keeps MATCH_VISIBLE since bans on the true
+        hostname should have already been applied.
+      (handle_nick_change): Same as handle_auth.
 
     modified files:
-     ChangeLog src/alloc-slab.c
+     ChangeLog src/chanserv.c
 
 
-2005-02-04 16:36:40 GMT        Michael Poole <mdpoole@troilus.org>     patch-13
+2006-04-29 03:11:35 GMT        Michael Poole <mdpoole@troilus.org>     patch-13
 
     Summary:
-      more debugging updates
+      Fix visible matching for fake and +x-hidden hosts.
     Revision:
       srvx--devo--1.3--patch-13
 
-    src/alloc-slab.c: Switch free slab list from a stack to queue, and
-    make sure there are SLAB_RESERVE in the queue before an old slab is
-    dereferenced.  This causes a fault when dereferencing stale pointers
-    to the last SLAB_RESERVE full slabs.
-    
-    src/log.c: Make struct logEntry *last static, to make sure gcc does
-    not optimize it away.
+    src/tools.c (user_matches_glob): Use correct test to determine whether
+        the user's host is hidden.
 
     modified files:
-     ChangeLog src/alloc-slab.c src/log.c
+     ChangeLog src/tools.c
 
 
-2005-01-31 22:28:59 GMT        Michael Poole <mdpoole@troilus.org>     patch-12
+2006-04-07 00:56:38 GMT        Michael Poole <mdpoole@troilus.org>     patch-12
 
     Summary:
-      More slab allocator updates.
+      Fix a +o mode parsing error.
     Revision:
       srvx--devo--1.3--patch-12
 
-    src/alloc-slab.c: Disable extra debugging by default.  Add more
-    statistics counters.  Change element type of little_slabs[].  Keep a
-    global list of unused (full) slab pages, rather than per-slab.
-    Various other cleanups and fixes.
-    
-    src/chanserv.h: Can only be off-channel with off_channel > 1.
-    
-    src/main.c: Update years in copyright notice.
-    
-    src/opserv.c: Remove OSMSG_STATS_MEMORY.  Make cmd_stats_memory()
-    allocator-specific.
+    src/proto-p10.c (mod_chanmode_parse): Check that the input argument after
+        +o is a valid one.
 
     modified files:
-     ChangeLog src/alloc-slab.c src/chanserv.h src/main.c
-     src/opserv.c
+     ChangeLog src/proto-p10.c
 
 
-2005-01-31 11:08:15 GMT        Michael Poole <mdpoole@troilus.org>     patch-11
+2006-04-06 02:19:47 GMT        Michael Poole <mdpoole@troilus.org>     patch-11
 
     Summary:
-      Add "?stats memory" and optional alloc_header to slab.
+      Fix some IPv6 address compatibility issues.
     Revision:
       srvx--devo--1.3--patch-11
 
-    src/alloc-slab.c: Add alloc_header (but no redzone) debug support,
-    enabled by default.  Update alloc_count and alloc_size.
-    
-    src/opserv.c: Provide "stats memory" command for slab allocator.
+    src/proto-p10.c (irc_p10_pton): Mark valid IPv4 addresses as v4-mapped.
+      (irc_p10_ntop): Emit invalid IPs as AAAAAA (but it could be _ for +6
+        flagged hubs).
 
     modified files:
-     ChangeLog src/alloc-slab.c src/opserv.c
+     ChangeLog src/proto-p10.c
 
 
-2005-01-31 05:14:52 GMT        Michael Poole <mdpoole@troilus.org>     patch-10
+2006-04-05 02:07:30 GMT        Michael Poole <mdpoole@troilus.org>     patch-10
 
     Summary:
-      Add slab allocator; reduce delta with srvx-gs.
+      Fix a possible warning without debugging.
     Revision:
       srvx--devo--1.3--patch-10
 
-    configure.in: Check for getpagesize().  Support --with-malloc=slab.
-    
-    src/Makefile.am: Add alloc-slab.c as an extra source file.
-    
-    src/alloc-srvx.c: Clean up srvx_free() slightly.  Check for previously
-    allocated blocks.
-    
-    srvx.conf.example, src/chanserv.c, src/main.c, src/modcmd.c,
-    src/proto-p10.c: Apply patches to bring closer to srvx-gs branch.
-    
-    src/log.c: Assert and _exit() on fatal log messages.
-    
-    src/opserv.c: Clarify logic for modes to set on join floods.
-    
-    src/proto-common.c: Accept off-channel commands in registered channels.
-
-    new files:
-     src/.arch-ids/alloc-slab.c.id src/alloc-slab.c
+    src/alloc-slab.c (slab_unalloc): If assert() is #define'd to be empty,
+        then size is unused.  Include a (void)size to quash a warning.
 
     modified files:
-     ChangeLog configure.in src/Makefile.am src/alloc-srvx.c
-     src/chanserv.c src/chanserv.h src/common.h src/hash.h
-     src/helpfile.c src/log.c src/main.c src/modcmd.c src/opserv.c
-     src/proto-common.c src/proto-p10.c srvx.conf.example
+     ChangeLog src/alloc-slab.c
 
 
-2005-01-26 21:16:54 GMT        Michael Poole <mdpoole@troilus.org>     patch-9
+2006-04-05 02:02:21 GMT        Michael Poole <mdpoole@troilus.org>     patch-9
 
     Summary:
-      offchannel fixes; more memory verification
+      Fix hostmask error from last year's patch-28.
     Revision:
       srvx--devo--1.3--patch-9
 
-    src/chanserv.c (cmd_register): Do not join channels if the default
-    options include being offchannel.
-    
-    src/common.h: Verify list allocations when appending or removing.
-    
-    src/hash.c (GetUserMode): Verify channel and user list allocations.
-    
-    src/log.c (log_entry_search): Keep pointer to last visited log entry.
-    
-    src/proto-p10.c (mod_chanmode_parse): Fail if trying to change +z when
-    passed MCP_REGISTERED.
+    src/proto-common.c (generate_hostmask): When generating a strict hostmask
+        not by IP, we should keep the original hostname.
 
     modified files:
-     ChangeLog src/chanserv.c src/common.h src/hash.c src/log.c
-     src/proto-p10.c
+     ChangeLog src/proto-common.c
 
 
-2005-01-24 17:12:38 GMT        Michael Poole <mdpoole@troilus.org>     patch-8
+2006-04-05 01:59:54 GMT        Michael Poole <mdpoole@troilus.org>     patch-8
 
     Summary:
-      typo fix in alloc-srvx.c; avoid dereferencing free()'d bans
+      Fix compilation error with slab allocator and no debugging.
     Revision:
       srvx--devo--1.3--patch-8
 
-    src/alloc-srvx.c (srvx_realloc): Fix argument list to srvx_free().
-    
-    src/chanserv.c (find_matching_bans): Make temporary copies of bans to
-    be removed.  Double-check remove count at end of loop.
-    (unban_user, cmd_open): Free the string copies.
-    (cmd_unbanall): Make temporary copies of removed bans and free them.
-    (handle_mode): Likewise.
-    
-    src/opserv.c (cmd_clearbans): Likewise.
+    src/alloc-slab.c (verify): Undefine as a macro before defining as a
+        function.
 
     modified files:
-     ChangeLog src/alloc-srvx.c src/chanserv.c src/opserv.c
+     ChangeLog src/alloc-slab.c
 
 
-2005-01-24 16:45:44 GMT        Michael Poole <mdpoole@troilus.org>     patch-7
+2006-04-05 00:24:50 GMT        Michael Poole <mdpoole@troilus.org>     patch-7
 
     Summary:
-      More allocation debugging support.
+      Fix backtracking bug after an escaped character.
     Revision:
       srvx--devo--1.3--patch-7
 
-    src/alloc-srvx.c (srvx_realloc): Reorganize.
-    (verify): New function.
-    
-    src/common.h (verify): Define and/or declare suitably.
-    
-    src/dict-splay.c (dict_splay): Verify node at each iteration.
-    (dict_insert, dict_remove2, dict_find, dict_delete,
-    dict_sanity_check): Verify entire dict.
-    (dict_sanity_check_node): Verify node as valid allocation.
-    
-    src/hash.c (DelChannel): Verify channel before deletion.
-    (GetUserMode): Verify channel, user, and each modeNode.
-    
-    src/mod-sockcheck.c (sockcheck_free_client): Verify client.
-    (sockcheck_timeout_client, sockcheck_advance, sockcheck_readable,
-    sockcheck_connected, sockcheck_begin_test): Likewise.
-    (sockcheck_queue_address): Verify cached sockcheck entries.
-    
-    src/proto-p10.c (DelUser): Verify user before deletion.
+    src/tools.c (match_ircglob): Fix backtracking behavior when an escaped
+        character did not match.
 
     modified files:
-     ChangeLog src/alloc-srvx.c src/common.h src/dict-splay.c
-     src/hash.c src/mod-sockcheck.c src/proto-p10.c
+     ChangeLog src/tools.c
 
 
-2005-01-21 15:10:49 GMT        Michael Poole <mdpoole@troilus.org>     patch-6
+2006-04-05 00:11:31 GMT        Michael Poole <mdpoole@troilus.org>     patch-6
 
     Summary:
-      More debug allocator fixes and enhancements
+      Advise the kernel that we will scan DB files sequentially.
     Revision:
       srvx--devo--1.3--patch-6
 
-    src/alloc-srvx.c (*_MAGIC): ASk recognized the CCSDS ASM sequence.
-    (srvx_free): Overwrite with 0xDE bytes to distinguish from
-    uninitialized values.  As SailorFrag suggested, only overwrite the
-    user region.
-    
-    src/dict-splay.c (dict_insert): Check whether free functions need to
-    be worked around here as well.
+    src/recdb.c (parse_database): Advise the kernel that we will scan the
+        recdb file sequentially, just in case it cannot notice the access
+        pattern on its own.
 
     modified files:
-     ChangeLog src/alloc-srvx.c src/dict-splay.c
+     ChangeLog src/recdb.c
 
 
-2005-01-21 00:48:35 GMT        Michael Poole <mdpoole@troilus.org>     patch-5
+2006-04-05 00:09:48 GMT        Michael Poole <mdpoole@troilus.org>     patch-5
 
     Summary:
-      Add redzone and statistics reporting to debug allocator.
+      Correctly implement AsLL pong.
     Revision:
       srvx--devo--1.3--patch-5
 
-    src/alloc-srvx.c (redzone): New variable to detect buffer overwrites.
-    (alloc_count, alloc_size): New variables to track allocation stats.
-    (srvx_malloc, srvx_realloc, srvx_free): Use the above.
-    
-    src/opserv.c (OSMSG_STATS_MEMORY): New translation string.
-    (cmd_stats_memory): New (conditional) command function.
-    (init_opserv): Conditionally provide cmd_stats_memory.
+    src/proto-p10.c (irc_pong_asll): New function.
+      (cmd_ping): Use it.
 
     modified files:
-     ChangeLog src/alloc-srvx.c src/opserv.c
+     ChangeLog src/proto-p10.c
 
 
-2005-01-20 23:41:17 GMT        Michael Poole <mdpoole@troilus.org>     patch-4
+2006-04-05 00:08:04 GMT        Michael Poole <mdpoole@troilus.org>     patch-4
 
     Summary:
-      Add built-in debug malloc wrapper.
+      Add missing underscore in translation key string.
     Revision:
       srvx--devo--1.3--patch-4
 
-    TODO: Remove the completed TODO item.
-    
-    configure.in: Add --with-malloc=srvx support.
-    
-    src/Makefile.am: Add alloc-srvx.c to extra sources.
-    
-    src/common.h: Reindent debug malloc directives; add directives for
-    WITH_MALLOC_SRVX.
-    
-    src/dict-splay.c: Kludge around free() as macro vs function.
-
-    new files:
-     src/.arch-ids/alloc-srvx.c.id src/alloc-srvx.c
+    src/mod-helpserv.c (helpserv_usermsg): Add a missing underscore between
+        REQUEST and NOT.
 
     modified files:
-     ChangeLog TODO configure.in src/Makefile.am src/common.h
-     src/dict-splay.c
+     ChangeLog src/mod-helpserv.c
 
 
-2005-01-20 22:51:54 GMT        Michael Poole <mdpoole@troilus.org>     patch-3
+2006-04-05 00:05:59 GMT        Michael Poole <mdpoole@troilus.org>     patch-3
 
     Summary:
-      various bugfixes and IPv6 preparation work
+      Update configure.in; support both baz and tla; avoid using dirent.
     Revision:
       srvx--devo--1.3--patch-3
 
-    src/modcmd.c (modcmd_privmsg): Fix CTCP PING response type.
+    configure.in: Remove AC_PROG_RANLIB since we never use ranlib.  Add
+        AC_PROG_LIBTOOL since we do use libtool.  Set GNU_ARCH and
+        HAS_GNU_ARCH based on whether the system has baz or tla.  Do not
+        check for dirent.d_type.
     
-    src/opserv.help: Add column headers for command lists.
+    src/Makefile.am: Make the "checkversion" target conditional on
+        HAS_GNU_ARCH, and use the detected $(GNU_ARCH).
     
-    src/tools.c (is_gline, split_ircmask): Accept colons in hostnames.
+    src/helpfile.c (language_read): Report error text when unable to open a
+        language directory.
+      (language_read_list): Always stat the language entry to determine
+        whether it is a directory; Cygwin has no dirent.d_type and ReiserFS
+        has a broken one.
 
     modified files:
-     ChangeLog src/modcmd.c src/opserv.help src/tools.c
+     ChangeLog configure.in src/Makefile.am src/helpfile.c
 
 
-2005-01-05 01:03:05 GMT        Michael Poole <mdpoole@troilus.org>     patch-2
+2006-04-05 00:00:57 GMT        Michael Poole <mdpoole@troilus.org>     patch-2
 
     Summary:
-      Add MODE_REGISTERED as +z for P10.
+      Update ChangeLog (again?!), ltmain.sh and rx/Makefile.in
     Revision:
       srvx--devo--1.3--patch-2
 
-    Add MODE_REGISTERED as +z for P10.
+    ChangeLog: Update again (it didn't take, for some strange reason).
+    
+    ltmain.sh: Update to current version.
+    
+    rx/Makefile.in: Regenerate to match.
 
     modified files:
-     ChangeLog src/proto-p10.c
+     ChangeLog ltmain.sh rx/Makefile.in
 
 
-2005-01-04 19:35:57 GMT        Michael Poole <mdpoole@troilus.org>     patch-1
+2006-04-04 23:58:31 GMT        Michael Poole <mdpoole@troilus.org>     patch-1
 
     Summary:
-      Rotate ChangeLog for new repository; clarify documentation files
+      Rotate ChangeLog for the new year's archive.
     Revision:
       srvx--devo--1.3--patch-1
 
-    Rotate ChangeLog to show changes for srvx@srvx.net--2005-srvx repo.
-    
-    Fix various file permissions to 664 instead of 620.
-    
-    Update FAQ and TODO.  Add UPGRADE file to arch and to distribution.
-
-    new files:
-     .arch-ids/ChangeLog.id .arch-ids/UPGRADE.id ChangeLog UPGRADE
-
-    removed files:
-     .arch-ids/ChangeLog.id ChangeLog
+    ChangeLog: Update for the new year's archive.
 
     modified files:
-     FAQ INSTALL Makefile.am TODO languages/de/chanserv.help
-     languages/de/global.help languages/de/modcmd.help
-     languages/de/nickserv.help languages/de/strings.db
-     languages/en_UK/chanserv.help languages/en_UK/strings.db
-     src/chanserv.help
+     .arch-ids/ChangeLog.id ChangeLog
 
 
-2005-01-04 19:16:14 GMT        Michael Poole <mdpoole@troilus.org>     base-0
+2006-04-04 23:42:39 GMT        Michael Poole <mdpoole@troilus.org>     base-0
 
     Summary:
-      tag of srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-84
+      tag of srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-36
     Revision:
       srvx--devo--1.3--base-0
 
     (automatically generated log message)
 
     new patches:
+     sp@gamesurge.net--2005/srvx--sp--1.3--patch-1
+     sp@gamesurge.net--2005/srvx--sp--1.3--patch-2
      srvx@srvx.net--2004-srvx/srvx--devo--1.3--base-0
      srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-1
      srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-2
      srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-82
      srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-83
      srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-84
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--base-0
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-1
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-2
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-3
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-4
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-5
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-6
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-7
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-8
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-9
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-10
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-11
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-12
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-13
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-14
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-15
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-16
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-17
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-18
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-19
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-20
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-21
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-22
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-23
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-24
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-25
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-26
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-27
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-28
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-29
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-30
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-31
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-32
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-33
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-34
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-35
+     srvx@srvx.net--2005-srvx/srvx--devo--1.3--patch-36