1 2001-06-11 Kevin L. Mitchell <klmitch@mit.edu>
3 * ircd/send.c (sendcmdto_match_butone): don't let the server crash
4 if a client is in the STAT_CONNECTING status
6 2001-06-10 Kevin L. Mitchell <klmitch@mit.edu>
8 * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
9 into sendcmdto_one(); define new sendcmdto_prio_one(), which
10 places the message into the priority queue
12 * ircd/s_user.c (hunt_server_prio_cmd): definition of
13 hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
14 instead of sendcmdto_one()
16 * ircd/m_settime.c: use sendcmdto_prio_one() and
17 hunt_server_prio_cmd() to send SETTIME
19 * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
21 * include/send.h: removed declaration for unused vsendcmdto_one();
22 added a declaration for sendcmdto_prio_one()
24 * include/s_user.h: declare hunt_server_prio_cmd(), which calls
27 * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
28 put in the server's priority queue, too...
30 * ircd/ircd.c: don't check LPATH for accessibility at all
32 2001-06-08 Kevin L. Mitchell <klmitch@mit.edu>
34 * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
35 command if we're configured as a hub; send individual server flags
38 * ircd/s_bsd.c (completed_connection): send a +h flag in our
39 SERVER command if we're configured as a hub
41 * ircd/m_server.c: implement parv[7] as a mode-like string; +h
42 sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
43 flag for a server; +hs sets both flags; also modify CMD_SERVER
44 format string to send the flags
46 * include/client.h: define two new flags, FLAGS_HUB and
47 FLAGS_SERVICE to mark services and hubs as such; define testing
48 macros, setting macros
50 * ircd/s_user.c: remove deprecated struct Gline* argument to
51 register_user(); remove GLINE rebroadcast; do not send GLINE
52 acknowledgement parameter to NICK; do not look for GLINE
53 acknowledgement parameter to NICK while parsing
55 * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
56 argument to server_estab(); do not send JUPE/GLINE acknowledgement
57 parameters for SERVER or NICK
59 * ircd/m_user.c (m_user): remove deprecated argument to
62 * ircd/m_server.c: remove deprecated argument to server_estab();
63 remove documentation comment regarding JUPE acknowledgement
64 parameter to SERVER; remove JUPE rebroadcast
66 * ircd/m_pong.c (mr_pong): remove deprecated argument to
69 * ircd/m_nick.c: remove documentation comment regarding GLINE
70 acknowledgement parameter to NICK
72 * ircd/jupe.c: use user's real name in JUPE server notices if
73 HEAD_IN_SAND_SNOTICES is defined
75 * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
76 setuid code; correct ancient DEBUG vs DEBUGMODE typo
78 * ircd/gline.c: use user's real name in GLINE server notices if
79 HEAD_IN_SAND_SNOTICES is defined
81 * ircd/channel.c (modebuf_flush_int): make apparent source be
82 local server, not oper's server; use user's real name in hack
83 notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
85 * include/s_user.h: remove struct Gline pre-declaration; remove
86 deprecated struct Gline argument from register_user()
88 * include/s_serv.h: remove struct Jupe pre-declaration; remove
89 deprecated struct Jupe argument from server_estab()
91 2001-06-07 Kevin L. Mitchell <klmitch@mit.edu>
93 * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
94 changes required to control remote stats
96 * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
97 recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
98 [forward-port from pl15]
100 * ircd/m_whowas.c (m_whowas): report server name only if requester
101 is an operator [forward-port from pl15]
103 * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
104 my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
105 and obtain the report from the user's server [forward-port from
108 * ircd/m_who.c: add missing include for ircd_policy.h
109 [forward-port from pl15]
111 * ircd/m_version.c (m_version): require oper access for remote
112 /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
114 * ircd/m_time.c (m_time): require oper access for remote /time if
115 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
117 * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
118 missing semicolon [forward-port from pl15]
120 * ircd/m_nick.c (ms_nick): hide the origin of certain collision
121 kills [forward-port from pl15]
123 * ircd/m_motd.c (m_motd): require oper access for remote /motd if
124 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
126 * ircd/m_lusers.c (m_lusers): require oper access for remote
127 /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
129 * ircd/m_burst.c (ms_burst): server-added bans are stored using
130 local server name, to hide remote server names; modes also are to
131 originate from the local server [forward-port from pl15]
133 * ircd/m_admin.c (m_admin): require oper access for remote /admin
134 if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
136 * ircd/channel.c (add_banid): if a server is adding a ban, use my
137 server name to hide the remote server's name [forward-port from
140 * ircd/Makefile.in: ran make depend
142 * include/s_stats.h: hunt_stats() has to have an extra argument to
143 support the forward-port from pl15
145 * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
146 HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
148 * ircd/engine_poll.c (engine_loop): remove bogus assert that I
149 forgot to check in the events branch
151 2001-06-06 Kevin L. Mitchell <klmitch@mit.edu>
153 * ircd/res.c (init_resolver): don't start DNS expires with a 0
154 relative timeout--if the server starts slow, timeouts could be
155 messy...there's probably a better solution, but this'll do for now
157 * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
158 headers very well; include stropts.h; define an os_set_tos()
160 * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
163 * ircd/ircd.c: if there are no C-lines, we don't want to have a
164 timer that expires at the absolute time of 0--it kinda blocks all
167 * ircd/engine_devpoll.c: some includes for open(); declare errcode
168 and codesize in engine_loop()
170 * ircd/list.c (free_client): remove bogus check on timer active
173 * ircd/s_auth.c: pull out destruction code in
174 auth_timeout_request() into an externally-visible
175 destroy_auth_request(); manage cli_auth pointer in client
176 structure; use it for an extra assertion check
178 * ircd/list.c: include s_auth.h for destroy_auth_request(); add
179 debugging notices to show flow when deallocating
180 connections/clients; call destroy_auth_request() when free'ing a
181 client that has an auth outstanding; don't free the connection if
182 the process timer is unmarked but still active
184 * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
185 and reset it before calling the event handler for an ET_DESTROY
188 * include/s_auth.h (destroy_auth_request): declare
189 destroy_auth_request(), which can be used to destroy an
190 outstanding auth request if a client socket goes away before the
191 auth exchange is completed
193 * include/ircd_events.h: add an active flag to keep track of
194 whether or not particular generators are active, for the
195 convenience of functions using the API
197 * include/client.h: add a pointer for auth requests to struct
198 Connection so we can kill outstanding auth requests if a client
199 socket closes unexpectedly
201 * ircd/s_bsd.c: cli_connect() could become 0 during the course of
202 the sock or timer callback; take that into account in the assert
204 * ircd/list.c: add magic number checking and setting--magic
205 numbers are zero'd on frees to detect double-frees; add back
206 setting of cli_from() to 0 to break the back-link from the struct
209 * ircd/ircd.c: set me's magic number correctly
211 * include/client.h: define magic numbers and accessor/verifier
214 * ircd/list.c: assert that dealloc_client() is called with
215 cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
216 dealloc_client(); don't mess with cli_from(cptr)
218 * ircd/s_bsd.c: only attempt to dealloc a connection if the
219 associated client has already been destroyed, or at least delinked
221 2001-06-05 Kevin L. Mitchell <klmitch@mit.edu>
223 * ircd/list.c (free_client): only try to delete the socket when
224 the fd hasn't already been closed, avoiding a double-free
226 * ircd/list.c (free_connection): make sure the client is really
227 gone before doing away with the connection
229 * ircd/s_bsd.c: record that socket has been added in con_freeflag
230 field; queue a socket_del() as soon as the socket is close()'d;
231 use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
232 FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
233 then dealloc the connection if safe; mark socket as dead when
234 there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
235 to client_timer_callback(); dealloc connection if safe upon
236 ET_DESTROY event in client_timer_callback()
238 * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
239 the connection if both socket and timer have been destroyed;
240 destroy both socket and timer explicitly and carefully
242 * include/client.h: replace the con_timer field with a
243 con_freeflag field, to indicate what still needs freeing; define
246 * ircd/engine_select.c (engine_loop): duh...sockList[i] could
249 * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
252 * ircd/s_bsd.c: add some extra assertions to try to track down a
255 * ircd/engine_select.c (engine_loop): add an extra assert to try
256 to track down a corruption problem
258 * ircd/engine_poll.c (engine_loop): add an extra assert to try to
259 track down a corruption problem
261 * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
262 to track down a corruption problem
264 * ircd/engine_devpoll.c (engine_loop): skip slots that have become
265 empty during processing; add an extra assert to try to track down
268 * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
271 2001-06-04 Kevin L. Mitchell <klmitch@mit.edu>
273 * ircd/s_bsd.c (client_sock_callback): client is no longer
274 blocked, so we must mark it as unblocked
276 * ircd/engine_select.c: add Debug() calls galore; add handling for
277 SS_NOTSOCK; use a dummy sock variable to keep things from
278 disappearing on us; correct timeout calculation; update nfds for
281 * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
282 remove a spurious "if (sock)" which will always be true; update
285 * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
286 SS_NOTSOCK (just in case); correct timeout calculation
288 * ircd/engine_devpoll.c: add Debug() calls galore; add handling
289 for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
291 * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
292 pretty-indent numbers
294 * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
295 case--it's not a socket; the check for writability is most likely
296 not needed, but present for completeness
298 2001-05-24 Kevin L. Mitchell <klmitch@mit.edu>
300 * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
301 no newline flag is set; call read_packet() when the timer expires,
302 regardless of what's in the buffer--read_packet() should be able
305 * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
306 sent to clients to include the client nickname (duh)
308 * ircd/ircd_events.c: don't destroy a timer if it's already marked
309 for destruction; replace a missing ! in socket_del()
311 * ircd/engine_poll.c (engine_loop): reference a temporary variable
312 so we don't have to worry about sockList[i] going away
314 * ircd/s_bsd.c (client_sock_callback): add Debug messages
316 * ircd/s_auth.c: add Debug messages all over the place
318 * ircd/ircd_events.c: add and edit some Debug messages; add a list
319 of routines to convert some of the enums and flags from numbers
320 into human-readable strings for the Debug messages
322 * ircd/engine_poll.c: hack some Debug messages to use the new name
323 conversion routines in ircd_events.c; add an extra assert for a
324 condition that shouldn't ever happen; apparently recv() can return
325 EAGAIN when poll() returns readable--I wonder why...
327 * include/ircd_events.h: declare some helper routines under
330 2001-05-23 Kevin L. Mitchell <klmitch@mit.edu>
332 * ircd/s_bsd.c (client_sock_callback): add an extra assertion
335 * ircd/s_auth.c: add more Debug messages
337 * ircd/list.c (make_client): add an extra assertion check
339 * ircd/ircd_events.c (socket_events): don't call the engine events
340 changer if we haven't actually made any changes to the event mask
342 * ircd/uping.c: add some Debug messages
344 * ircd/s_stats.c: document new /STATS e
346 * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
348 * ircd/s_bsd.c: remove static client_timer variable; in
349 read_packet(), if there's still data in the client's recvQ after
350 parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
351 of client_sock_callback to handle destroying the timer properly;
352 rewrote client_timer_callback from scratch to be called on an
355 * ircd/m_stats.c: add /STATS e to report the engine name
357 * ircd/list.c: deal with con_timer field in struct Connection
358 properly; correct a core-level bug in remove_client_from_list--if
359 the client is the only one in the list, we try to update
360 GlobalClientList's cli_prev pointer--not good
362 * ircd/ircd.c: remove call to init_client_timer()
364 * ircd/engine_poll.c: made Debug messages more uniform by
365 prepending "poll:" to them all; corrected an off-by-one error that
366 caused poll_count to be 1 less than the actual count and removed
367 my work-around; added Debug messages to indicate which socket is
368 being checked and what the results are
370 * ircd/Makefile.in: ran a make depend
372 * include/s_bsd.h: remove init_client_timer(), since we're doing
375 * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
378 * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
379 reports for non-opers
381 * include/client.h: add con_timer and con_proc fields to struct
382 Connection and define accessor macros--con_timer marks that
383 con_proc contains a valid timer, and con_proc is used to pace user
386 * ircd/s_bsd.c (close_connection): let free_client() destroy the
389 * ircd/s_auth.c (start_auth): add a Debug call to indicate when
390 auth has begun on a client
392 * ircd/ircd_events.c: ensure that event_execute() is called with a
393 non-NULL event; modify event_add() macro to properly zero list
394 bits; modify gen_dequeue() to not try to clip it out of a list
395 it's already been clipped out of; change signal socket
396 initialization to use state SS_NOTSOCK; permit timeout values of
397 0 in add_timer(); add many Debug calls; change socket_del() and
398 timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
399 timer_run() instead of GEN_DESTROY so that event_generate() will
400 pass on the events; remove the switch and replace with a simpler
401 if-then-else tree in timer_run(); don't allow destroyed sockets to
402 be destroyed again, nor their states or event masks to be changed
404 * ircd/ircd.c: initialize "running" to 1
406 * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
407 messages all over the place; fix a counting problem in
408 engine_add(); turn wait into a signed integer and set it to -1
409 only if timer_next() returns 0; adjust wait time to be relative;
410 don't call gen_ref_dec() if socket disappeared while we were
413 * include/ircd_events.h: the pipe for signals is not a socket, so
414 we must mark it as such--added SS_NOTSOCK for that special socket;
415 events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
416 for the benefit of timer_run()
418 * configure.in: add --enable-pedantic and --enable-warnings to
419 turn on (and off) -Wall -pedantic in CFLAGS
421 2001-05-21 Kevin L. Mitchell <klmitch@mit.edu>
423 * ircd/s_conf.c: change "s_addr" element accesses to "address"
426 * include/s_conf.h: on some systems, "s_addr" is a macro; use
429 2001-05-18 Kevin L. Mitchell <klmitch@mit.edu>
431 * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
432 void in this file; add a missing semi-colon; declare errcode,
435 * ircd/uping.c (uping_sender_callback): it's pptr, not uping
437 * ircd/s_user.c (register_user): comment out spurious reference to
440 * ircd/s_serv.c (server_estab): comment out spurious reference to
443 * ircd/s_conf.c (read_configuration_file): comment out spurious
444 reference to nextping and nextconnect
446 * ircd/s_bsd.c: comment out some spurious references to formerly
447 global (now non-existant) variables; correct a couple of typos
449 * ircd/s_auth.c: pre-declare some functions referenced in the
450 callback; correct a typo
452 * ircd/res.c (start_resolver): pass errno value of ENFILE
454 * ircd/listener.c (accept_connection): you know your API is messed
455 up when...variables that shouldn't have been global crop up in
458 * ircd/list.c (free_client): substitution of == for =
460 * ircd/ircd_signal.c: include assert.h for assertion checking;
461 check ev_data() to find out what signal generated event
463 * ircd/ircd_events.c: some references to the variable "timer"
464 should have been references to the variable "ptr"
466 * ircd/engine_select.c: it's struct fd_set, not struct fdset;
467 ev_timer(ev) is already a timer pointer; declare codesize as a
468 size_t to correct signedness issue; use timer_next(), not
471 * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
472 select fd out of struct pollfd in assertion checking; declare
473 errcode and codesize; use timer_next(), not time_next()
475 * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
476 use function timer_next(), not time_next()
478 * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
479 use function timer_next(), not time_next()
481 * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
482 compiled sources; do make depend
484 * include/list.h: pre-declare struct Connection
486 * include/ircd_events.h (gen_ref_inc): cast to the right structure
489 * include/s_auth.h: duh; missing */
491 2001-05-10 Kevin L. Mitchell <klmitch@mit.edu>
493 * ircd/send.c: update write events status after sending data or
494 accumulating data to be sent
496 * ircd/m_list.c (m_list): update write events status after
497 canceling a running /list
499 * ircd/channel.c (list_next_channels): update write events status
500 after listing a few channels
502 * ircd/s_bsd.c: extensive changes to update to new events model;
503 remove on_write_unblocked() and the two implementations of
504 read_message(), which have been deprecated by this change
506 * ircd/s_auth.c: set the socket events we're interested in for
507 clients; simplify some logic that does the connect_nonb followed
510 * ircd/list.c: define free_connection() to free a connection
511 that's become freeable once the struct Socket has been
512 deallocated; fix up free_client() to take this new behavior into
515 * ircd/ircd.c: call init_client_timer()
517 * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
518 to register connect-in-progress with events system; declare
519 init_client_timer() (HACK!) to preserve rate-limiting behavior
521 * include/list.h: declare new free_connection()
523 * include/client.h: add a struct Socket to struct Connection
525 2001-05-09 Kevin L. Mitchell <klmitch@mit.edu>
527 * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
528 SIGTERM into event callbacks; perform the actions in the
529 callbacks, since they're not called in the context of the signal;
530 set up the signal callbacks in the event engine
532 * ircd/ircd_events.c (signal_callback): we're supposed to look for
533 a specific signal; don't generate an event if there is no signal
536 * ircd/ircd.c: nuke nextconnect and nextping and replace them with
537 connect_timer and ping_timer; massage try_connections() and
538 check_pings() into timer callbacks that re-add themselves at the
539 right time; remove ircd.c's "event_loop()"; initialize the event
540 system and the connect_timer and ping_timer
542 * ircd/uping.c: correct a couple more typos
544 * ircd/s_auth.c: rework to use new events system
546 * ircd/os_solaris.c (os_connect_nonb): update to new interface
548 * ircd/os_openbsd.c (os_connect_nonb): update to new interface
550 * ircd/os_linux.c (os_connect_nonb): update to new interface
552 * ircd/os_generic.c (os_connect_nonb): update to new interface
554 * ircd/os_bsd.c (os_connect_nonb): update to new interface
556 * include/s_auth.h: remove deprecated members of struct
557 AuthRequest, replacing them with struct Socket and struct Timer
558 structures; add flags to indicate when these structures have been
559 released by the event system; remove the deprecated
560 timeout_auth_queries()
562 * include/ircd_osdep.h (os_connect_nonb): connect could complete
563 immediately, so change the interface to handle that possibility
565 * ircd/uping.c (uping_server): noticed and corrected a typo
567 * ircd/listener.c: set up to use ircd_event's struct Socket by
568 adding an socket_add() call to inetport(), replacing
569 free_listener() with socket_del() in close_listener(), and
570 reworking accept_connection to be called as the callback
572 * ircd/ircd.c: add a call to IPcheck_init()
574 * ircd/IPcheck.c: remove IPcheck_expire(); rework
575 ip_registry_expire() to be called from a timer; write
576 IPcheck_init() to set up the expiration timer (hard-coded for a
577 60-second expiration time)
579 * include/listener.h: add a struct Socket to the struct Listener;
580 remove accept_connection()
582 * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
584 2001-05-08 Kevin L. Mitchell <klmitch@mit.edu>
586 * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
587 USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
589 * ircd/engine_select.c: include config.h; set FD_SETSIZE to
590 MAXCONNECTIONS, not IRCD_FD_SETSIZE...
592 * ircd/engine_poll.c: include config.h
594 * ircd/engine_kqueue.c: include config.h
596 * ircd/engine_devpoll.c: include config.h
598 * ircd/Makefile.in: include engine sources in compilation and make
601 * configure.in: add checks for enabling the /dev/poll- and
604 * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
606 * ircd/Makefile.in: work in the engine sources
608 2001-05-07 Kevin L. Mitchell <klmitch@mit.edu>
610 * ircd/m_settime.c: include ircd_snprintf.h
612 * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
613 parens around a construct that had both || and &&
615 * ircd/chkconf.c: #include "config.h" to get some important
618 * ircd/Makefile.in: revamp ircd makefile for new build system
620 * doc/Makefile.in: revamp doc makefile for new build system
622 * config/*: Removed old build system files
624 * stamp-h.in: a stamp file
626 * install-sh: install-sh for new build system
628 * configure.in: configure.in for new build system
630 * configure: configure script for new build system (built by
633 * config.sub: config.sub for new build system
635 * config.h.in: config.h.in for new build system (built by
638 * config.guess: config.guess for new build system
640 * aclocal.m4: aclocal.m4 for new build system (built by aclocal
643 * acinclude.m4: aclocal.m4 macros for new build system
645 * acconfig.h: config.h skeleton for new build system
647 * Makefile.in: modify for new build system
649 2001-05-01 Kevin L. Mitchell <klmitch@mit.edu>
651 * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
653 * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
655 * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
657 2001-05-01 Perry Lorier <Isomer@coders.net>
658 * doc/iauth.doc: Protocol for iauth server. (from hybrid).
659 * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
660 when you have far far too many sockets in use.
661 * {include,ircd}/iauth.c: A start on iauth support.
663 2001-05-01 Perry Lorier <Isomer@coders.net>
664 * ircd/s_err.c: Suggested wording change.
665 * ircd/s_user.c: Users aren't target limited against +k users.
666 * ircd/chkconf.c: Made it compile again, who knows if it works, but
667 now I can at least make install
668 * various: Cleanups on m_*.c files.
671 2001-04-23 Kevin L. Mitchell <klmitch@mit.edu>
673 * ircd/s_misc.c (exit_client): make netsplit server notice say the
676 * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
677 change to make Khaled happy...
679 * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
682 2001-04-21 Kevin L. Mitchell <klmitch@mit.edu>
684 * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
685 turned up no more bugs
687 * ircd/ircd.c: use /* */ comments instead of // comments--all the
690 * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
691 // comments--all the world's not gcc :(
693 * ircd/runmalloc.c: finally garbage-collect unused file
695 * include/runmalloc.h: finally garbage-collect unused file
697 * ircd/<multiple files>: addition of '#include "config.h"' before
698 all other includes in most .c files
700 * include/<multiple files>: remove includes of config.h, which are
701 now going into the raw .c files
703 2001-04-20 Kevin L. Mitchell <klmitch@mit.edu>
705 * ircd/m_whois.c (do_whois): display proper server name if the
706 user is looking up himself
708 * ircd/m_who.c (m_who): disable match by servername or display of
709 server names by non-opers
711 * include/ircd_policy.h: add define for
712 HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
715 2001-04-18 Kevin L. Mitchell <klmitch@mit.edu>
717 * ircd/s_conf.c: keep the $R in memory so we can see it clearly
718 when we do a /stats k
720 * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
721 users from turning on +s and +g
723 * ircd/s_misc.c (exit_client): pull-up of changes to turn off
726 * ircd/parse.c: pull-up of changes to disable /trace, /links, and
729 * ircd/m_whois.c (do_whois): pull-up of server name masking for
732 * ircd/m_user.c (m_user): removal of umode and snomask defaulting
735 * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
737 * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
739 * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
741 * ircd/channel.c (channel_modes): pull-up of channel key display
744 * include/ircd_policy.h: pull-up of ircd_policy.h
746 * include/client.h: pull-up of Set/ClearServNotice()
748 * ircd/gline.c (do_gline): report client name in G-line message
751 * ircd/s_user.c (register_user): pull-up--show IP address in some
752 server notices dealing only with users; report which connection
755 * ircd/s_stats.c (report_deny_list): use conf->flags &
756 DENY_FLAGS_IP insteaf of conf->ip_kill
758 * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
759 insteaf of conf->ip_kill
761 * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
764 * include/s_conf.h: use a flags field in struct DenyConf; define
765 DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
766 pull-up of K-line by real name
768 * ircd/m_trace.c: pull-up of IP show for user connections
770 * doc/example.conf: pull-up of the realname K-line documentation
772 * ircd/ircd.c: forward port of pid file advisory locking mechanism
774 2001-04-16 Kevin L. Mitchell <klmitch@mit.edu>
776 * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
777 all servers, rather than to only servers that have +w/+g/whatever
778 users on them; among other things, this removes that atrocity
779 known as sentalong[] from this function
781 * ircd/m_admin.c: must include ircd.h to declare "me"; must
782 include hash.h to declare FindUser()
784 * ircd/m_wallusers.c: implementation of WALLUSERS
786 * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
788 * ircd/m_wallops.c: only send WALLOPS to opers
790 * ircd/parse.c: add WALLUSERS command to parser table
792 * include/handlers.h: declare wallusers handlers
794 * include/msg.h: add WALLUSERS command
796 * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
797 flag, send only to appropriate opers
799 2001-04-13 Kevin L. Mitchell <klmitch@mit.edu>
801 * ircd/uping.c: refit to use the new events interface
803 * ircd/res.c: refit to use the new events interface
805 * ircd/ircd_events.c: create timer_chg(), which permits a
806 (non-periodic) timer's expire time to be modified; change the
807 logic in timer_run() so that timers that were re-added while the
808 event was being processed will not be destroyed prematurely
810 * include/uping.h: include the events header, declare some extra
811 fields in struct UPing, remove timeout value, and define some
812 flags for marking which cleanup items have yet to be done
814 * include/ircd_events.h: add a prototype for timer_chg() to change
815 the expire time of a running timer
817 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
818 * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
820 2001-03-07 Joseph Bongaarts <foxxe@wtfs.net>
822 * config/configure.in: Add check for OpenBSD
824 * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
825 differs from generic BSD, particularly in its handling of
828 2001-02-12 Kevin L. Mitchell <klmitch@mit.edu>
830 * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
831 have been added by a U-lined server, rather than going through the
832 activate/deactivate logic; propagate G-line removals by U-lined
835 * ircd/gline.c: rename propagate_gline() to gline_propagate();
836 make gline_propagate() return an int 0 (convenience return); only
837 update lastmod in gline_activate() and gline_deactivate() if the
838 current lastmod is non-zero, since 0 lastmod is our flag of a
839 U-lined server having added a G-line
841 * include/gline.h (gline_propagate): exporting the G-line
844 * ircd/m_list.c (m_list): duh; permit explicit channel name
845 specification only when /list gets two arguments ("Kev
846 #wasteland") rather than when /list gets more than two
847 arguments--nice braino
849 2001-01-29 Thomas Helvey <twhelvey1@home.com>
851 * ircd/ircd_reply.c (need_more_params): fix bug that allowed
852 unregistered clients to spam opers with protocol violation
853 messages. Note: the bugfix may have eliminated some useful
854 protocol violation messages.
855 Please send protocol violation messages explicitly from the
856 functions they are discovered in, you have much better context
857 for the error there and it helps to document the behavior of the
858 server. This was also a design bug in that it violated the
859 "A function should do one thing" heuristic. Patching this one
860 would have resulted in a continuous spawning of other bugs over
861 the next 3 years, so I killed it. Check around for stuff this
862 broke and readd the calls to protocol_violation in the functions
863 that need to send the message.
865 2001-01-29 Kevin L. Mitchell <klmitch@mit.edu>
867 * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
868 already existed, then the logic would (attempt to) skip it, but
869 would not free the ban string; now the ban string is free'd and
870 the ban count is decremented, releasing the ban for use
872 * ircd/s_user.c: make send_umode_out() take a prop argument
873 instead of testing for the PRIV_PROPAGATE privilege itself; fix
874 set_umode() to use this new argument, calculating it before
875 calculating the new privileges for a -o'd user
877 * ircd/m_oper.c (m_oper): pass the new prop argument to
880 * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
881 that we're not actually going to add because they already exist;
882 test that particular bit before adding to the linked list
884 * include/s_user.h: add a prop argument to send_umode_out() to
885 indicate whether or not to propagate the user mode
887 2001-01-24 Kevin L. Mitchell <klmitch@mit.edu>
889 * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
890 it would have written; upper-bound the number to prevent overflows
891 by proxy; also, tune buffer size given to ircd_vsnprintf() to take
892 into account the fact that ircd_vsnprintf() already takes the
893 terminal \0 into account
895 2001-01-22 Kevin L. Mitchell <klmitch@mit.edu>
897 * ircd/msgq.c: add an incredibly ugly hack to attempt to track
898 down an apparent buffer overflow; remove msgq_map(), since it's no
899 longer used anywhere; slight tweaks to prevent off-by-one errors,
900 but these can't explain the problems we've seen
902 * include/msgq.h: remove msgq_map(), since it's no longer used
905 2001-01-18 Kevin L. Mitchell <klmitch@mit.edu>
907 * ircd/s_user.c (set_nick_name): call client_set_privs() after
910 2001-01-17 Kevin L. Mitchell <klmitch@mit.edu>
912 * ircd/s_bsd.c (read_message): fix a typo in the select version of
915 * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
916 its argument to be an lvalue, which means we can't use
917 whowas_clean()'s handy-dandy "return ww" feature
919 * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
921 2001-01-16 Kevin L. Mitchell <klmitch@mit.edu>
923 * ircd/ircd_events.c (timer_run): it's possible that the timer got
924 deleted during the callback processing, so don't go to the bother
925 of requeuing it if the destroy flag is set
927 * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
928 out of config.h if this is a *BSD; include errno.h (oops);
929 decrement error count after an hour using a timer; use FD_SETSIZE
930 constant instead of IRCD_FD_SETSIZE constant; fill in event
933 * ircd/engine_poll.c: include errno.h (oops); decrement error
934 count after an hour using a timer; fill in event processing code
936 * ircd/engine_kqueue.c: include errno.h (oops); decrement error
937 count after an hour using a timer; assert events filter is either
938 EVFILT_READ or EVFILT_WRITE; fill in event processing code
940 * ircd/engine_devpoll.c: include errno.h (oops); decrement error
941 count after an hour using a timer; fill in event processing code
943 2001-01-15 Kevin L. Mitchell <klmitch@mit.edu>
945 * ircd/client.c: fixed feattab; basically, when I changed features
946 to use small integers specifying bit positions, instead of the
947 bits themselves, I forgot to update feattab to not | these
948 privileges together; also fixed a bug in the antiprivs masking
949 loop in client_set_privs()--last index wouldn't get parsed
951 2001-01-11 Kevin L. Mitchell <klmitch@mit.edu>
953 * ircd/ircd_events.c: call event_generate() with new data
954 argument; make it set that field in struct Event; make
955 socket_add() return the value of the eng_add callback
957 * ircd/engine_select.c: make engine_add() return a
958 successful/unsuccessful status; add bounds-checking outside of an
959 assert; use accessor macros; use log_write(), not the deprecated
960 ircd_log(); add an assert to engine_loop() to double-check for
961 data structure corruption
963 * ircd/engine_poll.c: make engine_add() return a
964 successful/unsuccessful status; add bounds-checking outside of an
965 assert; use accessor macros; use log_write(), not the deprecated
966 ircd_log(); add an assert to engine_loop() to double-check for
967 data structure corruption
969 * ircd/engine_kqueue.c: implementation of an engine for kqueue()
971 * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
973 * include/ircd_events.h: define some accessor macros; add ev_data
974 to struct Event for certain important data--errno values, for
975 instance; make EngineAdd callback tell us if it was successful or
976 not; add extra argument to event_generate(); make socket_add()
977 return the status from EngineAdd
979 2001-01-10 Kevin L. Mitchell <klmitch@mit.edu>
981 * ircd/ircd_events.c: pass initializer information about how many
982 total _filedescriptors_ may be opened at once
984 * ircd/ircd.c: use exported "running" instead of unexported
987 * ircd/engine_select.c: implementation of an event engine based on
990 * ircd/engine_poll.c: implementation of an event engine based on
993 * include/ircd_events.h: pass the engine initializer an integer
994 specifing how many _filedescriptors_ may be opened at once
996 * include/ircd.h: running has to be exported for the engine_*
999 2001-01-09 Kevin L. Mitchell <klmitch@mit.edu>
1001 * ircd/ircd_events.c: include some needed headers; add some
1002 comments; make evEngines[] const; bundle sig_sock and sig_fd into
1003 a struct named sigInfo; rework struct evInfo to have a queue of
1004 _generators_, and only when threaded; added a gen_init() function
1005 to centralize generator initialization; fix various compile-time
1006 errors; rework event_add() for new queueing scheme and checked for
1007 compile-time errors; add casts where needed; spell evEngines[]
1008 correctly; make engine_name() return const char*
1010 * include/ircd_events.h: type EventCallBack depends on struct
1011 Event, so pre-declare it; put _event_ queue into generators, and
1012 only when threaded; give engine data a union to store both ints
1013 and pointers; make engine name a const; fix gen_ref_dec() macro;
1014 make engine_name() return a const char*
1016 * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
1017 down with the non-static functions; modify event_execute() to use
1018 the new gen_ref_dec() to simplify code; make sure event_generate()
1019 does not generate new events for generators marked for destruction
1021 * include/ircd_events.h: the engines, at least, may need to modify
1022 reference counts to keep generators from going away while
1023 something still points at them, so add reference counter
1024 manipulators and export gen_dequeue() for them
1026 * ircd/ircd_events.c: set up the list of engines to try; set up
1027 the signal struct Socket; rename netInfo to evInfo; move static
1028 functions near the beginning of the file; do away with
1029 signal_signal() (since we no longer keep a signal count ourselves)
1030 and call event_generate() directly from signal_callback--also
1031 renamed some functions; allow signal_callback() to read up to
1032 SIGS_PER_SOCK at once from the signal pipe; add event_init() to
1033 initialize the entire event system; add event_loop() to call the
1034 engine's event loop; initialize new struct GenHeader member,
1035 gh_engdata; remove timer_next(); add socket_add() function to add
1036 a socket; add socket_del() to mark a socket for deletion; add
1037 socket_state() to transition a socket between states; add
1038 socket_events() to set what events we're interested in on the
1039 socket; add engine_name() to retrieve event engine's name
1041 * include/ircd_events.h: add engine data field to struct
1042 GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
1043 note about states vs s_events; remove signal count; fold union
1044 Generator back into struct Event; remove count members from struct
1045 Generators; redefine engine callbacks to not take a struct
1046 Engine*; add explanatory comments to callback definitions; add
1047 some engine callbacks to handle operations; remove struct Engine
1048 flag member--can detect single flag from eng_signal member; add
1049 event_init(), event_loop(), engine_name(), and the socket_*()
1050 functions; make timer_next() a macro to avoid a function call
1052 2001-01-08 Kevin L. Mitchell <klmitch@mit.edu>
1054 * include/ircd_events.h: rename to ircd_events.h, since it handles
1055 events, not just networking stuff; add signal support; more
1056 structural rearrangement
1058 * ircd/ircd_events.c: rename to ircd_events.c, since it handles
1059 events, not just networking stuff; add signal support; more
1060 structural rearrangement
1062 2001-01-07 Kevin L. Mitchell <klmitch@mit.edu>
1064 * ircd/ircd_network.c: implement timer API; add reference counts
1067 * include/ircd_network.h: firm up some pieces of the interface;
1068 split out members everything has into a separate structure; add
1069 reference counts; add timer API
1071 2001-01-06 Kevin L. Mitchell <klmitch@mit.edu>
1073 * ircd/ircd_network.c: static data and event manipulation
1074 functions for new event processing system
1076 * include/ircd_network.h: data structures for new event processing
1079 2001-01-03 Kevin L. Mitchell <klmitch@mit.edu>
1081 * ircd/whowas.c: Completely re-did the old allocation scheme by
1082 turning it into a linked list, permitting the
1083 NICKNAMEHISTORYLENGTH feature to be changed on the fly
1085 * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
1086 feature instead of old #define
1088 * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
1089 integer feature with a notify callback (whowas_realloc)
1091 * ircd/client.c (client_set_privs): second memset was supposed to
1092 be over antiprivs, not privs; thanks, Chris Behrens
1093 <cbehrens@xo.com> for pointing that out...
1095 * include/whowas.h: new elements for an extra linked list in
1096 struct Whowas; a notify function for feature value changes
1098 * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
1100 * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
1102 2001-01-02 Kevin L. Mitchell <klmitch@mit.edu>
1104 * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
1105 compile-time option--now in features subsystem
1107 * ircd/motd.c (motd_init): rework motd_init() to be called as the
1108 notify function for MPATH and RPATH features (should probably
1109 split it up a bit, though...)
1111 * ircd/m_privs.c (mo_privs): if called with no parameters, return
1112 privs of the caller, rather than an error
1114 * ircd/m_list.c: pull usage message into its own function; pull
1115 list parameter processing into its own function that does not
1116 modify the contents of the parameter; add list_set_default() to
1117 set the default list parameter (uses the notify hook); rework
1118 m_list() to make use of these functions; removed dead code
1120 * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
1121 we have no notify handler
1123 * ircd/ircd_features.c: add notify callback for notification of
1124 value changes; give mark callback an int return value to indicate
1125 whether or not to call the notify callback; fix up feature macros
1126 for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
1127 string handling in feature_set() to deal with def_str being a null
1128 pointer; wrote feature_init() to set up all defaults appropriately
1130 * ircd/ircd.c (main): call feature_init() instead of
1131 feature_mark(), to avoid calling notify functions while setting up
1134 * ircd/client.c: updated to deal with new privileges structure
1136 * ircd/class.c: updated so init_class() can be called should one
1137 of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
1138 DEFAULTMAXSENDQLENGTH be changed
1140 * include/ircd_log.h: log_feature_mark() updated to fit with new
1143 * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
1144 feature_init() function (found necessary since adding the notify
1145 stuff and notifying motd.c during start-up...before we defined
1148 * include/client.h: move privs around to enable addition of more
1149 bits if necessary; based on the FD_* macros
1151 * include/channel.h: declare list_set_default (actually located in
1154 * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
1155 AVBANLEN*MAXSILES) from features subsystem
1157 * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
1160 * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
1161 the features subsystem
1163 * ircd/s_auth.c (start_auth): NODNS migrated to the features
1166 * ircd/random.c: created random_seed_set() function to set seed
1167 value, along with some stuff to make ircrandom() a little more
1168 random--state preserving, xor of time instead of direct usage,
1169 etc.; it's still a pseudo-random number generator, though, and
1170 hopefully I haven't broken the randomness
1172 * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
1174 * ircd/m_join.c: use features interface to retrieve
1177 * ircd/ircd_features.c: add NODISP flag for super-secret features;
1178 add a whole bunch of new features migrated over from make config
1180 * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
1181 CONNECTTIMEOUT, and TIMESEC
1183 * ircd/client.c (client_get_ping): use features interface to
1184 retrieve PINGFREQUENCY
1186 * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
1187 CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
1189 * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
1190 features subsystem, we have to add something explicit
1192 * ircd/channel.c: use features interface to retrieve
1193 KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
1194 note that MAXBANLENGTH is now calculated dynamically from MAXBANS
1197 * ircd/Makefile.in: run make depend
1199 * include/supported.h (FEATURESVALUES): update to reference
1202 * include/random.h: add prototype for random_seed_set
1204 * include/ircd_features.h: add several more features
1206 * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
1209 * config/config-sh.in: feature-ized some more stuff
1211 * include/motd.h: some new elements in motd.h for motd.c changes
1213 * ircd/motd.c: motd_cache() now searches a list of already cached
1214 MOTD files; saves us from having duplicate caches in memory if
1215 there are two identical T-lines for two different sites...
1217 2001-01-02 Perry Lorier <isomer@coders.net>
1218 * ircd/motd.c: don't core if the motd isn't found. Bug found by
1221 2001-01-02 Perry Lorier <isomer@coders.net>
1222 * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic.
1223 * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
1224 to guppy for noticing, and hektik for providing the fix.
1225 * misc others: Minor cleanups, added more protocol_violations, ripped
1226 out more P09 stuffs, bit more protocol neg stuff.
1228 2000-12-19 Kevin L. Mitchell <klmitch@mit.edu>
1230 * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
1231 space (*sigh* stupid clients...)
1233 * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
1236 * ircd/s_err.c: get rid of GODMODE conditionals
1238 * ircd/s_debug.c (debug_serveropts): switch to using appropriate
1239 calls into the features subsystem for various serveropts
1242 * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
1244 * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
1245 to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
1246 NOFLOWCONTROL conditional
1248 * ircd/s_auth.c: use features subsystem to determine value of
1251 * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
1252 features subsystem to determine the setting of IDLE_FROM_MSG
1254 * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
1256 * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
1257 use features subsystem to get motd file names
1259 * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
1262 * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
1263 us no good; use features subsystem to figure out if we need to do
1264 HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
1265 the Debug(()) macro instead; get value of RELIABLE_CLOCK from
1268 * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
1270 * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
1273 * ircd/m_connect.c: get SERVER_PORT from the features subsystem
1275 * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
1276 from getting marked if they were already set to something...
1278 * ircd/ircd_features.c: add a flag to indicates read-only access;
1279 add several new features that used to be compile-time selected
1281 * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
1282 access to motd files (what the heck?); make sure to initialize the
1283 feature subsystem before trying to write the config file
1285 * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
1286 use feature_bool() to figure out if we're using the FERGUSON
1289 * ircd/Makefile.in: MPATH and RPATH are now done differently, so
1290 remove the clause that creates empty files of that name; also ran
1293 * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
1294 there is no easy way to bounds-check it at present
1296 * include/querycmds.h: make sure ircd_features.h is included; use
1297 feature_str(FEAT_DOMAINNAME) in calls to match()
1299 * include/ircd_features.h: many new features that used to be
1300 compile-time selected
1302 * config/config-sh.in: add * to DOMAINNAME; try also using first
1303 argument to search in /etc/resolv.conf; removed many compile-time
1304 options that now can be configured through the features system
1306 2000-12-18 Kevin L. Mitchell <klmitch@mit.edu>
1308 * doc/api/log.txt: how to use the logging API
1310 * doc/api/features.txt: how to use the features API
1312 * doc/api/api.txt: how to write API documentation
1314 * include/ircd_features.h: rearranged a couple of features for
1317 * ircd/ircd_features.c: cleaned up the macros some; rearranged
1318 some code to all go into the switch; rearranged a couple of
1319 features for neatness purposes
1321 2000-12-16 Greg Sikorski <gte@atomicrevs.demon.co.uk>
1322 * ircd/os_bsd.c: Added os_set_tos for BSD users.
1324 2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
1326 * ircd/ircd_features.c: Isomer almost got it right; you need to
1327 use F_I(), since it's an integer value, not a boolean value. The
1328 asserts in feature_int would catch you out... Also made the F_*
1331 * ircd/s_err.c: define RPL_PRIVS reply
1333 * ircd/parse.c: put new PRIVS command into command table
1335 * ircd/m_privs.c (mo_privs): message handler to report operator
1338 * ircd/ircd_features.c: declare new features OPER_SET and
1339 LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
1340 ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
1342 * ircd/client.c: simplify client_set_privs() with a table that
1343 defines what features to test for; add new client_report_privs()
1345 * ircd/Makefile.in: compile new m_privs.c; run make depend
1347 * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
1348 an operator's privileges
1350 * include/msg.h: define new command: PRIVS
1352 * include/ircd_features.h: create new features OPER_SET and
1353 LOCOP_SET for controlling access to /set
1355 * include/handlers.h (mo_privs): declare message handler for
1356 reporting oper privileges
1358 * include/client.h (client_report_privs): declare function to
1359 report what privileges an oper has
1361 * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
1362 report that a user is an oper if the oper doing the /whois had
1365 2000-12-17 Isomer <Isomer@coders.net>
1366 * ircd/listener.c: added support for TOS twiddling as a 'feature'.
1368 2000-12-17 Isomer <Isomer@coders.net>
1369 * ircd/os_linux.c: add TOS stuffs
1371 * ircd/listener.c: add TOS stuffs
1373 2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
1375 * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
1376 to indicate a user is an oper
1378 * ircd/s_user.c: clear privileges setting when deopping; don't
1379 propagate +o unless user has PRIV_PROPAGATE privilege
1381 * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
1382 function and replaced how the server option string is generated
1384 * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
1386 * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
1387 not to indicate the user is an operator
1389 * ircd/m_who.c: use HasPriv to determine whether or not a user
1390 should be displayed in the list of opers
1392 * ircd/m_version.c: call debug_serveropts() to get server option
1395 * ircd/m_userip.c (userip_formatter): use HasPriv to determine
1396 whether or not to show oper status
1398 * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
1399 whether or not to show oper status
1401 * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
1402 checks with HasPriv check; remove dead code
1404 * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
1405 checks with HasPriv check
1407 * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
1408 use feature_bool to check if disabled
1410 * ircd/m_oper.c (m_oper): set oper priviliges
1412 * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
1415 * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
1418 * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
1421 * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
1422 use feature_bool to check if disabled
1424 * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
1425 #ifdef conditional with a HasPriv check
1427 * ircd/m_gline.c (mo_gline): rework permissions checking
1428 structure; use feature_bool to check if any part is disabled
1430 * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
1431 check; remove dead code
1433 * ircd/m_clearmode.c: use feature_bool() to detect if we're
1434 disabled; use HasPriv to figure out what we're permitted to do;
1435 only allow clearmode on moded channels
1437 * ircd/ircd_features.c: define various features; use HasPriv to
1438 verify permissions to set/reset
1440 * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
1443 * ircd/client.c (client_set_privs): function to set an oper's
1446 * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
1448 * include/whocmds.h: deconditionalize several macros and
1449 substitute appropriate calls to HasPriv()
1451 * include/s_debug.h: get rid of global serveropts[]; define new
1452 function debug_serveropts() to build that string on the fly
1454 * include/ircd_features.h: define some features
1456 * include/client.h: add privs member to struct Connection; define
1459 * include/channel.h: no longer using IsOperOnLocalChannel; remove
1460 conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
1462 * doc/Configure.help: remove help information for deprecated
1465 * config/config-sh.in: remove certain deprecated options having to
1466 do with what opers can and cannot do--first stage in moving
1467 compile-time constants into the .conf
1469 2000-12-16 Isomer <Isomer@coders.net>
1470 * ircd/parse.c: detect if the prefix is missing and try and recover
1473 2000-12-15 Kevin L. Mitchell <klmitch@mit.edu>
1475 * ircd/ircd_log.c: found and fixed some bugs in the debug logging
1476 code that would sometimes result in the log file not being
1477 reopened--which meant that a user could connect and get the
1478 logging output--oops
1480 * ircd/Makefile.in: run make depend...
1482 * ircd/s_stats.c: get rid of report_feature_list()
1484 * ircd/s_err.c: add the 'bad value' error message, shift error
1485 messages over somewhat
1487 * ircd/s_debug.c (debug_init): call log_debug_init with the
1490 * ircd/s_conf.c (read_configuration_file): unmark features before
1491 reading the config file, then reset unmarked features after
1492 reading the config file
1494 * ircd/m_stats.c: use feature_report() instead of
1495 report_feature_list()
1497 * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
1498 special 'mark' flags and use them; add the stuff needed by the
1501 * ircd/ircd_features.c: rework the features API and add gobs of
1502 comments to try to explain what some of these complex functions
1505 * include/s_stats.h: get rid of report_feature_list(); use
1506 feature_report() instead
1508 * include/numeric.h: added a new error message and shifted old
1509 values over some--this is, after all, an alpha
1511 * include/ircd_log.h: log_debug_init now takes an integer to tell
1512 it if it should be using the tty; added a couple of functions
1513 required by the features API
1515 * include/ircd_features.h: add an enum and some more functions to
1516 flesh out the feature API--it should now be possible to put all
1517 those compile-time constants in the config file!
1519 * ircd/send.c: got the direction of the assert incorrect...
1521 * ircd/send.c: implement the efficiency of flush_connections by
1522 creating a linked list of struct Connection's with queued data;
1523 also get rid of flush_sendq_except and make sure to yank
1524 connections out of the list when their sendQs become empty (notice
1525 the assertion in flush_connections!)
1527 * ircd/s_bsd.c (close_connection): must yank the Connection out of
1530 * ircd/list.c (dealloc_connection): must yank the Connection out
1533 * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
1534 deprecated flush_sendq_except
1536 * ircd/client.c: define a couple new helper functions for sendq
1537 threading--this will make the flush_connections function in send.c
1538 considerably more efficient by creating a linked list of
1539 Connections that have queued data to send
1541 * include/send.h: remove flush_sendq_except, as it's not used
1544 * include/client.h: declare a couple new helper functions for the
1545 sendq threading system
1547 2000-12-14 Kevin L. Mitchell <klmitch@mit.edu>
1549 * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
1552 * ircd/s_debug.c (count_memory): modify to report for clients and
1553 connections, not local clients and remote clients
1555 * ircd/list.c: fiddle with the client-fiddling functions to take
1556 into account the divorce of struct Connection from struct Client
1558 * ircd/ircd.c: define a struct Connection for me, initialize it,
1559 and link it into the right place (ewww, globals!)
1561 * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
1562 struct Client into struct Client and struct Connection; redefine
1563 local-portion accessor macros to go through struct Client to the
1564 struct Connection; define struct Connection accessor macros
1566 2000-12-13 Kevin L. Mitchell <klmitch@mit.edu>
1568 * ircd/whowas.c: missed a couple of accesses to a struct Client
1570 * ircd/uping.c: missed a couple of accesses to a struct Client
1572 * ircd/send.c: missed a couple of accesses to a struct Client
1574 * ircd/s_user.c: missed a couple of accesses to a struct Client
1576 * ircd/s_misc.c: missed a couple of accesses to a struct Client
1578 * ircd/s_conf.c: missed a couple of accesses to a struct Client
1580 * ircd/s_bsd.c: missed a couple of accesses to a struct Client
1582 * ircd/s_auth.c: missed a couple of accesses to a struct Client
1584 * ircd/res.c: missed a couple of accesses to a struct Client
1586 * ircd/parse.c: missed a couple of accesses to a struct Client
1588 * ircd/m_whois.c: use new accessor macros for struct Client
1590 * ircd/m_who.c: use new accessor macros for struct Client
1592 * ircd/m_wallchops.c: use new accessor macros for struct Client
1594 * ircd/m_version.c: use new accessor macros for struct Client
1596 * ircd/m_userip.c: use new accessor macros for struct Client
1598 * ircd/m_userhost.c: use new accessor macros for struct Client
1600 * ircd/m_user.c: use new accessor macros for struct Client
1602 * ircd/m_uping.c: use new accessor macros for struct Client
1604 * ircd/m_trace.c: use new accessor macros for struct Client
1606 * ircd/m_topic.c: use new accessor macros for struct Client
1608 * ircd/m_time.c: use new accessor macros for struct Client
1610 * ircd/m_stats.c: use new accessor macros for struct Client
1612 * ircd/m_squit.c: use new accessor macros for struct Client
1614 * ircd/m_silence.c: use new accessor macros for struct Client
1616 * ircd/m_server.c: use new accessor macros for struct Client;
1619 * ircd/m_rpong.c: use new accessor macros for struct Client
1621 * ircd/m_rping.c: use new accessor macros for struct Client
1623 * ircd/m_quit.c: use new accessor macros for struct Client
1625 * ircd/m_privmsg.c: use new accessor macros for struct Client
1627 * ircd/m_pong.c: use new accessor macros for struct Client; remove
1630 * ircd/m_ping.c: use new accessor macros for struct Client
1632 * ircd/m_pass.c: use new accessor macros for struct Client
1634 * ircd/m_part.c: use new accessor macros for struct Client
1636 * ircd/m_oper.c: use new accessor macros for struct Client
1638 * ircd/m_notice.c: use new accessor macros for struct Client
1640 * ircd/m_nick.c: use new accessor macros for struct Client
1642 * ircd/m_names.c: use new accessor macros for struct Client
1644 * ircd/m_mode.c: use new accessor macros for struct Client
1646 * ircd/m_map.c: use new accessor macros for struct Client
1648 * ircd/m_list.c: use new accessor macros for struct Client
1650 * ircd/m_links.c: use new accessor macros for struct Client;
1651 remove some dead code
1653 * ircd/m_kill.c: use new accessor macros for struct Client; remove
1656 * ircd/m_kick.c: use new accessor macros for struct Client
1658 * ircd/m_join.c: use new accessor macros for struct Client; remove
1661 * ircd/m_ison.c: use new accessor macros for struct Client
1663 * ircd/m_invite.c: use new accessor macros for struct Client
1665 * ircd/m_info.c: use new accessor macros for struct Client
1667 * ircd/m_gline.c: use new accessor macros for struct Client
1669 * ircd/m_error.c: use new accessor macros for struct Client
1671 * ircd/m_create.c: use new accessor macros for struct Client
1673 * ircd/m_connect.c: use new accessor macros for struct Client;
1674 removed some dead code
1676 * ircd/m_burst.c: use new accessor macros for struct Client
1678 * ircd/m_away.c: use new accessor macros for struct Client
1680 * ircd/m_admin.c: use new accessor macros for struct Client
1682 * ircd/hash.c: missed a couple of accesses to a struct Client
1684 * ircd/gline.c: missed a couple of accesses to a struct Client
1686 * ircd/crule.c: missed a couple of accesses to a struct Client
1688 * ircd/class.c: missed an access to a struct Client
1690 * ircd/channel.c: missed a couple of accesses to a struct Client
1692 * ircd/IPcheck.c: missed an access to a struct Client
1694 * include/querycmds.h: fix a couple of stats macros to use
1695 structure accessor macros
1697 * include/client.h: change structure member names to highlight any
1698 places in the code I've missed
1700 2000-12-12 Kevin L. Mitchell <klmitch@mit.edu>
1702 * ircd/whowas.c: use new struct Client accessor macros
1704 * ircd/whocmds.c: use new struct Client accessor macros
1706 * ircd/send.c: use new struct Client accessor macros
1708 * ircd/s_user.c: use new struct Client accessor macros; removed
1711 * ircd/s_serv.c: use new struct Client accessor macros; removed
1714 * ircd/s_numeric.c: use new struct Client accessor macros
1716 * ircd/s_misc.c: use new struct Client accessor macros
1718 * ircd/s_debug.c: use new struct Client accessor macros
1720 * ircd/s_conf.c: use new struct Client accessor macros
1722 * ircd/s_bsd.c: use new struct Client accessor macros
1724 * ircd/s_auth.c: use new struct Client accessor macros
1726 * ircd/parse.c: use new struct Client accessor macros
1728 * ircd/packet.c: use new struct Client accessor macros
1730 * ircd/numnicks.c: use new struct Client accessor macros
1732 * ircd/motd.c: use new struct Client accessor macros
1734 * ircd/listener.c: use new struct Client accessor macros
1736 * ircd/list.c: use new struct Client accessor macros
1738 * ircd/jupe.c: use new struct Client accessor macros
1740 * ircd/ircd_snprintf.c: use new struct Client accessor macros
1742 * ircd/ircd_reply.c: use new struct Client accessor macros
1744 * ircd/ircd_relay.c: use new struct Client accessor macros
1746 * ircd/ircd.c: use new struct Client accessor macros
1748 * ircd/gline.c: catch some instances of me.<stuff> I missed
1751 * ircd/client.c: use cli_ instead of con_
1753 * ircd/class.c: use cli_ instead of con_
1755 * ircd/channel.c: use cli_ instead of con_
1757 * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
1758 of me.<stuff> I missed previously
1760 * include/client.h: use cli_ instead of con_...seemed like a good
1761 idea at the time *shrug*
1763 2000-12-11 Kevin L. Mitchell <klmitch@mit.edu>
1765 * ircd/hash.c: use struct Client accessor macros
1767 * ircd/gline.c: use struct Client accessor macros
1769 * ircd/crule.c: use struct Client accessor macros
1771 * ircd/client.c: use struct Client accessor macros; remove some
1774 * ircd/class.c: use struct Client accessor macros
1776 * ircd/channel.c: use struct Client accessor macros; remove some
1779 * ircd/IPcheck.c: use struct Client accessor macros
1781 * include/numnicks.h: use struct Client accessor macros
1783 * include/client.h: first step to divorcing struct Client and
1784 struct Connection--define accessor macros and use them
1786 * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
1787 uplink would remove them. This is because the removal protocol
1788 message wasn't being sent to the uplinks. This is fixed by fixing
1789 propagate_gline() to send the proper number of arguments depending
1790 on whether or not we're adding or deleting the Uworld gline, and
1791 by having gline_deactivate() make sure to turn off the active bit
1792 and call propagate_gline() if it's a Uworld gline
1794 2000-12-10 Kevin L. Mitchell <klmitch@mit.edu>
1796 * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
1798 * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
1799 anywhere intelligent...
1801 2000-12-09 Kevin L. Mitchell <klmitch@mit.edu>
1803 * ircd/send.c (send_queued): call deliver_it with appropriate
1806 * ircd/s_serv.c: reorder a couple of headers--cosmetic
1808 * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
1811 * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
1812 with appropriate iovec
1814 * ircd/os_linux.c (os_sendv_nonb): function for calling writev
1815 with appropriate iovec
1817 * ircd/os_generic.c (os_sendv_nonb): function for calling writev
1818 with appropriate iovec
1820 * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
1823 * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
1824 exactly how much we're trying to write out to the fd
1826 * include/s_bsd.h: make deliver_it take a struct MsgQ
1828 * include/msgq.h: add a len_p argument to msgq_mapiov to help
1829 detect short writes that indicate possible socket blocking
1831 * include/ircd_osdep.h: declare os_sendv_nonb()
1833 * ircd/channel.c (modebuf_mode): don't add empty modes...
1835 2000-12-08 Kevin L. Mitchell <klmitch@mit.edu>
1837 * include/send.h: add prio argument to send_buffer to select
1838 between normal and priority queues
1840 * ircd/s_user.c (send_user_info): add prio argument to send_buffer
1843 * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
1845 * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
1848 * ircd/channel.c (send_channel_modes): add prio argument to
1851 * ircd/send.c (send_buffer): add a prio argument to select the
1852 priority queue; update send.c functions to use it
1854 * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
1855 msgq_add; add a prio argument to msgq_add to select the priority
1858 * include/msgq.h: remove msgq_prio; add a prio argument to
1861 * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
1862 using msgq functions instead of dbuf functions; remove old, dead
1863 sendto_* functions; redo send_buffer to take a struct MsgBuf;
1864 rework sendcmdto_* functions to make use of the new struct MsgBuf
1866 * ircd/s_user.c: remove hunt_server; restructure send_user_info to
1867 make appropriate use of struct MsgBuf
1869 * ircd/s_debug.c (count_memory): count memory used by the MsgQ
1870 system and report it
1872 * ircd/s_conf.c (read_configuration_file): use
1873 sendto_opmask_butone instead of the now dead sendto_op_mask
1875 * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
1878 * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
1880 * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
1883 * ircd/m_version.c: fix spelling in comments marking dead code
1885 * ircd/m_userip.c (userip_formatter): restructure to make use of
1888 * ircd/m_userhost.c (userhost_formatter): restructure to make use
1891 * ircd/m_stats.c: use MsgQLength on a sendQ
1893 * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
1894 sendQ; mark a piece of dead code
1896 * ircd/m_names.c: use send_reply instead of sendto_one
1898 * ircd/m_mode.c: use new mode; remove old dead code
1900 * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
1902 * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
1905 * ircd/listener.c (accept_connection): use sendto_opmask_butone
1906 instead of sendto_op_mask
1908 * ircd/list.c (free_client): use MsgQClear to clear sendQ
1910 * ircd/ircd_reply.c: remove send_error_to_client; restructure
1911 send_reply to make use of struct MsgBuf
1913 * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
1914 since its no longer used (at least currently)
1916 * ircd/channel.c: restructure send_channel_modes to make use of
1917 struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
1918 and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
1920 * ircd/Makefile.in: add msgq.c to list of sources; run make depend
1922 * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
1924 * include/send.h: send_buffer now takes a struct MsgBuf * instead
1925 of a char *; flush_sendq_except now takes no arguments, as sendq
1926 flushing currently only happens in dbuf.h and sendQ is a struct
1927 MsgQ; remove prototypes for a lot of old sendto_* functions that
1928 aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
1929 no longer needed, and the latter is identical to BUFSIZE in
1932 * include/s_user.h: make InfoFormatter take a struct MsgBuf*
1933 instead of a char *; also make it return void, instead of char *
1935 * include/msgq.h: add msgq_append and msgq_bufleft functions
1937 * include/client.h: use a struct MsgQ instead of a struct DBuf for
1940 * doc/Configure.help: Remove help for compile-time options that
1943 * config/config-sh.in: remove CONFIG_NEWMODE
1945 * ircd/m_server.c (mr_server): don't send server IPs in any server
1948 * ircd/msgq.c (msgq_vmake): add \r\n to messages
1950 2000-12-07 Kevin L. Mitchell <klmitch@mit.edu>
1952 * include/msgq.h: declare the MsgQ API
1954 * ircd/msgq.c: implementation of new MsgQ system
1956 2000-12-06 Kevin L. Mitchell <klmitch@mit.edu>
1958 * ircd/ircd_features.c: #include was supposed to be for
1959 ircd_features.h, not features.h--missed when I had to do a
1960 rename because of namespace collision
1962 2000-12-05 Greg Sikorski <gte@atomicrevs.demon.co.uk>
1963 * ircd/m_topic.c: Added missing braces that caused all remote
1964 topics to be ignored.
1966 2000-12-04 Kevin L. Mitchell <klmitch@mit.edu>
1968 * ircd/m_create.c: I'm tired of the exit_client warning :)
1969 (ms_create): discovered that exit_client() was being called with
1972 * ircd/s_misc.c (exit_client): remove all dependance on
1973 FNAME_USERLOG, since that's now gone; log only to LS_USER
1975 * ircd/s_debug.c: USE_SYSLOG no longer means anything
1977 * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
1980 * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
1982 * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
1984 * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
1985 the same purpose as LS_USER and LS_OPER
1987 * config/config-sh.in: remove no longer relevant log config
1990 * ircd/uping.c (uping_init): use log_write instead of ircd_log
1992 * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
1994 * ircd/s_conf.c: use log_write instead of ircd_log
1996 * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
1998 * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
2001 * ircd/res.c (send_res_msg): use log_write instead of ircd_log
2003 * ircd/m_who.c: use log_write instead of write_log; no longer
2004 conditionalize on WPATH; mark dead ircd_log calls
2006 * ircd/m_uping.c: mark dead ircd_log call
2008 * ircd/m_server.c (mr_server): use log_write instead of ircd_log
2010 * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
2013 * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
2015 * ircd/m_oper.c: use log_write instead of ircd_log; no longer
2016 conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
2018 * ircd/m_kill.c: mark dead ircd_log calls
2020 * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
2023 * ircd/m_clearmode.c: use log_write instead of write_log; no
2024 longer conditionalize on OPATH
2026 * ircd/jupe.c: use log_write instead of write_log; no longer
2027 conditionalize on JPATH
2029 * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
2030 function; fix a couple of bugs
2032 * ircd/ircd_alloc.c: fixed a comment
2034 * ircd/ircd.c: use log_write instead of ircd_log; fold server
2035 notice generation in a couple of cases
2037 * ircd/gline.c: use log_write instead of write_log; no longer
2038 conditionalize on GPATH
2040 * ircd/channel.c (modebuf_flush_int): use log_write instead of
2041 write_log; no longer conditionalize on OPATH
2043 * ircd/Makefile.in: run make depend, since dependencies have
2046 * doc/example.conf: add system USER to documentation
2048 * include/ircd_log.h: add system USER; remove old ircd_log()
2051 2000-12-04 Isomer <isomer@coders.net>
2052 * ircd/m_names.c: Add NAMES_EON to do_names to say add a
2053 'end_of_names' reply when done.
2054 * ircd/m_join.c: use NAMES_EON as mentioned above
2056 2000-12-01 net <simms@LUCIDA.QC.CA>
2058 * ircd/motd.c: add a freelist for struct Motds
2060 2000-11-30 Kevin L. Mitchell <klmitch@mit.edu>
2062 * ircd/s_stats.c (report_feature_list): report features--only
2063 local opers can see logging configuration, since it doesn't really
2064 mean anything to users
2066 * ircd/s_err.c: add reply messages for new feature subsystem
2068 * ircd/s_conf.c: add F lines to .conf
2070 * ircd/parse.c: add the message descriptions for /set, /reset, and
2073 * ircd/m_stats.c: add /stats f
2075 * ircd/m_set.c (mo_set): implement /set
2077 * ircd/m_reset.c (mo_reset): implement /reset
2079 * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
2080 reopens log files (for log file rotation)
2082 * ircd/m_get.c (mo_get): implement /get
2084 * ircd/ircd_log.c: use int instead of void return value; add
2085 log_report_features() and log_canon(); fix a function that
2086 disappears if DEBUGMODE not #define'd
2088 * ircd/ircd_features.c: functions to manipulate feature settings
2089 either from the config file or with the new /set, /reset, and /get
2092 * ircd/Makefile.in: add new .c files, run make depend
2094 * include/s_stats.h: declare report_feature_list() (/stats f
2097 * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
2098 ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
2101 * include/msg.h: add defines for SET, RESET, and GET
2103 * include/ircd_log.h: add a function to canonicalize subsystem
2104 names; change some void return values to int
2106 * include/ircd_features.h: new features subsystem handles all the
2107 manipulation of special features, like log files
2109 * include/handlers.h: declare new mo_{s,res,g}et message handlers
2110 for fiddling with features run-time
2112 * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
2113 seemed like a good idea at the time...
2115 * doc/example.conf: document new F lines
2117 2000-11-29 Kevin L. Mitchell <klmitch@mit.edu>
2119 * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
2120 new logging functions, which have special support for the debug
2121 log; added loop detection to vdebug(), so that I can
2122 sendto_opmask_butone() from log_vwrite() without incurring another
2125 * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
2126 this allows log file rotations
2128 * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
2130 * ircd/ircd_log.c: much more work fleshing out the interface;
2131 removed old interface; included backwards-compat ircd_log()
2132 function that logs to subsystem LS_OLDLOG
2134 * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
2137 * include/ircd_log.h: include stdarg.h for va_list; move ordering
2138 warning to top of file; fill out LogSys enum; declare new
2139 log_debug_init(), log_vwrite(), log_write_kill(), and
2140 log_[sg]et_*() functions; add flags argument to log_write();
2141 defined flags to inhibit various logging actions
2143 * include/client.h: added support for new SNO_DEBUG, enabled only
2144 if DEBUGMODE is defined
2146 2000-11-28 Kevin L. Mitchell <klmitch@mit.edu>
2148 * ircd/ircd_log.c: make sure the various LOG_* constants are
2149 defined (probably not needed, since #include <syslog.h> isn't
2150 conditional); various static data needed for the new logging
2151 functions; definitions of new logging functions
2153 * include/ircd_log.h: new LogSys enum, declarations for part of
2156 * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
2157 which was of course stupid; switched to using switch/case in
2158 initialization in motd_create(); zero the MotdList.other pointer
2161 * ircd/ircd.c (main): motd_init() has to come before init_conf(),
2162 or we overwrite init_conf()'s hard work with respect to T-lines
2164 2000-11-27 Kevin L. Mitchell <klmitch@mit.edu>
2166 * ircd/s_stats.c: comment out report_motd_list and include a
2167 reference to motd_report()
2169 * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
2170 motd_add() from the conf parser; call motd_clear() from the rehash
2171 routine; remove the no longer needed memory clearing and reloading
2172 stuff from the rehash service routine
2174 * ircd/motd.c: loads new API, including static internal functions
2175 to do allocation/deallocation, etc.
2177 * ircd/m_stats.c: use new motd_report() instead of
2180 * ircd/m_motd.c: use new syntax for motd_send()
2182 * ircd/ircd.c: use new motd_init() function
2184 * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
2185 Makefile.(in); also ran make depend
2187 * include/motd.h: don't need config.h, but now do need time.h;
2188 define new structures and constants; redefine old API and define
2191 2000-11-22 Kevin L. Mitchell <klmitch@mit.edu>
2193 * ircd/s_user.c (register_user): use motd_signon() instead of
2194 calling m_motd; much cleaner this way
2196 * ircd/motd.c: write the new motd_* stuff to make MOTD handling
2199 * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
2202 * include/motd.h: define new MOTD API stuff
2204 2000-11-20 Kevin L. Mitchell <klmitch@mit.edu>
2206 * ircd/ircd_reply.c (protocol_violation): rewrite
2207 protocol_violation so it'll actually work
2209 oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
2210 the client's real name in there.
2212 * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
2213 resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
2214 gets called from register_user with a NULL sptr. This is probably
2215 a design problem, but this bandaid will do for now...
2217 2000-11-19 Isomer <isomer@coders.net>
2218 * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
2219 to problems in the server<->server protocol.
2221 * ircd/m_connect.c: allow remote connects with a port of '0'
2222 meaning to use the port in the config file.
2224 * ircd/m_create.c: Enable hacking protection, lets see how far we
2227 * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
2228 clients, so we don't any more.
2230 * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
2231 and the user@host is displayed of the victim.
2233 * ircd/m_map.c: reloaded 'dump_map'.
2235 * ircd/m_trace.c: allow per class T:
2237 * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
2239 2000-11-17 Isomer <isomer@coders.net>
2241 * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
2242 that were the *same* instead of different. Oh the embarrasment!
2244 * ircd/IPcheck.c: Merged net's fix.
2246 2000-11-02 Kevin L. Mitchell <klmitch@mit.edu>
2248 * ircd/m_whois.c: remove compiler warning by adding a newline to
2251 * ircd/m_names.c: moved the flags up to s_user.h
2253 * ircd/m_join.c: call do_names instead of m_names; restructure
2254 ms_join to never transmute a JOIN into a CREATE, but use the TS in
2255 the JOIN (if present) to timestamp the channel
2257 * ircd/channel.c: send JOINs individually, instead of grouping
2258 them, so that we can send the channel's creation time
2260 * include/s_user.h: declare do_names()
2262 2000-10-30 Isomer <isomer@coders.net>
2263 * ircd/m_oper.c: Fixed warning
2265 2000-10-30 Isomer <isomer@coders.net>
2266 * ircd/m_oper.c: Fixed over agressive cut and no paste
2268 2000-10-30 Isomer <isomer@coders.net>
2270 * ircd/m_topic.c: Restructured, fixed bug where topics on local
2271 channels are propergated (I forget who pointed this out to me, but
2272 thanks anyway). Also to save bandwidth don't send the topic to
2273 users if the topic is already the same on the server (but still
2274 propergate to other servers). X/W's "autotopic" feature must
2275 chew a lot of bandwidth, hopefully this will help reduce this.
2277 * doc/rfc1459.rfc: Updated documentation on /topic.
2279 * ircd/listener.c: snotice warnings about failed accept()'s
2280 potentially warning admins that they're running out of fd's.
2282 * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
2283 people in a class in /stats y
2285 * ircd/m_create.c: Checks for timewarp hacking and squit's
2286 evil servers. (currently disabled)
2289 2000-10-30 net <simms@lucida.qc.ca>
2291 * ircd/gline.c: Fixed various bugs Isomer left behind.
2293 2000-10-26 Kevin L. Mitchell <klmitch@mit.edu>
2295 * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
2296 channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
2298 2000-10-24 Kevin L. Mitchell <klmitch@mit.edu>
2300 * ircd/channel.c: ok, now last mode rules; mode +ps will always
2301 result in +s (and won't send a mode if the channel is already +s);
2302 mode +sp will always result in +p; -n+n on a +n channel results in
2303 no mode change; -n+n on a -n channel results in a +n mode change;
2306 2000-10-23 Kevin L. Mitchell <klmitch@mit.edu>
2308 * ircd/channel.c: add "add" and "del" elements to ParseState to
2309 avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
2310 mode_parse_limit that caused it to clear all channel modes
2311 prematurely; restructure mode_parse_mode to avoid calling
2312 modebuf_mode too early (ties in with first mentioned change);
2313 better logic for +p/+s mutual exclusivity; initialize "add" and
2314 "del" elements in mode_parse; send simple modes down to
2315 modebuf_mode after the loop in mode_parse
2317 2000-09-28 Greg Sikorski <gte@atomicrevs.demon.co.uk>
2318 * ircd/m_names.c: Fixed a non-lethal logic error that
2319 triggers an assert() in find_member_link while debugging.
2320 (Spotted by Maniac-).
2321 2000-09-19 Thomas Helvey <helveytw@home.com>
2322 * ircd/s_conf.c: move K:lines to their own list and data
2323 structures, add supporting code.
2324 * ircd/m_stats.c: cleanup stats processing a bit move
2325 kline listing code to a new function, haven't figured
2326 out where it goes yet tho'
2327 * ircd/s_stats.c: added K:line bulk lister
2328 * include/s_conf.h: added new DenyConf struct
2329 * *[ch]: fixeup code that depended on changes
2331 2000-09-17 Thomas Helvey <helveytw@home.com>
2332 * ircd/class.c: encapsulate class list
2333 * include/class.h: clean up classes
2334 * * fixup code that depended on changes
2336 2000-09-17 Thomas Helvey <helveytw@home.com>
2337 * ircd/s_conf.c: add me to local conf
2338 * include/s_conf.h: move CONF_ME macro to chkconf.c
2339 * ircd/s_bsd.c: cleanup initialization, allow virtual host
2340 to be changed by rehash
2342 2000-09-17 Thomas Helvey <helveytw@home.com>
2343 * include/class.h: add missing prototype
2344 * ircd/class.c: make argument to get_conf_class const
2346 2000-09-17 Thomas Helvey <helveytw@home.com>
2347 * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
2349 * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
2352 2000-09-16 Thomas Helvey <helveytw@home.com>
2353 * ircd/s_conf.c: add code for server struct
2354 * ircd/client.c: copy of class.c sort of, new file for client
2355 specific operations, will move things here as appropriate,
2356 currently only one function is exported from here.
2357 * ircd/*.c: general logic cleanups, convert negatives to
2358 positives in places.
2360 2000-09-16 Thomas Helvey <helveytw@home.com>
2361 * ircd/s_conf.c: add code for new crule data structs, strip quotes
2362 * ircd/crule.c: clean up scary casting a bit, type safety stuff
2363 * include/s_conf.h: add CRuleConf struct and support, remove
2365 * include/crule.h: type safety cleanups
2366 * ircd/*.c: fixup code that depended on stuff I changed
2368 2000-09-15 Thomas Helvey <helveytw@home.com>
2369 * ircd/s_conf.c: start adding code for new conf data structs, changed
2370 listeners, admin line, motd lines, class lines. Move validate_hostent
2371 to resolver. General mayhem.
2372 * include/s_conf.h: new data structs and accessors
2373 * ircd/res.c: move validate_hostent here, rewrite, use regular
2374 expression for validation.
2375 * doc/example.conf: update docs for port
2377 2000-09-14 Thomas Helvey <helveytw@home.com>
2378 * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
2379 up conf_init into managable chunks.
2380 * ircd/listener.c (set_listener_mask): fix logic bug core dump.
2381 * include/s_conf.h: add new data struct for local info (unwinding the mess).
2383 2000-09-13 Thomas Helvey <helveytw@home.com>
2384 * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
2386 * ircd/list.c: put SLinks in free lists
2387 * ircd/channel.c: put Memberships in free lists
2388 * ircd/ircd.c: rearrange initializations a bit in main
2389 Note: With these changes, ircd NEVER frees Clients, SLinks or
2390 Memberships. It will also rarely need to allocate new
2391 ones during net bursts and other disruptions. This should
2392 cut down on memory fragmentation a bit as well.
2394 2000-08-30 Kevin L. Mitchell <klmitch@mit.edu>
2396 * ircd/m_names.c (do_names): pull-up from do_names fix in
2399 2000-07-15 Perry Lorier <Isomer@coders.net>
2400 * various: IP only k:'s and G:'s now do bit tests instead of two(!)
2401 match()'s. Major Major cpu savings. Also speed up the
2402 other case slightly. As a side effect you can now
2403 k/Gline *@10.0.0.0/8. I'll do bans tomorrow, it's nearing
2406 2000-07-15 Perry Lorier <Isomer@coders.net>
2407 * various: Fixed warnings after compiling on an alpha.
2408 2000-07-09 Perry Lorier <Isomer@coders.net>
2409 * doc/ircd.8: Applied grammitical changes by Liandrin, applied
2410 changes suggested by various other people.
2411 * ircd/IPcheck.c: More bug fixes. Current problem appears to be
2412 that it gets a corrupt entry somehow.
2413 2000-07-09 Greg Sikorski <gte@atomicrevs.demon.co.uk>
2414 * ircd/m_oper.c: Clean up compiler warning.
2416 2000-07-08 Perry Lorier <Isomer@coders.net>
2417 * doc/ircd.8: Updated the documentation, it was slightly out of date
2418 being updated around 1989.
2419 * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
2420 fixed a few minor glitches.
2421 * doc/rfc1459.unet: Updated.
2422 * ircd/IPcheck.c: Fixed more bugs.
2423 * ircd/s_bsd.c: We now keep track of servers we've conected.
2425 2000-07-02 Perry Lorier <Isomer@coders.net>
2426 * ircd/s_misc.c: Fixed remote IPcheck bug. Ok, I'm a moron, so sue
2427 me. Thanks to Hektik, thanks thanks thanks thanks
2428 thanks thanks thanks thanks thank thanks thank thanks
2430 2000-07-01 Perry Lorier <Isomer@coders.net>
2431 * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
2432 * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
2434 2000-06-22 Perry Lorier <Isomer@coders.net>
2435 * ircd/IPcheck.c: Large chunks redone.
2436 * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
2437 single AND double digit limits are allowed now.
2438 * misc other: Changes to IPcheck.
2440 2000-06-30 Perry Lorier <Isomer@coders.net>
2441 * ircd/ircd.c: Fix command line parameter bugs.
2443 2000-06-30 Perry Lorier <Isomer@coders.net>
2444 * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
2445 * ircd/m_nick.c: Tidied things up.
2447 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
2448 * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
2450 2000-05-29 Perry Lorier <Isomer@coders.net>
2451 * ircd/m_stats.c: add /stats v to do only the last part of the /trace
2452 * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
2453 you think it'll get bored and fix itself?
2455 2000-06-09 Greg Sikorski <gte@atomicrevs.demon.co.uk>
2457 * ircd/m_names.c: Clean up compiler warnings.
2459 2000-06-09 Kevin L. Mitchell <klmitch@mit.edu>
2461 * ircd/channel.c (mode_parse_client): don't send warning if
2462 there's not enough arguments for a +/-o/v; means the habit of
2463 doing "/mode #channel +oooooo bob" doesn't result in a bunch of
2466 2000-06-04 Greg Sikorski <gte@atomicrevs.demon.co.uk>
2468 * ircd/m_names.c: Re-factor code to remove unneccessary
2469 GlobalChannelList iteration every time someone joins a channel.
2471 2000-06-02 Kevin L. Mitchell <klmitch@mit.edu>
2473 * ircd/s_user.c: add struct Gline * argument to register_user;
2474 look up global glines and repropagate them if necessary; send
2475 acknowledgement of gline to remote servers when registering users
2477 * ircd/s_serv.c (server_estab): don't send acknowledgement of
2478 local glines to remote servers; do send gline acknowledgement of
2481 * ircd/m_user.c (m_user): pass new struct Gline * argument to
2484 * ircd/m_pong.c: pass new struct Gline * argument to register_user
2486 * ircd/m_nick.c (ms_nick): document protocol change
2488 * ircd/gline.c: support GLINE_LASTMOD
2490 * include/s_user.h: add struct Gline * argument to register_user
2492 * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
2494 * ircd/s_conf.c (find_kill): add unsigned int argument to
2497 * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
2498 glines; add unsigned int argument to gline_lookup()
2500 * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
2501 argument to gline_lookup()
2503 * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
2504 parameter, or when it falls out of bounds: see comments prior to
2505 call to jupe_resend(); call server_estab with struct Jupe
2506 parameter, so that we place the appropriate %<lastmod> in the
2509 * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
2510 server, as well as for servers when we're sending the BURST
2512 * include/s_serv.h: add a struct Jupe * to the arguments for
2513 server_estab() so that we can send the appropriate lastmod
2516 * ircd/m_gline.c (ms_gline): actually, this should be the
2517 slightest bit more efficient...
2519 * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
2520 bit more efficient...
2522 * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
2525 * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
2528 * ircd/channel.c (joinbuf_join): really remove user from local
2531 2000-05-29 Perry Lorier <Isomer@coders.net>
2532 * ircd/m_names.c: Removed redundant space.
2533 * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
2535 2000-05-18 Kevin L. Mitchell <klmitch@mit.edu>
2537 * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
2540 2000-05-04 Kevin L. Mitchell <klmitch@mit.edu>
2542 * ircd/channel.c: replace bogus assertions with returns, which is
2543 logically correct; only wipe out limit/key if they were originally
2544 set in the first place; remove user from channel when doing a
2545 PARTALL; only send MODE +o for user CREATEing channel if user is
2546 not MyUser--CREATE will only be used if the channel did not
2547 originally exist, therefore we can assume no one local is on the
2548 channel anyway, and we don't exactly need for the user to see an
2549 explicit +o for themselves
2551 * doc/readme.gline: describe the syntax of the GLINE command
2553 * doc/readme.jupe: update to reflect a couple of changes to JUPE
2555 * ircd/gline.c: don't propagate local changes
2557 * ircd/jupe.c: don't propagate local changes
2559 * ircd/m_gline.c (mo_gline): force local flag when deactivating
2560 glines with 0 lastmod
2562 * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
2563 are now removed instead of being deactivated
2565 * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
2566 -<mask>" be accepted
2568 * ircd/channel.c (send_channel_modes): deal with one of the last
2571 * ircd/m_burst.c (ms_burst): debugged ban processing; removed
2574 * ircd/channel.c (modebuf_extract): remove debugging
2575 sendto_opmask_butone calls
2577 2000-05-03 Kevin L. Mitchell <klmitch@mit.edu>
2579 * ircd/channel.c: support a couple of new flags to support using
2580 mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
2581 of modebuf_extract to extract added flags for use by ms_burst
2583 * include/channel.h: a couple of new flags to support using
2584 mode_parse inside ms_burst
2586 * ircd/m_burst.c (ms_burst): brand new implementation of BURST
2588 * ircd/m_endburst.c: add loop to processing of end_of_burst to
2589 free empty channels after the BURST is over.
2591 * ircd/m_server.c: convert to use new send.c functions--I wanted
2592 to rewrite it from scratch, but the logic's pretty complex; I may
2593 still rewrite it, though...
2595 2000-05-02 Thomas Helvey <tomh@inxpress.net>
2597 * ircd/ircd.c: fix broken header include ordering
2599 2000-05-02 Thomas Helvey <tomh@inxpress.net>
2601 * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
2602 review emailed privately
2604 * include/IPcheck.h: removed unneeded include
2606 2000-05-02 Kevin L. Mitchell <klmitch@mit.edu>
2608 * ircd/s_user.c (hunt_server): throw in a comment so I know what
2609 the sendto_one is for
2611 * include/querycmds.h (Count_unknownbecomesclient): convert to
2612 sendto_opmask_butone
2614 * ircd/send.c: start removing dead code
2616 * include/send.h: start removing dead code
2618 * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
2621 * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
2623 2000-05-01 Kevin L. Mitchell <klmitch@mit.edu>
2625 * ircd/m_stats.c: convert to sendcmdto_one / send_reply
2627 * ircd/m_kick.c: Completely reimplement m_kick
2629 * ircd/channel.c: send_user_joins removed; it was dead code,
2632 2000-05-01 Perry Lorier <isomer@coders.net>
2633 * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
2634 * ircd/channels.c: My fix for the part problem. Untested, probably
2635 won't work. Can't be much worse than the current problem.
2636 it'll either work or core, take your pick.
2639 2000-04-30 Perry Lorier <isomer@coders.net>
2640 * config/config-sh.in: Fix for CONNEXIT
2641 * ircd/s_{user,misc}.c: Fix for CONNEXIT
2642 * ircd/m_invite.c: Fix for incorrectly numnickified invite.
2643 (Kev: Want to come talk to me about this?)
2645 2000-04-30 Steven M. Doyle <steven@doyle.net>
2647 - general cleanups and readability enhancements
2648 - rewrite of setuid/chroot code.
2649 - server will no longer run as root
2650 - -DPROFIL compile option removed
2651 - Fixed IPcheck API calls
2653 * config/config-sh.in
2654 - Fixed up chroot compile options
2655 - Added options for debug and profile compiles
2657 * config/gen.ircd.Makefile
2658 - Support for new debug/profile options
2661 - Support for new debug/profile options
2663 * ircd/ircd_signal.c
2667 - Removed old API prototypes, added new ones
2670 - Readability cleanups (well, I -think-...)
2671 - Changed IPRegistryEntry.last_connect to a time_t. The previously
2672 used unsigned short was probably causing interesting things after
2673 a client had been connected longer than about 65,535 seconds...
2674 - Removed old API functions.
2677 - Removed IPcheck.h include
2679 * Additionally modified IPcheck API calls in:
2689 2000-04-30 Perry Lorier <isomer@coders.net>
2690 * ircd/s_bsd.c: Sigh. :)
2691 * ircd/m_mode.c: fix for modeless channels by poptix.
2693 2000-04-29 Kevin L. Mitchell <klmitch@mit.edu>
2695 * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
2697 * ircd/channel.c (clean_channelname): make clean_channelname also
2698 truncate long channel names
2700 2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
2702 * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
2704 * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
2707 * include/channel.h: definitions and declarations for the struct
2710 2000-04-29 Perry Lorier <isomer@coders.net>
2711 * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
2713 2000-04-29 Perry Lorier <isomer@coders.net>
2714 * ircd/s_bsd.c: Add debugging code to IPcheck
2716 2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
2718 * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
2720 * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
2723 * ircd/m_userhost.c (m_userhost): add a dead code comment
2725 * ircd/m_desynch.c: forgot one...
2727 * ircd/m_rehash.c (mo_rehash): er, duplicates :)
2729 * ircd/m_proto.c (proto_send_supported): just change a comment so
2730 it doesn't show up in my scans
2732 * ircd/ircd_reply.c (send_reply): fix a slight bug...
2734 * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
2737 * ircd/parse.c (parse_server): argument wrangling to make
2738 processing in do_numeric a little easier to deal with
2740 * ircd/s_serv.c (server_estab): SERVER should come from
2741 acptr->serv->up, not &me
2743 * ircd/m_lusers.c: accidentally left out sptr for a %C
2745 * ircd/send.c: hack to support doing wallchops...
2747 * ircd/m_whowas.c: convert to new send functions
2749 * ircd/m_whois.c: convert to new send functions
2751 * ircd/m_who.c: convert to new send functions
2753 * ircd/m_wallops.c: convert to new send functions
2755 * ircd/m_wallchops.c: convert to new send functions
2757 * ircd/m_version.c: convert to new send functions
2759 * ircd/m_userip.c: convert to new send functions
2761 * ircd/m_userhost.c: convert to new send functions
2763 * ircd/m_uping.c: convert to new send functions
2765 * ircd/m_trace.c: convert to new send functions
2767 * ircd/m_topic.c: convert to new send functions
2769 * ircd/m_time.c: convert to new send functions
2771 * ircd/m_squit.c: convert to new send functions
2773 * ircd/m_silence.c: convert to new send functions
2775 * ircd/m_settime.c: convert to new send functions
2777 * ircd/m_restart.c: convert to new send functions
2779 * ircd/m_rehash.c: convert to new send functions
2781 * ircd/m_privmsg.c: convert to new send functions
2783 * ircd/m_pong.c: convert to new send functions
2785 * ircd/m_ping.c: convert to new send functions
2787 * ircd/m_pass.c: convert to new send functions
2789 * ircd/m_opmode.c: convert to new send functions
2791 * ircd/m_oper.c: convert to new send functions
2793 * ircd/m_notice.c: convert to new send functions
2795 * ircd/m_nick.c: convert to new send functions
2797 * ircd/m_names.c: convert to new send functions
2799 * ircd/m_motd.c: convert to new send functions
2801 * ircd/m_mode.c: convert to new send functions
2803 * ircd/m_map.c: convert to new send functions
2805 * ircd/m_lusers.c: convert to new send functions
2807 * ircd/m_list.c: convert to new send functions
2809 * ircd/m_links.c: convert to new send functions
2811 * ircd/m_kill.c: convert to new send functions
2813 * ircd/m_jupe.c: convert to new send functions
2815 * ircd/m_invite.c: convert to new send functions
2817 * ircd/m_info.c: convert to new send functions
2819 * ircd/m_help.c: convert to new send functions
2821 * ircd/m_gline.c: convert to new send functions
2823 * ircd/m_error.c: convert to new send functions
2825 * ircd/m_endburst.c: convert to new send functions
2827 * ircd/m_die.c: convert to new send functions
2829 * ircd/m_destruct.c: convert to new send functions
2831 * ircd/m_defaults.c: convert to new send functions
2833 * ircd/m_connect.c: convert to new send functions
2835 2000-04-28 Perry Lorier <isomer@coders.net>
2836 * RELEASE.NOTES: Describe a few more undocumented features.
2837 * config/config-sh.in: change the default paths for logging
2838 and the recommended number of channels.
2839 * include/supported.h: Rearrange slightly, added CHANTYPE's
2841 2000-04-27 Kevin L. Mitchell <klmitch@mit.edu>
2843 * ircd/m_close.c: convert to send_reply
2845 * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
2847 * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
2849 * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
2851 * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
2852 that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION
2853 HAS A MAJOR HACK!!! The whole hunt_server architecture should be
2854 carefully rethought...
2856 * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
2858 * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
2860 * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
2861 numeric nick; therefore, we have to use the server name
2863 * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
2865 * ircd/send.c: fix minor bugs
2867 * ircd/s_user.c (check_target_limit): mark dead code so I filter
2870 * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
2873 * ircd/parse.c: mark dead code so I filter it when I grep
2875 * ircd/map.c: mark dead code so I filter it when I grep
2877 * ircd/ircd.c: mark dead code so I filter it when I grep
2879 * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
2882 * ircd/channel.c: mark dead code so I filter it when I grep
2884 * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
2885 hope I'm not stepping on toes...
2887 * ircd/s_conf.c: more sendto_opmask_butone / send_reply
2888 conversions; use ircd_snprintf in a couple of cases to negate the
2889 possibility of buffer overflow
2891 2000-04-26 Kevin L. Mitchell <klmitch@mit.edu>
2893 * ircd/channel.c: convert as much as possible to new send
2896 * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
2897 test member->user->from->fd, not from->fd
2899 * ircd/gline.c (gline_add): go ahead and add badchans; we just
2900 won't look for them in m_gline; this way, they always work...
2902 * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
2904 * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
2905 ircd_vsnprintf conversion specifiers
2907 * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
2908 I have my conversion specifiers
2910 * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
2912 * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
2915 * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
2916 little less brain-dead
2918 * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
2920 * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
2923 * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
2926 * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
2929 * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
2931 * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
2933 * ircd/s_user.c (register_user): use RPL_EXPLICIT for
2936 * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
2938 * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
2939 a numeric as needing to use an explicit pattern, which will be the
2940 first argument in the variable argument list
2942 * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
2943 non-prefixed nospoof PING
2945 * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
2946 non-prefixed SERVER login
2948 * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
2949 a numeric usage further up)
2951 * include/send.h: declare sendrawto_one
2953 * ircd/send.c (sendrawto_one): new function to use ONLY for
2954 non-prefixed commands, like PING to client, or PASS/SERVER on
2957 2000-04-25 Kevin L. Mitchell <klmitch@mit.edu>
2959 * ircd/ircd_snprintf.c (doprintf): implement %H for possible
2960 future expansion (channel numerics?)
2962 * include/ircd_snprintf.h: added documentation to # to explain use
2963 with %C; added documentation for : to explain use with %C; added
2964 documentation for %H for channels
2966 * ircd/whocmds.c: use send_reply
2968 * ircd/userload.c: use sendcmdto_one
2970 * ircd/uping.c: use sendcmdto_one
2972 * ircd/send.c: use new flags to %C format string; ':' prefixes
2973 client name with a colon for local connects, '#' uses
2974 nick!user@host form for local connects
2976 * ircd/s_user.c: use send_reply, sendto_opmask_butone,
2977 sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
2979 * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
2981 * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
2984 * ircd/s_auth.c: use sendto_opmask_butone
2986 * ircd/res.c: use sendcmdto_one
2988 * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
2989 debugging assertions
2991 2000-04-24 Kevin L. Mitchell <klmitch@mit.edu>
2993 * ircd/support.c: dumpcore is no longer used, so get rid of it
2995 * ircd/parse.c: use send_reply, sendcmdto_one
2997 * ircd/map.c: use send_reply
2999 * ircd/listener.c: use send_reply
3001 * ircd/jupe.c: use sendto_opmask_butone, send_reply
3003 * ircd/ircd_reply.c: use send_reply
3005 * ircd/ircd.c: use sendto_opmask_butone
3007 * ircd/gline.c: use sendto_opmask_butone, send_reply
3009 * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
3010 registered clients; make FLAG_ALT print nick!user@host; make
3011 FLAG_COLON print :blah
3013 * ircd/class.c (report_classes): use send_reply instead of
3016 * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
3018 * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
3019 sendto_one with sendcmdto_one
3021 2000-04-21 Kevin L. Mitchell <klmitch@mit.edu>
3023 * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
3024 MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
3025 sendcmdto_match_butone
3027 * include/send.h: declare sendcmdto_match_butone
3029 2000-04-20 Kevin L. Mitchell <klmitch@mit.edu>
3031 * ircd/jupe.c: update to use send_reply()
3033 * ircd/gline.c: update to use send_reply()
3035 * include/ircd_reply.h: declare send_reply
3037 * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
3038 replies; uses ircd_snprintf
3040 * ircd/send.c: added comments to redirect searchers to appropriate
3041 sendcmdto_* function; moved new functions to end of file; added
3042 explanatory comments; reordered arguments; defined new functions
3045 * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
3047 * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
3049 * ircd/jupe.c: reorder arguments to sendcmdto_* functions
3051 * ircd/gline.c: reorder arguments to sendcmdto_* functions
3053 * include/send.h: reorder arguments, add explanatory comments,
3054 declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
3055 and vsendto_opmask_butone
3057 2000-04-19 Kevin L. Mitchell <klmitch@mit.edu>
3059 * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
3060 vsendto_op_mask that uses '*' instead of the receiving client
3063 * include/send.h: declare sendcmdto_channel_butone; takes a skip
3064 argument that allows you to skip (or not to skip) deaf users,
3065 users behind bursting servers, and non channel operators
3067 2000-04-17 Kevin L. Mitchell <klmitch@mit.edu>
3069 * ircd/send.c: new sendcmdto_channel_butserv -- note that old
3070 sendto_channel_butserv has a subtle bug; also wrote
3071 sendcmdto_common_channels.
3073 * include/send.h: declare new sendcmdto_* functions
3075 * ircd/jupe.c: support local deactivations of jupes
3077 * ircd/gline.c: support local deactivations of glines
3079 * include/jupe.h: JUPE_LDEACT allows jupes to be locally
3080 deactivated; if they aren't locally deactivated, then it slaves to
3081 the net-wide activation status; JupeIsRemActive() tests only
3082 whether the jupe is active everywhere else
3084 * include/gline.h: GLINE_LDEACT allows glines to be locally
3085 deactivated; if they aren't locally deactivated, then it slaves to
3086 the net-wide activation status; GlineIsRemActive() tests only
3087 whether the gline is active everywhere else
3089 * ircd/gline.c: detect overlapping G-lines; if an existing, wider
3090 gline expires after the new one will, we drop the new one,
3091 otherwise we add the G-line after that one (so the wide one will
3092 apply first); if the new one contains an existing G-line and if it
3093 will expire after the existing one, we drop the existing one to
3096 * ircd/m_gline.c (mo_gline): opers could issue remote local
3097 glines when CONFIG_OPERCMDS was off; fixed
3099 2000-04-16 Kevin L. Mitchell <klmitch@mit.edu>
3101 * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
3102 this is a local JUPE
3104 * ircd/gline.c: add flags argument to gline_activate and
3105 gline_deactivate for future expansion
3107 * ircd/m_gline.c: pass flags to gline_activate and
3110 * include/gline.h: add flags argument to gline_activate and
3113 * ircd/jupe.c: add flags argument to jupe_activate and
3114 jupe_deactivate for future expansion
3116 * include/jupe.h: add flags argument to jupe_activate and
3119 * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
3120 local, active; pass flags to jupe_activate and jupe_deactivate
3122 * include/gline.h: remove dead code
3124 * ircd/gline.c: make gline expire times relative to CurrentTime,
3125 since that should be monotonically increasing, instead of
3126 TStime(), which can be set backwards, and which can therefore
3127 cause an expire time to increase; make local glines be removed
3128 instead of just deactivated; don't let gline_find() look for
3129 user@host glines if the mask being looked up is a channel mask
3131 * ircd/send.c (vsendcmdto_one): forgot to account for the case
3132 where origin is a server and destination is a user
3134 * ircd/jupe.c: make jupe expire times relative to CurrentTime,
3135 since that should be monotonically increasing, instead of
3136 TStime(), which can be set backwards, and which can therefore
3137 cause an expire time to increase; make local jupes be removed
3138 instead of just deactivated
3140 * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
3141 limit is fine. any other warnings I should know about?
3143 2000-04-15 Thomas Helvey <tomh@inxpress.net>
3145 * ircd/*.c: const correctness and type safety cleanups to
3146 get code to compile with C++ compiler. Still has
3147 signed/unsigned comparison warnings.
3149 2000-04-15 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3151 * ircd/userload.c: change <sys/time.h> include to <time.h> for
3154 2000-04-14 Kevin L. Mitchell <klmitch@mit.edu>
3156 * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
3157 and convert acptr...
3159 * ircd/s_user.c: move gline_lookup function call into
3160 register_user, where it'll have a username to lookup!
3162 * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
3163 functions; also stuff send_error_to_client into return clauses
3165 * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
3166 functions; also use send_error_to_client where that makes sense
3168 * ircd/jupe.c: modify to utilize new sendcmdto_* series of
3169 functions; also use send_error_to_client where that makes sense
3171 * ircd/gline.c: modify to utilize new sendcmdto_* series of
3172 functions; also fix gline_lookup() to deal properly with remote
3173 clients--boy, do struct Client and struct User need to be cleaned
3176 * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
3179 * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
3180 sendcmdto_serv_butone(), all utilizing the %v conversion of
3183 * include/send.h: define IRC_BUFSIZE, max size of a message;
3184 declare sendcmdto_one(), vsendcmdto_one(), and
3185 sendcmdto_serv_butone()
3187 * include/msg.h: define all the CMD_* constants needed to utilize
3188 the new sendcmdto_* series of functions
3190 * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
3192 * ircd/gline.c: remove old, dead code.
3194 * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
3195 unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
3196 (don't advertise proxies); remove dead code
3198 * ircd/parse.c: oper handler for JUPE only lists jupes unless
3199 CONFIG_OPERCMDS is enabled
3201 * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
3202 CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
3204 * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
3205 always return ERR_DISABLED
3207 * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
3208 enabled, always return ERR_DISABLED
3210 * ircd/s_err.c: add error message to indicate disabled commands
3212 * include/numeric.h (ERR_DISABLED): to indicate disabled commands
3214 * doc/Configure.help: add documentation for CONFIG_OPERCMDS
3216 * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
3217 CONFIG_NEW_MODE to 'y' for now
3219 * ircd/gline.c (gline_list): fix a minor formatting bogon
3221 * BUGS: since I fixed that bug, might as well mark it fixed.
3223 * ircd/m_join.c: look up badchans with GLINE_EXACT
3225 * ircd/m_gline.c: fix parc count problems; look up existing
3226 G-lines with GLINE_EXACT; only set new lastmod when
3227 activating/deactivating existing glines if old lastmod was not 0
3229 * ircd/gline.c: forgot to copy the gline reason over; don't
3230 propagate a gline with 0 lastmod if origin is user; add
3231 GLINE_EXACT to force exact matching of gline mask
3233 * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
3236 * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
3237 but gline_lookup() actually takes a client--d'oh.
3239 2000-04-13 Thomas Helvey <tomh@inxpress.net>
3240 * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
3242 2000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3244 * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
3246 "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
3249 * ircd/whocmds.c: Change idle time calc from socket idle to user
3252 2000-04-13 Kevin L. Mitchell <klmitch@mit.edu>
3254 * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
3255 too, for ircd_snprintf.c
3257 * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
3258 comments; mostly descended from the Linux manpage for printf, but
3259 also documenting the extensions.
3261 * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
3262 client; make 'q' be the same as 'L'; remove __inline__; only
3263 define EXTENSION if HAVE_LONG_LONG is defined
3265 * include/handlers.h: declare m_gline()
3267 * ircd/parse.c: gline can be called by users, but it only lists
3270 * ircd/s_user.c (set_nick_name): resend gline if a remote server
3271 introduces a glined client
3273 * ircd/s_serv.c (server_estab): burst glines, too
3275 * ircd/gline.c: fix up all the expire times to be offsets;
3276 simplify gline_resend()
3278 * ircd/m_gline.c: begin coding replacements for ms_gline(),
3279 mo_gline(), and m_gline()
3281 * ircd/gline.c (gline_add): allow *@#channel to work correctly;
3282 also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
3284 2000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3286 * tools/Bouncer/*: Add comments/documentation/tags.
3287 * tools/Bouncer/*: Add debug defines, make task fork().
3289 2000-04-12 Thomas Helvey <tomh@inxpress.net>
3290 * ircd/s_err.c: Cleanup s_err.c make one table so we
3291 don't have to do anything tricky to get an error string.
3293 2000-04-12 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3294 * Add port bouncer for http (x/w)
3296 2000-04-12 Kevin L. Mitchell <klmitch@mit.edu>
3298 * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
3299 call to gline_find(); also used GlineReason() instead of direct
3300 reference to structure member
3302 * ircd/m_join.c (m_join): replace bad_channel() calls with calls
3303 to gline_find(name, GLINE_BADCHAN), and also check to see if gline
3306 * ircd/channel.c: nothing seems to be called anywhere...
3308 * ircd/s_err.c: update a couple of replies to dovetail with new
3311 * ircd/gline.c: begin complete re-implementation of gline.c along
3312 the lines of the final design of jupe.c
3314 * include/gline.h: begin complete re-implementation of gline.c
3315 along the lines of the final design of jupe.c
3317 * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
3318 %s by %s" message...
3320 * ircd/ircd_snprintf.c: my new snprintf()-like functions
3322 * include/ircd_snprintf.h: my new snprintf()-like functions
3324 2000-04-11 Thomas Helvey <tomh@inxpress.net>
3325 * ircd/IPcheck.c: removed old dead code
3326 * ircd/s_user.c (send_user_info): removed non-standard
3327 user not found message for userhost/userip
3329 2000-04-11 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3331 * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
3332 * doc/p10.html: Work on chapter 4.
3334 2000-04-10 Kevin L. Mitchell <klmitch@mit.edu>
3336 * ircd/channel.c (mode_parse_client): fix coredump on /mode
3337 #foobar +o nosuchnick
3339 2000-04-10 Perry Lorier <Isomer@coders.net>
3342 2000-04-09 Thomas Helvey <tomh@inxpress.net>
3343 * include/IPcheck.h: fix prototype
3344 * ircd/s_user.c: fix usage of IPcheck_remote_connect
3345 * ircd/IPcheck.c: removed unused args
3347 2000-04-09 Thomas Helvey <tomh@inxpress.net>
3348 * include/IPcheck.h: add proto for IPcheck_expire
3350 * ircd/IPcheck.c: Rewrote
3352 * ircd/ircd.c: Add IPcheck_expire to main message loop
3354 * ircd/s_user.c: Redo target hashing, refactor target code
3356 * include/numeric.h: Cleaned up numerics, added which ones are
3357 in use by other networks and what they are in use for.
3359 * ircd/channel.c: cleaned can_join(), allow anyone through anything
3360 if /invited, simplified the function. Opers overusing OPEROVERRIDE
3361 will get a message explaining to them not to cheat.
3363 * ircd/m_join.c: cleaned up the various join functions, should be
3364 a lot more efficient. Still needs work. Now assumes that s<->s
3365 won't send it a JOIN 0. Service coders - note this and tread with
3368 * ircd/m_stats.c: added Gte-'s stats doc patch.
3370 * ircd/m_version.c: /version now returns the 005 numeric as well.
3371 as requested by Liandrin.
3374 2000-04-07 Kevin L. Mitchell <klmitch@mit.edu>
3376 * ircd/m_clearmode.c: add include for support.h for write_log()
3378 * configure: move ircd/crypt/* to tools/*
3380 2000-04-06 Thomas Helvey <tomh@inxpress.net>
3381 * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
3382 set client host to server alias if connection from localhost
3384 2000-04-06 Perry Lorier <isomer@coders.net>
3385 * ircd/ircd.c: Fix core during pinging (oops)
3387 2000-04-06 Perry Lorier <isomer@coders.net>
3388 * ircd/send.c: fixed wrong ident being sent to channels bug.
3389 * include/numerics.h: Updated some of the numerics from other
3390 networks. Flagged some as 'unused' by undernet.
3392 2000-03-30 Perry Lorier <isomer@coders.net>
3393 * ircd/ircd.c: Lets see if this helps the ping problem at all.
3394 * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
3395 time for local clients. (as requested), extended who now returns all
3396 the flags (@+!) so you can tell the complete state of a client.
3398 2000-03-30 Thomas Helvey <tomh@inxpress.net>
3399 * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
3401 2000-03-30 Perry Lorier <isomer@coders.net>
3402 * ircd/parse.c: oops, missed opers.
3404 2000-03-30 Perry Lorier <isomer@coders.net>
3405 * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
3406 for so long. Remember: m_ping MUST be in the parse array. :)
3408 2000-03-30 Perry Lorier <isomer@coders.net>
3409 * ircd/ircd.c: test in check_pings was wrong. I move that we
3410 disallow cvs commit after 10pm localtime....
3412 2000-03-30 Perry Lorier <isomer@coders.net>
3413 * ircd/m_pong.c: Fix it for servers too.
3415 2000-03-30 Perry Lorier <isomer@coders.net>
3416 * ircd/m_pong.c: Fix ping timeout bugs
3418 2000-03-30 Perry Lorier <isomer@coders.net>
3419 * ircd/channel.c: Bans had CurrentTime in their when field instead
3422 2000-03-31 Thomas Helvey <tomh@ixpress.net>
3423 * ircd/numnicks.c (SetXYYCapacity): fix for extended
3426 2000-03-30 Perry Lorier <isomer@coders.net>
3427 * ircd/m_nick.c: send kills both ways so when we add nick change
3428 on collision we don't desync the network.
3430 * ircd/map.c: Fixup the map a bit more.
3432 2000-03-31 Kevin L. Mitchell <klmitch@mit.edu>
3434 * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
3436 * ircd/m_opmode.c: Log the mode changes to OPATH
3438 * ircd/channel.c (modebuf_flush_int): Log the mode changes to
3441 * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
3444 * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
3446 * config/config-sh.in: added OPATH for opmode log file
3448 * ircd/m_clearmode.c (do_clearmode): updated uses of
3449 modebuf_mode_string() for the new usage
3451 * ircd/channel.c: added flag MODE_FREE and an int argument to
3452 modebuf_mode_string() to indicate that the string must be free'd;
3453 updated calls to modebuf_mode_string() for the new usage; called
3454 collapse(pretty_mask()) on the ban string and use allocated memory
3455 for it; added ban list length accounting; fixed a number of small
3456 bugs in ban processing
3458 * include/channel.h: added flag MODE_FREE and an int argument to
3459 modebuf_mode_string() to indicate that the string must be free'd
3461 * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
3462 keys and limits that are set
3464 2000-03-30 Perry Lorier <isomer@coders.net>
3465 * ircd/ircd.c: rewrote check_pings() for maintainability
3466 and speed. Also changed quit msg's so they don't have
3467 redundant nick[host] info in them.
3469 * ircd/send.c: Changed write errors to report what error
3470 occured (if possible).
3472 * ircd/gline.c: added gline comment to the quit.
3474 * ircd/m_server.c: Added suggestions to server quits mentioning
3475 what went wrong so the admin can fix it earlier instead of asking
3478 * ircd/map.c: Changed m_map() to hide numerics, show a * beside
3479 servers that aren't fully burst yet. And show '(--s)' for servers
3482 * doc/example.conf: Fixed wrapped U:
3484 2000-03-30 Kevin L. Mitchell <klmitch@mit.edu>
3486 * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
3487 mode_parse() (version selectable at compile time)
3489 * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
3491 * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
3493 * config/config-sh.in: add new config option to enable new m_mode
3496 * doc/Configure.help: add documentation for new config option
3499 * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
3500 MODE -v : Not enough parameters
3502 * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
3503 +k and +l even if they weren't set...
3505 * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
3507 * ircd/channel.c: make mode_process_clients() clear the DEOPPED
3508 flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
3509 for; test the 0-th member, not the i-th member, of the client
3512 * ircd/m_clearmode.c (do_clearmode): use the new
3513 mode_invite_clear() function
3515 * ircd/channel.c: cleared up all the compile-time warnings and
3518 * include/channel.h: added declarations for mode_ban_invalidate()
3519 and mode_invite_clear()
3521 * ircd/channel.c: finished mode_parse(), then broke it up into a
3522 dozen or so helper functions to make the code easier to read
3524 2000-03-29 Thomas Helvey <tomh@inxpress.net>
3525 * ircd/ircd.c: refactor server initialization a bit, use
3526 getopt for parsing command line, refactor init_sys, main,
3529 * ircd/s_bsd.c: add functions for initialization to clean
3530 up logic a bit and remove duplicated code.
3532 * include/ircd.h: add struct for server process related
3535 2000-03-29 Kevin L. Mitchell <klmitch@mit.edu>
3537 * ircd/channel.c: initial definition of mode_parse(); flags to
3538 prevent doing the same thing multiple times; helper method
3539 send_notoper() to send a "Not oper"/"Not on channel" notice
3541 * include/channel.h: declare mode_parse() and helper flags
3543 * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
3544 sending to match the current action of set_mode() closely enough
3545 that hopefully there won't be major conflicts
3547 * ircd/channel.c (modebuf_flush_int): consolidated the mode string
3548 building logic, reversed the order of the arguments to mode
3549 commands to have '-' preceed '+'
3551 2000-03-29 Thomas Helvey <tomh@inxpress.net>
3552 * ircd/s_bsd.c (add_connection): don't disable socket options
3553 let OS tune itself and allow important performance tweaks to
3556 2000-03-28 Kevin L. Mitchell <klmitch@mit.edu>
3558 * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
3559 confused by set_mode, which is doing some really weird logic;
3560 guess what I'm going to rewrite next? ;)
3562 2000-03-28 Kevin L. Mitchell <klmitch@emc.com>
3564 * include/channel.h: added MODE_SAVE for the bounds checking stuff
3567 * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
3568 make it do bounds checking on the buffer; all modes are sent only
3569 if the all parameter is 1; modebuf_flush is the exported wrapper
3571 * include/channel.h: add BOUNCE, renumber flags to get a little
3574 * ircd/channel.c (modebuf_flush): don't overload HACK2, add
3575 BOUNCE; send DESYNCH message
3577 2000-03-27 Kevin L. Mitchell <klmitch@emc.com>
3579 * ircd/m_clearmode.c (do_clearmode): only mark the modes the
3580 channel actually has in effect for deletion
3582 * ircd/channel.c: added explanatory comments to all added
3583 functions; made flushing take place at the correct place even if
3584 the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
3585 to bash some stupid bugs; made modebuf_flush() return if ModeBuf
3586 is empty, fixed the apparent source, removed some bogus string
3587 termination code, properly terminate the mode strings, add support
3588 for HACK2 and HACK3, made limit strings not be sent if the limit
3589 is being removed, changed where '+' and '-' come from in sent
3590 strings, added support for DEOP flag, set up bouncing code for
3593 * ircd/Makefile.in: ran make depend
3595 * include/channel.h: added new defines for future functionality,
3596 made modebuf_flush() return int so I can use tail recursion
3598 * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
3599 to make it all compile
3601 * ircd/m_opmode.c: add msg.h to includes...
3603 * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
3605 * ircd/channel.c (modebuf_flush): realized I forgot to
3606 nul-terminate addbuf/rembuf properly...
3608 * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
3610 * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
3611 sendto_serv_butone--blah^2
3613 * ircd/send.c (sendto_serv_butone): stupid comments confused me
3615 * ircd/channel.c (modebuf_flush): if there are no mode changes to
3616 propagate, we're done...
3618 * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
3619 not sendto_all_butone
3621 * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
3623 * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
3625 * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
3628 * ircd/parse.c: added messages for opmode and clearmode
3630 * include/handlers.h: added declarations for mo_opmode(),
3631 ms_opmode(), mo_clearmode(), and ms_clearmode()
3633 * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
3636 * include/channel.h (MODEBUF_DEST_OPMODE): Define the
3637 MODEBUF_DEST_OPMODE flag
3639 * ircd/channel.c (modebuf_flush): added new flag,
3640 MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
3641 to originate from source's server (or source itself, if
3642 IsServer(source)); also causes a server-level MODE to be sent as
3645 * include/channel.h: defined MODEBUF_DEST_SERVER,
3648 * ircd/channel.c: Add another argument to build_string() to handle
3649 numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
3650 servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
3653 2000-03-27 Perry Lorier <isomer@coders.net>
3655 * ircd/s_bsd.c: fixed missing 'u' typo.
3657 2000-03-26 Kevin L. Mitchell <klmitch@emc.com>
3659 * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
3660 _mode_string(), _mode_client(), _flush(); also implemented a
3661 simple build_string()
3663 * include/channel.h: added definition of ModeBuf, modebuf_*
3664 manipulation functions, and a couple of helper macros
3666 2000-03-24 Thomas Helvey <tomh@inxpress.net>
3667 * numicks.c: convert extended numerics to use original mask version
3670 2000-03-23 Thomas Helvey <tomh@inxpress.net>
3671 * Merge in changes from production
3672 2000-03-22 Thomas Helvey <tomh@inxpress.net>
3673 * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
3674 * rfc1459.unet: Add Maniac's documentation for /names 0
3675 * Fix misc. jupe bugs that somehow made it into the tree
3676 * Escape /names 0 to mean /names --Maniac
3677 * Don't core when server asks for info --Maniac
3678 * Add Kev's jupe patch --Bleep
3679 * Add Maniacs squit patch --Bleep
3680 * Merge in u2_10_10_beta07 changes --Bleep
3681 * Merge in u2_10_10_beta06 changes --Bleep
3682 * Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
3683 #-----------------------------------------------------------------------------