+2002-02-25 Carlo Wood <carlo@alinoe.com>
+
+ * ircd/m_server.c: remove unused variables
+
+2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_map.c: Modified to show a useful output to non-opered
+ clients when HEAD_IN_SAND_MAP is defined. Servers are added to
+ the list when first seen (after receiving SERVER) and that list
+ is sent to clients. Servers are excluded from the list if they are
+ hubs, services, or have been missing for more than 1 week.
+
+ * ircd/map.c: Created file for map_* functions
+
+ * include/map.h: Created file for map_* functions
+
+ * ircd/m_server.c: Added calls to map_update()
+
+ * ircd/s_misc.c: Added call to map_update()
+
+ * ircd/parse.c: Changed to use m_map() and mo_map()
+
+2002-02-22 Reed Loden <reed@redmagnet.com>
+
+ * ircd/m_connect.c: Removed an extra : in remote connect message.
+
+2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/whocmds.c: Local opers should also be able to
+ see servernames in /who
+
+ * ircd/gline.c: Fix core bug in gline_find()
+
+ * ircd/m_kill.c: Bug fix for HIS_KILLWHO
+
+2002-02-19 John Buttery <john@io.com>
+
+ * ircd/ircd.c: Updated "No such file" error message.
+
+2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
+ a message handler, and some general cleanups and bug fixes.
+
+ * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
+ kill source.
+
+2002-02-16 Tim Vogelsang <net@astrolink.org>
+
+ * ircd/m_kill.c: added a new static function, m_kill, which
+ performs the actual kill.
+
+2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * Added support for LIST STOP
+
+2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
+
+ * Merged changes from u2_10_11 to main branch.
+
+2002-02-08 Tim Vogelsang <net@astrolink.org>
+
+ * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
+ reason is supplied.
+
+2002-02-06 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_auth.c (read_auth_reply): left out an = in an
+ assertion--shouldn't have had any impact, though
+
+ * ircd/Makefile.in: add a hook for using ringlog; run make depend
+
+ * tools/ringlog.c: for the heck of it, add a comment including
+ rules for /etc/magic
+
+2002-02-05 Kevin L Mitchell <klmitch@mit.edu>
+
+ * tools/ringlog.pl: perl script to take output from ringlog and
+ pass it to addr2line to get function, file, and line number
+ information
+
+ * tools/ringlog.c: program/object to help in building function
+ trace information
+
+2002-02-04 Alex Badea <vampire@p16.pub.ro>
+
+ * include/ircd_features.h: added new feature MOTD_BANNER
+
+ * ircd/ircd_features.c: added new feature MOTD_BANNER
+
+ * ircd/motd.c (motd_signon): send a one-line banner from
+ FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
+ is set
+
+ * doc/example.conf: default value for MOTD_BANNER feature
+
+ * doc/readme.features: documented the MOTD_BANNER feature
+
+2002-02-04 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
+ check; added character 'A' to the server options string to
+ indicate when assertion checking is enabled
+
+2002-02-03 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
+ event if the errno is EBADF, since the caller probably already
+ knows about it and just hasn't gotten around to processing it yet
+
+ * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
+ is generated; don't process socket_events() or socket_state() if
+ an error occurred; add GEN_ERROR to list of flags in gen_flags()
+
+ * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
+ clear it
+
+2002-02-01 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c: change make_nick_user_{ip,host} to not use a
+ static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
+ NUI_BUFSIZE--I confess they're not well-named) is allocated by the
+ caller
+
+2002-02-02 Alex Badea <vampire@p16.pub.ro>
+
+ * include/client.h: added user flag FLAGS_HIDDENHOST
+
+ * include/ircd_features.h: added FEAT_HOST_HIDING and
+ FEAT_HIDDEN_HOST
+
+ * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
+ to report real hostnames and IPs to opers
+
+ * include/s_user.h: exported hide_hostmask()
+
+ * include/send.h: changed sendcmdto_channel_butserv to
+ sendcmdto_channel_butserv_butone; ditto for
+ sendcmdto_common_channels
+
+ * include/struct.h: added realhost to struct User
+
+ * include/whowas.h: added realhost to struct Whowas
+
+ * ircd/channel.c: match bans against both real and hidden
+ hostmasks; moved some calls to use sendcmdto_*_butone
+
+ * ircd/gline.c: match glines agains real host
+
+ * ircd/ircd_features.c: added FEAT_HOST_HIDING and
+ FEAT_HIDDEN_HOST
+
+ * ircd/m_account.c: call hide_hostmask() for possibly
+ hiding the user's host
+
+ * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
+
+ * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
+
+ * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
+ host
+
+ * ircd/m_who.c: match real hosts, if the query comes from an oper
+
+ * ircd/m_whois.c: report real hostname and IP to opers
+
+ * ircd/m_whowas.c: report real hostname to opers
+
+ * ircd/s_err.c: added user mode 'x' to the list of supported user
+ modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
+ real hostnames to opers
+
+ * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
+
+ * ircd/s_serv.c: send real hostname to servers
+
+ * ircd/s_user.c: send real hostname to servers; added processing
+ of usermode 'x'; added hide_hostmask() which actually does the work
+ of hiding a user's host; moved some calls to use sendcmdto_*_butone
+
+ * ircd/send.c: changed sendcmdto_channel_butserv to
+ sendcmdto_channel_butserv_butone; ditto for
+ sendcmdto_common_channels
+
+ * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
+ it's host hidden
+
+ * ircd/whowas.c: if needed, store a user's real host so we can
+ report it to opers later
+
+ * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
+ features
+
+ * doc/example.conf: default values for HOST_HIDING and
+ HIDDEN_HOST features
+
+2002-02-01 Tim Vogelsang <net@astrolink.org>
+
+ * ircd/send.c (sendwallto_group_butone): don't sent wallops to
+ ordinary users
+
+2002-01-28 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/jupe.c (jupe_activate): remove a bogus assertion
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_err.c: added new channel mode 'r' to list of supported
+ channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
+ numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
+ informing users why they can't join a +r channel
+
+ * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
+ (+r) to do_clearmode(); note that it is *not* being added to the
+ default clearmode mask!
+
+ * ircd/channel.c: don't allow non-+r users to send messages to +r
+ channels from off the channel; add support for MODE_REGONLY (+r)
+ to channel_modes(); don't allow non-+r users to join +r channels
+ without an invite; add support for MODE_REGONLY to the modebuf_*()
+ family of functions (changes in modebuf_flush_int(),
+ modebuf_mode(), and modebuf_extract()); add support for
+ MODE_REGONLY to mode_parse()
+
+ * include/supported.h (FEATURESVALUES2): added the new channel
+ mode 'r' to the list of supported channel modes
+
+ * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
+ conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
+
+ * include/channel.h: remove unused MODE_SENDTS; add new
+ MODE_REGONLY
+
+ * ircd/s_bsd.c (read_packet): remove call to timer_verify()
+
+ * ircd/list.c: remove calls to timer_verify() from
+ alloc_connection() and dealloc_connection()
+
+ * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
+ from timer_run()
+
+2002-01-27 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/ircd_events.c (timer_run): why did I ever use a next
+ pointer when the algorithm guarantees that the head pointer will
+ always be the next pointer?
+
+2002-01-26 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
+ client process timer to catch any list corruption
+
+ * ircd/list.c: surround alloc_connection() and
+ dealloc_connection() with calls to timer_verify()
+
+ * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
+ verify the timer list's structure; call it around timer_run()
+
+2002-01-22 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c (sendcmdto_common_channels): don't send message to a
+ channel that the source is a zombie on
+
+2002-01-13 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c (timer_enqueue): one more assertion--make
+ sure a timer has the ACTIVE flag set before enqueueing the timer
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/list.c (dealloc_connection): assert that the process timer
+ has been removed from the timer queue before dealloc_connection()
+ is called
+
+2002-01-12 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/res.c: don't accept T_A when we're looking for T_PTR
+
+ * ircd/channel.c (modebuf_flush_int): nuke the code that would
+ send a HACK DESYNCH notice on a HACK(2)--it would be far too
+ chatty
+
+ * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
+
+ * include/supported.h: add AWAYLEN to the list of supported
+ features
+
+ * include/ircd_defs.h: add AWAYLEN to specify the maximum length
+ of an away message
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
+
+ * ircd/channel.c: pass a buflen parameter to channel_modes() for
+ pbuf--we were using sizeof(pbuf), which would always be
+ sizeof(char*) before; change send_channel_modes() to pass extra
+ parameter to channel_modes()
+
+ * include/channel.h: pass a buflen parameter to channel_modes()
+ for pbuf
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/uping.c (uping_start): initialize some timers
+
+ * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
+ out when we need to re-add the process timer
+
+ * ircd/s_auth.c (make_auth_request): initialize a timer
+
+ * ircd/res.c (init_resolver): initialize some timers
+
+ * ircd/list.c (alloc_connection): initialize the client process
+ timer
+
+ * ircd/ircd_events.c: add a function, timer_init(), to initialize
+ a struct Timer; recast timer_add() to catch when adding a marked
+ timer and not re-enqueue it--but mark it for re-enqueuing; update
+ timer_del() to turn off the GEN_READD flag and to ignore reference
+ counts when destroying the timer--we're using GEN_MARKED as an
+ ersatz referance count; changed timer_run() to work with the new
+ way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
+ map[]
+
+ * ircd/ircd.c: initialize some timers
+
+ * ircd/engine_select.c (engine_loop): initialize a timer
+
+ * ircd/engine_poll.c (engine_loop): initialize a timer
+
+ * ircd/engine_kqueue.c (engine_loop): initialize a timer
+
+ * ircd/engine_devpoll.c (engine_loop): initialize a timer
+
+ * ircd/IPcheck.c (IPcheck_init): initialize a timer
+
+ * include/ircd_events.h: add GEN_READD flag for timers to indicate
+ that a timer must be readded; add t_onqueue() macro to check to
+ see if a timer is on the queue (this is a hack, though); added
+ timer_init() to initialize a struct Timer--we're no longer doing
+ the initialization in timer_add()
+
+2002-01-11 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
+ prevent a core bug *in* the assertion
+
+ * doc/readme.features: document new POLLS_PER_LOOP feature; change
+ documentation to reflect that OPER_SET now defaults to FALSE
+
+ * doc/p10.html: documented the new ACCOUNT stuff
+
+ * doc/example.conf: document new POLLS_PER_LOOP default; change
+ default for OPER_SET
+
+ * RELEASE.NOTES: changed documentation to reflect the fact that
+ assertions are now enabled by default and do not cause memory
+ leaks
+
+ * ircd/res.c (make_cache): removed a bogus assertion we probably
+ never caught because assertions haven't been enabled on production
+ servers for any length of time before
+
+ * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
+
+ * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
+ instance of POLLS_PER_KQUEUE
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_bsd.c (client_timer_callback): only clear the
+ FREEFLAG_TIMER flag when the timer is being destroyed
+
+ * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
+ default it to 200; turn OPER_SET off by default
+
+ * ircd/engine_kqueue.c: dynamically allocate and reallocate the
+ array of events to obtain from the kernel
+
+ * ircd/engine_devpoll.c: dynamically allocate and reallocate the
+ array of events to obtain from the kernel
+
+ * include/ircd_features.h: add a new feature for tuning how many
+ events to get from the kernel, for engines that support that
+
+ * ircd/Makefile.in: re-run make depend to correct dependancies
+
+ * ircd/m_who.c: remove unneeded inclusion of list.h
+
+ * ircd/ircd_events.c: remove unneeded inclusion of list.h
+
+ * ircd/whocmds.c (do_who): hide server name in /who unless
+ requester is an operator; simplify hop count insertion
+
+ * ircd/s_misc.c (exit_one_client): make sure client's snomask is
+ cleared
+
+ * ircd/parse.c: use mo_version and mo_admin when opers do /version
+ or /admin
+
+ * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
+ of the static string "*.undernet.org"
+
+ * ircd/m_version.c: only let ordinary users get version
+ information for the server they are on
+
+ * ircd/m_admin.c: only let ordinary users get admin information
+ for the server they are on
+
+ * ircd/channel.c (client_can_send_to_channel): check is_banned()
+ before letting the client speak on a channel s/he is not on
+
+ * include/supported.h: add NETWORK to feature list
+
+ * include/handlers.h: declare mo_admin() and mo_version()
+
+2002-01-10 Kevin L Mitchell <klmitch@mit.edu>
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
+ of !NDEBUG
+
+ * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
+ !NDEBUG
+
+ * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
+ !NDEBUG
+
+ * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
+
+ * ircd/Makefile.in: run make depend on chkconf.c as well
+
+ * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
+ conditionalize on MDEBUG
+
+ * include/fda.h: instead of conditionalizing on !NDEBUG,
+ conditionalize on MDEBUG
+
+ * configure: rebuild configure script
+
+ * configure.in: enable assertion checking by default, since we
+ have now decoupled memory debugging from the NDEBUG macro
+
+ * ircd/s_user.c (set_nick_name): remove calls to
+ verify_client_list()
+
+ * ircd/s_misc.c (exit_one_client): remove calls to
+ verify_client_list()
+
+ * ircd/s_conf.c (rehash): remove calls to verify_client_list()
+
+ * ircd/m_who.c (m_who): remove calls to verify_client_list()
+
+ * ircd/list.c: remove calls to verify_client_list(); keep
+ verify_client_list() around just in case we ever need it again,
+ but never compile it in
+
+ * ircd/ircd_events.c (event_execute): remove calls to
+ verify_client_list()
+
+ * ircd/client.c (client_get_ping): remove calls to
+ verify_client_list()
+
+ * include/list.h (send_listinfo): remove temporary debugging
+ function verify_client_list()
+
+ * ircd/uping.c: don't die if the event type is ET_ERROR in socket
+ callback functions
+
+ * ircd/res.c (res_callback): don't die if the event type is
+ ET_ERROR
+
+ * ircd/listener.c (accept_connection): don't die if the event type
+ is ET_ERROR
+
+2002-01-09 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_nick_name): bracket call to
+ add_client_to_list() with calls to verify_client_list()
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
+
+ * ircd/list.c (verify_client_list): add a probabilistic loop
+ detector: for every client added, there is a 2% probability that
+ it will be used to replace the value of sentinel; if at any time,
+ sentinel is found again, we know we're in a loop
+
+ * ircd/ircd_events.c (event_execute): add verify_client_list()
+ calls wrapping event_execute; at the very least, I'll figure out
+ what event the corruption occurred in
+
+ * ircd/list.c: moved verify_client_list() to try to keep it from
+ being inlined
+
+ * ircd/Makefile.in (version.c): version.c wasn't dependant on
+ version.h and patchlevel.h, like it was supposed to be
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/s_auth.c (destroy_auth_request): overload send_reports
+ argument to also indicate whether or not to call
+ release_auth_client() and thereby enter the client into the linked
+ list
+
+ * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+ * ircd/list.c (free_client): verify that destroy_auth_request()
+ didn't automagically re-add us to the list; we might have to think
+ about this interaction more carefully, actually
+
+ * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
+ calling free_client(); otherwise, free_client() will try to free
+ the auth by calling destroy_auth_request(), which will call
+ add_client_to_list()
+
+ * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
+ verify_client_list() around to catch any corruption that might
+ occur here
+
+ * ircd/s_conf.c (rehash): liberally sprinkle calls to
+ verify_client_list() here, since this is about the only routine I
+ can think of that could cause the "core on kill -HUP" bug
+
+ * ircd/m_who.c: sprinkle calls to verify_client_list() around
+ liberally, since we've seen crashes here; temporarily include the
+ otherwise unneeded list.h header
+
+ * ircd/list.c: sprinkle calls to verify_client_list() around quite
+ liberally; add debugging asserts to list manipulation functions to
+ catch strange settings for next and prev pointers; define
+ verify_client_list(), which walks the client list and verifies
+ that everything is as it's supposed to be
+
+ * ircd/client.c: wrap client_get_ping with calls to
+ verify_client_list() to see if that's where we're dying
+
+ * include/patchlevel.h (PATCHLEVEL): bump to 03
+
+ * include/list.h: declare verify_client_list() if DEBUGMODE
+ enabled; otherwise, define it to be empty
+
+2002-01-08 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/m_quit.c (m_quit): remove an unused variable
+
+ * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
+
+ * ircd/s_user.c: when building the user mode to send to the user,
+ don't include +r; add an extra set of parens to squelch a warning
+
+ * ircd/m_quit.c (m_quit): use exit_client_msg()
+
+ * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
+ keep track of who's running what version
+
+ * ircd/m_squit.c (ms_squit): remove debugging calls to
+ protocol_violation()
+
+ * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
+ new gmake "feature" (pull-up from trunk)
+
+ * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
+ from trunk)
+
+2002-01-07 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
+ list of user modes; process account name as part of user mode in
+ NICK decoding (set_nick_name()); add account name to usermode when
+ building the usermode to incorporate in outgoing NICK messages
+
+ * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
+ user is logged in to
+
+ * ircd/parse.c: define the new ACCOUNT command, usable only by
+ servers and ignored by everything else
+
+ * ircd/m_whois.c: report what account name is associated with a
+ user, if any
+
+ * ircd/m_account.c: implement the ACCOUNT command
+
+ * ircd/Makefile.in: add m_account.c to the list of sources; ran
+ make depend
+
+ * include/struct.h: add an account field to struct User
+
+ * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
+ what username a user is logged in under
+
+ * include/msg.h: add ACCOUNT command and token (AC)
+
+ * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
+ the maximum length of a username for X
+
+ * include/handlers.h: add declaration for ms_account()
+
+ * include/client.h: add FLAGS_ACCOUNT to flag when a user account
+ name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
+ IsAccount() and SetAccount() to manipulate the flag
+
+ * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
+ name like "Amsterdam2.NL.EU.undernet.org", we get the struct
+ Client for the server with numeric "Am", which happens to be
+ stockholm! To fix this, we look up the full name *first*; if that
+ doesn't get it, *then* we look up by numeric.
+
+2001-12-24 Perry Lorier <isomer@coders.net>
+ * ircd/m_server.c: cleanups, maybe this will make the bug easier
+ to find.
+
+ * ircd/m_stats.c: display maximum number of connects in an I:
+
+2001-11-22 Perry Lorier <isomer@coders.net>
+ * ircd/m_squit.c: Bug fix in squit
+
+2001-11-03 Greg Sikorski <gte@atomicrevs.demon.co.uk>
+ * ircd/parse.c, include/handlers.h: Give remote whois the correct
+ handler.
+
+2001-11-01 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: some minor white-space fiddling; recast selector
+ test in sendwallto_group_butone() to remove a warning regarding
+ putting & within parentheses
+
+ * ircd/m_create.c (ms_create): use time_t instead of int as a
+ declaration for rate
+
+ * ircd/ircd_reply.c (protocol_violation): it's supposed to be
+ WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
+ wonder we weren't seeing any protocol violations!
+
+ * include/send.h: include time.h for time_t; move WALL_* closer to
+ the function they're used in; some white-space fiddling; add
+ declaration of sendto_opmask_butone_ratelimited()
+
+ * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
+ cases where we ignore a squit, so we aren't taken by surprise, at
+ least...
+
+ * ircd/m_create.c (ms_create): Display origin server, not origin
+ user
+
+ * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
+
+2001-10-31 Perry Lorier <isomer@coders.net>
+ * include/m_ping.c: Forward port ping bug
+
+2001-10-31 Perry Lorier <isomer@coders.net>
+ * include/patchlevel.h: We're beta now
+
+2001-10-31 Perry Lorier <isomer@coders.net>
+ * ircd/s_user.c: fixed hunt_server
+
+2001-09-21 Perry Lorier <isomer@coders.net>
+ * ircd/send.c and various: replace sendcmdto_flag_butone with
+ sendwallto_group_butone
+
+2001-09-21 Vampire- <unknown>
+ * ircd/ircd_string.c: unique_name_vector round II.
+
+2001-09-21 mbuna <mbuna@undernet.org>
+ * configure.in: Add support for darwin
+
+2001-09-21 Perry Lorier <isomer@coders.net>
+ * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
+
+2001-09-20 Perry Lorier <isomer@coders.net>
+
+ * Pullups from 2.10.10.pl16
+ * Added some warnings, and the concept of rate limited snotices
+
+2001-08-31 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/channel.c: use "%u" to format limit arguments; use
+ strtoul() to process limit arguments in a /mode command--note:
+ most clients seem to truncate the integer, probably because
+ they're using atoi, and perhaps signed ints
+
+2001-08-17 Kevin L Mitchell <klmitch@mit.edu>
+
+ * ircd/numnicks.c: include stdlib.h for exit()
+
+ * ircd/ircd_log.c: include stdlib.h for exit()
+
+ * ircd/ircd_events.c: include stdlib.h for exit()
+
+ * ircd/s_stats.c: remove description of /stats v, since it's gone
+
+ * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
+ /wallops to distinguish wallops from wallusers
+
+ * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
+ in the "handshake" or "connecting" states--I think the latter will
+ never happen, but...
+
+ * doc/Authors: apply delete's Authors patch
+
+ * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
+ Braden's version
+
+ * README: rewrite README
+
+2001-07-31 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_serv.c (server_estab): remove unused variable split
+
+ * ircd/parse.c: add mr_error to the parse table
+
+ * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
+ unregistered connections--if IsUserPort() is true, the ERROR is
+ ignored, otherwise, the message is saved
+
+2001-07-28 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_kill.c (ms_kill): another minor typo *sigh*
+
+ * ircd/s_user.c (send_supported): oops, minor typo...
+
+ * ircd/s_user.c: implement send_supported() to send two ISUPPORT
+ messages containing our feature buffers; make register_user() use
+ send_supported()
+
+ * ircd/s_misc.c (exit_client): make sure not to give away a remote
+ server in the ERROR message sent to the client; if the killer is a
+ server, we substitute our name in its place
+
+ * ircd/m_version.c (m_version): use send_supported() to send the
+ ISUPPORT values to the user
+
+ * ircd/m_nick.c: shave nick collision kills here a bit, too, for
+ the same reasons as for m_kill.c
+
+ * ircd/m_kill.c: shave kills a bit so that the results look
+ exactly the same no matter where you are; if we didn't do this, it
+ would be possible to map the network by looking at the differences
+ between kills originating under various circumstances
+
+ * include/supported.h: split the features into two, so as to not
+ bust the parameter count when sending the features list
+
+ * include/s_user.h: declare new send_supported() function to send
+ the ISUPPORT information
+
+2001-07-27 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
+ source-routed spoofing attacks; this is only available under
+ u2.10.11, so don't even bother, since no one but testers are using
+ the source base
+
+2001-07-25 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
+
+ * ircd/s_err.c: put in a . for reporting link version on /trace,
+ to match what /version does
+
+2001-07-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_misc.c (exit_client): servers don't understand what the
+ numeric nick ERROR is supposed to mean, so they ignore error
+ messages, resulting in not knowing why we were rejected; use
+ sendcmdto_one for servers and sendrawto_one for clients
+
+2001-07-17 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
+ a nick collide, a bare BURST may be propagated; adjust the
+ enforced parameter count to accept the bare BURST
+
+2001-07-12 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c: mark a client as having been IP checked
+
+ * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
+ second call to SetIPChecked()
+
+2001-07-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
+
+ * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
+
+2001-07-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
+ sections so that if neither is used, the declaration of buf will
+ not elicit an "unused variable" warning under NetBSD
+
+ * ircd/m_map.c: include string.h to declare strcpy (fix warnings
+ on alpha)
+
+ * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
+ warnings on alpha)
+
+ * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
+ warnings on alpha)
+
+ * ircd/client.c: include string.h to declare memset (fix warnings
+ on alpha)
+
+ * ircd/channel.c: remove unused functions next_overlapped_ban,
+ del_banid, and is_deopped (fix warnings under -O1)
+
+ * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
+ warnings on alpha)
+
+2001-06-29 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_user.c (set_user_mode): clear the snomask if the user
+ isn't supposed to receive server notices anymore
+
+ * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
+
+ * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
+ installation prefix; default devpoll and kqueue to on (they get
+ turned off if the required headers aren't present)
+
+ * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
+ sprintf_irc(); it's a bit hackish, but it'll do for now
+
+ * ircd/support.c: remove unused #include
+
+ * ircd/send.c: remove unused #include
+
+ * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/s_serv.c: remove unused #include
+
+ * ircd/s_misc.c: use ircd_snprintf() and friends instead of
+ sprintf_irc() and friends
+
+ * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
+ ircd/s_err.c, which is the only other file to refer to it
+
+ * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
+ sprintf_irc()
+
+ * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
+ sprintf_irc()
+
+ * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
+
+ * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
+ instead of sprintf_irc()
+
+ * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
+ make depend
+
+ * include/ircd_string.h: remove declaration of sprintf_irc() (what
+ was it doing here anyway?)
+
+ * include/sprintf_irc.h: removed unneeded source file
+
+ * ircd/sprintf_irc.c: removed unneeded source file
+
+ * ircd/s_debug.c (count_memory): remove some dead code
+
+ * ircd/s_auth.c: remove some dead code
+
+ * ircd/res.c (update_list): remove some dead code
+
+ * ircd/m_whowas.c: remove some dead code
+
+ * ircd/m_whois.c: remove some dead code
+
+ * ircd/m_who.c: remove some dead code
+
+ * ircd/m_wallusers.c: remove some dead code
+
+ * ircd/m_wallops.c: remove some dead code
+
+ * ircd/m_wallchops.c: remove some dead code
+
+ * ircd/m_version.c: remove some dead code
+
+ * ircd/m_userip.c: remove some dead code
+
+ * ircd/m_userhost.c: remove some dead code
+
+ * ircd/m_uping.c: remove some dead code
+
+ * ircd/m_trace.c: remove some dead code
+
+ * ircd/m_topic.c: remove some dead code
+
+ * ircd/m_tmpl.c: remove some dead code
+
+ * ircd/m_time.c: remove some dead code
+
+ * ircd/m_squit.c: remove some dead code
+
+ * ircd/m_silence.c: remove some dead code
+
+ * ircd/m_settime.c: remove some dead code
+
+ * ircd/m_set.c: remove some dead code
+
+ * ircd/m_server.c: remove some dead code
+
+ * ircd/m_rpong.c: remove some dead code
+
+ * ircd/m_rping.c: remove some dead code
+
+ * ircd/m_restart.c: remove some dead code
+
+ * ircd/m_reset.c: remove some dead code
+
+ * ircd/m_rehash.c: remove some dead code
+
+ * ircd/m_quit.c: remove some dead code
+
+ * ircd/m_proto.c: remove some dead code
+
+ * ircd/m_privs.c: remove some dead code
+
+ * ircd/m_privmsg.c: remove some dead code
+
+ * ircd/m_pong.c: remove some dead code
+
+ * ircd/m_ping.c: remove some dead code
+
+ * ircd/m_pass.c: remove some dead code
+
+ * ircd/m_part.c: remove some dead code
+
+ * ircd/m_opmode.c: remove some dead code
+
+ * ircd/m_oper.c: remove some dead code
+
+ * ircd/m_notice.c: remove some dead code
+
+ * ircd/m_nick.c: remove some dead code
+
+ * ircd/m_map.c: remove some dead code
+
+ * ircd/m_lusers.c: remove some dead code
+
+ * ircd/m_list.c: remove some dead code
+
+ * ircd/m_links.c: remove some dead code
+
+ * ircd/m_kill.c: remove some dead code
+
+ * ircd/m_kick.c: remove some dead code
+
+ * ircd/m_jupe.c: remove some dead code
+
+ * ircd/m_join.c: remove some dead code
+
+ * ircd/m_ison.c: remove some dead code
+
+ * ircd/m_invite.c: remove some dead code
+
+ * ircd/m_info.c: remove some dead code
+
+ * ircd/m_help.c: remove some dead code
+
+ * ircd/m_gline.c: remove some dead code
+
+ * ircd/m_get.c: remove some dead code
+
+ * ircd/m_error.c: remove some dead code
+
+ * ircd/m_endburst.c: remove some dead code
+
+ * ircd/m_die.c: remove some dead code
+
+ * ircd/m_desynch.c: remove some dead code
+
+ * ircd/m_destruct.c: remove some dead code
+
+ * ircd/m_defaults.c: remove some dead code
+
+ * ircd/m_create.c: remove some dead code, along with an #if 1
+
+ * ircd/m_cprivmsg.c: remove some dead code
+
+ * ircd/m_connect.c: remove some dead code
+
+ * ircd/m_close.c: remove some dead code
+
+ * ircd/m_clearmode.c: remove some dead code
+
+ * ircd/m_burst.c: remove some dead code
+
+ * ircd/m_away.c: remove some dead code
+
+ * ircd/m_admin.c: remove some dead code
+
+ * ircd/listener.c (accept_connection): remove some dead code
+
+ * ircd/ircd_reply.c (need_more_params): remove some dead code
+
+ * ircd/channel.c (add_banid): remove some dead code
+
+ * include/support.h: remove some dead code
+
+ * include/querycmds.h: remove some dead code
+
+ * doc/readme.chroot: document how to do chroot operation
+
+2001-06-28 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
+ force bin directory to be created if necessary prior to
+ installation; run make depend
+
+ * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
+ the ${srcdir}
+
+ * Makefile.in: tune to detect Makefile.in changes in
+ subdirectories and to create installation directory indicated by
+ ${prefix}
+
+ * ircd/whocmds.c (count_users): routine to count the number of
+ users matching a given user@host mask
+
+ * ircd/s_err.c: add error messages for ERR_LONGMASK,
+ ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
+
+ * ircd/m_gline.c: look for and advance past '!' flag on G-lines
+ from operators; only set GLINE_OPERFORCE flag if oper has the
+ PRIV_WIDE_GLINE privilege
+
+ * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
+ maximum number of users a G-line can impact before it has to be
+ forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
+ wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
+ operators to use ! to force a wide G-line to be set
+
+ * ircd/gline.c: make make_gline() be called with separate user and
+ host arguments, and not call canon_userhost() directly; implement
+ gline_checkmask() to verify that a host mask is acceptable; move
+ BADCHAN check up in gline_add(), and check passed-in mask under
+ certain circumstances for acceptability; fix call to
+ sendto_opmask_butone() to handle separation of userhost into user
+ and host in gline_add(); update call to make_gline()
+
+ * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
+ FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
+ PRIV_WIDE_GLINE to privtab[] for client_report_privs()
+
+ * include/whocmds.h (count_users): declare routine to count users
+ matching a given user@host mask
+
+ * include/numeric.h: added three new error returns: ERR_LONGMASK
+ -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
+ many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
+ contains wildcards in the wrong places
+
+ * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
+ FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
+
+ * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
+ to signal to gline_add() that the operator attempted to force the
+ G-line to be set
+
+ * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
+
+ * doc/readme.gline: update to document new "!" prefix to a G-line
+ user@host mask
+
+ * doc/readme.features: document GLINEMAXUSERCOUNT,
+ OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
+
+ * doc/example.conf: update to mention new features along with
+ their defaults
+
+2001-06-27 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * doc/example.conf: updated example.conf from Braden
+ <dbtem@yahoo.com>
+
+ * include/supported.h: forward-port from pl15
+
+2001-06-25 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/whocmds.c: include ircd_policy.h and implement
+ HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
+
+ * ircd/m_whois.c: forward-port of the idle-time hiding code from
+ pl15; this also required passing parc into do_whois(), which also
+ meant passing parc into do_wilds()--*sigh*
+
+ * include/ircd_policy.h: add a couple more HEAD_IN_SAND
+ #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
+
+2001-06-22 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * tools/wrapper.c: add a wrapper program that can be used to
+ adjust file descriptor limits and root directories; program must
+ be run as root--NOT SETUID!--and given appropriate -u arguments
+
+ * doc/readme.log: documentation of how to configure logging
+
+ * doc/readme.features: documentation of each feature (except for
+ logging)
+
+2001-06-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * Makefile.in (config): add a deprecation notice with a pointer to
+ tools/transition
+
+ * tools/transition: shell script to convert old compile-time
+ options into new compile-time options and appropriate F-lines
+
+ * tools/mkchroot: shell-script to prepare the chroot area by
+ copying over all the necessary libraries so they can be found
+
+2001-06-20 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * INSTALL: partial update of INSTALL for u2.10.11 release...
+
+2001-06-14 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/table_gen.c (makeTables): finally got tired of the
+ "overflow in implicit conversion" warning, so just got rid of it
+ by explicitly casting UCHAR_MAX to a (default) char; diffs show no
+ differences in the tables generated
+
+2001-06-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c (sendcmdto_match_butone): don't let the server crash
+ if a client is in the STAT_CONNECTING status
+
+2001-06-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
+ into sendcmdto_one(); define new sendcmdto_prio_one(), which
+ places the message into the priority queue
+
+ * ircd/s_user.c (hunt_server_prio_cmd): definition of
+ hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
+ instead of sendcmdto_one()
+
+ * ircd/m_settime.c: use sendcmdto_prio_one() and
+ hunt_server_prio_cmd() to send SETTIME
+
+ * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
+
+ * include/send.h: removed declaration for unused vsendcmdto_one();
+ added a declaration for sendcmdto_prio_one()
+
+ * include/s_user.h: declare hunt_server_prio_cmd(), which calls
+ sendcmdto_prio_one()
+
+ * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
+ put in the server's priority queue, too...
+
+ * ircd/ircd.c: don't check LPATH for accessibility at all
+
+2001-06-08 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
+ command if we're configured as a hub; send individual server flags
+ in SERVER commands
+
+ * ircd/s_bsd.c (completed_connection): send a +h flag in our
+ SERVER command if we're configured as a hub
+
+ * ircd/m_server.c: implement parv[7] as a mode-like string; +h
+ sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
+ flag for a server; +hs sets both flags; also modify CMD_SERVER
+ format string to send the flags
+
+ * include/client.h: define two new flags, FLAGS_HUB and
+ FLAGS_SERVICE to mark services and hubs as such; define testing
+ macros, setting macros
+
+ * ircd/s_user.c: remove deprecated struct Gline* argument to
+ register_user(); remove GLINE rebroadcast; do not send GLINE
+ acknowledgement parameter to NICK; do not look for GLINE
+ acknowledgement parameter to NICK while parsing
+
+ * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
+ argument to server_estab(); do not send JUPE/GLINE acknowledgement
+ parameters for SERVER or NICK
+
+ * ircd/m_user.c (m_user): remove deprecated argument to
+ register_user()
+
+ * ircd/m_server.c: remove deprecated argument to server_estab();
+ remove documentation comment regarding JUPE acknowledgement
+ parameter to SERVER; remove JUPE rebroadcast
+
+ * ircd/m_pong.c (mr_pong): remove deprecated argument to
+ register_user()
+
+ * ircd/m_nick.c: remove documentation comment regarding GLINE
+ acknowledgement parameter to NICK
+
+ * ircd/jupe.c: use user's real name in JUPE server notices if
+ HEAD_IN_SAND_SNOTICES is defined
+
+ * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
+ setuid code; correct ancient DEBUG vs DEBUGMODE typo
+
+ * ircd/gline.c: use user's real name in GLINE server notices if
+ HEAD_IN_SAND_SNOTICES is defined
+
+ * ircd/channel.c (modebuf_flush_int): make apparent source be
+ local server, not oper's server; use user's real name in hack
+ notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
+
+ * include/s_user.h: remove struct Gline pre-declaration; remove
+ deprecated struct Gline argument from register_user()
+
+ * include/s_serv.h: remove struct Jupe pre-declaration; remove
+ deprecated struct Jupe argument from server_estab()
+
+2001-06-07 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
+ changes required to control remote stats
+
+ * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
+ recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
+ [forward-port from pl15]
+
+ * ircd/m_whowas.c (m_whowas): report server name only if requester
+ is an operator [forward-port from pl15]
+
+ * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
+ my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
+ and obtain the report from the user's server [forward-port from
+ pl15]
+
+ * ircd/m_who.c: add missing include for ircd_policy.h
+ [forward-port from pl15]
+
+ * ircd/m_version.c (m_version): require oper access for remote
+ /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_time.c (m_time): require oper access for remote /time if
+ HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
+ missing semicolon [forward-port from pl15]
+
+ * ircd/m_nick.c (ms_nick): hide the origin of certain collision
+ kills [forward-port from pl15]
+
+ * ircd/m_motd.c (m_motd): require oper access for remote /motd if
+ HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_lusers.c (m_lusers): require oper access for remote
+ /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/m_burst.c (ms_burst): server-added bans are stored using
+ local server name, to hide remote server names; modes also are to
+ originate from the local server [forward-port from pl15]
+
+ * ircd/m_admin.c (m_admin): require oper access for remote /admin
+ if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
+
+ * ircd/channel.c (add_banid): if a server is adding a ban, use my
+ server name to hide the remote server's name [forward-port from
+ pl15]
+
+ * ircd/Makefile.in: ran make depend
+
+ * include/s_stats.h: hunt_stats() has to have an extra argument to
+ support the forward-port from pl15
+
+ * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
+ HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
+
+ * ircd/engine_poll.c (engine_loop): remove bogus assert that I
+ forgot to check in the events branch
+
+2001-06-06 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/res.c (init_resolver): don't start DNS expires with a 0
+ relative timeout--if the server starts slow, timeouts could be
+ messy...there's probably a better solution, but this'll do for now
+
+ * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
+ headers very well; include stropts.h; define an os_set_tos()
+
+ * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
+ os_generic.c
+
+ * ircd/ircd.c: if there are no C-lines, we don't want to have a
+ timer that expires at the absolute time of 0--it kinda blocks all
+ the other timers!
+
+ * ircd/engine_devpoll.c: some includes for open(); declare errcode
+ and codesize in engine_loop()
+
+ * ircd/list.c (free_client): remove bogus check on timer active
+ flag
+
+ * ircd/s_auth.c: pull out destruction code in
+ auth_timeout_request() into an externally-visible
+ destroy_auth_request(); manage cli_auth pointer in client
+ structure; use it for an extra assertion check
+
+ * ircd/list.c: include s_auth.h for destroy_auth_request(); add
+ debugging notices to show flow when deallocating
+ connections/clients; call destroy_auth_request() when free'ing a
+ client that has an auth outstanding; don't free the connection if
+ the process timer is unmarked but still active
+
+ * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
+ and reset it before calling the event handler for an ET_DESTROY
+ event
+
+ * include/s_auth.h (destroy_auth_request): declare
+ destroy_auth_request(), which can be used to destroy an
+ outstanding auth request if a client socket goes away before the
+ auth exchange is completed
+
+ * include/ircd_events.h: add an active flag to keep track of
+ whether or not particular generators are active, for the
+ convenience of functions using the API
+
+ * include/client.h: add a pointer for auth requests to struct
+ Connection so we can kill outstanding auth requests if a client
+ socket closes unexpectedly
+
+ * ircd/s_bsd.c: cli_connect() could become 0 during the course of
+ the sock or timer callback; take that into account in the assert
+
+ * ircd/list.c: add magic number checking and setting--magic
+ numbers are zero'd on frees to detect double-frees; add back
+ setting of cli_from() to 0 to break the back-link from the struct
+ Connection (duh)
+
+ * ircd/ircd.c: set me's magic number correctly
+
+ * include/client.h: define magic numbers and accessor/verifier
+ macros
+
+ * ircd/list.c: assert that dealloc_client() is called with
+ cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
+ dealloc_client(); don't mess with cli_from(cptr)
+
+ * ircd/s_bsd.c: only attempt to dealloc a connection if the
+ associated client has already been destroyed, or at least delinked
+
+2001-06-05 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/list.c (free_client): only try to delete the socket when
+ the fd hasn't already been closed, avoiding a double-free
+
+ * ircd/list.c (free_connection): make sure the client is really
+ gone before doing away with the connection
+
+ * ircd/s_bsd.c: record that socket has been added in con_freeflag
+ field; queue a socket_del() as soon as the socket is close()'d;
+ use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
+ FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
+ then dealloc the connection if safe; mark socket as dead when
+ there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
+ to client_timer_callback(); dealloc connection if safe upon
+ ET_DESTROY event in client_timer_callback()
+
+ * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
+ the connection if both socket and timer have been destroyed;
+ destroy both socket and timer explicitly and carefully
+
+ * include/client.h: replace the con_timer field with a
+ con_freeflag field, to indicate what still needs freeing; define
+ the freeflags
+
+ * ircd/engine_select.c (engine_loop): duh...sockList[i] could
+ become 0
+
+ * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
+ become 0
+
+ * ircd/s_bsd.c: add some extra assertions to try to track down a
+ corruption problem
+
+ * ircd/engine_select.c (engine_loop): add an extra assert to try
+ to track down a corruption problem
+
+ * ircd/engine_poll.c (engine_loop): add an extra assert to try to
+ track down a corruption problem
+
+ * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
+ to track down a corruption problem
+
+ * ircd/engine_devpoll.c (engine_loop): skip slots that have become
+ empty during processing; add an extra assert to try to track down
+ a corruption problem
+
+ * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
+ entries
+
+2001-06-04 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c (client_sock_callback): client is no longer
+ blocked, so we must mark it as unblocked
+
+ * ircd/engine_select.c: add Debug() calls galore; add handling for
+ SS_NOTSOCK; use a dummy sock variable to keep things from
+ disappearing on us; correct timeout calculation; update nfds for
+ efficiency
+
+ * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
+ remove a spurious "if (sock)" which will always be true; update
+ nfds for efficiency
+
+ * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
+ SS_NOTSOCK (just in case); correct timeout calculation
+
+ * ircd/engine_devpoll.c: add Debug() calls galore; add handling
+ for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
+
+ * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
+ pretty-indent numbers
+
+ * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
+ case--it's not a socket; the check for writability is most likely
+ not needed, but present for completeness
+
+2001-05-24 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
+ no newline flag is set; call read_packet() when the timer expires,
+ regardless of what's in the buffer--read_packet() should be able
+ to deal properly
+
+ * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
+ sent to clients to include the client nickname (duh)
+
+ * ircd/ircd_events.c: don't destroy a timer if it's already marked
+ for destruction; replace a missing ! in socket_del()
+
+ * ircd/engine_poll.c (engine_loop): reference a temporary variable
+ so we don't have to worry about sockList[i] going away
+
+ * ircd/s_bsd.c (client_sock_callback): add Debug messages
+
+ * ircd/s_auth.c: add Debug messages all over the place
+
+ * ircd/ircd_events.c: add and edit some Debug messages; add a list
+ of routines to convert some of the enums and flags from numbers
+ into human-readable strings for the Debug messages
+
+ * ircd/engine_poll.c: hack some Debug messages to use the new name
+ conversion routines in ircd_events.c; add an extra assert for a
+ condition that shouldn't ever happen; apparently recv() can return
+ EAGAIN when poll() returns readable--I wonder why...
+
+ * include/ircd_events.h: declare some helper routines under
+ DEBUGMODE
+
+2001-05-23 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_bsd.c (client_sock_callback): add an extra assertion
+ check
+
+ * ircd/s_auth.c: add more Debug messages
+
+ * ircd/list.c (make_client): add an extra assertion check
+
+ * ircd/ircd_events.c (socket_events): don't call the engine events
+ changer if we haven't actually made any changes to the event mask
+
+ * ircd/uping.c: add some Debug messages
+
+ * ircd/s_stats.c: document new /STATS e
+
+ * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
+
+ * ircd/s_bsd.c: remove static client_timer variable; in
+ read_packet(), if there's still data in the client's recvQ after
+ parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
+ of client_sock_callback to handle destroying the timer properly;
+ rewrote client_timer_callback from scratch to be called on an
+ individual client
+
+ * ircd/m_stats.c: add /STATS e to report the engine name
+
+ * ircd/list.c: deal with con_timer field in struct Connection
+ properly; correct a core-level bug in remove_client_from_list--if
+ the client is the only one in the list, we try to update
+ GlobalClientList's cli_prev pointer--not good
+
+ * ircd/ircd.c: remove call to init_client_timer()
+
+ * ircd/engine_poll.c: made Debug messages more uniform by
+ prepending "poll:" to them all; corrected an off-by-one error that
+ caused poll_count to be 1 less than the actual count and removed
+ my work-around; added Debug messages to indicate which socket is
+ being checked and what the results are
+
+ * ircd/Makefile.in: ran a make depend
+
+ * include/s_bsd.h: remove init_client_timer(), since we're doing
+ it differently now
+
+ * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
+ engine name
+
+ * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
+ reports for non-opers
+
+ * include/client.h: add con_timer and con_proc fields to struct
+ Connection and define accessor macros--con_timer marks that
+ con_proc contains a valid timer, and con_proc is used to pace user
+ data
+
+ * ircd/s_bsd.c (close_connection): let free_client() destroy the
+ socket
+
+ * ircd/s_auth.c (start_auth): add a Debug call to indicate when
+ auth has begun on a client
+
+ * ircd/ircd_events.c: ensure that event_execute() is called with a
+ non-NULL event; modify event_add() macro to properly zero list
+ bits; modify gen_dequeue() to not try to clip it out of a list
+ it's already been clipped out of; change signal socket
+ initialization to use state SS_NOTSOCK; permit timeout values of
+ 0 in add_timer(); add many Debug calls; change socket_del() and
+ timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
+ timer_run() instead of GEN_DESTROY so that event_generate() will
+ pass on the events; remove the switch and replace with a simpler
+ if-then-else tree in timer_run(); don't allow destroyed sockets to
+ be destroyed again, nor their states or event masks to be changed
+
+ * ircd/ircd.c: initialize "running" to 1
+
+ * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
+ messages all over the place; fix a counting problem in
+ engine_add(); turn wait into a signed integer and set it to -1
+ only if timer_next() returns 0; adjust wait time to be relative;
+ don't call gen_ref_dec() if socket disappeared while we were
+ processing it
+
+ * include/ircd_events.h: the pipe for signals is not a socket, so
+ we must mark it as such--added SS_NOTSOCK for that special socket;
+ events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
+ for the benefit of timer_run()
+
+ * configure.in: add --enable-pedantic and --enable-warnings to
+ turn on (and off) -Wall -pedantic in CFLAGS
+
+2001-05-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_conf.c: change "s_addr" element accesses to "address"
+ element accesses
+
+ * include/s_conf.h: on some systems, "s_addr" is a macro; use
+ "address" instead
+
+2001-05-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
+ void in this file; add a missing semi-colon; declare errcode,
+ codesize
+
+ * ircd/uping.c (uping_sender_callback): it's pptr, not uping
+
+ * ircd/s_user.c (register_user): comment out spurious reference to
+ nextping
+
+ * ircd/s_serv.c (server_estab): comment out spurious reference to
+ nextping
+
+ * ircd/s_conf.c (read_configuration_file): comment out spurious
+ reference to nextping and nextconnect
+
+ * ircd/s_bsd.c: comment out some spurious references to formerly
+ global (now non-existant) variables; correct a couple of typos
+
+ * ircd/s_auth.c: pre-declare some functions referenced in the
+ callback; correct a typo
+
+ * ircd/res.c (start_resolver): pass errno value of ENFILE
+
+ * ircd/listener.c (accept_connection): you know your API is messed
+ up when...variables that shouldn't have been global crop up in
+ other files
+
+ * ircd/list.c (free_client): substitution of == for =
+
+ * ircd/ircd_signal.c: include assert.h for assertion checking;
+ check ev_data() to find out what signal generated event
+
+ * ircd/ircd_events.c: some references to the variable "timer"
+ should have been references to the variable "ptr"
+
+ * ircd/engine_select.c: it's struct fd_set, not struct fdset;
+ ev_timer(ev) is already a timer pointer; declare codesize as a
+ size_t to correct signedness issue; use timer_next(), not
+ time_next()
+
+ * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
+ select fd out of struct pollfd in assertion checking; declare
+ errcode and codesize; use timer_next(), not time_next()
+
+ * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
+ use function timer_next(), not time_next()
+
+ * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
+ use function timer_next(), not time_next()
+
+ * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
+ compiled sources; do make depend
+
+ * include/list.h: pre-declare struct Connection
+
+ * include/ircd_events.h (gen_ref_inc): cast to the right structure
+ name
+
+ * include/s_auth.h: duh; missing */
+
+2001-05-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: update write events status after sending data or
+ accumulating data to be sent
+
+ * ircd/m_list.c (m_list): update write events status after
+ canceling a running /list
+
+ * ircd/channel.c (list_next_channels): update write events status
+ after listing a few channels
+
+ * ircd/s_bsd.c: extensive changes to update to new events model;
+ remove on_write_unblocked() and the two implementations of
+ read_message(), which have been deprecated by this change
+
+ * ircd/s_auth.c: set the socket events we're interested in for
+ clients; simplify some logic that does the connect_nonb followed
+ by the socket_add
+
+ * ircd/list.c: define free_connection() to free a connection
+ that's become freeable once the struct Socket has been
+ deallocated; fix up free_client() to take this new behavior into
+ account
+
+ * ircd/ircd.c: call init_client_timer()
+
+ * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
+ to register connect-in-progress with events system; declare
+ init_client_timer() (HACK!) to preserve rate-limiting behavior
+
+ * include/list.h: declare new free_connection()
+
+ * include/client.h: add a struct Socket to struct Connection
+
+2001-05-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
+ SIGTERM into event callbacks; perform the actions in the
+ callbacks, since they're not called in the context of the signal;
+ set up the signal callbacks in the event engine
+
+ * ircd/ircd_events.c (signal_callback): we're supposed to look for
+ a specific signal; don't generate an event if there is no signal
+ structure for it
+
+ * ircd/ircd.c: nuke nextconnect and nextping and replace them with
+ connect_timer and ping_timer; massage try_connections() and
+ check_pings() into timer callbacks that re-add themselves at the
+ right time; remove ircd.c's "event_loop()"; initialize the event
+ system and the connect_timer and ping_timer
+
+ * ircd/uping.c: correct a couple more typos
+
+ * ircd/s_auth.c: rework to use new events system
+
+ * ircd/os_solaris.c (os_connect_nonb): update to new interface
+
+ * ircd/os_openbsd.c (os_connect_nonb): update to new interface
+
+ * ircd/os_linux.c (os_connect_nonb): update to new interface
+
+ * ircd/os_generic.c (os_connect_nonb): update to new interface
+
+ * ircd/os_bsd.c (os_connect_nonb): update to new interface
+
+ * include/s_auth.h: remove deprecated members of struct
+ AuthRequest, replacing them with struct Socket and struct Timer
+ structures; add flags to indicate when these structures have been
+ released by the event system; remove the deprecated
+ timeout_auth_queries()
+
+ * include/ircd_osdep.h (os_connect_nonb): connect could complete
+ immediately, so change the interface to handle that possibility
+
+ * ircd/uping.c (uping_server): noticed and corrected a typo
+
+ * ircd/listener.c: set up to use ircd_event's struct Socket by
+ adding an socket_add() call to inetport(), replacing
+ free_listener() with socket_del() in close_listener(), and
+ reworking accept_connection to be called as the callback
+
+ * ircd/ircd.c: add a call to IPcheck_init()
+
+ * ircd/IPcheck.c: remove IPcheck_expire(); rework
+ ip_registry_expire() to be called from a timer; write
+ IPcheck_init() to set up the expiration timer (hard-coded for a
+ 60-second expiration time)
+
+ * include/listener.h: add a struct Socket to the struct Listener;
+ remove accept_connection()
+
+ * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
+
+2001-05-08 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
+ USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
+
+ * ircd/engine_select.c: include config.h; set FD_SETSIZE to
+ MAXCONNECTIONS, not IRCD_FD_SETSIZE...
+
+ * ircd/engine_poll.c: include config.h
+
+ * ircd/engine_kqueue.c: include config.h
+
+ * ircd/engine_devpoll.c: include config.h
+
+ * ircd/Makefile.in: include engine sources in compilation and make
+ depend steps
+
+ * configure.in: add checks for enabling the /dev/poll- and
+ kqueue-based engines
+
+ * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
+
+ * ircd/Makefile.in: work in the engine sources
+
+2001-05-07 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_settime.c: include ircd_snprintf.h
+
+ * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
+ parens around a construct that had both || and &&
+
+ * ircd/chkconf.c: #include "config.h" to get some important
+ definitions
+
+ * ircd/Makefile.in: revamp ircd makefile for new build system
+
+ * doc/Makefile.in: revamp doc makefile for new build system
+
+ * config/*: Removed old build system files
+
+ * stamp-h.in: a stamp file
+
+ * install-sh: install-sh for new build system
+
+ * configure.in: configure.in for new build system
+
+ * configure: configure script for new build system (built by
+ autoconf)
+
+ * config.sub: config.sub for new build system
+
+ * config.h.in: config.h.in for new build system (built by
+ autoheader)
+
+ * config.guess: config.guess for new build system
+
+ * aclocal.m4: aclocal.m4 for new build system (built by aclocal
+ 1.4)
+
+ * acinclude.m4: aclocal.m4 macros for new build system
+
+ * acconfig.h: config.h skeleton for new build system
+
+ * Makefile.in: modify for new build system
+
+2001-05-01 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
+
+ * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
+
+ * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
+
2001-05-01 Perry Lorier <Isomer@coders.net>
* doc/iauth.doc: Protocol for iauth server. (from hybrid).
* doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
* ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
flag, send only to appropriate opers
+2001-04-13 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/uping.c: refit to use the new events interface
+
+ * ircd/res.c: refit to use the new events interface
+
+ * ircd/ircd_events.c: create timer_chg(), which permits a
+ (non-periodic) timer's expire time to be modified; change the
+ logic in timer_run() so that timers that were re-added while the
+ event was being processed will not be destroyed prematurely
+
+ * include/uping.h: include the events header, declare some extra
+ fields in struct UPing, remove timeout value, and define some
+ flags for marking which cleanup items have yet to be done
+
+ * include/ircd_events.h: add a prototype for timer_chg() to change
+ the expire time of a running timer
+
2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
* ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
* ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
+2001-01-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c (timer_run): it's possible that the timer got
+ deleted during the callback processing, so don't go to the bother
+ of requeuing it if the destroy flag is set
+
+ * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
+ out of config.h if this is a *BSD; include errno.h (oops);
+ decrement error count after an hour using a timer; use FD_SETSIZE
+ constant instead of IRCD_FD_SETSIZE constant; fill in event
+ processing code
+
+ * ircd/engine_poll.c: include errno.h (oops); decrement error
+ count after an hour using a timer; fill in event processing code
+
+ * ircd/engine_kqueue.c: include errno.h (oops); decrement error
+ count after an hour using a timer; assert events filter is either
+ EVFILT_READ or EVFILT_WRITE; fill in event processing code
+
+ * ircd/engine_devpoll.c: include errno.h (oops); decrement error
+ count after an hour using a timer; fill in event processing code
+
2001-01-15 Kevin L. Mitchell <klmitch@mit.edu>
* ircd/client.c: fixed feattab; basically, when I changed features
privileges together; also fixed a bug in the antiprivs masking
loop in client_set_privs()--last index wouldn't get parsed
+2001-01-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c: call event_generate() with new data
+ argument; make it set that field in struct Event; make
+ socket_add() return the value of the eng_add callback
+
+ * ircd/engine_select.c: make engine_add() return a
+ successful/unsuccessful status; add bounds-checking outside of an
+ assert; use accessor macros; use log_write(), not the deprecated
+ ircd_log(); add an assert to engine_loop() to double-check for
+ data structure corruption
+
+ * ircd/engine_poll.c: make engine_add() return a
+ successful/unsuccessful status; add bounds-checking outside of an
+ assert; use accessor macros; use log_write(), not the deprecated
+ ircd_log(); add an assert to engine_loop() to double-check for
+ data structure corruption
+
+ * ircd/engine_kqueue.c: implementation of an engine for kqueue()
+
+ * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
+
+ * include/ircd_events.h: define some accessor macros; add ev_data
+ to struct Event for certain important data--errno values, for
+ instance; make EngineAdd callback tell us if it was successful or
+ not; add extra argument to event_generate(); make socket_add()
+ return the status from EngineAdd
+
+2001-01-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c: pass initializer information about how many
+ total _filedescriptors_ may be opened at once
+
+ * ircd/ircd.c: use exported "running" instead of unexported
+ thisServer.running
+
+ * ircd/engine_select.c: implementation of an event engine based on
+ select()
+
+ * ircd/engine_poll.c: implementation of an event engine based on
+ poll()
+
+ * include/ircd_events.h: pass the engine initializer an integer
+ specifing how many _filedescriptors_ may be opened at once
+
+ * include/ircd.h: running has to be exported for the engine_*
+ event loops
+
+2001-01-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_events.c: include some needed headers; add some
+ comments; make evEngines[] const; bundle sig_sock and sig_fd into
+ a struct named sigInfo; rework struct evInfo to have a queue of
+ _generators_, and only when threaded; added a gen_init() function
+ to centralize generator initialization; fix various compile-time
+ errors; rework event_add() for new queueing scheme and checked for
+ compile-time errors; add casts where needed; spell evEngines[]
+ correctly; make engine_name() return const char*
+
+ * include/ircd_events.h: type EventCallBack depends on struct
+ Event, so pre-declare it; put _event_ queue into generators, and
+ only when threaded; give engine data a union to store both ints
+ and pointers; make engine name a const; fix gen_ref_dec() macro;
+ make engine_name() return a const char*
+
+ * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
+ down with the non-static functions; modify event_execute() to use
+ the new gen_ref_dec() to simplify code; make sure event_generate()
+ does not generate new events for generators marked for destruction
+
+ * include/ircd_events.h: the engines, at least, may need to modify
+ reference counts to keep generators from going away while
+ something still points at them, so add reference counter
+ manipulators and export gen_dequeue() for them
+
+ * ircd/ircd_events.c: set up the list of engines to try; set up
+ the signal struct Socket; rename netInfo to evInfo; move static
+ functions near the beginning of the file; do away with
+ signal_signal() (since we no longer keep a signal count ourselves)
+ and call event_generate() directly from signal_callback--also
+ renamed some functions; allow signal_callback() to read up to
+ SIGS_PER_SOCK at once from the signal pipe; add event_init() to
+ initialize the entire event system; add event_loop() to call the
+ engine's event loop; initialize new struct GenHeader member,
+ gh_engdata; remove timer_next(); add socket_add() function to add
+ a socket; add socket_del() to mark a socket for deletion; add
+ socket_state() to transition a socket between states; add
+ socket_events() to set what events we're interested in on the
+ socket; add engine_name() to retrieve event engine's name
+
+ * include/ircd_events.h: add engine data field to struct
+ GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
+ note about states vs s_events; remove signal count; fold union
+ Generator back into struct Event; remove count members from struct
+ Generators; redefine engine callbacks to not take a struct
+ Engine*; add explanatory comments to callback definitions; add
+ some engine callbacks to handle operations; remove struct Engine
+ flag member--can detect single flag from eng_signal member; add
+ event_init(), event_loop(), engine_name(), and the socket_*()
+ functions; make timer_next() a macro to avoid a function call
+
+2001-01-08 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/ircd_events.h: rename to ircd_events.h, since it handles
+ events, not just networking stuff; add signal support; more
+ structural rearrangement
+
+ * ircd/ircd_events.c: rename to ircd_events.c, since it handles
+ events, not just networking stuff; add signal support; more
+ structural rearrangement
+
+2001-01-07 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_network.c: implement timer API; add reference counts
+ appropriately
+
+ * include/ircd_network.h: firm up some pieces of the interface;
+ split out members everything has into a separate structure; add
+ reference counts; add timer API
+
+2001-01-06 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_network.c: static data and event manipulation
+ functions for new event processing system
+
+ * include/ircd_network.h: data structures for new event processing
+ system
+
2001-01-03 Kevin L. Mitchell <klmitch@mit.edu>
* ircd/whowas.c: Completely re-did the old allocation scheme by
* include/channel.h: added definition of ModeBuf, modebuf_*
manipulation functions, and a couple of helper macros
-2000-03-24 Thomas Helvey <tomh@inxpress.net>
- * numicks.c: convert extended numerics to use original mask version
- * numnicks.h: ""
- * s_user.c:
-2000-03-23 Thomas Helvey <tomh@inxpress.net>
- * Merge in changes from production
-2000-03-22 Thomas Helvey <tomh@inxpress.net>
- * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
- * rfc1459.unet: Add Maniac's documentation for /names 0
-* Fix misc. jupe bugs that somehow made it into the tree
-* Escape /names 0 to mean /names --Maniac
-* Don't core when server asks for info --Maniac
-* Add Kev's jupe patch --Bleep
-* Add Maniacs squit patch --Bleep
-* Merge in u2_10_10_beta07 changes --Bleep
-* Merge in u2_10_10_beta06 changes --Bleep
-* Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
-#-----------------------------------------------------------------------------