1 2002-03-08 Carlo Wood <run@alinoe.com>
2 * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
3 and CHFL_BURST_ALREADY_VOICED.
5 * ircd/m_burst.c: Allow BURST outside net-burst
6 and take into account that users are already joined
7 to the channel in that case.
9 * ircd/m_destruct.c: Implementation of DESTRUCT
12 * ircd/m_join.c: Set the channel creationtime to
13 the timestamp of a message when that timestamp is
15 2002-02-27 Reed Loden <reed@redmagnet.com>
16 * tools/crypter: Updated some variables, added another notice,
17 added CVS Id tag, and updated Perl location.
19 * tools/ringlog.c: Added IRC - Internet Relay Chat,
22 * tools/ringlog.pl: Added IRC - Internet Relay Chat,
25 * tools/wrapper.c: Added IRC - Internet Relay Chat,
28 * tools/mkpasswd.c: Added CVS Id tag
30 * tools/sums: Updated to comply with sums being moved to tools/
33 * tools/README: Updated location of file and partly rewrote to fit
36 * tools/Makefile.crypt: Updated location of file and added CVS Id
39 * acconfig.h: Updated location of file
41 * config.h.in: Updated location of file
43 * tools/Bounce/bounce.conf: Added CVS Id tag
45 * tools/Bounce/Bounce.cpp: Updated location of file
47 * tools/Bounce/Bounce.h: Updated location of file
49 * tools/hashtoy: Added CVS Id Tag
51 2002-02-27 Carlo Wood <run@alinoe.com>
53 * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
55 2002-03-01 Carlo Wood <run@alinoe.com>
57 * include/channel.h: struct Channel: new attribute destruct_event.
58 Prototype for destruct_channel().
60 * include/destruct_event.h: new header file for destruct_event.c.
62 * ircd/Makefile.in: New source file: destruct_event.c.
64 * ircd/channel.c: sub1_from_channel: Don't destruct channel
65 immedeately but instead schedule it for destruction after
66 some time when a channel becomes empty (and clear invite
67 only and limit in that case).
68 destruct_channel: new function, was previously the destructing
69 part of sub1_from_channel.
70 add_user_to_channel: remove destruction request if any.
72 * ircd/destruct_event.c: New file. Implementation of functions
73 schedule_destruct_event_1m, schedule_destruct_event_48h,
74 remove_destruct_event and exec_expired_destruct_events.
76 * ircd/ircd.c: destruct_event_timer: new timer.
77 main: use destruct_event_timer to call exec_expired_destruct_events
80 * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
81 channels. Schedule new empty channels for destruction.
83 * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
85 2002-03-01 Carlo Wood <run@alinoe.com>
86 * ircd/s_misc.c: exit_client: Only call map_update()
89 2002-02-28 Carlo Wood <run@alinoe.com>
90 * include/channel.h: New attribute 'oplevel' in struct Membership.
91 Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
92 New macros: OpLevel(member): returns op-level of member and
93 SetOpLevel(member, value): sets op-level of member.
94 Prototype of add_user_to_channel: add oplevel to parameters.
95 Prototype of mode_parse: add member to to parameters.
97 * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
101 * ircd/channel.c: Removed unmatched '{' braces from comments
102 (confuses vi). add_user_to_channel: oplevel is passed to function
103 and added in the created MemberShip structure. send_channel_modes:
104 Generate the nick:mode list of the BURST msg in the new style (with
105 op-levels). DONE_UPASS/DONE_APASS: fixed typo in comment. struct
106 ParseState: New attribute: member. mode_process_clients: Disallow
107 deopping someone with an equal or higher op-level, take care of
108 inheritance of op-level. mode_parse: member is passed to function
109 and added in the created ParseState structure. joinbuf_join: pass 0
110 as oplevel to add_user_to_channel as needed initialization of oplevel
111 in struct MemberShip.
113 * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
114 decoding of a BURST message and passing on a BURST message.
115 Renamed default_mode to current_mode.
117 * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
119 * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
120 to mode_parse (causes opped member to get op-level 0).
122 2002-02-25 Carlo Wood <run@alinoe.com>
123 * include/channel.h: Added two new strings to struct Mode,
124 upass and apass, both with maximum length PASSLEN (a new
125 define in this file). Two new mode defines MODE_UPASS and
128 * ircd/channel.c: is_level0_op: Added as dummy function.
129 channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
130 Added support for MODE_APASS (+A) and MODE_UPASS (+u).
131 mode_parse_upass: New function to parse mode +u.
132 mode_parse_apass: New function to parse mode +A.
134 * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).
136 2002-02-25 Carlo Wood <carlo@alinoe.com>
138 * ircd/m_server.c: remove unused variables
140 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
142 * ircd/m_map.c: Modified to show a useful output to non-opered
143 clients when HEAD_IN_SAND_MAP is defined. Servers are added to
144 the list when first seen (after receiving SERVER) and that list
145 is sent to clients. Servers are excluded from the list if they are
146 hubs, services, or have been missing for more than 1 week.
148 * ircd/map.c: Created file for map_* functions
150 * include/map.h: Created file for map_* functions
152 * ircd/m_server.c: Added calls to map_update()
154 * ircd/s_misc.c: Added call to map_update()
156 * ircd/parse.c: Changed to use m_map() and mo_map()
158 2002-02-22 Reed Loden <reed@redmagnet.com>
160 * ircd/m_connect.c: Removed an extra : in remote connect message.
162 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
164 * ircd/whocmds.c: Local opers should also be able to
165 see servernames in /who
167 * ircd/gline.c: Fix core bug in gline_find()
169 * ircd/m_kill.c: Bug fix for HIS_KILLWHO
171 2002-02-19 John Buttery <john@io.com>
173 * ircd/ircd.c: Updated "No such file" error message.
175 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
177 * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
178 a message handler, and some general cleanups and bug fixes.
180 * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
183 2002-02-16 Tim Vogelsang <net@astrolink.org>
185 * ircd/m_kill.c: added a new static function, m_kill, which
186 performs the actual kill.
188 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
190 * Added support for LIST STOP
192 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
194 * Merged changes from u2_10_11 to main branch.
196 2002-02-08 Tim Vogelsang <net@astrolink.org>
198 * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
201 2002-02-06 Kevin L Mitchell <klmitch@mit.edu>
203 * ircd/s_auth.c (read_auth_reply): left out an = in an
204 assertion--shouldn't have had any impact, though
206 * ircd/Makefile.in: add a hook for using ringlog; run make depend
208 * tools/ringlog.c: for the heck of it, add a comment including
211 2002-02-05 Kevin L Mitchell <klmitch@mit.edu>
213 * tools/ringlog.pl: perl script to take output from ringlog and
214 pass it to addr2line to get function, file, and line number
217 * tools/ringlog.c: program/object to help in building function
220 2002-02-04 Alex Badea <vampire@p16.pub.ro>
222 * include/ircd_features.h: added new feature MOTD_BANNER
224 * ircd/ircd_features.c: added new feature MOTD_BANNER
226 * ircd/motd.c (motd_signon): send a one-line banner from
227 FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
230 * doc/example.conf: default value for MOTD_BANNER feature
232 * doc/readme.features: documented the MOTD_BANNER feature
234 2002-02-04 Kevin L Mitchell <klmitch@mit.edu>
236 * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
237 check; added character 'A' to the server options string to
238 indicate when assertion checking is enabled
240 2002-02-03 Kevin L Mitchell <klmitch@mit.edu>
242 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
244 * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
245 event if the errno is EBADF, since the caller probably already
246 knows about it and just hasn't gotten around to processing it yet
248 * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
249 is generated; don't process socket_events() or socket_state() if
250 an error occurred; add GEN_ERROR to list of flags in gen_flags()
252 * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
255 2002-02-01 Kevin L Mitchell <klmitch@mit.edu>
257 * ircd/channel.c: change make_nick_user_{ip,host} to not use a
258 static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
259 NUI_BUFSIZE--I confess they're not well-named) is allocated by the
262 2002-02-02 Alex Badea <vampire@p16.pub.ro>
264 * include/client.h: added user flag FLAGS_HIDDENHOST
266 * include/ircd_features.h: added FEAT_HOST_HIDING and
269 * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
270 to report real hostnames and IPs to opers
272 * include/s_user.h: exported hide_hostmask()
274 * include/send.h: changed sendcmdto_channel_butserv to
275 sendcmdto_channel_butserv_butone; ditto for
276 sendcmdto_common_channels
278 * include/struct.h: added realhost to struct User
280 * include/whowas.h: added realhost to struct Whowas
282 * ircd/channel.c: match bans against both real and hidden
283 hostmasks; moved some calls to use sendcmdto_*_butone
285 * ircd/gline.c: match glines agains real host
287 * ircd/ircd_features.c: added FEAT_HOST_HIDING and
290 * ircd/m_account.c: call hide_hostmask() for possibly
291 hiding the user's host
293 * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
295 * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
297 * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
300 * ircd/m_who.c: match real hosts, if the query comes from an oper
302 * ircd/m_whois.c: report real hostname and IP to opers
304 * ircd/m_whowas.c: report real hostname to opers
306 * ircd/s_err.c: added user mode 'x' to the list of supported user
307 modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
308 real hostnames to opers
310 * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
312 * ircd/s_serv.c: send real hostname to servers
314 * ircd/s_user.c: send real hostname to servers; added processing
315 of usermode 'x'; added hide_hostmask() which actually does the work
316 of hiding a user's host; moved some calls to use sendcmdto_*_butone
318 * ircd/send.c: changed sendcmdto_channel_butserv to
319 sendcmdto_channel_butserv_butone; ditto for
320 sendcmdto_common_channels
322 * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
325 * ircd/whowas.c: if needed, store a user's real host so we can
326 report it to opers later
328 * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
331 * doc/example.conf: default values for HOST_HIDING and
334 2002-02-01 Tim Vogelsang <net@astrolink.org>
336 * ircd/send.c (sendwallto_group_butone): don't sent wallops to
339 2002-01-28 Kevin L Mitchell <klmitch@mit.edu>
341 * ircd/jupe.c (jupe_activate): remove a bogus assertion
343 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
345 * ircd/s_err.c: added new channel mode 'r' to list of supported
346 channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
347 numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
348 informing users why they can't join a +r channel
350 * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
351 (+r) to do_clearmode(); note that it is *not* being added to the
352 default clearmode mask!
354 * ircd/channel.c: don't allow non-+r users to send messages to +r
355 channels from off the channel; add support for MODE_REGONLY (+r)
356 to channel_modes(); don't allow non-+r users to join +r channels
357 without an invite; add support for MODE_REGONLY to the modebuf_*()
358 family of functions (changes in modebuf_flush_int(),
359 modebuf_mode(), and modebuf_extract()); add support for
360 MODE_REGONLY to mode_parse()
362 * include/supported.h (FEATURESVALUES2): added the new channel
363 mode 'r' to the list of supported channel modes
365 * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
366 conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
368 * include/channel.h: remove unused MODE_SENDTS; add new
371 * ircd/s_bsd.c (read_packet): remove call to timer_verify()
373 * ircd/list.c: remove calls to timer_verify() from
374 alloc_connection() and dealloc_connection()
376 * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
379 2002-01-27 Kevin L Mitchell <klmitch@mit.edu>
381 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
383 * ircd/ircd_events.c (timer_run): why did I ever use a next
384 pointer when the algorithm guarantees that the head pointer will
385 always be the next pointer?
387 2002-01-26 Kevin L Mitchell <klmitch@mit.edu>
389 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
391 * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
392 client process timer to catch any list corruption
394 * ircd/list.c: surround alloc_connection() and
395 dealloc_connection() with calls to timer_verify()
397 * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
398 verify the timer list's structure; call it around timer_run()
400 2002-01-22 Kevin L Mitchell <klmitch@mit.edu>
402 * ircd/send.c (sendcmdto_common_channels): don't send message to a
403 channel that the source is a zombie on
405 2002-01-13 Kevin L Mitchell <klmitch@mit.edu>
407 * ircd/ircd_events.c (timer_enqueue): one more assertion--make
408 sure a timer has the ACTIVE flag set before enqueueing the timer
410 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
412 * ircd/list.c (dealloc_connection): assert that the process timer
413 has been removed from the timer queue before dealloc_connection()
416 2002-01-12 Kevin L Mitchell <klmitch@mit.edu>
418 * ircd/res.c: don't accept T_A when we're looking for T_PTR
420 * ircd/channel.c (modebuf_flush_int): nuke the code that would
421 send a HACK DESYNCH notice on a HACK(2)--it would be far too
424 * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
426 * include/supported.h: add AWAYLEN to the list of supported
429 * include/ircd_defs.h: add AWAYLEN to specify the maximum length
432 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
434 * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
436 * ircd/channel.c: pass a buflen parameter to channel_modes() for
437 pbuf--we were using sizeof(pbuf), which would always be
438 sizeof(char*) before; change send_channel_modes() to pass extra
439 parameter to channel_modes()
441 * include/channel.h: pass a buflen parameter to channel_modes()
444 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
446 * ircd/uping.c (uping_start): initialize some timers
448 * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
449 out when we need to re-add the process timer
451 * ircd/s_auth.c (make_auth_request): initialize a timer
453 * ircd/res.c (init_resolver): initialize some timers
455 * ircd/list.c (alloc_connection): initialize the client process
458 * ircd/ircd_events.c: add a function, timer_init(), to initialize
459 a struct Timer; recast timer_add() to catch when adding a marked
460 timer and not re-enqueue it--but mark it for re-enqueuing; update
461 timer_del() to turn off the GEN_READD flag and to ignore reference
462 counts when destroying the timer--we're using GEN_MARKED as an
463 ersatz referance count; changed timer_run() to work with the new
464 way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
467 * ircd/ircd.c: initialize some timers
469 * ircd/engine_select.c (engine_loop): initialize a timer
471 * ircd/engine_poll.c (engine_loop): initialize a timer
473 * ircd/engine_kqueue.c (engine_loop): initialize a timer
475 * ircd/engine_devpoll.c (engine_loop): initialize a timer
477 * ircd/IPcheck.c (IPcheck_init): initialize a timer
479 * include/ircd_events.h: add GEN_READD flag for timers to indicate
480 that a timer must be readded; add t_onqueue() macro to check to
481 see if a timer is on the queue (this is a hack, though); added
482 timer_init() to initialize a struct Timer--we're no longer doing
483 the initialization in timer_add()
485 2002-01-11 Kevin L Mitchell <klmitch@mit.edu>
487 * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
488 prevent a core bug *in* the assertion
490 * doc/readme.features: document new POLLS_PER_LOOP feature; change
491 documentation to reflect that OPER_SET now defaults to FALSE
493 * doc/p10.html: documented the new ACCOUNT stuff
495 * doc/example.conf: document new POLLS_PER_LOOP default; change
498 * RELEASE.NOTES: changed documentation to reflect the fact that
499 assertions are now enabled by default and do not cause memory
502 * ircd/res.c (make_cache): removed a bogus assertion we probably
503 never caught because assertions haven't been enabled on production
504 servers for any length of time before
506 * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
508 * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
509 instance of POLLS_PER_KQUEUE
511 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
513 * ircd/s_bsd.c (client_timer_callback): only clear the
514 FREEFLAG_TIMER flag when the timer is being destroyed
516 * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
517 default it to 200; turn OPER_SET off by default
519 * ircd/engine_kqueue.c: dynamically allocate and reallocate the
520 array of events to obtain from the kernel
522 * ircd/engine_devpoll.c: dynamically allocate and reallocate the
523 array of events to obtain from the kernel
525 * include/ircd_features.h: add a new feature for tuning how many
526 events to get from the kernel, for engines that support that
528 * ircd/Makefile.in: re-run make depend to correct dependancies
530 * ircd/m_who.c: remove unneeded inclusion of list.h
532 * ircd/ircd_events.c: remove unneeded inclusion of list.h
534 * ircd/whocmds.c (do_who): hide server name in /who unless
535 requester is an operator; simplify hop count insertion
537 * ircd/s_misc.c (exit_one_client): make sure client's snomask is
540 * ircd/parse.c: use mo_version and mo_admin when opers do /version
543 * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
544 of the static string "*.undernet.org"
546 * ircd/m_version.c: only let ordinary users get version
547 information for the server they are on
549 * ircd/m_admin.c: only let ordinary users get admin information
550 for the server they are on
552 * ircd/channel.c (client_can_send_to_channel): check is_banned()
553 before letting the client speak on a channel s/he is not on
555 * include/supported.h: add NETWORK to feature list
557 * include/handlers.h: declare mo_admin() and mo_version()
559 2002-01-10 Kevin L Mitchell <klmitch@mit.edu>
561 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
563 * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
566 * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
569 * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
572 * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
574 * ircd/Makefile.in: run make depend on chkconf.c as well
576 * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
577 conditionalize on MDEBUG
579 * include/fda.h: instead of conditionalizing on !NDEBUG,
580 conditionalize on MDEBUG
582 * configure: rebuild configure script
584 * configure.in: enable assertion checking by default, since we
585 have now decoupled memory debugging from the NDEBUG macro
587 * ircd/s_user.c (set_nick_name): remove calls to
590 * ircd/s_misc.c (exit_one_client): remove calls to
593 * ircd/s_conf.c (rehash): remove calls to verify_client_list()
595 * ircd/m_who.c (m_who): remove calls to verify_client_list()
597 * ircd/list.c: remove calls to verify_client_list(); keep
598 verify_client_list() around just in case we ever need it again,
599 but never compile it in
601 * ircd/ircd_events.c (event_execute): remove calls to
604 * ircd/client.c (client_get_ping): remove calls to
607 * include/list.h (send_listinfo): remove temporary debugging
608 function verify_client_list()
610 * ircd/uping.c: don't die if the event type is ET_ERROR in socket
613 * ircd/res.c (res_callback): don't die if the event type is
616 * ircd/listener.c (accept_connection): don't die if the event type
619 2002-01-09 Kevin L Mitchell <klmitch@mit.edu>
621 * ircd/s_user.c (set_nick_name): bracket call to
622 add_client_to_list() with calls to verify_client_list()
624 * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
626 * ircd/list.c (verify_client_list): add a probabilistic loop
627 detector: for every client added, there is a 2% probability that
628 it will be used to replace the value of sentinel; if at any time,
629 sentinel is found again, we know we're in a loop
631 * ircd/ircd_events.c (event_execute): add verify_client_list()
632 calls wrapping event_execute; at the very least, I'll figure out
633 what event the corruption occurred in
635 * ircd/list.c: moved verify_client_list() to try to keep it from
638 * ircd/Makefile.in (version.c): version.c wasn't dependant on
639 version.h and patchlevel.h, like it was supposed to be
641 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
643 * ircd/s_auth.c (destroy_auth_request): overload send_reports
644 argument to also indicate whether or not to call
645 release_auth_client() and thereby enter the client into the linked
648 * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
650 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
652 * ircd/list.c (free_client): verify that destroy_auth_request()
653 didn't automagically re-add us to the list; we might have to think
654 about this interaction more carefully, actually
656 * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
657 calling free_client(); otherwise, free_client() will try to free
658 the auth by calling destroy_auth_request(), which will call
661 * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
662 verify_client_list() around to catch any corruption that might
665 * ircd/s_conf.c (rehash): liberally sprinkle calls to
666 verify_client_list() here, since this is about the only routine I
667 can think of that could cause the "core on kill -HUP" bug
669 * ircd/m_who.c: sprinkle calls to verify_client_list() around
670 liberally, since we've seen crashes here; temporarily include the
671 otherwise unneeded list.h header
673 * ircd/list.c: sprinkle calls to verify_client_list() around quite
674 liberally; add debugging asserts to list manipulation functions to
675 catch strange settings for next and prev pointers; define
676 verify_client_list(), which walks the client list and verifies
677 that everything is as it's supposed to be
679 * ircd/client.c: wrap client_get_ping with calls to
680 verify_client_list() to see if that's where we're dying
682 * include/patchlevel.h (PATCHLEVEL): bump to 03
684 * include/list.h: declare verify_client_list() if DEBUGMODE
685 enabled; otherwise, define it to be empty
687 2002-01-08 Kevin L Mitchell <klmitch@mit.edu>
689 * ircd/m_quit.c (m_quit): remove an unused variable
691 * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
693 * ircd/s_user.c: when building the user mode to send to the user,
694 don't include +r; add an extra set of parens to squelch a warning
696 * ircd/m_quit.c (m_quit): use exit_client_msg()
698 * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
699 keep track of who's running what version
701 * ircd/m_squit.c (ms_squit): remove debugging calls to
704 * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
705 new gmake "feature" (pull-up from trunk)
707 * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
710 2002-01-07 Kevin L Mitchell <klmitch@mit.edu>
712 * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
713 list of user modes; process account name as part of user mode in
714 NICK decoding (set_nick_name()); add account name to usermode when
715 building the usermode to incorporate in outgoing NICK messages
717 * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
720 * ircd/parse.c: define the new ACCOUNT command, usable only by
721 servers and ignored by everything else
723 * ircd/m_whois.c: report what account name is associated with a
726 * ircd/m_account.c: implement the ACCOUNT command
728 * ircd/Makefile.in: add m_account.c to the list of sources; ran
731 * include/struct.h: add an account field to struct User
733 * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
734 what username a user is logged in under
736 * include/msg.h: add ACCOUNT command and token (AC)
738 * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
739 the maximum length of a username for X
741 * include/handlers.h: add declaration for ms_account()
743 * include/client.h: add FLAGS_ACCOUNT to flag when a user account
744 name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
745 IsAccount() and SetAccount() to manipulate the flag
747 * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
748 name like "Amsterdam2.NL.EU.undernet.org", we get the struct
749 Client for the server with numeric "Am", which happens to be
750 stockholm! To fix this, we look up the full name *first*; if that
751 doesn't get it, *then* we look up by numeric.
753 2001-12-24 Perry Lorier <isomer@coders.net>
754 * ircd/m_server.c: cleanups, maybe this will make the bug easier
757 * ircd/m_stats.c: display maximum number of connects in an I:
759 2001-11-22 Perry Lorier <isomer@coders.net>
760 * ircd/m_squit.c: Bug fix in squit
762 2001-11-03 Greg Sikorski <gte@atomicrevs.demon.co.uk>
763 * ircd/parse.c, include/handlers.h: Give remote whois the correct
766 2001-11-01 Kevin L Mitchell <klmitch@mit.edu>
768 * ircd/send.c: some minor white-space fiddling; recast selector
769 test in sendwallto_group_butone() to remove a warning regarding
770 putting & within parentheses
772 * ircd/m_create.c (ms_create): use time_t instead of int as a
775 * ircd/ircd_reply.c (protocol_violation): it's supposed to be
776 WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
777 wonder we weren't seeing any protocol violations!
779 * include/send.h: include time.h for time_t; move WALL_* closer to
780 the function they're used in; some white-space fiddling; add
781 declaration of sendto_opmask_butone_ratelimited()
783 * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
784 cases where we ignore a squit, so we aren't taken by surprise, at
787 * ircd/m_create.c (ms_create): Display origin server, not origin
790 * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
792 2001-10-31 Perry Lorier <isomer@coders.net>
793 * include/m_ping.c: Forward port ping bug
795 2001-10-31 Perry Lorier <isomer@coders.net>
796 * include/patchlevel.h: We're beta now
798 2001-10-31 Perry Lorier <isomer@coders.net>
799 * ircd/s_user.c: fixed hunt_server
801 2001-09-21 Perry Lorier <isomer@coders.net>
802 * ircd/send.c and various: replace sendcmdto_flag_butone with
803 sendwallto_group_butone
805 2001-09-21 Vampire- <unknown>
806 * ircd/ircd_string.c: unique_name_vector round II.
808 2001-09-21 mbuna <mbuna@undernet.org>
809 * configure.in: Add support for darwin
811 2001-09-21 Perry Lorier <isomer@coders.net>
812 * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
814 2001-09-20 Perry Lorier <isomer@coders.net>
816 * Pullups from 2.10.10.pl16
817 * Added some warnings, and the concept of rate limited snotices
819 2001-08-31 Kevin L Mitchell <klmitch@mit.edu>
821 * ircd/channel.c: use "%u" to format limit arguments; use
822 strtoul() to process limit arguments in a /mode command--note:
823 most clients seem to truncate the integer, probably because
824 they're using atoi, and perhaps signed ints
826 2001-08-17 Kevin L Mitchell <klmitch@mit.edu>
828 * ircd/numnicks.c: include stdlib.h for exit()
830 * ircd/ircd_log.c: include stdlib.h for exit()
832 * ircd/ircd_events.c: include stdlib.h for exit()
834 * ircd/s_stats.c: remove description of /stats v, since it's gone
836 * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
837 /wallops to distinguish wallops from wallusers
839 * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
840 in the "handshake" or "connecting" states--I think the latter will
843 * doc/Authors: apply delete's Authors patch
845 * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
848 * README: rewrite README
850 2001-07-31 Kevin L. Mitchell <klmitch@mit.edu>
852 * ircd/s_serv.c (server_estab): remove unused variable split
854 * ircd/parse.c: add mr_error to the parse table
856 * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
857 unregistered connections--if IsUserPort() is true, the ERROR is
858 ignored, otherwise, the message is saved
860 2001-07-28 Kevin L. Mitchell <klmitch@mit.edu>
862 * ircd/m_kill.c (ms_kill): another minor typo *sigh*
864 * ircd/s_user.c (send_supported): oops, minor typo...
866 * ircd/s_user.c: implement send_supported() to send two ISUPPORT
867 messages containing our feature buffers; make register_user() use
870 * ircd/s_misc.c (exit_client): make sure not to give away a remote
871 server in the ERROR message sent to the client; if the killer is a
872 server, we substitute our name in its place
874 * ircd/m_version.c (m_version): use send_supported() to send the
875 ISUPPORT values to the user
877 * ircd/m_nick.c: shave nick collision kills here a bit, too, for
878 the same reasons as for m_kill.c
880 * ircd/m_kill.c: shave kills a bit so that the results look
881 exactly the same no matter where you are; if we didn't do this, it
882 would be possible to map the network by looking at the differences
883 between kills originating under various circumstances
885 * include/supported.h: split the features into two, so as to not
886 bust the parameter count when sending the features list
888 * include/s_user.h: declare new send_supported() function to send
889 the ISUPPORT information
891 2001-07-27 Kevin L. Mitchell <klmitch@mit.edu>
893 * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
894 source-routed spoofing attacks; this is only available under
895 u2.10.11, so don't even bother, since no one but testers are using
898 2001-07-25 Kevin L. Mitchell <klmitch@mit.edu>
900 * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
902 * ircd/s_err.c: put in a . for reporting link version on /trace,
903 to match what /version does
905 2001-07-21 Kevin L. Mitchell <klmitch@mit.edu>
907 * ircd/s_misc.c (exit_client): servers don't understand what the
908 numeric nick ERROR is supposed to mean, so they ignore error
909 messages, resulting in not knowing why we were rejected; use
910 sendcmdto_one for servers and sendrawto_one for clients
912 2001-07-17 Kevin L. Mitchell <klmitch@mit.edu>
914 * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
915 a nick collide, a bare BURST may be propagated; adjust the
916 enforced parameter count to accept the bare BURST
918 2001-07-12 Kevin L. Mitchell <klmitch@mit.edu>
920 * ircd/s_bsd.c: mark a client as having been IP checked
922 * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
923 second call to SetIPChecked()
925 2001-07-11 Kevin L. Mitchell <klmitch@mit.edu>
927 * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
929 * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
931 2001-07-09 Kevin L. Mitchell <klmitch@mit.edu>
933 * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
934 sections so that if neither is used, the declaration of buf will
935 not elicit an "unused variable" warning under NetBSD
937 * ircd/m_map.c: include string.h to declare strcpy (fix warnings
940 * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
943 * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
946 * ircd/client.c: include string.h to declare memset (fix warnings
949 * ircd/channel.c: remove unused functions next_overlapped_ban,
950 del_banid, and is_deopped (fix warnings under -O1)
952 * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
955 2001-06-29 Kevin L. Mitchell <klmitch@mit.edu>
957 * ircd/s_user.c (set_user_mode): clear the snomask if the user
958 isn't supposed to receive server notices anymore
960 * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
962 * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
963 installation prefix; default devpoll and kqueue to on (they get
964 turned off if the required headers aren't present)
966 * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
967 sprintf_irc(); it's a bit hackish, but it'll do for now
969 * ircd/support.c: remove unused #include
971 * ircd/send.c: remove unused #include
973 * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
975 * ircd/s_serv.c: remove unused #include
977 * ircd/s_misc.c: use ircd_snprintf() and friends instead of
978 sprintf_irc() and friends
980 * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
981 ircd/s_err.c, which is the only other file to refer to it
983 * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
986 * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
989 * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
991 * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
993 * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
995 * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
997 * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
999 * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
1001 * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
1002 instead of sprintf_irc()
1004 * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
1007 * include/ircd_string.h: remove declaration of sprintf_irc() (what
1008 was it doing here anyway?)
1010 * include/sprintf_irc.h: removed unneeded source file
1012 * ircd/sprintf_irc.c: removed unneeded source file
1014 * ircd/s_debug.c (count_memory): remove some dead code
1016 * ircd/s_auth.c: remove some dead code
1018 * ircd/res.c (update_list): remove some dead code
1020 * ircd/m_whowas.c: remove some dead code
1022 * ircd/m_whois.c: remove some dead code
1024 * ircd/m_who.c: remove some dead code
1026 * ircd/m_wallusers.c: remove some dead code
1028 * ircd/m_wallops.c: remove some dead code
1030 * ircd/m_wallchops.c: remove some dead code
1032 * ircd/m_version.c: remove some dead code
1034 * ircd/m_userip.c: remove some dead code
1036 * ircd/m_userhost.c: remove some dead code
1038 * ircd/m_uping.c: remove some dead code
1040 * ircd/m_trace.c: remove some dead code
1042 * ircd/m_topic.c: remove some dead code
1044 * ircd/m_tmpl.c: remove some dead code
1046 * ircd/m_time.c: remove some dead code
1048 * ircd/m_squit.c: remove some dead code
1050 * ircd/m_silence.c: remove some dead code
1052 * ircd/m_settime.c: remove some dead code
1054 * ircd/m_set.c: remove some dead code
1056 * ircd/m_server.c: remove some dead code
1058 * ircd/m_rpong.c: remove some dead code
1060 * ircd/m_rping.c: remove some dead code
1062 * ircd/m_restart.c: remove some dead code
1064 * ircd/m_reset.c: remove some dead code
1066 * ircd/m_rehash.c: remove some dead code
1068 * ircd/m_quit.c: remove some dead code
1070 * ircd/m_proto.c: remove some dead code
1072 * ircd/m_privs.c: remove some dead code
1074 * ircd/m_privmsg.c: remove some dead code
1076 * ircd/m_pong.c: remove some dead code
1078 * ircd/m_ping.c: remove some dead code
1080 * ircd/m_pass.c: remove some dead code
1082 * ircd/m_part.c: remove some dead code
1084 * ircd/m_opmode.c: remove some dead code
1086 * ircd/m_oper.c: remove some dead code
1088 * ircd/m_notice.c: remove some dead code
1090 * ircd/m_nick.c: remove some dead code
1092 * ircd/m_map.c: remove some dead code
1094 * ircd/m_lusers.c: remove some dead code
1096 * ircd/m_list.c: remove some dead code
1098 * ircd/m_links.c: remove some dead code
1100 * ircd/m_kill.c: remove some dead code
1102 * ircd/m_kick.c: remove some dead code
1104 * ircd/m_jupe.c: remove some dead code
1106 * ircd/m_join.c: remove some dead code
1108 * ircd/m_ison.c: remove some dead code
1110 * ircd/m_invite.c: remove some dead code
1112 * ircd/m_info.c: remove some dead code
1114 * ircd/m_help.c: remove some dead code
1116 * ircd/m_gline.c: remove some dead code
1118 * ircd/m_get.c: remove some dead code
1120 * ircd/m_error.c: remove some dead code
1122 * ircd/m_endburst.c: remove some dead code
1124 * ircd/m_die.c: remove some dead code
1126 * ircd/m_desynch.c: remove some dead code
1128 * ircd/m_destruct.c: remove some dead code
1130 * ircd/m_defaults.c: remove some dead code
1132 * ircd/m_create.c: remove some dead code, along with an #if 1
1134 * ircd/m_cprivmsg.c: remove some dead code
1136 * ircd/m_connect.c: remove some dead code
1138 * ircd/m_close.c: remove some dead code
1140 * ircd/m_clearmode.c: remove some dead code
1142 * ircd/m_burst.c: remove some dead code
1144 * ircd/m_away.c: remove some dead code
1146 * ircd/m_admin.c: remove some dead code
1148 * ircd/listener.c (accept_connection): remove some dead code
1150 * ircd/ircd_reply.c (need_more_params): remove some dead code
1152 * ircd/channel.c (add_banid): remove some dead code
1154 * include/support.h: remove some dead code
1156 * include/querycmds.h: remove some dead code
1158 * doc/readme.chroot: document how to do chroot operation
1160 2001-06-28 Kevin L. Mitchell <klmitch@mit.edu>
1162 * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
1163 force bin directory to be created if necessary prior to
1164 installation; run make depend
1166 * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
1169 * Makefile.in: tune to detect Makefile.in changes in
1170 subdirectories and to create installation directory indicated by
1173 * ircd/whocmds.c (count_users): routine to count the number of
1174 users matching a given user@host mask
1176 * ircd/s_err.c: add error messages for ERR_LONGMASK,
1177 ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
1179 * ircd/m_gline.c: look for and advance past '!' flag on G-lines
1180 from operators; only set GLINE_OPERFORCE flag if oper has the
1181 PRIV_WIDE_GLINE privilege
1183 * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
1184 maximum number of users a G-line can impact before it has to be
1185 forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
1186 wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
1187 operators to use ! to force a wide G-line to be set
1189 * ircd/gline.c: make make_gline() be called with separate user and
1190 host arguments, and not call canon_userhost() directly; implement
1191 gline_checkmask() to verify that a host mask is acceptable; move
1192 BADCHAN check up in gline_add(), and check passed-in mask under
1193 certain circumstances for acceptability; fix call to
1194 sendto_opmask_butone() to handle separation of userhost into user
1195 and host in gline_add(); update call to make_gline()
1197 * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
1198 FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
1199 PRIV_WIDE_GLINE to privtab[] for client_report_privs()
1201 * include/whocmds.h (count_users): declare routine to count users
1202 matching a given user@host mask
1204 * include/numeric.h: added three new error returns: ERR_LONGMASK
1205 -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
1206 many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
1207 contains wildcards in the wrong places
1209 * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
1210 FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
1212 * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
1213 to signal to gline_add() that the operator attempted to force the
1216 * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
1218 * doc/readme.gline: update to document new "!" prefix to a G-line
1221 * doc/readme.features: document GLINEMAXUSERCOUNT,
1222 OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
1224 * doc/example.conf: update to mention new features along with
1227 2001-06-27 Kevin L. Mitchell <klmitch@mit.edu>
1229 * doc/example.conf: updated example.conf from Braden
1232 * include/supported.h: forward-port from pl15
1234 2001-06-25 Kevin L. Mitchell <klmitch@mit.edu>
1236 * ircd/whocmds.c: include ircd_policy.h and implement
1237 HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
1239 * ircd/m_whois.c: forward-port of the idle-time hiding code from
1240 pl15; this also required passing parc into do_whois(), which also
1241 meant passing parc into do_wilds()--*sigh*
1243 * include/ircd_policy.h: add a couple more HEAD_IN_SAND
1244 #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
1246 2001-06-22 Kevin L. Mitchell <klmitch@mit.edu>
1248 * tools/wrapper.c: add a wrapper program that can be used to
1249 adjust file descriptor limits and root directories; program must
1250 be run as root--NOT SETUID!--and given appropriate -u arguments
1252 * doc/readme.log: documentation of how to configure logging
1254 * doc/readme.features: documentation of each feature (except for
1257 2001-06-21 Kevin L. Mitchell <klmitch@mit.edu>
1259 * Makefile.in (config): add a deprecation notice with a pointer to
1262 * tools/transition: shell script to convert old compile-time
1263 options into new compile-time options and appropriate F-lines
1265 * tools/mkchroot: shell-script to prepare the chroot area by
1266 copying over all the necessary libraries so they can be found
1268 2001-06-20 Kevin L. Mitchell <klmitch@mit.edu>
1270 * INSTALL: partial update of INSTALL for u2.10.11 release...
1272 2001-06-14 Kevin L. Mitchell <klmitch@mit.edu>
1274 * ircd/table_gen.c (makeTables): finally got tired of the
1275 "overflow in implicit conversion" warning, so just got rid of it
1276 by explicitly casting UCHAR_MAX to a (default) char; diffs show no
1277 differences in the tables generated
1279 2001-06-11 Kevin L. Mitchell <klmitch@mit.edu>
1281 * ircd/send.c (sendcmdto_match_butone): don't let the server crash
1282 if a client is in the STAT_CONNECTING status
1284 2001-06-10 Kevin L. Mitchell <klmitch@mit.edu>
1286 * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
1287 into sendcmdto_one(); define new sendcmdto_prio_one(), which
1288 places the message into the priority queue
1290 * ircd/s_user.c (hunt_server_prio_cmd): definition of
1291 hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
1292 instead of sendcmdto_one()
1294 * ircd/m_settime.c: use sendcmdto_prio_one() and
1295 hunt_server_prio_cmd() to send SETTIME
1297 * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
1299 * include/send.h: removed declaration for unused vsendcmdto_one();
1300 added a declaration for sendcmdto_prio_one()
1302 * include/s_user.h: declare hunt_server_prio_cmd(), which calls
1303 sendcmdto_prio_one()
1305 * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
1306 put in the server's priority queue, too...
1308 * ircd/ircd.c: don't check LPATH for accessibility at all
1310 2001-06-08 Kevin L. Mitchell <klmitch@mit.edu>
1312 * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
1313 command if we're configured as a hub; send individual server flags
1316 * ircd/s_bsd.c (completed_connection): send a +h flag in our
1317 SERVER command if we're configured as a hub
1319 * ircd/m_server.c: implement parv[7] as a mode-like string; +h
1320 sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
1321 flag for a server; +hs sets both flags; also modify CMD_SERVER
1322 format string to send the flags
1324 * include/client.h: define two new flags, FLAGS_HUB and
1325 FLAGS_SERVICE to mark services and hubs as such; define testing
1326 macros, setting macros
1328 * ircd/s_user.c: remove deprecated struct Gline* argument to
1329 register_user(); remove GLINE rebroadcast; do not send GLINE
1330 acknowledgement parameter to NICK; do not look for GLINE
1331 acknowledgement parameter to NICK while parsing
1333 * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
1334 argument to server_estab(); do not send JUPE/GLINE acknowledgement
1335 parameters for SERVER or NICK
1337 * ircd/m_user.c (m_user): remove deprecated argument to
1340 * ircd/m_server.c: remove deprecated argument to server_estab();
1341 remove documentation comment regarding JUPE acknowledgement
1342 parameter to SERVER; remove JUPE rebroadcast
1344 * ircd/m_pong.c (mr_pong): remove deprecated argument to
1347 * ircd/m_nick.c: remove documentation comment regarding GLINE
1348 acknowledgement parameter to NICK
1350 * ircd/jupe.c: use user's real name in JUPE server notices if
1351 HEAD_IN_SAND_SNOTICES is defined
1353 * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
1354 setuid code; correct ancient DEBUG vs DEBUGMODE typo
1356 * ircd/gline.c: use user's real name in GLINE server notices if
1357 HEAD_IN_SAND_SNOTICES is defined
1359 * ircd/channel.c (modebuf_flush_int): make apparent source be
1360 local server, not oper's server; use user's real name in hack
1361 notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
1363 * include/s_user.h: remove struct Gline pre-declaration; remove
1364 deprecated struct Gline argument from register_user()
1366 * include/s_serv.h: remove struct Jupe pre-declaration; remove
1367 deprecated struct Jupe argument from server_estab()
1369 2001-06-07 Kevin L. Mitchell <klmitch@mit.edu>
1371 * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
1372 changes required to control remote stats
1374 * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
1375 recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
1376 [forward-port from pl15]
1378 * ircd/m_whowas.c (m_whowas): report server name only if requester
1379 is an operator [forward-port from pl15]
1381 * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
1382 my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
1383 and obtain the report from the user's server [forward-port from
1386 * ircd/m_who.c: add missing include for ircd_policy.h
1387 [forward-port from pl15]
1389 * ircd/m_version.c (m_version): require oper access for remote
1390 /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1392 * ircd/m_time.c (m_time): require oper access for remote /time if
1393 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1395 * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
1396 missing semicolon [forward-port from pl15]
1398 * ircd/m_nick.c (ms_nick): hide the origin of certain collision
1399 kills [forward-port from pl15]
1401 * ircd/m_motd.c (m_motd): require oper access for remote /motd if
1402 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1404 * ircd/m_lusers.c (m_lusers): require oper access for remote
1405 /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1407 * ircd/m_burst.c (ms_burst): server-added bans are stored using
1408 local server name, to hide remote server names; modes also are to
1409 originate from the local server [forward-port from pl15]
1411 * ircd/m_admin.c (m_admin): require oper access for remote /admin
1412 if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1414 * ircd/channel.c (add_banid): if a server is adding a ban, use my
1415 server name to hide the remote server's name [forward-port from
1418 * ircd/Makefile.in: ran make depend
1420 * include/s_stats.h: hunt_stats() has to have an extra argument to
1421 support the forward-port from pl15
1423 * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
1424 HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
1426 * ircd/engine_poll.c (engine_loop): remove bogus assert that I
1427 forgot to check in the events branch
1429 2001-06-06 Kevin L. Mitchell <klmitch@mit.edu>
1431 * ircd/res.c (init_resolver): don't start DNS expires with a 0
1432 relative timeout--if the server starts slow, timeouts could be
1433 messy...there's probably a better solution, but this'll do for now
1435 * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
1436 headers very well; include stropts.h; define an os_set_tos()
1438 * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
1441 * ircd/ircd.c: if there are no C-lines, we don't want to have a
1442 timer that expires at the absolute time of 0--it kinda blocks all
1445 * ircd/engine_devpoll.c: some includes for open(); declare errcode
1446 and codesize in engine_loop()
1448 * ircd/list.c (free_client): remove bogus check on timer active
1451 * ircd/s_auth.c: pull out destruction code in
1452 auth_timeout_request() into an externally-visible
1453 destroy_auth_request(); manage cli_auth pointer in client
1454 structure; use it for an extra assertion check
1456 * ircd/list.c: include s_auth.h for destroy_auth_request(); add
1457 debugging notices to show flow when deallocating
1458 connections/clients; call destroy_auth_request() when free'ing a
1459 client that has an auth outstanding; don't free the connection if
1460 the process timer is unmarked but still active
1462 * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
1463 and reset it before calling the event handler for an ET_DESTROY
1466 * include/s_auth.h (destroy_auth_request): declare
1467 destroy_auth_request(), which can be used to destroy an
1468 outstanding auth request if a client socket goes away before the
1469 auth exchange is completed
1471 * include/ircd_events.h: add an active flag to keep track of
1472 whether or not particular generators are active, for the
1473 convenience of functions using the API
1475 * include/client.h: add a pointer for auth requests to struct
1476 Connection so we can kill outstanding auth requests if a client
1477 socket closes unexpectedly
1479 * ircd/s_bsd.c: cli_connect() could become 0 during the course of
1480 the sock or timer callback; take that into account in the assert
1482 * ircd/list.c: add magic number checking and setting--magic
1483 numbers are zero'd on frees to detect double-frees; add back
1484 setting of cli_from() to 0 to break the back-link from the struct
1487 * ircd/ircd.c: set me's magic number correctly
1489 * include/client.h: define magic numbers and accessor/verifier
1492 * ircd/list.c: assert that dealloc_client() is called with
1493 cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
1494 dealloc_client(); don't mess with cli_from(cptr)
1496 * ircd/s_bsd.c: only attempt to dealloc a connection if the
1497 associated client has already been destroyed, or at least delinked
1499 2001-06-05 Kevin L. Mitchell <klmitch@mit.edu>
1501 * ircd/list.c (free_client): only try to delete the socket when
1502 the fd hasn't already been closed, avoiding a double-free
1504 * ircd/list.c (free_connection): make sure the client is really
1505 gone before doing away with the connection
1507 * ircd/s_bsd.c: record that socket has been added in con_freeflag
1508 field; queue a socket_del() as soon as the socket is close()'d;
1509 use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
1510 FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
1511 then dealloc the connection if safe; mark socket as dead when
1512 there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
1513 to client_timer_callback(); dealloc connection if safe upon
1514 ET_DESTROY event in client_timer_callback()
1516 * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
1517 the connection if both socket and timer have been destroyed;
1518 destroy both socket and timer explicitly and carefully
1520 * include/client.h: replace the con_timer field with a
1521 con_freeflag field, to indicate what still needs freeing; define
1524 * ircd/engine_select.c (engine_loop): duh...sockList[i] could
1527 * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
1530 * ircd/s_bsd.c: add some extra assertions to try to track down a
1533 * ircd/engine_select.c (engine_loop): add an extra assert to try
1534 to track down a corruption problem
1536 * ircd/engine_poll.c (engine_loop): add an extra assert to try to
1537 track down a corruption problem
1539 * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
1540 to track down a corruption problem
1542 * ircd/engine_devpoll.c (engine_loop): skip slots that have become
1543 empty during processing; add an extra assert to try to track down
1544 a corruption problem
1546 * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
1549 2001-06-04 Kevin L. Mitchell <klmitch@mit.edu>
1551 * ircd/s_bsd.c (client_sock_callback): client is no longer
1552 blocked, so we must mark it as unblocked
1554 * ircd/engine_select.c: add Debug() calls galore; add handling for
1555 SS_NOTSOCK; use a dummy sock variable to keep things from
1556 disappearing on us; correct timeout calculation; update nfds for
1559 * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
1560 remove a spurious "if (sock)" which will always be true; update
1563 * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
1564 SS_NOTSOCK (just in case); correct timeout calculation
1566 * ircd/engine_devpoll.c: add Debug() calls galore; add handling
1567 for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
1569 * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
1570 pretty-indent numbers
1572 * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
1573 case--it's not a socket; the check for writability is most likely
1574 not needed, but present for completeness
1576 2001-05-24 Kevin L. Mitchell <klmitch@mit.edu>
1578 * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
1579 no newline flag is set; call read_packet() when the timer expires,
1580 regardless of what's in the buffer--read_packet() should be able
1583 * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
1584 sent to clients to include the client nickname (duh)
1586 * ircd/ircd_events.c: don't destroy a timer if it's already marked
1587 for destruction; replace a missing ! in socket_del()
1589 * ircd/engine_poll.c (engine_loop): reference a temporary variable
1590 so we don't have to worry about sockList[i] going away
1592 * ircd/s_bsd.c (client_sock_callback): add Debug messages
1594 * ircd/s_auth.c: add Debug messages all over the place
1596 * ircd/ircd_events.c: add and edit some Debug messages; add a list
1597 of routines to convert some of the enums and flags from numbers
1598 into human-readable strings for the Debug messages
1600 * ircd/engine_poll.c: hack some Debug messages to use the new name
1601 conversion routines in ircd_events.c; add an extra assert for a
1602 condition that shouldn't ever happen; apparently recv() can return
1603 EAGAIN when poll() returns readable--I wonder why...
1605 * include/ircd_events.h: declare some helper routines under
1608 2001-05-23 Kevin L. Mitchell <klmitch@mit.edu>
1610 * ircd/s_bsd.c (client_sock_callback): add an extra assertion
1613 * ircd/s_auth.c: add more Debug messages
1615 * ircd/list.c (make_client): add an extra assertion check
1617 * ircd/ircd_events.c (socket_events): don't call the engine events
1618 changer if we haven't actually made any changes to the event mask
1620 * ircd/uping.c: add some Debug messages
1622 * ircd/s_stats.c: document new /STATS e
1624 * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
1626 * ircd/s_bsd.c: remove static client_timer variable; in
1627 read_packet(), if there's still data in the client's recvQ after
1628 parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
1629 of client_sock_callback to handle destroying the timer properly;
1630 rewrote client_timer_callback from scratch to be called on an
1633 * ircd/m_stats.c: add /STATS e to report the engine name
1635 * ircd/list.c: deal with con_timer field in struct Connection
1636 properly; correct a core-level bug in remove_client_from_list--if
1637 the client is the only one in the list, we try to update
1638 GlobalClientList's cli_prev pointer--not good
1640 * ircd/ircd.c: remove call to init_client_timer()
1642 * ircd/engine_poll.c: made Debug messages more uniform by
1643 prepending "poll:" to them all; corrected an off-by-one error that
1644 caused poll_count to be 1 less than the actual count and removed
1645 my work-around; added Debug messages to indicate which socket is
1646 being checked and what the results are
1648 * ircd/Makefile.in: ran a make depend
1650 * include/s_bsd.h: remove init_client_timer(), since we're doing
1653 * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
1656 * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
1657 reports for non-opers
1659 * include/client.h: add con_timer and con_proc fields to struct
1660 Connection and define accessor macros--con_timer marks that
1661 con_proc contains a valid timer, and con_proc is used to pace user
1664 * ircd/s_bsd.c (close_connection): let free_client() destroy the
1667 * ircd/s_auth.c (start_auth): add a Debug call to indicate when
1668 auth has begun on a client
1670 * ircd/ircd_events.c: ensure that event_execute() is called with a
1671 non-NULL event; modify event_add() macro to properly zero list
1672 bits; modify gen_dequeue() to not try to clip it out of a list
1673 it's already been clipped out of; change signal socket
1674 initialization to use state SS_NOTSOCK; permit timeout values of
1675 0 in add_timer(); add many Debug calls; change socket_del() and
1676 timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
1677 timer_run() instead of GEN_DESTROY so that event_generate() will
1678 pass on the events; remove the switch and replace with a simpler
1679 if-then-else tree in timer_run(); don't allow destroyed sockets to
1680 be destroyed again, nor their states or event masks to be changed
1682 * ircd/ircd.c: initialize "running" to 1
1684 * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
1685 messages all over the place; fix a counting problem in
1686 engine_add(); turn wait into a signed integer and set it to -1
1687 only if timer_next() returns 0; adjust wait time to be relative;
1688 don't call gen_ref_dec() if socket disappeared while we were
1691 * include/ircd_events.h: the pipe for signals is not a socket, so
1692 we must mark it as such--added SS_NOTSOCK for that special socket;
1693 events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
1694 for the benefit of timer_run()
1696 * configure.in: add --enable-pedantic and --enable-warnings to
1697 turn on (and off) -Wall -pedantic in CFLAGS
1699 2001-05-21 Kevin L. Mitchell <klmitch@mit.edu>
1701 * ircd/s_conf.c: change "s_addr" element accesses to "address"
1704 * include/s_conf.h: on some systems, "s_addr" is a macro; use
1707 2001-05-18 Kevin L. Mitchell <klmitch@mit.edu>
1709 * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
1710 void in this file; add a missing semi-colon; declare errcode,
1713 * ircd/uping.c (uping_sender_callback): it's pptr, not uping
1715 * ircd/s_user.c (register_user): comment out spurious reference to
1718 * ircd/s_serv.c (server_estab): comment out spurious reference to
1721 * ircd/s_conf.c (read_configuration_file): comment out spurious
1722 reference to nextping and nextconnect
1724 * ircd/s_bsd.c: comment out some spurious references to formerly
1725 global (now non-existant) variables; correct a couple of typos
1727 * ircd/s_auth.c: pre-declare some functions referenced in the
1728 callback; correct a typo
1730 * ircd/res.c (start_resolver): pass errno value of ENFILE
1732 * ircd/listener.c (accept_connection): you know your API is messed
1733 up when...variables that shouldn't have been global crop up in
1736 * ircd/list.c (free_client): substitution of == for =
1738 * ircd/ircd_signal.c: include assert.h for assertion checking;
1739 check ev_data() to find out what signal generated event
1741 * ircd/ircd_events.c: some references to the variable "timer"
1742 should have been references to the variable "ptr"
1744 * ircd/engine_select.c: it's struct fd_set, not struct fdset;
1745 ev_timer(ev) is already a timer pointer; declare codesize as a
1746 size_t to correct signedness issue; use timer_next(), not
1749 * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
1750 select fd out of struct pollfd in assertion checking; declare
1751 errcode and codesize; use timer_next(), not time_next()
1753 * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
1754 use function timer_next(), not time_next()
1756 * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
1757 use function timer_next(), not time_next()
1759 * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
1760 compiled sources; do make depend
1762 * include/list.h: pre-declare struct Connection
1764 * include/ircd_events.h (gen_ref_inc): cast to the right structure
1767 * include/s_auth.h: duh; missing */
1769 2001-05-10 Kevin L. Mitchell <klmitch@mit.edu>
1771 * ircd/send.c: update write events status after sending data or
1772 accumulating data to be sent
1774 * ircd/m_list.c (m_list): update write events status after
1775 canceling a running /list
1777 * ircd/channel.c (list_next_channels): update write events status
1778 after listing a few channels
1780 * ircd/s_bsd.c: extensive changes to update to new events model;
1781 remove on_write_unblocked() and the two implementations of
1782 read_message(), which have been deprecated by this change
1784 * ircd/s_auth.c: set the socket events we're interested in for
1785 clients; simplify some logic that does the connect_nonb followed
1788 * ircd/list.c: define free_connection() to free a connection
1789 that's become freeable once the struct Socket has been
1790 deallocated; fix up free_client() to take this new behavior into
1793 * ircd/ircd.c: call init_client_timer()
1795 * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
1796 to register connect-in-progress with events system; declare
1797 init_client_timer() (HACK!) to preserve rate-limiting behavior
1799 * include/list.h: declare new free_connection()
1801 * include/client.h: add a struct Socket to struct Connection
1803 2001-05-09 Kevin L. Mitchell <klmitch@mit.edu>
1805 * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
1806 SIGTERM into event callbacks; perform the actions in the
1807 callbacks, since they're not called in the context of the signal;
1808 set up the signal callbacks in the event engine
1810 * ircd/ircd_events.c (signal_callback): we're supposed to look for
1811 a specific signal; don't generate an event if there is no signal
1814 * ircd/ircd.c: nuke nextconnect and nextping and replace them with
1815 connect_timer and ping_timer; massage try_connections() and
1816 check_pings() into timer callbacks that re-add themselves at the
1817 right time; remove ircd.c's "event_loop()"; initialize the event
1818 system and the connect_timer and ping_timer
1820 * ircd/uping.c: correct a couple more typos
1822 * ircd/s_auth.c: rework to use new events system
1824 * ircd/os_solaris.c (os_connect_nonb): update to new interface
1826 * ircd/os_openbsd.c (os_connect_nonb): update to new interface
1828 * ircd/os_linux.c (os_connect_nonb): update to new interface
1830 * ircd/os_generic.c (os_connect_nonb): update to new interface
1832 * ircd/os_bsd.c (os_connect_nonb): update to new interface
1834 * include/s_auth.h: remove deprecated members of struct
1835 AuthRequest, replacing them with struct Socket and struct Timer
1836 structures; add flags to indicate when these structures have been
1837 released by the event system; remove the deprecated
1838 timeout_auth_queries()
1840 * include/ircd_osdep.h (os_connect_nonb): connect could complete
1841 immediately, so change the interface to handle that possibility
1843 * ircd/uping.c (uping_server): noticed and corrected a typo
1845 * ircd/listener.c: set up to use ircd_event's struct Socket by
1846 adding an socket_add() call to inetport(), replacing
1847 free_listener() with socket_del() in close_listener(), and
1848 reworking accept_connection to be called as the callback
1850 * ircd/ircd.c: add a call to IPcheck_init()
1852 * ircd/IPcheck.c: remove IPcheck_expire(); rework
1853 ip_registry_expire() to be called from a timer; write
1854 IPcheck_init() to set up the expiration timer (hard-coded for a
1855 60-second expiration time)
1857 * include/listener.h: add a struct Socket to the struct Listener;
1858 remove accept_connection()
1860 * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
1862 2001-05-08 Kevin L. Mitchell <klmitch@mit.edu>
1864 * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
1865 USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
1867 * ircd/engine_select.c: include config.h; set FD_SETSIZE to
1868 MAXCONNECTIONS, not IRCD_FD_SETSIZE...
1870 * ircd/engine_poll.c: include config.h
1872 * ircd/engine_kqueue.c: include config.h
1874 * ircd/engine_devpoll.c: include config.h
1876 * ircd/Makefile.in: include engine sources in compilation and make
1879 * configure.in: add checks for enabling the /dev/poll- and
1880 kqueue-based engines
1882 * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
1884 * ircd/Makefile.in: work in the engine sources
1886 2001-05-07 Kevin L. Mitchell <klmitch@mit.edu>
1888 * ircd/m_settime.c: include ircd_snprintf.h
1890 * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
1891 parens around a construct that had both || and &&
1893 * ircd/chkconf.c: #include "config.h" to get some important
1896 * ircd/Makefile.in: revamp ircd makefile for new build system
1898 * doc/Makefile.in: revamp doc makefile for new build system
1900 * config/*: Removed old build system files
1902 * stamp-h.in: a stamp file
1904 * install-sh: install-sh for new build system
1906 * configure.in: configure.in for new build system
1908 * configure: configure script for new build system (built by
1911 * config.sub: config.sub for new build system
1913 * config.h.in: config.h.in for new build system (built by
1916 * config.guess: config.guess for new build system
1918 * aclocal.m4: aclocal.m4 for new build system (built by aclocal
1921 * acinclude.m4: aclocal.m4 macros for new build system
1923 * acconfig.h: config.h skeleton for new build system
1925 * Makefile.in: modify for new build system
1927 2001-05-01 Kevin L. Mitchell <klmitch@mit.edu>
1929 * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
1931 * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
1933 * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
1935 2001-05-01 Perry Lorier <Isomer@coders.net>
1936 * doc/iauth.doc: Protocol for iauth server. (from hybrid).
1937 * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
1938 when you have far far too many sockets in use.
1939 * {include,ircd}/iauth.c: A start on iauth support.
1941 2001-05-01 Perry Lorier <Isomer@coders.net>
1942 * ircd/s_err.c: Suggested wording change.
1943 * ircd/s_user.c: Users aren't target limited against +k users.
1944 * ircd/chkconf.c: Made it compile again, who knows if it works, but
1945 now I can at least make install
1946 * various: Cleanups on m_*.c files.
1949 2001-04-23 Kevin L. Mitchell <klmitch@mit.edu>
1951 * ircd/s_misc.c (exit_client): make netsplit server notice say the
1954 * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
1955 change to make Khaled happy...
1957 * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
1960 2001-04-21 Kevin L. Mitchell <klmitch@mit.edu>
1962 * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
1963 turned up no more bugs
1965 * ircd/ircd.c: use /* */ comments instead of // comments--all the
1968 * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
1969 // comments--all the world's not gcc :(
1971 * ircd/runmalloc.c: finally garbage-collect unused file
1973 * include/runmalloc.h: finally garbage-collect unused file
1975 * ircd/<multiple files>: addition of '#include "config.h"' before
1976 all other includes in most .c files
1978 * include/<multiple files>: remove includes of config.h, which are
1979 now going into the raw .c files
1981 2001-04-20 Kevin L. Mitchell <klmitch@mit.edu>
1983 * ircd/m_whois.c (do_whois): display proper server name if the
1984 user is looking up himself
1986 * ircd/m_who.c (m_who): disable match by servername or display of
1987 server names by non-opers
1989 * include/ircd_policy.h: add define for
1990 HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
1993 2001-04-18 Kevin L. Mitchell <klmitch@mit.edu>
1995 * ircd/s_conf.c: keep the $R in memory so we can see it clearly
1996 when we do a /stats k
1998 * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
1999 users from turning on +s and +g
2001 * ircd/s_misc.c (exit_client): pull-up of changes to turn off
2004 * ircd/parse.c: pull-up of changes to disable /trace, /links, and
2007 * ircd/m_whois.c (do_whois): pull-up of server name masking for
2010 * ircd/m_user.c (m_user): removal of umode and snomask defaulting
2013 * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
2015 * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
2017 * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
2019 * ircd/channel.c (channel_modes): pull-up of channel key display
2022 * include/ircd_policy.h: pull-up of ircd_policy.h
2024 * include/client.h: pull-up of Set/ClearServNotice()
2026 * ircd/gline.c (do_gline): report client name in G-line message
2029 * ircd/s_user.c (register_user): pull-up--show IP address in some
2030 server notices dealing only with users; report which connection
2033 * ircd/s_stats.c (report_deny_list): use conf->flags &
2034 DENY_FLAGS_IP insteaf of conf->ip_kill
2036 * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
2037 insteaf of conf->ip_kill
2039 * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
2042 * include/s_conf.h: use a flags field in struct DenyConf; define
2043 DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
2044 pull-up of K-line by real name
2046 * ircd/m_trace.c: pull-up of IP show for user connections
2048 * doc/example.conf: pull-up of the realname K-line documentation
2050 * ircd/ircd.c: forward port of pid file advisory locking mechanism
2052 2001-04-16 Kevin L. Mitchell <klmitch@mit.edu>
2054 * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
2055 all servers, rather than to only servers that have +w/+g/whatever
2056 users on them; among other things, this removes that atrocity
2057 known as sentalong[] from this function
2059 * ircd/m_admin.c: must include ircd.h to declare "me"; must
2060 include hash.h to declare FindUser()
2062 * ircd/m_wallusers.c: implementation of WALLUSERS
2064 * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
2066 * ircd/m_wallops.c: only send WALLOPS to opers
2068 * ircd/parse.c: add WALLUSERS command to parser table
2070 * include/handlers.h: declare wallusers handlers
2072 * include/msg.h: add WALLUSERS command
2074 * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
2075 flag, send only to appropriate opers
2077 2001-04-13 Kevin L. Mitchell <klmitch@mit.edu>
2079 * ircd/uping.c: refit to use the new events interface
2081 * ircd/res.c: refit to use the new events interface
2083 * ircd/ircd_events.c: create timer_chg(), which permits a
2084 (non-periodic) timer's expire time to be modified; change the
2085 logic in timer_run() so that timers that were re-added while the
2086 event was being processed will not be destroyed prematurely
2088 * include/uping.h: include the events header, declare some extra
2089 fields in struct UPing, remove timeout value, and define some
2090 flags for marking which cleanup items have yet to be done
2092 * include/ircd_events.h: add a prototype for timer_chg() to change
2093 the expire time of a running timer
2095 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
2096 * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
2098 2001-03-07 Joseph Bongaarts <foxxe@wtfs.net>
2100 * config/configure.in: Add check for OpenBSD
2102 * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
2103 differs from generic BSD, particularly in its handling of
2106 2001-02-12 Kevin L. Mitchell <klmitch@mit.edu>
2108 * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
2109 have been added by a U-lined server, rather than going through the
2110 activate/deactivate logic; propagate G-line removals by U-lined
2113 * ircd/gline.c: rename propagate_gline() to gline_propagate();
2114 make gline_propagate() return an int 0 (convenience return); only
2115 update lastmod in gline_activate() and gline_deactivate() if the
2116 current lastmod is non-zero, since 0 lastmod is our flag of a
2117 U-lined server having added a G-line
2119 * include/gline.h (gline_propagate): exporting the G-line
2120 propagation function
2122 * ircd/m_list.c (m_list): duh; permit explicit channel name
2123 specification only when /list gets two arguments ("Kev
2124 #wasteland") rather than when /list gets more than two
2125 arguments--nice braino
2127 2001-01-29 Thomas Helvey <twhelvey1@home.com>
2129 * ircd/ircd_reply.c (need_more_params): fix bug that allowed
2130 unregistered clients to spam opers with protocol violation
2131 messages. Note: the bugfix may have eliminated some useful
2132 protocol violation messages.
2133 Please send protocol violation messages explicitly from the
2134 functions they are discovered in, you have much better context
2135 for the error there and it helps to document the behavior of the
2136 server. This was also a design bug in that it violated the
2137 "A function should do one thing" heuristic. Patching this one
2138 would have resulted in a continuous spawning of other bugs over
2139 the next 3 years, so I killed it. Check around for stuff this
2140 broke and readd the calls to protocol_violation in the functions
2141 that need to send the message.
2143 2001-01-29 Kevin L. Mitchell <klmitch@mit.edu>
2145 * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
2146 already existed, then the logic would (attempt to) skip it, but
2147 would not free the ban string; now the ban string is free'd and
2148 the ban count is decremented, releasing the ban for use
2150 * ircd/s_user.c: make send_umode_out() take a prop argument
2151 instead of testing for the PRIV_PROPAGATE privilege itself; fix
2152 set_umode() to use this new argument, calculating it before
2153 calculating the new privileges for a -o'd user
2155 * ircd/m_oper.c (m_oper): pass the new prop argument to
2158 * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
2159 that we're not actually going to add because they already exist;
2160 test that particular bit before adding to the linked list
2162 * include/s_user.h: add a prop argument to send_umode_out() to
2163 indicate whether or not to propagate the user mode
2165 2001-01-24 Kevin L. Mitchell <klmitch@mit.edu>
2167 * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
2168 it would have written; upper-bound the number to prevent overflows
2169 by proxy; also, tune buffer size given to ircd_vsnprintf() to take
2170 into account the fact that ircd_vsnprintf() already takes the
2171 terminal \0 into account
2173 2001-01-22 Kevin L. Mitchell <klmitch@mit.edu>
2175 * ircd/msgq.c: add an incredibly ugly hack to attempt to track
2176 down an apparent buffer overflow; remove msgq_map(), since it's no
2177 longer used anywhere; slight tweaks to prevent off-by-one errors,
2178 but these can't explain the problems we've seen
2180 * include/msgq.h: remove msgq_map(), since it's no longer used
2183 2001-01-18 Kevin L. Mitchell <klmitch@mit.edu>
2185 * ircd/s_user.c (set_nick_name): call client_set_privs() after
2188 2001-01-17 Kevin L. Mitchell <klmitch@mit.edu>
2190 * ircd/s_bsd.c (read_message): fix a typo in the select version of
2193 * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
2194 its argument to be an lvalue, which means we can't use
2195 whowas_clean()'s handy-dandy "return ww" feature
2197 * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
2199 2001-01-16 Kevin L. Mitchell <klmitch@mit.edu>
2201 * ircd/ircd_events.c (timer_run): it's possible that the timer got
2202 deleted during the callback processing, so don't go to the bother
2203 of requeuing it if the destroy flag is set
2205 * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
2206 out of config.h if this is a *BSD; include errno.h (oops);
2207 decrement error count after an hour using a timer; use FD_SETSIZE
2208 constant instead of IRCD_FD_SETSIZE constant; fill in event
2211 * ircd/engine_poll.c: include errno.h (oops); decrement error
2212 count after an hour using a timer; fill in event processing code
2214 * ircd/engine_kqueue.c: include errno.h (oops); decrement error
2215 count after an hour using a timer; assert events filter is either
2216 EVFILT_READ or EVFILT_WRITE; fill in event processing code
2218 * ircd/engine_devpoll.c: include errno.h (oops); decrement error
2219 count after an hour using a timer; fill in event processing code
2221 2001-01-15 Kevin L. Mitchell <klmitch@mit.edu>
2223 * ircd/client.c: fixed feattab; basically, when I changed features
2224 to use small integers specifying bit positions, instead of the
2225 bits themselves, I forgot to update feattab to not | these
2226 privileges together; also fixed a bug in the antiprivs masking
2227 loop in client_set_privs()--last index wouldn't get parsed
2229 2001-01-11 Kevin L. Mitchell <klmitch@mit.edu>
2231 * ircd/ircd_events.c: call event_generate() with new data
2232 argument; make it set that field in struct Event; make
2233 socket_add() return the value of the eng_add callback
2235 * ircd/engine_select.c: make engine_add() return a
2236 successful/unsuccessful status; add bounds-checking outside of an
2237 assert; use accessor macros; use log_write(), not the deprecated
2238 ircd_log(); add an assert to engine_loop() to double-check for
2239 data structure corruption
2241 * ircd/engine_poll.c: make engine_add() return a
2242 successful/unsuccessful status; add bounds-checking outside of an
2243 assert; use accessor macros; use log_write(), not the deprecated
2244 ircd_log(); add an assert to engine_loop() to double-check for
2245 data structure corruption
2247 * ircd/engine_kqueue.c: implementation of an engine for kqueue()
2249 * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
2251 * include/ircd_events.h: define some accessor macros; add ev_data
2252 to struct Event for certain important data--errno values, for
2253 instance; make EngineAdd callback tell us if it was successful or
2254 not; add extra argument to event_generate(); make socket_add()
2255 return the status from EngineAdd
2257 2001-01-10 Kevin L. Mitchell <klmitch@mit.edu>
2259 * ircd/ircd_events.c: pass initializer information about how many
2260 total _filedescriptors_ may be opened at once
2262 * ircd/ircd.c: use exported "running" instead of unexported
2265 * ircd/engine_select.c: implementation of an event engine based on
2268 * ircd/engine_poll.c: implementation of an event engine based on
2271 * include/ircd_events.h: pass the engine initializer an integer
2272 specifing how many _filedescriptors_ may be opened at once
2274 * include/ircd.h: running has to be exported for the engine_*
2277 2001-01-09 Kevin L. Mitchell <klmitch@mit.edu>
2279 * ircd/ircd_events.c: include some needed headers; add some
2280 comments; make evEngines[] const; bundle sig_sock and sig_fd into
2281 a struct named sigInfo; rework struct evInfo to have a queue of
2282 _generators_, and only when threaded; added a gen_init() function
2283 to centralize generator initialization; fix various compile-time
2284 errors; rework event_add() for new queueing scheme and checked for
2285 compile-time errors; add casts where needed; spell evEngines[]
2286 correctly; make engine_name() return const char*
2288 * include/ircd_events.h: type EventCallBack depends on struct
2289 Event, so pre-declare it; put _event_ queue into generators, and
2290 only when threaded; give engine data a union to store both ints
2291 and pointers; make engine name a const; fix gen_ref_dec() macro;
2292 make engine_name() return a const char*
2294 * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
2295 down with the non-static functions; modify event_execute() to use
2296 the new gen_ref_dec() to simplify code; make sure event_generate()
2297 does not generate new events for generators marked for destruction
2299 * include/ircd_events.h: the engines, at least, may need to modify
2300 reference counts to keep generators from going away while
2301 something still points at them, so add reference counter
2302 manipulators and export gen_dequeue() for them
2304 * ircd/ircd_events.c: set up the list of engines to try; set up
2305 the signal struct Socket; rename netInfo to evInfo; move static
2306 functions near the beginning of the file; do away with
2307 signal_signal() (since we no longer keep a signal count ourselves)
2308 and call event_generate() directly from signal_callback--also
2309 renamed some functions; allow signal_callback() to read up to
2310 SIGS_PER_SOCK at once from the signal pipe; add event_init() to
2311 initialize the entire event system; add event_loop() to call the
2312 engine's event loop; initialize new struct GenHeader member,
2313 gh_engdata; remove timer_next(); add socket_add() function to add
2314 a socket; add socket_del() to mark a socket for deletion; add
2315 socket_state() to transition a socket between states; add
2316 socket_events() to set what events we're interested in on the
2317 socket; add engine_name() to retrieve event engine's name
2319 * include/ircd_events.h: add engine data field to struct
2320 GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
2321 note about states vs s_events; remove signal count; fold union
2322 Generator back into struct Event; remove count members from struct
2323 Generators; redefine engine callbacks to not take a struct
2324 Engine*; add explanatory comments to callback definitions; add
2325 some engine callbacks to handle operations; remove struct Engine
2326 flag member--can detect single flag from eng_signal member; add
2327 event_init(), event_loop(), engine_name(), and the socket_*()
2328 functions; make timer_next() a macro to avoid a function call
2330 2001-01-08 Kevin L. Mitchell <klmitch@mit.edu>
2332 * include/ircd_events.h: rename to ircd_events.h, since it handles
2333 events, not just networking stuff; add signal support; more
2334 structural rearrangement
2336 * ircd/ircd_events.c: rename to ircd_events.c, since it handles
2337 events, not just networking stuff; add signal support; more
2338 structural rearrangement
2340 2001-01-07 Kevin L. Mitchell <klmitch@mit.edu>
2342 * ircd/ircd_network.c: implement timer API; add reference counts
2345 * include/ircd_network.h: firm up some pieces of the interface;
2346 split out members everything has into a separate structure; add
2347 reference counts; add timer API
2349 2001-01-06 Kevin L. Mitchell <klmitch@mit.edu>
2351 * ircd/ircd_network.c: static data and event manipulation
2352 functions for new event processing system
2354 * include/ircd_network.h: data structures for new event processing
2357 2001-01-03 Kevin L. Mitchell <klmitch@mit.edu>
2359 * ircd/whowas.c: Completely re-did the old allocation scheme by
2360 turning it into a linked list, permitting the
2361 NICKNAMEHISTORYLENGTH feature to be changed on the fly
2363 * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
2364 feature instead of old #define
2366 * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
2367 integer feature with a notify callback (whowas_realloc)
2369 * ircd/client.c (client_set_privs): second memset was supposed to
2370 be over antiprivs, not privs; thanks, Chris Behrens
2371 <cbehrens@xo.com> for pointing that out...
2373 * include/whowas.h: new elements for an extra linked list in
2374 struct Whowas; a notify function for feature value changes
2376 * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
2378 * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
2380 2001-01-02 Kevin L. Mitchell <klmitch@mit.edu>
2382 * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
2383 compile-time option--now in features subsystem
2385 * ircd/motd.c (motd_init): rework motd_init() to be called as the
2386 notify function for MPATH and RPATH features (should probably
2387 split it up a bit, though...)
2389 * ircd/m_privs.c (mo_privs): if called with no parameters, return
2390 privs of the caller, rather than an error
2392 * ircd/m_list.c: pull usage message into its own function; pull
2393 list parameter processing into its own function that does not
2394 modify the contents of the parameter; add list_set_default() to
2395 set the default list parameter (uses the notify hook); rework
2396 m_list() to make use of these functions; removed dead code
2398 * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
2399 we have no notify handler
2401 * ircd/ircd_features.c: add notify callback for notification of
2402 value changes; give mark callback an int return value to indicate
2403 whether or not to call the notify callback; fix up feature macros
2404 for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
2405 string handling in feature_set() to deal with def_str being a null
2406 pointer; wrote feature_init() to set up all defaults appropriately
2408 * ircd/ircd.c (main): call feature_init() instead of
2409 feature_mark(), to avoid calling notify functions while setting up
2412 * ircd/client.c: updated to deal with new privileges structure
2414 * ircd/class.c: updated so init_class() can be called should one
2415 of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
2416 DEFAULTMAXSENDQLENGTH be changed
2418 * include/ircd_log.h: log_feature_mark() updated to fit with new
2421 * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
2422 feature_init() function (found necessary since adding the notify
2423 stuff and notifying motd.c during start-up...before we defined
2426 * include/client.h: move privs around to enable addition of more
2427 bits if necessary; based on the FD_* macros
2429 * include/channel.h: declare list_set_default (actually located in
2432 * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
2433 AVBANLEN*MAXSILES) from features subsystem
2435 * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
2438 * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
2439 the features subsystem
2441 * ircd/s_auth.c (start_auth): NODNS migrated to the features
2444 * ircd/random.c: created random_seed_set() function to set seed
2445 value, along with some stuff to make ircrandom() a little more
2446 random--state preserving, xor of time instead of direct usage,
2447 etc.; it's still a pseudo-random number generator, though, and
2448 hopefully I haven't broken the randomness
2450 * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
2452 * ircd/m_join.c: use features interface to retrieve
2455 * ircd/ircd_features.c: add NODISP flag for super-secret features;
2456 add a whole bunch of new features migrated over from make config
2458 * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
2459 CONNECTTIMEOUT, and TIMESEC
2461 * ircd/client.c (client_get_ping): use features interface to
2462 retrieve PINGFREQUENCY
2464 * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
2465 CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
2467 * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
2468 features subsystem, we have to add something explicit
2470 * ircd/channel.c: use features interface to retrieve
2471 KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
2472 note that MAXBANLENGTH is now calculated dynamically from MAXBANS
2475 * ircd/Makefile.in: run make depend
2477 * include/supported.h (FEATURESVALUES): update to reference
2480 * include/random.h: add prototype for random_seed_set
2482 * include/ircd_features.h: add several more features
2484 * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
2487 * config/config-sh.in: feature-ized some more stuff
2489 * include/motd.h: some new elements in motd.h for motd.c changes
2491 * ircd/motd.c: motd_cache() now searches a list of already cached
2492 MOTD files; saves us from having duplicate caches in memory if
2493 there are two identical T-lines for two different sites...
2495 2001-01-02 Perry Lorier <isomer@coders.net>
2496 * ircd/motd.c: don't core if the motd isn't found. Bug found by
2499 2001-01-02 Perry Lorier <isomer@coders.net>
2500 * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic.
2501 * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
2502 to guppy for noticing, and hektik for providing the fix.
2503 * misc others: Minor cleanups, added more protocol_violations, ripped
2504 out more P09 stuffs, bit more protocol neg stuff.
2506 2000-12-19 Kevin L. Mitchell <klmitch@mit.edu>
2508 * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
2509 space (*sigh* stupid clients...)
2511 * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
2514 * ircd/s_err.c: get rid of GODMODE conditionals
2516 * ircd/s_debug.c (debug_serveropts): switch to using appropriate
2517 calls into the features subsystem for various serveropts
2520 * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
2522 * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
2523 to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
2524 NOFLOWCONTROL conditional
2526 * ircd/s_auth.c: use features subsystem to determine value of
2529 * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
2530 features subsystem to determine the setting of IDLE_FROM_MSG
2532 * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
2534 * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
2535 use features subsystem to get motd file names
2537 * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
2540 * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
2541 us no good; use features subsystem to figure out if we need to do
2542 HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
2543 the Debug(()) macro instead; get value of RELIABLE_CLOCK from
2546 * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
2548 * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
2551 * ircd/m_connect.c: get SERVER_PORT from the features subsystem
2553 * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
2554 from getting marked if they were already set to something...
2556 * ircd/ircd_features.c: add a flag to indicates read-only access;
2557 add several new features that used to be compile-time selected
2559 * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
2560 access to motd files (what the heck?); make sure to initialize the
2561 feature subsystem before trying to write the config file
2563 * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
2564 use feature_bool() to figure out if we're using the FERGUSON
2567 * ircd/Makefile.in: MPATH and RPATH are now done differently, so
2568 remove the clause that creates empty files of that name; also ran
2571 * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
2572 there is no easy way to bounds-check it at present
2574 * include/querycmds.h: make sure ircd_features.h is included; use
2575 feature_str(FEAT_DOMAINNAME) in calls to match()
2577 * include/ircd_features.h: many new features that used to be
2578 compile-time selected
2580 * config/config-sh.in: add * to DOMAINNAME; try also using first
2581 argument to search in /etc/resolv.conf; removed many compile-time
2582 options that now can be configured through the features system
2584 2000-12-18 Kevin L. Mitchell <klmitch@mit.edu>
2586 * doc/api/log.txt: how to use the logging API
2588 * doc/api/features.txt: how to use the features API
2590 * doc/api/api.txt: how to write API documentation
2592 * include/ircd_features.h: rearranged a couple of features for
2595 * ircd/ircd_features.c: cleaned up the macros some; rearranged
2596 some code to all go into the switch; rearranged a couple of
2597 features for neatness purposes
2599 2000-12-16 Greg Sikorski <gte@atomicrevs.demon.co.uk>
2600 * ircd/os_bsd.c: Added os_set_tos for BSD users.
2602 2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
2604 * ircd/ircd_features.c: Isomer almost got it right; you need to
2605 use F_I(), since it's an integer value, not a boolean value. The
2606 asserts in feature_int would catch you out... Also made the F_*
2609 * ircd/s_err.c: define RPL_PRIVS reply
2611 * ircd/parse.c: put new PRIVS command into command table
2613 * ircd/m_privs.c (mo_privs): message handler to report operator
2616 * ircd/ircd_features.c: declare new features OPER_SET and
2617 LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
2618 ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
2620 * ircd/client.c: simplify client_set_privs() with a table that
2621 defines what features to test for; add new client_report_privs()
2623 * ircd/Makefile.in: compile new m_privs.c; run make depend
2625 * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
2626 an operator's privileges
2628 * include/msg.h: define new command: PRIVS
2630 * include/ircd_features.h: create new features OPER_SET and
2631 LOCOP_SET for controlling access to /set
2633 * include/handlers.h (mo_privs): declare message handler for
2634 reporting oper privileges
2636 * include/client.h (client_report_privs): declare function to
2637 report what privileges an oper has
2639 * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
2640 report that a user is an oper if the oper doing the /whois had
2643 2000-12-17 Isomer <Isomer@coders.net>
2644 * ircd/listener.c: added support for TOS twiddling as a 'feature'.
2646 2000-12-17 Isomer <Isomer@coders.net>
2647 * ircd/os_linux.c: add TOS stuffs
2649 * ircd/listener.c: add TOS stuffs
2651 2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
2653 * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
2654 to indicate a user is an oper
2656 * ircd/s_user.c: clear privileges setting when deopping; don't
2657 propagate +o unless user has PRIV_PROPAGATE privilege
2659 * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
2660 function and replaced how the server option string is generated
2662 * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
2664 * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
2665 not to indicate the user is an operator
2667 * ircd/m_who.c: use HasPriv to determine whether or not a user
2668 should be displayed in the list of opers
2670 * ircd/m_version.c: call debug_serveropts() to get server option
2673 * ircd/m_userip.c (userip_formatter): use HasPriv to determine
2674 whether or not to show oper status
2676 * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
2677 whether or not to show oper status
2679 * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
2680 checks with HasPriv check; remove dead code
2682 * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
2683 checks with HasPriv check
2685 * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
2686 use feature_bool to check if disabled
2688 * ircd/m_oper.c (m_oper): set oper priviliges
2690 * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
2693 * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
2696 * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
2699 * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
2700 use feature_bool to check if disabled
2702 * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
2703 #ifdef conditional with a HasPriv check
2705 * ircd/m_gline.c (mo_gline): rework permissions checking
2706 structure; use feature_bool to check if any part is disabled
2708 * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
2709 check; remove dead code
2711 * ircd/m_clearmode.c: use feature_bool() to detect if we're
2712 disabled; use HasPriv to figure out what we're permitted to do;
2713 only allow clearmode on moded channels
2715 * ircd/ircd_features.c: define various features; use HasPriv to
2716 verify permissions to set/reset
2718 * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
2721 * ircd/client.c (client_set_privs): function to set an oper's
2724 * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
2726 * include/whocmds.h: deconditionalize several macros and
2727 substitute appropriate calls to HasPriv()
2729 * include/s_debug.h: get rid of global serveropts[]; define new
2730 function debug_serveropts() to build that string on the fly
2732 * include/ircd_features.h: define some features
2734 * include/client.h: add privs member to struct Connection; define
2737 * include/channel.h: no longer using IsOperOnLocalChannel; remove
2738 conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
2740 * doc/Configure.help: remove help information for deprecated
2743 * config/config-sh.in: remove certain deprecated options having to
2744 do with what opers can and cannot do--first stage in moving
2745 compile-time constants into the .conf
2747 2000-12-16 Isomer <Isomer@coders.net>
2748 * ircd/parse.c: detect if the prefix is missing and try and recover
2751 2000-12-15 Kevin L. Mitchell <klmitch@mit.edu>
2753 * ircd/ircd_log.c: found and fixed some bugs in the debug logging
2754 code that would sometimes result in the log file not being
2755 reopened--which meant that a user could connect and get the
2756 logging output--oops
2758 * ircd/Makefile.in: run make depend...
2760 * ircd/s_stats.c: get rid of report_feature_list()
2762 * ircd/s_err.c: add the 'bad value' error message, shift error
2763 messages over somewhat
2765 * ircd/s_debug.c (debug_init): call log_debug_init with the
2768 * ircd/s_conf.c (read_configuration_file): unmark features before
2769 reading the config file, then reset unmarked features after
2770 reading the config file
2772 * ircd/m_stats.c: use feature_report() instead of
2773 report_feature_list()
2775 * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
2776 special 'mark' flags and use them; add the stuff needed by the
2779 * ircd/ircd_features.c: rework the features API and add gobs of
2780 comments to try to explain what some of these complex functions
2783 * include/s_stats.h: get rid of report_feature_list(); use
2784 feature_report() instead
2786 * include/numeric.h: added a new error message and shifted old
2787 values over some--this is, after all, an alpha
2789 * include/ircd_log.h: log_debug_init now takes an integer to tell
2790 it if it should be using the tty; added a couple of functions
2791 required by the features API
2793 * include/ircd_features.h: add an enum and some more functions to
2794 flesh out the feature API--it should now be possible to put all
2795 those compile-time constants in the config file!
2797 * ircd/send.c: got the direction of the assert incorrect...
2799 * ircd/send.c: implement the efficiency of flush_connections by
2800 creating a linked list of struct Connection's with queued data;
2801 also get rid of flush_sendq_except and make sure to yank
2802 connections out of the list when their sendQs become empty (notice
2803 the assertion in flush_connections!)
2805 * ircd/s_bsd.c (close_connection): must yank the Connection out of
2808 * ircd/list.c (dealloc_connection): must yank the Connection out
2811 * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
2812 deprecated flush_sendq_except
2814 * ircd/client.c: define a couple new helper functions for sendq
2815 threading--this will make the flush_connections function in send.c
2816 considerably more efficient by creating a linked list of
2817 Connections that have queued data to send
2819 * include/send.h: remove flush_sendq_except, as it's not used
2822 * include/client.h: declare a couple new helper functions for the
2823 sendq threading system
2825 2000-12-14 Kevin L. Mitchell <klmitch@mit.edu>
2827 * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
2830 * ircd/s_debug.c (count_memory): modify to report for clients and
2831 connections, not local clients and remote clients
2833 * ircd/list.c: fiddle with the client-fiddling functions to take
2834 into account the divorce of struct Connection from struct Client
2836 * ircd/ircd.c: define a struct Connection for me, initialize it,
2837 and link it into the right place (ewww, globals!)
2839 * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
2840 struct Client into struct Client and struct Connection; redefine
2841 local-portion accessor macros to go through struct Client to the
2842 struct Connection; define struct Connection accessor macros
2844 2000-12-13 Kevin L. Mitchell <klmitch@mit.edu>
2846 * ircd/whowas.c: missed a couple of accesses to a struct Client
2848 * ircd/uping.c: missed a couple of accesses to a struct Client
2850 * ircd/send.c: missed a couple of accesses to a struct Client
2852 * ircd/s_user.c: missed a couple of accesses to a struct Client
2854 * ircd/s_misc.c: missed a couple of accesses to a struct Client
2856 * ircd/s_conf.c: missed a couple of accesses to a struct Client
2858 * ircd/s_bsd.c: missed a couple of accesses to a struct Client
2860 * ircd/s_auth.c: missed a couple of accesses to a struct Client
2862 * ircd/res.c: missed a couple of accesses to a struct Client
2864 * ircd/parse.c: missed a couple of accesses to a struct Client
2866 * ircd/m_whois.c: use new accessor macros for struct Client
2868 * ircd/m_who.c: use new accessor macros for struct Client
2870 * ircd/m_wallchops.c: use new accessor macros for struct Client
2872 * ircd/m_version.c: use new accessor macros for struct Client
2874 * ircd/m_userip.c: use new accessor macros for struct Client
2876 * ircd/m_userhost.c: use new accessor macros for struct Client
2878 * ircd/m_user.c: use new accessor macros for struct Client
2880 * ircd/m_uping.c: use new accessor macros for struct Client
2882 * ircd/m_trace.c: use new accessor macros for struct Client
2884 * ircd/m_topic.c: use new accessor macros for struct Client
2886 * ircd/m_time.c: use new accessor macros for struct Client
2888 * ircd/m_stats.c: use new accessor macros for struct Client
2890 * ircd/m_squit.c: use new accessor macros for struct Client
2892 * ircd/m_silence.c: use new accessor macros for struct Client
2894 * ircd/m_server.c: use new accessor macros for struct Client;
2897 * ircd/m_rpong.c: use new accessor macros for struct Client
2899 * ircd/m_rping.c: use new accessor macros for struct Client
2901 * ircd/m_quit.c: use new accessor macros for struct Client
2903 * ircd/m_privmsg.c: use new accessor macros for struct Client
2905 * ircd/m_pong.c: use new accessor macros for struct Client; remove
2908 * ircd/m_ping.c: use new accessor macros for struct Client
2910 * ircd/m_pass.c: use new accessor macros for struct Client
2912 * ircd/m_part.c: use new accessor macros for struct Client
2914 * ircd/m_oper.c: use new accessor macros for struct Client
2916 * ircd/m_notice.c: use new accessor macros for struct Client
2918 * ircd/m_nick.c: use new accessor macros for struct Client
2920 * ircd/m_names.c: use new accessor macros for struct Client
2922 * ircd/m_mode.c: use new accessor macros for struct Client
2924 * ircd/m_map.c: use new accessor macros for struct Client
2926 * ircd/m_list.c: use new accessor macros for struct Client
2928 * ircd/m_links.c: use new accessor macros for struct Client;
2929 remove some dead code
2931 * ircd/m_kill.c: use new accessor macros for struct Client; remove
2934 * ircd/m_kick.c: use new accessor macros for struct Client
2936 * ircd/m_join.c: use new accessor macros for struct Client; remove
2939 * ircd/m_ison.c: use new accessor macros for struct Client
2941 * ircd/m_invite.c: use new accessor macros for struct Client
2943 * ircd/m_info.c: use new accessor macros for struct Client
2945 * ircd/m_gline.c: use new accessor macros for struct Client
2947 * ircd/m_error.c: use new accessor macros for struct Client
2949 * ircd/m_create.c: use new accessor macros for struct Client
2951 * ircd/m_connect.c: use new accessor macros for struct Client;
2952 removed some dead code
2954 * ircd/m_burst.c: use new accessor macros for struct Client
2956 * ircd/m_away.c: use new accessor macros for struct Client
2958 * ircd/m_admin.c: use new accessor macros for struct Client
2960 * ircd/hash.c: missed a couple of accesses to a struct Client
2962 * ircd/gline.c: missed a couple of accesses to a struct Client
2964 * ircd/crule.c: missed a couple of accesses to a struct Client
2966 * ircd/class.c: missed an access to a struct Client
2968 * ircd/channel.c: missed a couple of accesses to a struct Client
2970 * ircd/IPcheck.c: missed an access to a struct Client
2972 * include/querycmds.h: fix a couple of stats macros to use
2973 structure accessor macros
2975 * include/client.h: change structure member names to highlight any
2976 places in the code I've missed
2978 2000-12-12 Kevin L. Mitchell <klmitch@mit.edu>
2980 * ircd/whowas.c: use new struct Client accessor macros
2982 * ircd/whocmds.c: use new struct Client accessor macros
2984 * ircd/send.c: use new struct Client accessor macros
2986 * ircd/s_user.c: use new struct Client accessor macros; removed
2989 * ircd/s_serv.c: use new struct Client accessor macros; removed
2992 * ircd/s_numeric.c: use new struct Client accessor macros
2994 * ircd/s_misc.c: use new struct Client accessor macros
2996 * ircd/s_debug.c: use new struct Client accessor macros
2998 * ircd/s_conf.c: use new struct Client accessor macros
3000 * ircd/s_bsd.c: use new struct Client accessor macros
3002 * ircd/s_auth.c: use new struct Client accessor macros
3004 * ircd/parse.c: use new struct Client accessor macros
3006 * ircd/packet.c: use new struct Client accessor macros
3008 * ircd/numnicks.c: use new struct Client accessor macros
3010 * ircd/motd.c: use new struct Client accessor macros
3012 * ircd/listener.c: use new struct Client accessor macros
3014 * ircd/list.c: use new struct Client accessor macros
3016 * ircd/jupe.c: use new struct Client accessor macros
3018 * ircd/ircd_snprintf.c: use new struct Client accessor macros
3020 * ircd/ircd_reply.c: use new struct Client accessor macros
3022 * ircd/ircd_relay.c: use new struct Client accessor macros
3024 * ircd/ircd.c: use new struct Client accessor macros
3026 * ircd/gline.c: catch some instances of me.<stuff> I missed
3029 * ircd/client.c: use cli_ instead of con_
3031 * ircd/class.c: use cli_ instead of con_
3033 * ircd/channel.c: use cli_ instead of con_
3035 * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
3036 of me.<stuff> I missed previously
3038 * include/client.h: use cli_ instead of con_...seemed like a good
3039 idea at the time *shrug*
3041 2000-12-11 Kevin L. Mitchell <klmitch@mit.edu>
3043 * ircd/hash.c: use struct Client accessor macros
3045 * ircd/gline.c: use struct Client accessor macros
3047 * ircd/crule.c: use struct Client accessor macros
3049 * ircd/client.c: use struct Client accessor macros; remove some
3052 * ircd/class.c: use struct Client accessor macros
3054 * ircd/channel.c: use struct Client accessor macros; remove some
3057 * ircd/IPcheck.c: use struct Client accessor macros
3059 * include/numnicks.h: use struct Client accessor macros
3061 * include/client.h: first step to divorcing struct Client and
3062 struct Connection--define accessor macros and use them
3064 * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
3065 uplink would remove them. This is because the removal protocol
3066 message wasn't being sent to the uplinks. This is fixed by fixing
3067 propagate_gline() to send the proper number of arguments depending
3068 on whether or not we're adding or deleting the Uworld gline, and
3069 by having gline_deactivate() make sure to turn off the active bit
3070 and call propagate_gline() if it's a Uworld gline
3072 2000-12-10 Kevin L. Mitchell <klmitch@mit.edu>
3074 * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
3076 * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
3077 anywhere intelligent...
3079 2000-12-09 Kevin L. Mitchell <klmitch@mit.edu>
3081 * ircd/send.c (send_queued): call deliver_it with appropriate
3084 * ircd/s_serv.c: reorder a couple of headers--cosmetic
3086 * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
3089 * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
3090 with appropriate iovec
3092 * ircd/os_linux.c (os_sendv_nonb): function for calling writev
3093 with appropriate iovec
3095 * ircd/os_generic.c (os_sendv_nonb): function for calling writev
3096 with appropriate iovec
3098 * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
3101 * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
3102 exactly how much we're trying to write out to the fd
3104 * include/s_bsd.h: make deliver_it take a struct MsgQ
3106 * include/msgq.h: add a len_p argument to msgq_mapiov to help
3107 detect short writes that indicate possible socket blocking
3109 * include/ircd_osdep.h: declare os_sendv_nonb()
3111 * ircd/channel.c (modebuf_mode): don't add empty modes...
3113 2000-12-08 Kevin L. Mitchell <klmitch@mit.edu>
3115 * include/send.h: add prio argument to send_buffer to select
3116 between normal and priority queues
3118 * ircd/s_user.c (send_user_info): add prio argument to send_buffer
3121 * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
3123 * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
3126 * ircd/channel.c (send_channel_modes): add prio argument to
3129 * ircd/send.c (send_buffer): add a prio argument to select the
3130 priority queue; update send.c functions to use it
3132 * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
3133 msgq_add; add a prio argument to msgq_add to select the priority
3136 * include/msgq.h: remove msgq_prio; add a prio argument to
3139 * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
3140 using msgq functions instead of dbuf functions; remove old, dead
3141 sendto_* functions; redo send_buffer to take a struct MsgBuf;
3142 rework sendcmdto_* functions to make use of the new struct MsgBuf
3144 * ircd/s_user.c: remove hunt_server; restructure send_user_info to
3145 make appropriate use of struct MsgBuf
3147 * ircd/s_debug.c (count_memory): count memory used by the MsgQ
3148 system and report it
3150 * ircd/s_conf.c (read_configuration_file): use
3151 sendto_opmask_butone instead of the now dead sendto_op_mask
3153 * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
3156 * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
3158 * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
3161 * ircd/m_version.c: fix spelling in comments marking dead code
3163 * ircd/m_userip.c (userip_formatter): restructure to make use of
3166 * ircd/m_userhost.c (userhost_formatter): restructure to make use
3169 * ircd/m_stats.c: use MsgQLength on a sendQ
3171 * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
3172 sendQ; mark a piece of dead code
3174 * ircd/m_names.c: use send_reply instead of sendto_one
3176 * ircd/m_mode.c: use new mode; remove old dead code
3178 * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
3180 * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
3183 * ircd/listener.c (accept_connection): use sendto_opmask_butone
3184 instead of sendto_op_mask
3186 * ircd/list.c (free_client): use MsgQClear to clear sendQ
3188 * ircd/ircd_reply.c: remove send_error_to_client; restructure
3189 send_reply to make use of struct MsgBuf
3191 * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
3192 since its no longer used (at least currently)
3194 * ircd/channel.c: restructure send_channel_modes to make use of
3195 struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
3196 and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
3198 * ircd/Makefile.in: add msgq.c to list of sources; run make depend
3200 * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
3202 * include/send.h: send_buffer now takes a struct MsgBuf * instead
3203 of a char *; flush_sendq_except now takes no arguments, as sendq
3204 flushing currently only happens in dbuf.h and sendQ is a struct
3205 MsgQ; remove prototypes for a lot of old sendto_* functions that
3206 aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
3207 no longer needed, and the latter is identical to BUFSIZE in
3210 * include/s_user.h: make InfoFormatter take a struct MsgBuf*
3211 instead of a char *; also make it return void, instead of char *
3213 * include/msgq.h: add msgq_append and msgq_bufleft functions
3215 * include/client.h: use a struct MsgQ instead of a struct DBuf for
3218 * doc/Configure.help: Remove help for compile-time options that
3221 * config/config-sh.in: remove CONFIG_NEWMODE
3223 * ircd/m_server.c (mr_server): don't send server IPs in any server
3226 * ircd/msgq.c (msgq_vmake): add \r\n to messages
3228 2000-12-07 Kevin L. Mitchell <klmitch@mit.edu>
3230 * include/msgq.h: declare the MsgQ API
3232 * ircd/msgq.c: implementation of new MsgQ system
3234 2000-12-06 Kevin L. Mitchell <klmitch@mit.edu>
3236 * ircd/ircd_features.c: #include was supposed to be for
3237 ircd_features.h, not features.h--missed when I had to do a
3238 rename because of namespace collision
3240 2000-12-05 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3241 * ircd/m_topic.c: Added missing braces that caused all remote
3242 topics to be ignored.
3244 2000-12-04 Kevin L. Mitchell <klmitch@mit.edu>
3246 * ircd/m_create.c: I'm tired of the exit_client warning :)
3247 (ms_create): discovered that exit_client() was being called with
3250 * ircd/s_misc.c (exit_client): remove all dependance on
3251 FNAME_USERLOG, since that's now gone; log only to LS_USER
3253 * ircd/s_debug.c: USE_SYSLOG no longer means anything
3255 * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
3258 * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
3260 * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
3262 * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
3263 the same purpose as LS_USER and LS_OPER
3265 * config/config-sh.in: remove no longer relevant log config
3268 * ircd/uping.c (uping_init): use log_write instead of ircd_log
3270 * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
3272 * ircd/s_conf.c: use log_write instead of ircd_log
3274 * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
3276 * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
3279 * ircd/res.c (send_res_msg): use log_write instead of ircd_log
3281 * ircd/m_who.c: use log_write instead of write_log; no longer
3282 conditionalize on WPATH; mark dead ircd_log calls
3284 * ircd/m_uping.c: mark dead ircd_log call
3286 * ircd/m_server.c (mr_server): use log_write instead of ircd_log
3288 * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
3291 * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
3293 * ircd/m_oper.c: use log_write instead of ircd_log; no longer
3294 conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
3296 * ircd/m_kill.c: mark dead ircd_log calls
3298 * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
3301 * ircd/m_clearmode.c: use log_write instead of write_log; no
3302 longer conditionalize on OPATH
3304 * ircd/jupe.c: use log_write instead of write_log; no longer
3305 conditionalize on JPATH
3307 * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
3308 function; fix a couple of bugs
3310 * ircd/ircd_alloc.c: fixed a comment
3312 * ircd/ircd.c: use log_write instead of ircd_log; fold server
3313 notice generation in a couple of cases
3315 * ircd/gline.c: use log_write instead of write_log; no longer
3316 conditionalize on GPATH
3318 * ircd/channel.c (modebuf_flush_int): use log_write instead of
3319 write_log; no longer conditionalize on OPATH
3321 * ircd/Makefile.in: run make depend, since dependencies have
3324 * doc/example.conf: add system USER to documentation
3326 * include/ircd_log.h: add system USER; remove old ircd_log()
3329 2000-12-04 Isomer <isomer@coders.net>
3330 * ircd/m_names.c: Add NAMES_EON to do_names to say add a
3331 'end_of_names' reply when done.
3332 * ircd/m_join.c: use NAMES_EON as mentioned above
3334 2000-12-01 net <simms@LUCIDA.QC.CA>
3336 * ircd/motd.c: add a freelist for struct Motds
3338 2000-11-30 Kevin L. Mitchell <klmitch@mit.edu>
3340 * ircd/s_stats.c (report_feature_list): report features--only
3341 local opers can see logging configuration, since it doesn't really
3342 mean anything to users
3344 * ircd/s_err.c: add reply messages for new feature subsystem
3346 * ircd/s_conf.c: add F lines to .conf
3348 * ircd/parse.c: add the message descriptions for /set, /reset, and
3351 * ircd/m_stats.c: add /stats f
3353 * ircd/m_set.c (mo_set): implement /set
3355 * ircd/m_reset.c (mo_reset): implement /reset
3357 * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
3358 reopens log files (for log file rotation)
3360 * ircd/m_get.c (mo_get): implement /get
3362 * ircd/ircd_log.c: use int instead of void return value; add
3363 log_report_features() and log_canon(); fix a function that
3364 disappears if DEBUGMODE not #define'd
3366 * ircd/ircd_features.c: functions to manipulate feature settings
3367 either from the config file or with the new /set, /reset, and /get
3370 * ircd/Makefile.in: add new .c files, run make depend
3372 * include/s_stats.h: declare report_feature_list() (/stats f
3375 * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
3376 ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
3379 * include/msg.h: add defines for SET, RESET, and GET
3381 * include/ircd_log.h: add a function to canonicalize subsystem
3382 names; change some void return values to int
3384 * include/ircd_features.h: new features subsystem handles all the
3385 manipulation of special features, like log files
3387 * include/handlers.h: declare new mo_{s,res,g}et message handlers
3388 for fiddling with features run-time
3390 * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
3391 seemed like a good idea at the time...
3393 * doc/example.conf: document new F lines
3395 2000-11-29 Kevin L. Mitchell <klmitch@mit.edu>
3397 * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
3398 new logging functions, which have special support for the debug
3399 log; added loop detection to vdebug(), so that I can
3400 sendto_opmask_butone() from log_vwrite() without incurring another
3403 * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
3404 this allows log file rotations
3406 * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
3408 * ircd/ircd_log.c: much more work fleshing out the interface;
3409 removed old interface; included backwards-compat ircd_log()
3410 function that logs to subsystem LS_OLDLOG
3412 * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
3415 * include/ircd_log.h: include stdarg.h for va_list; move ordering
3416 warning to top of file; fill out LogSys enum; declare new
3417 log_debug_init(), log_vwrite(), log_write_kill(), and
3418 log_[sg]et_*() functions; add flags argument to log_write();
3419 defined flags to inhibit various logging actions
3421 * include/client.h: added support for new SNO_DEBUG, enabled only
3422 if DEBUGMODE is defined
3424 2000-11-28 Kevin L. Mitchell <klmitch@mit.edu>
3426 * ircd/ircd_log.c: make sure the various LOG_* constants are
3427 defined (probably not needed, since #include <syslog.h> isn't
3428 conditional); various static data needed for the new logging
3429 functions; definitions of new logging functions
3431 * include/ircd_log.h: new LogSys enum, declarations for part of
3434 * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
3435 which was of course stupid; switched to using switch/case in
3436 initialization in motd_create(); zero the MotdList.other pointer
3439 * ircd/ircd.c (main): motd_init() has to come before init_conf(),
3440 or we overwrite init_conf()'s hard work with respect to T-lines
3442 2000-11-27 Kevin L. Mitchell <klmitch@mit.edu>
3444 * ircd/s_stats.c: comment out report_motd_list and include a
3445 reference to motd_report()
3447 * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
3448 motd_add() from the conf parser; call motd_clear() from the rehash
3449 routine; remove the no longer needed memory clearing and reloading
3450 stuff from the rehash service routine
3452 * ircd/motd.c: loads new API, including static internal functions
3453 to do allocation/deallocation, etc.
3455 * ircd/m_stats.c: use new motd_report() instead of
3458 * ircd/m_motd.c: use new syntax for motd_send()
3460 * ircd/ircd.c: use new motd_init() function
3462 * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
3463 Makefile.(in); also ran make depend
3465 * include/motd.h: don't need config.h, but now do need time.h;
3466 define new structures and constants; redefine old API and define
3469 2000-11-22 Kevin L. Mitchell <klmitch@mit.edu>
3471 * ircd/s_user.c (register_user): use motd_signon() instead of
3472 calling m_motd; much cleaner this way
3474 * ircd/motd.c: write the new motd_* stuff to make MOTD handling
3477 * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
3480 * include/motd.h: define new MOTD API stuff
3482 2000-11-20 Kevin L. Mitchell <klmitch@mit.edu>
3484 * ircd/ircd_reply.c (protocol_violation): rewrite
3485 protocol_violation so it'll actually work
3487 oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
3488 the client's real name in there.
3490 * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
3491 resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
3492 gets called from register_user with a NULL sptr. This is probably
3493 a design problem, but this bandaid will do for now...
3495 2000-11-19 Isomer <isomer@coders.net>
3496 * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
3497 to problems in the server<->server protocol.
3499 * ircd/m_connect.c: allow remote connects with a port of '0'
3500 meaning to use the port in the config file.
3502 * ircd/m_create.c: Enable hacking protection, lets see how far we
3505 * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
3506 clients, so we don't any more.
3508 * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
3509 and the user@host is displayed of the victim.
3511 * ircd/m_map.c: reloaded 'dump_map'.
3513 * ircd/m_trace.c: allow per class T:
3515 * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
3517 2000-11-17 Isomer <isomer@coders.net>
3519 * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
3520 that were the *same* instead of different. Oh the embarrasment!
3522 * ircd/IPcheck.c: Merged net's fix.
3524 2000-11-02 Kevin L. Mitchell <klmitch@mit.edu>
3526 * ircd/m_whois.c: remove compiler warning by adding a newline to
3529 * ircd/m_names.c: moved the flags up to s_user.h
3531 * ircd/m_join.c: call do_names instead of m_names; restructure
3532 ms_join to never transmute a JOIN into a CREATE, but use the TS in
3533 the JOIN (if present) to timestamp the channel
3535 * ircd/channel.c: send JOINs individually, instead of grouping
3536 them, so that we can send the channel's creation time
3538 * include/s_user.h: declare do_names()
3540 2000-10-30 Isomer <isomer@coders.net>
3541 * ircd/m_oper.c: Fixed warning
3543 2000-10-30 Isomer <isomer@coders.net>
3544 * ircd/m_oper.c: Fixed over agressive cut and no paste
3546 2000-10-30 Isomer <isomer@coders.net>
3548 * ircd/m_topic.c: Restructured, fixed bug where topics on local
3549 channels are propergated (I forget who pointed this out to me, but
3550 thanks anyway). Also to save bandwidth don't send the topic to
3551 users if the topic is already the same on the server (but still
3552 propergate to other servers). X/W's "autotopic" feature must
3553 chew a lot of bandwidth, hopefully this will help reduce this.
3555 * doc/rfc1459.rfc: Updated documentation on /topic.
3557 * ircd/listener.c: snotice warnings about failed accept()'s
3558 potentially warning admins that they're running out of fd's.
3560 * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
3561 people in a class in /stats y
3563 * ircd/m_create.c: Checks for timewarp hacking and squit's
3564 evil servers. (currently disabled)
3567 2000-10-30 net <simms@lucida.qc.ca>
3569 * ircd/gline.c: Fixed various bugs Isomer left behind.
3571 2000-10-26 Kevin L. Mitchell <klmitch@mit.edu>
3573 * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
3574 channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
3576 2000-10-24 Kevin L. Mitchell <klmitch@mit.edu>
3578 * ircd/channel.c: ok, now last mode rules; mode +ps will always
3579 result in +s (and won't send a mode if the channel is already +s);
3580 mode +sp will always result in +p; -n+n on a +n channel results in
3581 no mode change; -n+n on a -n channel results in a +n mode change;
3584 2000-10-23 Kevin L. Mitchell <klmitch@mit.edu>
3586 * ircd/channel.c: add "add" and "del" elements to ParseState to
3587 avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
3588 mode_parse_limit that caused it to clear all channel modes
3589 prematurely; restructure mode_parse_mode to avoid calling
3590 modebuf_mode too early (ties in with first mentioned change);
3591 better logic for +p/+s mutual exclusivity; initialize "add" and
3592 "del" elements in mode_parse; send simple modes down to
3593 modebuf_mode after the loop in mode_parse
3595 2000-09-28 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3596 * ircd/m_names.c: Fixed a non-lethal logic error that
3597 triggers an assert() in find_member_link while debugging.
3598 (Spotted by Maniac-).
3599 2000-09-19 Thomas Helvey <helveytw@home.com>
3600 * ircd/s_conf.c: move K:lines to their own list and data
3601 structures, add supporting code.
3602 * ircd/m_stats.c: cleanup stats processing a bit move
3603 kline listing code to a new function, haven't figured
3604 out where it goes yet tho'
3605 * ircd/s_stats.c: added K:line bulk lister
3606 * include/s_conf.h: added new DenyConf struct
3607 * *[ch]: fixeup code that depended on changes
3609 2000-09-17 Thomas Helvey <helveytw@home.com>
3610 * ircd/class.c: encapsulate class list
3611 * include/class.h: clean up classes
3612 * * fixup code that depended on changes
3614 2000-09-17 Thomas Helvey <helveytw@home.com>
3615 * ircd/s_conf.c: add me to local conf
3616 * include/s_conf.h: move CONF_ME macro to chkconf.c
3617 * ircd/s_bsd.c: cleanup initialization, allow virtual host
3618 to be changed by rehash
3620 2000-09-17 Thomas Helvey <helveytw@home.com>
3621 * include/class.h: add missing prototype
3622 * ircd/class.c: make argument to get_conf_class const
3624 2000-09-17 Thomas Helvey <helveytw@home.com>
3625 * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
3627 * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
3630 2000-09-16 Thomas Helvey <helveytw@home.com>
3631 * ircd/s_conf.c: add code for server struct
3632 * ircd/client.c: copy of class.c sort of, new file for client
3633 specific operations, will move things here as appropriate,
3634 currently only one function is exported from here.
3635 * ircd/*.c: general logic cleanups, convert negatives to
3636 positives in places.
3638 2000-09-16 Thomas Helvey <helveytw@home.com>
3639 * ircd/s_conf.c: add code for new crule data structs, strip quotes
3640 * ircd/crule.c: clean up scary casting a bit, type safety stuff
3641 * include/s_conf.h: add CRuleConf struct and support, remove
3643 * include/crule.h: type safety cleanups
3644 * ircd/*.c: fixup code that depended on stuff I changed
3646 2000-09-15 Thomas Helvey <helveytw@home.com>
3647 * ircd/s_conf.c: start adding code for new conf data structs, changed
3648 listeners, admin line, motd lines, class lines. Move validate_hostent
3649 to resolver. General mayhem.
3650 * include/s_conf.h: new data structs and accessors
3651 * ircd/res.c: move validate_hostent here, rewrite, use regular
3652 expression for validation.
3653 * doc/example.conf: update docs for port
3655 2000-09-14 Thomas Helvey <helveytw@home.com>
3656 * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
3657 up conf_init into managable chunks.
3658 * ircd/listener.c (set_listener_mask): fix logic bug core dump.
3659 * include/s_conf.h: add new data struct for local info (unwinding the mess).
3661 2000-09-13 Thomas Helvey <helveytw@home.com>
3662 * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
3664 * ircd/list.c: put SLinks in free lists
3665 * ircd/channel.c: put Memberships in free lists
3666 * ircd/ircd.c: rearrange initializations a bit in main
3667 Note: With these changes, ircd NEVER frees Clients, SLinks or
3668 Memberships. It will also rarely need to allocate new
3669 ones during net bursts and other disruptions. This should
3670 cut down on memory fragmentation a bit as well.
3672 2000-08-30 Kevin L. Mitchell <klmitch@mit.edu>
3674 * ircd/m_names.c (do_names): pull-up from do_names fix in
3677 2000-07-15 Perry Lorier <Isomer@coders.net>
3678 * various: IP only k:'s and G:'s now do bit tests instead of two(!)
3679 match()'s. Major Major cpu savings. Also speed up the
3680 other case slightly. As a side effect you can now
3681 k/Gline *@10.0.0.0/8. I'll do bans tomorrow, it's nearing
3684 2000-07-15 Perry Lorier <Isomer@coders.net>
3685 * various: Fixed warnings after compiling on an alpha.
3686 2000-07-09 Perry Lorier <Isomer@coders.net>
3687 * doc/ircd.8: Applied grammitical changes by Liandrin, applied
3688 changes suggested by various other people.
3689 * ircd/IPcheck.c: More bug fixes. Current problem appears to be
3690 that it gets a corrupt entry somehow.
3691 2000-07-09 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3692 * ircd/m_oper.c: Clean up compiler warning.
3694 2000-07-08 Perry Lorier <Isomer@coders.net>
3695 * doc/ircd.8: Updated the documentation, it was slightly out of date
3696 being updated around 1989.
3697 * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
3698 fixed a few minor glitches.
3699 * doc/rfc1459.unet: Updated.
3700 * ircd/IPcheck.c: Fixed more bugs.
3701 * ircd/s_bsd.c: We now keep track of servers we've conected.
3703 2000-07-02 Perry Lorier <Isomer@coders.net>
3704 * ircd/s_misc.c: Fixed remote IPcheck bug. Ok, I'm a moron, so sue
3705 me. Thanks to Hektik, thanks thanks thanks thanks
3706 thanks thanks thanks thanks thank thanks thank thanks
3708 2000-07-01 Perry Lorier <Isomer@coders.net>
3709 * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
3710 * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
3712 2000-06-22 Perry Lorier <Isomer@coders.net>
3713 * ircd/IPcheck.c: Large chunks redone.
3714 * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
3715 single AND double digit limits are allowed now.
3716 * misc other: Changes to IPcheck.
3718 2000-06-30 Perry Lorier <Isomer@coders.net>
3719 * ircd/ircd.c: Fix command line parameter bugs.
3721 2000-06-30 Perry Lorier <Isomer@coders.net>
3722 * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
3723 * ircd/m_nick.c: Tidied things up.
3725 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
3726 * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
3728 2000-05-29 Perry Lorier <Isomer@coders.net>
3729 * ircd/m_stats.c: add /stats v to do only the last part of the /trace
3730 * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
3731 you think it'll get bored and fix itself?
3733 2000-06-09 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3735 * ircd/m_names.c: Clean up compiler warnings.
3737 2000-06-09 Kevin L. Mitchell <klmitch@mit.edu>
3739 * ircd/channel.c (mode_parse_client): don't send warning if
3740 there's not enough arguments for a +/-o/v; means the habit of
3741 doing "/mode #channel +oooooo bob" doesn't result in a bunch of
3744 2000-06-04 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3746 * ircd/m_names.c: Re-factor code to remove unneccessary
3747 GlobalChannelList iteration every time someone joins a channel.
3749 2000-06-02 Kevin L. Mitchell <klmitch@mit.edu>
3751 * ircd/s_user.c: add struct Gline * argument to register_user;
3752 look up global glines and repropagate them if necessary; send
3753 acknowledgement of gline to remote servers when registering users
3755 * ircd/s_serv.c (server_estab): don't send acknowledgement of
3756 local glines to remote servers; do send gline acknowledgement of
3759 * ircd/m_user.c (m_user): pass new struct Gline * argument to
3762 * ircd/m_pong.c: pass new struct Gline * argument to register_user
3764 * ircd/m_nick.c (ms_nick): document protocol change
3766 * ircd/gline.c: support GLINE_LASTMOD
3768 * include/s_user.h: add struct Gline * argument to register_user
3770 * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
3772 * ircd/s_conf.c (find_kill): add unsigned int argument to
3775 * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
3776 glines; add unsigned int argument to gline_lookup()
3778 * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
3779 argument to gline_lookup()
3781 * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
3782 parameter, or when it falls out of bounds: see comments prior to
3783 call to jupe_resend(); call server_estab with struct Jupe
3784 parameter, so that we place the appropriate %<lastmod> in the
3787 * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
3788 server, as well as for servers when we're sending the BURST
3790 * include/s_serv.h: add a struct Jupe * to the arguments for
3791 server_estab() so that we can send the appropriate lastmod
3794 * ircd/m_gline.c (ms_gline): actually, this should be the
3795 slightest bit more efficient...
3797 * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
3798 bit more efficient...
3800 * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
3803 * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
3806 * ircd/channel.c (joinbuf_join): really remove user from local
3809 2000-05-29 Perry Lorier <Isomer@coders.net>
3810 * ircd/m_names.c: Removed redundant space.
3811 * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
3813 2000-05-18 Kevin L. Mitchell <klmitch@mit.edu>
3815 * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
3818 2000-05-04 Kevin L. Mitchell <klmitch@mit.edu>
3820 * ircd/channel.c: replace bogus assertions with returns, which is
3821 logically correct; only wipe out limit/key if they were originally
3822 set in the first place; remove user from channel when doing a
3823 PARTALL; only send MODE +o for user CREATEing channel if user is
3824 not MyUser--CREATE will only be used if the channel did not
3825 originally exist, therefore we can assume no one local is on the
3826 channel anyway, and we don't exactly need for the user to see an
3827 explicit +o for themselves
3829 * doc/readme.gline: describe the syntax of the GLINE command
3831 * doc/readme.jupe: update to reflect a couple of changes to JUPE
3833 * ircd/gline.c: don't propagate local changes
3835 * ircd/jupe.c: don't propagate local changes
3837 * ircd/m_gline.c (mo_gline): force local flag when deactivating
3838 glines with 0 lastmod
3840 * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
3841 are now removed instead of being deactivated
3843 * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
3844 -<mask>" be accepted
3846 * ircd/channel.c (send_channel_modes): deal with one of the last
3849 * ircd/m_burst.c (ms_burst): debugged ban processing; removed
3852 * ircd/channel.c (modebuf_extract): remove debugging
3853 sendto_opmask_butone calls
3855 2000-05-03 Kevin L. Mitchell <klmitch@mit.edu>
3857 * ircd/channel.c: support a couple of new flags to support using
3858 mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
3859 of modebuf_extract to extract added flags for use by ms_burst
3861 * include/channel.h: a couple of new flags to support using
3862 mode_parse inside ms_burst
3864 * ircd/m_burst.c (ms_burst): brand new implementation of BURST
3866 * ircd/m_endburst.c: add loop to processing of end_of_burst to
3867 free empty channels after the BURST is over.
3869 * ircd/m_server.c: convert to use new send.c functions--I wanted
3870 to rewrite it from scratch, but the logic's pretty complex; I may
3871 still rewrite it, though...
3873 2000-05-02 Thomas Helvey <tomh@inxpress.net>
3875 * ircd/ircd.c: fix broken header include ordering
3877 2000-05-02 Thomas Helvey <tomh@inxpress.net>
3879 * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
3880 review emailed privately
3882 * include/IPcheck.h: removed unneeded include
3884 2000-05-02 Kevin L. Mitchell <klmitch@mit.edu>
3886 * ircd/s_user.c (hunt_server): throw in a comment so I know what
3887 the sendto_one is for
3889 * include/querycmds.h (Count_unknownbecomesclient): convert to
3890 sendto_opmask_butone
3892 * ircd/send.c: start removing dead code
3894 * include/send.h: start removing dead code
3896 * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
3899 * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
3901 2000-05-01 Kevin L. Mitchell <klmitch@mit.edu>
3903 * ircd/m_stats.c: convert to sendcmdto_one / send_reply
3905 * ircd/m_kick.c: Completely reimplement m_kick
3907 * ircd/channel.c: send_user_joins removed; it was dead code,
3910 2000-05-01 Perry Lorier <isomer@coders.net>
3911 * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
3912 * ircd/channels.c: My fix for the part problem. Untested, probably
3913 won't work. Can't be much worse than the current problem.
3914 it'll either work or core, take your pick.
3917 2000-04-30 Perry Lorier <isomer@coders.net>
3918 * config/config-sh.in: Fix for CONNEXIT
3919 * ircd/s_{user,misc}.c: Fix for CONNEXIT
3920 * ircd/m_invite.c: Fix for incorrectly numnickified invite.
3921 (Kev: Want to come talk to me about this?)
3923 2000-04-30 Steven M. Doyle <steven@doyle.net>
3925 - general cleanups and readability enhancements
3926 - rewrite of setuid/chroot code.
3927 - server will no longer run as root
3928 - -DPROFIL compile option removed
3929 - Fixed IPcheck API calls
3931 * config/config-sh.in
3932 - Fixed up chroot compile options
3933 - Added options for debug and profile compiles
3935 * config/gen.ircd.Makefile
3936 - Support for new debug/profile options
3939 - Support for new debug/profile options
3941 * ircd/ircd_signal.c
3945 - Removed old API prototypes, added new ones
3948 - Readability cleanups (well, I -think-...)
3949 - Changed IPRegistryEntry.last_connect to a time_t. The previously
3950 used unsigned short was probably causing interesting things after
3951 a client had been connected longer than about 65,535 seconds...
3952 - Removed old API functions.
3955 - Removed IPcheck.h include
3957 * Additionally modified IPcheck API calls in:
3967 2000-04-30 Perry Lorier <isomer@coders.net>
3968 * ircd/s_bsd.c: Sigh. :)
3969 * ircd/m_mode.c: fix for modeless channels by poptix.
3971 2000-04-29 Kevin L. Mitchell <klmitch@mit.edu>
3973 * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
3975 * ircd/channel.c (clean_channelname): make clean_channelname also
3976 truncate long channel names
3978 2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
3980 * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
3982 * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
3985 * include/channel.h: definitions and declarations for the struct
3988 2000-04-29 Perry Lorier <isomer@coders.net>
3989 * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
3991 2000-04-29 Perry Lorier <isomer@coders.net>
3992 * ircd/s_bsd.c: Add debugging code to IPcheck
3994 2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
3996 * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
3998 * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
4001 * ircd/m_userhost.c (m_userhost): add a dead code comment
4003 * ircd/m_desynch.c: forgot one...
4005 * ircd/m_rehash.c (mo_rehash): er, duplicates :)
4007 * ircd/m_proto.c (proto_send_supported): just change a comment so
4008 it doesn't show up in my scans
4010 * ircd/ircd_reply.c (send_reply): fix a slight bug...
4012 * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
4015 * ircd/parse.c (parse_server): argument wrangling to make
4016 processing in do_numeric a little easier to deal with
4018 * ircd/s_serv.c (server_estab): SERVER should come from
4019 acptr->serv->up, not &me
4021 * ircd/m_lusers.c: accidentally left out sptr for a %C
4023 * ircd/send.c: hack to support doing wallchops...
4025 * ircd/m_whowas.c: convert to new send functions
4027 * ircd/m_whois.c: convert to new send functions
4029 * ircd/m_who.c: convert to new send functions
4031 * ircd/m_wallops.c: convert to new send functions
4033 * ircd/m_wallchops.c: convert to new send functions
4035 * ircd/m_version.c: convert to new send functions
4037 * ircd/m_userip.c: convert to new send functions
4039 * ircd/m_userhost.c: convert to new send functions
4041 * ircd/m_uping.c: convert to new send functions
4043 * ircd/m_trace.c: convert to new send functions
4045 * ircd/m_topic.c: convert to new send functions
4047 * ircd/m_time.c: convert to new send functions
4049 * ircd/m_squit.c: convert to new send functions
4051 * ircd/m_silence.c: convert to new send functions
4053 * ircd/m_settime.c: convert to new send functions
4055 * ircd/m_restart.c: convert to new send functions
4057 * ircd/m_rehash.c: convert to new send functions
4059 * ircd/m_privmsg.c: convert to new send functions
4061 * ircd/m_pong.c: convert to new send functions
4063 * ircd/m_ping.c: convert to new send functions
4065 * ircd/m_pass.c: convert to new send functions
4067 * ircd/m_opmode.c: convert to new send functions
4069 * ircd/m_oper.c: convert to new send functions
4071 * ircd/m_notice.c: convert to new send functions
4073 * ircd/m_nick.c: convert to new send functions
4075 * ircd/m_names.c: convert to new send functions
4077 * ircd/m_motd.c: convert to new send functions
4079 * ircd/m_mode.c: convert to new send functions
4081 * ircd/m_map.c: convert to new send functions
4083 * ircd/m_lusers.c: convert to new send functions
4085 * ircd/m_list.c: convert to new send functions
4087 * ircd/m_links.c: convert to new send functions
4089 * ircd/m_kill.c: convert to new send functions
4091 * ircd/m_jupe.c: convert to new send functions
4093 * ircd/m_invite.c: convert to new send functions
4095 * ircd/m_info.c: convert to new send functions
4097 * ircd/m_help.c: convert to new send functions
4099 * ircd/m_gline.c: convert to new send functions
4101 * ircd/m_error.c: convert to new send functions
4103 * ircd/m_endburst.c: convert to new send functions
4105 * ircd/m_die.c: convert to new send functions
4107 * ircd/m_destruct.c: convert to new send functions
4109 * ircd/m_defaults.c: convert to new send functions
4111 * ircd/m_connect.c: convert to new send functions
4113 2000-04-28 Perry Lorier <isomer@coders.net>
4114 * RELEASE.NOTES: Describe a few more undocumented features.
4115 * config/config-sh.in: change the default paths for logging
4116 and the recommended number of channels.
4117 * include/supported.h: Rearrange slightly, added CHANTYPE's
4119 2000-04-27 Kevin L. Mitchell <klmitch@mit.edu>
4121 * ircd/m_close.c: convert to send_reply
4123 * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
4125 * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
4127 * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
4129 * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
4130 that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION
4131 HAS A MAJOR HACK!!! The whole hunt_server architecture should be
4132 carefully rethought...
4134 * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
4136 * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
4138 * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
4139 numeric nick; therefore, we have to use the server name
4141 * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
4143 * ircd/send.c: fix minor bugs
4145 * ircd/s_user.c (check_target_limit): mark dead code so I filter
4148 * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
4151 * ircd/parse.c: mark dead code so I filter it when I grep
4153 * ircd/map.c: mark dead code so I filter it when I grep
4155 * ircd/ircd.c: mark dead code so I filter it when I grep
4157 * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
4160 * ircd/channel.c: mark dead code so I filter it when I grep
4162 * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
4163 hope I'm not stepping on toes...
4165 * ircd/s_conf.c: more sendto_opmask_butone / send_reply
4166 conversions; use ircd_snprintf in a couple of cases to negate the
4167 possibility of buffer overflow
4169 2000-04-26 Kevin L. Mitchell <klmitch@mit.edu>
4171 * ircd/channel.c: convert as much as possible to new send
4174 * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
4175 test member->user->from->fd, not from->fd
4177 * ircd/gline.c (gline_add): go ahead and add badchans; we just
4178 won't look for them in m_gline; this way, they always work...
4180 * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
4182 * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
4183 ircd_vsnprintf conversion specifiers
4185 * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
4186 I have my conversion specifiers
4188 * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
4190 * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
4193 * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
4194 little less brain-dead
4196 * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
4198 * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
4201 * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
4204 * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
4207 * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
4209 * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
4211 * ircd/s_user.c (register_user): use RPL_EXPLICIT for
4214 * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
4216 * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
4217 a numeric as needing to use an explicit pattern, which will be the
4218 first argument in the variable argument list
4220 * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
4221 non-prefixed nospoof PING
4223 * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
4224 non-prefixed SERVER login
4226 * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
4227 a numeric usage further up)
4229 * include/send.h: declare sendrawto_one
4231 * ircd/send.c (sendrawto_one): new function to use ONLY for
4232 non-prefixed commands, like PING to client, or PASS/SERVER on
4235 2000-04-25 Kevin L. Mitchell <klmitch@mit.edu>
4237 * ircd/ircd_snprintf.c (doprintf): implement %H for possible
4238 future expansion (channel numerics?)
4240 * include/ircd_snprintf.h: added documentation to # to explain use
4241 with %C; added documentation for : to explain use with %C; added
4242 documentation for %H for channels
4244 * ircd/whocmds.c: use send_reply
4246 * ircd/userload.c: use sendcmdto_one
4248 * ircd/uping.c: use sendcmdto_one
4250 * ircd/send.c: use new flags to %C format string; ':' prefixes
4251 client name with a colon for local connects, '#' uses
4252 nick!user@host form for local connects
4254 * ircd/s_user.c: use send_reply, sendto_opmask_butone,
4255 sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
4257 * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
4259 * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
4262 * ircd/s_auth.c: use sendto_opmask_butone
4264 * ircd/res.c: use sendcmdto_one
4266 * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
4267 debugging assertions
4269 2000-04-24 Kevin L. Mitchell <klmitch@mit.edu>
4271 * ircd/support.c: dumpcore is no longer used, so get rid of it
4273 * ircd/parse.c: use send_reply, sendcmdto_one
4275 * ircd/map.c: use send_reply
4277 * ircd/listener.c: use send_reply
4279 * ircd/jupe.c: use sendto_opmask_butone, send_reply
4281 * ircd/ircd_reply.c: use send_reply
4283 * ircd/ircd.c: use sendto_opmask_butone
4285 * ircd/gline.c: use sendto_opmask_butone, send_reply
4287 * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
4288 registered clients; make FLAG_ALT print nick!user@host; make
4289 FLAG_COLON print :blah
4291 * ircd/class.c (report_classes): use send_reply instead of
4294 * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
4296 * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
4297 sendto_one with sendcmdto_one
4299 2000-04-21 Kevin L. Mitchell <klmitch@mit.edu>
4301 * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
4302 MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
4303 sendcmdto_match_butone
4305 * include/send.h: declare sendcmdto_match_butone
4307 2000-04-20 Kevin L. Mitchell <klmitch@mit.edu>
4309 * ircd/jupe.c: update to use send_reply()
4311 * ircd/gline.c: update to use send_reply()
4313 * include/ircd_reply.h: declare send_reply
4315 * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
4316 replies; uses ircd_snprintf
4318 * ircd/send.c: added comments to redirect searchers to appropriate
4319 sendcmdto_* function; moved new functions to end of file; added
4320 explanatory comments; reordered arguments; defined new functions
4323 * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
4325 * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
4327 * ircd/jupe.c: reorder arguments to sendcmdto_* functions
4329 * ircd/gline.c: reorder arguments to sendcmdto_* functions
4331 * include/send.h: reorder arguments, add explanatory comments,
4332 declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
4333 and vsendto_opmask_butone
4335 2000-04-19 Kevin L. Mitchell <klmitch@mit.edu>
4337 * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
4338 vsendto_op_mask that uses '*' instead of the receiving client
4341 * include/send.h: declare sendcmdto_channel_butone; takes a skip
4342 argument that allows you to skip (or not to skip) deaf users,
4343 users behind bursting servers, and non channel operators
4345 2000-04-17 Kevin L. Mitchell <klmitch@mit.edu>
4347 * ircd/send.c: new sendcmdto_channel_butserv -- note that old
4348 sendto_channel_butserv has a subtle bug; also wrote
4349 sendcmdto_common_channels.
4351 * include/send.h: declare new sendcmdto_* functions
4353 * ircd/jupe.c: support local deactivations of jupes
4355 * ircd/gline.c: support local deactivations of glines
4357 * include/jupe.h: JUPE_LDEACT allows jupes to be locally
4358 deactivated; if they aren't locally deactivated, then it slaves to
4359 the net-wide activation status; JupeIsRemActive() tests only
4360 whether the jupe is active everywhere else
4362 * include/gline.h: GLINE_LDEACT allows glines to be locally
4363 deactivated; if they aren't locally deactivated, then it slaves to
4364 the net-wide activation status; GlineIsRemActive() tests only
4365 whether the gline is active everywhere else
4367 * ircd/gline.c: detect overlapping G-lines; if an existing, wider
4368 gline expires after the new one will, we drop the new one,
4369 otherwise we add the G-line after that one (so the wide one will
4370 apply first); if the new one contains an existing G-line and if it
4371 will expire after the existing one, we drop the existing one to
4374 * ircd/m_gline.c (mo_gline): opers could issue remote local
4375 glines when CONFIG_OPERCMDS was off; fixed
4377 2000-04-16 Kevin L. Mitchell <klmitch@mit.edu>
4379 * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
4380 this is a local JUPE
4382 * ircd/gline.c: add flags argument to gline_activate and
4383 gline_deactivate for future expansion
4385 * ircd/m_gline.c: pass flags to gline_activate and
4388 * include/gline.h: add flags argument to gline_activate and
4391 * ircd/jupe.c: add flags argument to jupe_activate and
4392 jupe_deactivate for future expansion
4394 * include/jupe.h: add flags argument to jupe_activate and
4397 * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
4398 local, active; pass flags to jupe_activate and jupe_deactivate
4400 * include/gline.h: remove dead code
4402 * ircd/gline.c: make gline expire times relative to CurrentTime,
4403 since that should be monotonically increasing, instead of
4404 TStime(), which can be set backwards, and which can therefore
4405 cause an expire time to increase; make local glines be removed
4406 instead of just deactivated; don't let gline_find() look for
4407 user@host glines if the mask being looked up is a channel mask
4409 * ircd/send.c (vsendcmdto_one): forgot to account for the case
4410 where origin is a server and destination is a user
4412 * ircd/jupe.c: make jupe expire times relative to CurrentTime,
4413 since that should be monotonically increasing, instead of
4414 TStime(), which can be set backwards, and which can therefore
4415 cause an expire time to increase; make local jupes be removed
4416 instead of just deactivated
4418 * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
4419 limit is fine. any other warnings I should know about?
4421 2000-04-15 Thomas Helvey <tomh@inxpress.net>
4423 * ircd/*.c: const correctness and type safety cleanups to
4424 get code to compile with C++ compiler. Still has
4425 signed/unsigned comparison warnings.
4427 2000-04-15 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4429 * ircd/userload.c: change <sys/time.h> include to <time.h> for
4432 2000-04-14 Kevin L. Mitchell <klmitch@mit.edu>
4434 * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
4435 and convert acptr...
4437 * ircd/s_user.c: move gline_lookup function call into
4438 register_user, where it'll have a username to lookup!
4440 * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
4441 functions; also stuff send_error_to_client into return clauses
4443 * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
4444 functions; also use send_error_to_client where that makes sense
4446 * ircd/jupe.c: modify to utilize new sendcmdto_* series of
4447 functions; also use send_error_to_client where that makes sense
4449 * ircd/gline.c: modify to utilize new sendcmdto_* series of
4450 functions; also fix gline_lookup() to deal properly with remote
4451 clients--boy, do struct Client and struct User need to be cleaned
4454 * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
4457 * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
4458 sendcmdto_serv_butone(), all utilizing the %v conversion of
4461 * include/send.h: define IRC_BUFSIZE, max size of a message;
4462 declare sendcmdto_one(), vsendcmdto_one(), and
4463 sendcmdto_serv_butone()
4465 * include/msg.h: define all the CMD_* constants needed to utilize
4466 the new sendcmdto_* series of functions
4468 * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
4470 * ircd/gline.c: remove old, dead code.
4472 * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
4473 unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
4474 (don't advertise proxies); remove dead code
4476 * ircd/parse.c: oper handler for JUPE only lists jupes unless
4477 CONFIG_OPERCMDS is enabled
4479 * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
4480 CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
4482 * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
4483 always return ERR_DISABLED
4485 * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
4486 enabled, always return ERR_DISABLED
4488 * ircd/s_err.c: add error message to indicate disabled commands
4490 * include/numeric.h (ERR_DISABLED): to indicate disabled commands
4492 * doc/Configure.help: add documentation for CONFIG_OPERCMDS
4494 * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
4495 CONFIG_NEW_MODE to 'y' for now
4497 * ircd/gline.c (gline_list): fix a minor formatting bogon
4499 * BUGS: since I fixed that bug, might as well mark it fixed.
4501 * ircd/m_join.c: look up badchans with GLINE_EXACT
4503 * ircd/m_gline.c: fix parc count problems; look up existing
4504 G-lines with GLINE_EXACT; only set new lastmod when
4505 activating/deactivating existing glines if old lastmod was not 0
4507 * ircd/gline.c: forgot to copy the gline reason over; don't
4508 propagate a gline with 0 lastmod if origin is user; add
4509 GLINE_EXACT to force exact matching of gline mask
4511 * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
4514 * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
4515 but gline_lookup() actually takes a client--d'oh.
4517 2000-04-13 Thomas Helvey <tomh@inxpress.net>
4518 * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
4520 2000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4522 * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
4524 "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
4527 * ircd/whocmds.c: Change idle time calc from socket idle to user
4530 2000-04-13 Kevin L. Mitchell <klmitch@mit.edu>
4532 * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
4533 too, for ircd_snprintf.c
4535 * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
4536 comments; mostly descended from the Linux manpage for printf, but
4537 also documenting the extensions.
4539 * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
4540 client; make 'q' be the same as 'L'; remove __inline__; only
4541 define EXTENSION if HAVE_LONG_LONG is defined
4543 * include/handlers.h: declare m_gline()
4545 * ircd/parse.c: gline can be called by users, but it only lists
4548 * ircd/s_user.c (set_nick_name): resend gline if a remote server
4549 introduces a glined client
4551 * ircd/s_serv.c (server_estab): burst glines, too
4553 * ircd/gline.c: fix up all the expire times to be offsets;
4554 simplify gline_resend()
4556 * ircd/m_gline.c: begin coding replacements for ms_gline(),
4557 mo_gline(), and m_gline()
4559 * ircd/gline.c (gline_add): allow *@#channel to work correctly;
4560 also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
4562 2000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4564 * tools/Bouncer/*: Add comments/documentation/tags.
4565 * tools/Bouncer/*: Add debug defines, make task fork().
4567 2000-04-12 Thomas Helvey <tomh@inxpress.net>
4568 * ircd/s_err.c: Cleanup s_err.c make one table so we
4569 don't have to do anything tricky to get an error string.
4571 2000-04-12 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4572 * Add port bouncer for http (x/w)
4574 2000-04-12 Kevin L. Mitchell <klmitch@mit.edu>
4576 * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
4577 call to gline_find(); also used GlineReason() instead of direct
4578 reference to structure member
4580 * ircd/m_join.c (m_join): replace bad_channel() calls with calls
4581 to gline_find(name, GLINE_BADCHAN), and also check to see if gline
4584 * ircd/channel.c: nothing seems to be called anywhere...
4586 * ircd/s_err.c: update a couple of replies to dovetail with new
4589 * ircd/gline.c: begin complete re-implementation of gline.c along
4590 the lines of the final design of jupe.c
4592 * include/gline.h: begin complete re-implementation of gline.c
4593 along the lines of the final design of jupe.c
4595 * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
4596 %s by %s" message...
4598 * ircd/ircd_snprintf.c: my new snprintf()-like functions
4600 * include/ircd_snprintf.h: my new snprintf()-like functions
4602 2000-04-11 Thomas Helvey <tomh@inxpress.net>
4603 * ircd/IPcheck.c: removed old dead code
4604 * ircd/s_user.c (send_user_info): removed non-standard
4605 user not found message for userhost/userip
4607 2000-04-11 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4609 * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
4610 * doc/p10.html: Work on chapter 4.
4612 2000-04-10 Kevin L. Mitchell <klmitch@mit.edu>
4614 * ircd/channel.c (mode_parse_client): fix coredump on /mode
4615 #foobar +o nosuchnick
4617 2000-04-10 Perry Lorier <Isomer@coders.net>
4620 2000-04-09 Thomas Helvey <tomh@inxpress.net>
4621 * include/IPcheck.h: fix prototype
4622 * ircd/s_user.c: fix usage of IPcheck_remote_connect
4623 * ircd/IPcheck.c: removed unused args
4625 2000-04-09 Thomas Helvey <tomh@inxpress.net>
4626 * include/IPcheck.h: add proto for IPcheck_expire
4628 * ircd/IPcheck.c: Rewrote
4630 * ircd/ircd.c: Add IPcheck_expire to main message loop
4632 * ircd/s_user.c: Redo target hashing, refactor target code
4634 * include/numeric.h: Cleaned up numerics, added which ones are
4635 in use by other networks and what they are in use for.
4637 * ircd/channel.c: cleaned can_join(), allow anyone through anything
4638 if /invited, simplified the function. Opers overusing OPEROVERRIDE
4639 will get a message explaining to them not to cheat.
4641 * ircd/m_join.c: cleaned up the various join functions, should be
4642 a lot more efficient. Still needs work. Now assumes that s<->s
4643 won't send it a JOIN 0. Service coders - note this and tread with
4646 * ircd/m_stats.c: added Gte-'s stats doc patch.
4648 * ircd/m_version.c: /version now returns the 005 numeric as well.
4649 as requested by Liandrin.
4652 2000-04-07 Kevin L. Mitchell <klmitch@mit.edu>
4654 * ircd/m_clearmode.c: add include for support.h for write_log()
4656 * configure: move ircd/crypt/* to tools/*
4658 2000-04-06 Thomas Helvey <tomh@inxpress.net>
4659 * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
4660 set client host to server alias if connection from localhost
4662 2000-04-06 Perry Lorier <isomer@coders.net>
4663 * ircd/ircd.c: Fix core during pinging (oops)
4665 2000-04-06 Perry Lorier <isomer@coders.net>
4666 * ircd/send.c: fixed wrong ident being sent to channels bug.
4667 * include/numerics.h: Updated some of the numerics from other
4668 networks. Flagged some as 'unused' by undernet.
4670 2000-03-30 Perry Lorier <isomer@coders.net>
4671 * ircd/ircd.c: Lets see if this helps the ping problem at all.
4672 * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
4673 time for local clients. (as requested), extended who now returns all
4674 the flags (@+!) so you can tell the complete state of a client.
4676 2000-03-30 Thomas Helvey <tomh@inxpress.net>
4677 * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
4679 2000-03-30 Perry Lorier <isomer@coders.net>
4680 * ircd/parse.c: oops, missed opers.
4682 2000-03-30 Perry Lorier <isomer@coders.net>
4683 * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
4684 for so long. Remember: m_ping MUST be in the parse array. :)
4686 2000-03-30 Perry Lorier <isomer@coders.net>
4687 * ircd/ircd.c: test in check_pings was wrong. I move that we
4688 disallow cvs commit after 10pm localtime....
4690 2000-03-30 Perry Lorier <isomer@coders.net>
4691 * ircd/m_pong.c: Fix it for servers too.
4693 2000-03-30 Perry Lorier <isomer@coders.net>
4694 * ircd/m_pong.c: Fix ping timeout bugs
4696 2000-03-30 Perry Lorier <isomer@coders.net>
4697 * ircd/channel.c: Bans had CurrentTime in their when field instead
4700 2000-03-31 Thomas Helvey <tomh@ixpress.net>
4701 * ircd/numnicks.c (SetXYYCapacity): fix for extended
4704 2000-03-30 Perry Lorier <isomer@coders.net>
4705 * ircd/m_nick.c: send kills both ways so when we add nick change
4706 on collision we don't desync the network.
4708 * ircd/map.c: Fixup the map a bit more.
4710 2000-03-31 Kevin L. Mitchell <klmitch@mit.edu>
4712 * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
4714 * ircd/m_opmode.c: Log the mode changes to OPATH
4716 * ircd/channel.c (modebuf_flush_int): Log the mode changes to
4719 * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
4722 * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
4724 * config/config-sh.in: added OPATH for opmode log file
4726 * ircd/m_clearmode.c (do_clearmode): updated uses of
4727 modebuf_mode_string() for the new usage
4729 * ircd/channel.c: added flag MODE_FREE and an int argument to
4730 modebuf_mode_string() to indicate that the string must be free'd;
4731 updated calls to modebuf_mode_string() for the new usage; called
4732 collapse(pretty_mask()) on the ban string and use allocated memory
4733 for it; added ban list length accounting; fixed a number of small
4734 bugs in ban processing
4736 * include/channel.h: added flag MODE_FREE and an int argument to
4737 modebuf_mode_string() to indicate that the string must be free'd
4739 * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
4740 keys and limits that are set
4742 2000-03-30 Perry Lorier <isomer@coders.net>
4743 * ircd/ircd.c: rewrote check_pings() for maintainability
4744 and speed. Also changed quit msg's so they don't have
4745 redundant nick[host] info in them.
4747 * ircd/send.c: Changed write errors to report what error
4748 occured (if possible).
4750 * ircd/gline.c: added gline comment to the quit.
4752 * ircd/m_server.c: Added suggestions to server quits mentioning
4753 what went wrong so the admin can fix it earlier instead of asking
4756 * ircd/map.c: Changed m_map() to hide numerics, show a * beside
4757 servers that aren't fully burst yet. And show '(--s)' for servers
4760 * doc/example.conf: Fixed wrapped U:
4762 2000-03-30 Kevin L. Mitchell <klmitch@mit.edu>
4764 * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
4765 mode_parse() (version selectable at compile time)
4767 * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
4769 * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
4771 * config/config-sh.in: add new config option to enable new m_mode
4774 * doc/Configure.help: add documentation for new config option
4777 * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
4778 MODE -v : Not enough parameters
4780 * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
4781 +k and +l even if they weren't set...
4783 * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
4785 * ircd/channel.c: make mode_process_clients() clear the DEOPPED
4786 flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
4787 for; test the 0-th member, not the i-th member, of the client
4790 * ircd/m_clearmode.c (do_clearmode): use the new
4791 mode_invite_clear() function
4793 * ircd/channel.c: cleared up all the compile-time warnings and
4796 * include/channel.h: added declarations for mode_ban_invalidate()
4797 and mode_invite_clear()
4799 * ircd/channel.c: finished mode_parse(), then broke it up into a
4800 dozen or so helper functions to make the code easier to read
4802 2000-03-29 Thomas Helvey <tomh@inxpress.net>
4803 * ircd/ircd.c: refactor server initialization a bit, use
4804 getopt for parsing command line, refactor init_sys, main,
4807 * ircd/s_bsd.c: add functions for initialization to clean
4808 up logic a bit and remove duplicated code.
4810 * include/ircd.h: add struct for server process related
4813 2000-03-29 Kevin L. Mitchell <klmitch@mit.edu>
4815 * ircd/channel.c: initial definition of mode_parse(); flags to
4816 prevent doing the same thing multiple times; helper method
4817 send_notoper() to send a "Not oper"/"Not on channel" notice
4819 * include/channel.h: declare mode_parse() and helper flags
4821 * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
4822 sending to match the current action of set_mode() closely enough
4823 that hopefully there won't be major conflicts
4825 * ircd/channel.c (modebuf_flush_int): consolidated the mode string
4826 building logic, reversed the order of the arguments to mode
4827 commands to have '-' preceed '+'
4829 2000-03-29 Thomas Helvey <tomh@inxpress.net>
4830 * ircd/s_bsd.c (add_connection): don't disable socket options
4831 let OS tune itself and allow important performance tweaks to
4834 2000-03-28 Kevin L. Mitchell <klmitch@mit.edu>
4836 * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
4837 confused by set_mode, which is doing some really weird logic;
4838 guess what I'm going to rewrite next? ;)
4840 2000-03-28 Kevin L. Mitchell <klmitch@emc.com>
4842 * include/channel.h: added MODE_SAVE for the bounds checking stuff
4845 * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
4846 make it do bounds checking on the buffer; all modes are sent only
4847 if the all parameter is 1; modebuf_flush is the exported wrapper
4849 * include/channel.h: add BOUNCE, renumber flags to get a little
4852 * ircd/channel.c (modebuf_flush): don't overload HACK2, add
4853 BOUNCE; send DESYNCH message
4855 2000-03-27 Kevin L. Mitchell <klmitch@emc.com>
4857 * ircd/m_clearmode.c (do_clearmode): only mark the modes the
4858 channel actually has in effect for deletion
4860 * ircd/channel.c: added explanatory comments to all added
4861 functions; made flushing take place at the correct place even if
4862 the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
4863 to bash some stupid bugs; made modebuf_flush() return if ModeBuf
4864 is empty, fixed the apparent source, removed some bogus string
4865 termination code, properly terminate the mode strings, add support
4866 for HACK2 and HACK3, made limit strings not be sent if the limit
4867 is being removed, changed where '+' and '-' come from in sent
4868 strings, added support for DEOP flag, set up bouncing code for
4871 * ircd/Makefile.in: ran make depend
4873 * include/channel.h: added new defines for future functionality,
4874 made modebuf_flush() return int so I can use tail recursion
4876 * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
4877 to make it all compile
4879 * ircd/m_opmode.c: add msg.h to includes...
4881 * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
4883 * ircd/channel.c (modebuf_flush): realized I forgot to
4884 nul-terminate addbuf/rembuf properly...
4886 * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
4888 * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
4889 sendto_serv_butone--blah^2
4891 * ircd/send.c (sendto_serv_butone): stupid comments confused me
4893 * ircd/channel.c (modebuf_flush): if there are no mode changes to
4894 propagate, we're done...
4896 * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
4897 not sendto_all_butone
4899 * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
4901 * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
4903 * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
4906 * ircd/parse.c: added messages for opmode and clearmode
4908 * include/handlers.h: added declarations for mo_opmode(),
4909 ms_opmode(), mo_clearmode(), and ms_clearmode()
4911 * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
4914 * include/channel.h (MODEBUF_DEST_OPMODE): Define the
4915 MODEBUF_DEST_OPMODE flag
4917 * ircd/channel.c (modebuf_flush): added new flag,
4918 MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
4919 to originate from source's server (or source itself, if
4920 IsServer(source)); also causes a server-level MODE to be sent as
4923 * include/channel.h: defined MODEBUF_DEST_SERVER,
4926 * ircd/channel.c: Add another argument to build_string() to handle
4927 numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
4928 servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
4931 2000-03-27 Perry Lorier <isomer@coders.net>
4933 * ircd/s_bsd.c: fixed missing 'u' typo.
4935 2000-03-26 Kevin L. Mitchell <klmitch@emc.com>
4937 * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
4938 _mode_string(), _mode_client(), _flush(); also implemented a
4939 simple build_string()
4941 * include/channel.h: added definition of ModeBuf, modebuf_*
4942 manipulation functions, and a couple of helper macros