+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (CRule): Document the support for multiple
+ server masks in a single CRule block.
+ (Port): Document the optional additional field for vhost entries.
+ Document the support for multiple vhost entries in a single Port
+ block.
+
+ * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
+ (USE_IPV6): Likewise.
+ (portblock): Iterate over hosts rather than using the single host.
+ (portitem): Add portvhostnumber alternative production.
+ (portnumber): Check port number here. If valid, combine address
+ family and port number in "port" variable. If a port-less item
+ exists in "hosts", set its port number.
+ (portvhost): Prepend mask to "hosts" list.
+ (portvhostnumber): New production.
+ (cruleblock): Iterate over hosts rather than using the single
+ host.
+ (cruleserver): Prepend server mask to "hosts" list.
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/listener.c (add_listener): Only try to create IPv6 sockets
+ for IPv6-compatible addresses; likewise for IPv4.
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Operator): Update documentation to mention
+ more than one host entry is allowed.
+ (Motd): Likewise.
+
+ * ircd/ircd_parser.y (hosts): New file-scope variable.
+ (free_slist): New helper function.
+ (operblock): Iterate over hosts instead of using the single host.
+ (operhost): Prepend the mask to hosts.
+ (motdblock): Iterate over hosts instead of using the single host.
+ (motdhost): Prepend the mask to hosts.
+ (motdfile): Fix possible leak of "pass" string (the filename).
+
+ * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
+ string; operblock (the only caller) frees it now.
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/list.c (free_link): Only decrement the in-use count of
+ links if we free a link.
+
+2007-03-17 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_err.c: update replies to handle new fields in
+ RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
+ G-line lifetime, and local activation status
+
+ * ircd/m_gline.c: update function documentation for ms_gline();
+ move test for server to before mask processing; don't look up
+ remote server too early; add code to process local activations and
+ deactivations early in ms_gline(); implement adding and destroying
+ local G-lines; don't try to locally activate or deactivate G-lines
+ that don't exist; add code to keep track of which fields were
+ available to ms_gline(); implement G-line modification and
+ creation; remove old ms_gline() code; convert
+ sendwallto_group_butone() calls to Debug() calls; reimplement
+ mo_gline() to take into account new syntax
+
+ * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
+ its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
+ G-line expires; add lifetime parameter to make_gline(); disable
+ overlapping G-line check; initialize gl_lifetime from lifetime
+ parameter; initialize gl_state to GLOCAL_GLOBAL; update
+ gline_propagate() to send lifetime parameter; add lifetime
+ parameter to gline_add(); remove some old code in gline_add();
+ figure out lifetime to set on new G-line; remove test for
+ make_gline() returning NULL, since it should never do so now; add
+ modify_gline() for modifying global G-lines; add gline_destroy()
+ for destroying local G-lines; update gline_burst() to send
+ lifetime parameter; update gline_resend() to send lifetime
+ parameter; update gline_list() to add lastmod, lifetime, and local
+ status indicators; update gline_stats() to send lastmod, lifetime,
+ and local status indicators; count BADCHANs in
+ gline_memory_count()
+
+ * include/gline.h: add enum GlineLocalState for keeping track of
+ local state changes to global G-lines; store state in struct
+ Gline; document enum GlineAction; add GLINE_EXPIRE,
+ GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
+ those fields to gline_modify(); add GLINE_UPDATE mask for checking
+ for the above flags; update GlineIsActive() to take into account
+ new gl_state field in struct Gline; add lifetime to gline_add();
+ add gline_modify() for modifying existing global G-lines, and
+ gline_destroy() for destroying local G-lines
+
+ * doc/readme.gline: update documentation to reflect changes made
+ to G-line command syntax
+
+2007-03-17 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
+ aborting on unrecognized arguments. It isn't nice to core on
+ "umkpasswd --help"..
+
+2007-03-16 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Class): Move the "Recommended client classes"
+ comment to a better place (and stop recommending them). Clarify
+ what maxlinks does. Make it clear that Operator password entries
+ only support umkpasswd formats.
+
+2007-03-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/ircd.c (parse_command_line): Emit a warning if using -x
+ when DEBUGMODE is disabled.
+
+2007-03-16 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
+ unlimited here, to match attach_conf()'s behavior.
+
2007-03-16 Kevin L. Mitchell <klmitch@mit.edu>
* ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to