738641e8a91b8dd67e3f7391c920a6b873bbf61b
[ircu2.10.12-pk.git] / ChangeLog
1 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
2
3         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
4         forgot to check in the events branch
5
6 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
7
8         * ircd/res.c (init_resolver): don't start DNS expires with a 0
9         relative timeout--if the server starts slow, timeouts could be
10         messy...there's probably a better solution, but this'll do for now
11
12         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
13         headers very well; include stropts.h; define an os_set_tos()
14
15         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
16         os_generic.c
17
18         * ircd/ircd.c: if there are no C-lines, we don't want to have a
19         timer that expires at the absolute time of 0--it kinda blocks all
20         the other timers!
21
22         * ircd/engine_devpoll.c: some includes for open(); declare errcode
23         and codesize in engine_loop()
24
25         * ircd/list.c (free_client): remove bogus check on timer active
26         flag
27
28         * ircd/s_auth.c: pull out destruction code in
29         auth_timeout_request() into an externally-visible
30         destroy_auth_request(); manage cli_auth pointer in client
31         structure; use it for an extra assertion check
32
33         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
34         debugging notices to show flow when deallocating
35         connections/clients; call destroy_auth_request() when free'ing a
36         client that has an auth outstanding; don't free the connection if
37         the process timer is unmarked but still active
38
39         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
40         and reset it before calling the event handler for an ET_DESTROY
41         event
42
43         * include/s_auth.h (destroy_auth_request): declare
44         destroy_auth_request(), which can be used to destroy an
45         outstanding auth request if a client socket goes away before the
46         auth exchange is completed
47
48         * include/ircd_events.h: add an active flag to keep track of
49         whether or not particular generators are active, for the
50         convenience of functions using the API
51
52         * include/client.h: add a pointer for auth requests to struct
53         Connection so we can kill outstanding auth requests if a client
54         socket closes unexpectedly
55
56         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
57         the sock or timer callback; take that into account in the assert
58
59         * ircd/list.c: add magic number checking and setting--magic
60         numbers are zero'd on frees to detect double-frees; add back
61         setting of cli_from() to 0 to break the back-link from the struct
62         Connection (duh)
63
64         * ircd/ircd.c: set me's magic number correctly
65
66         * include/client.h: define magic numbers and accessor/verifier
67         macros
68
69         * ircd/list.c: assert that dealloc_client() is called with
70         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
71         dealloc_client(); don't mess with cli_from(cptr)
72
73         * ircd/s_bsd.c: only attempt to dealloc a connection if the
74         associated client has already been destroyed, or at least delinked
75
76 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
77
78         * ircd/list.c (free_client): only try to delete the socket when
79         the fd hasn't already been closed, avoiding a double-free
80
81         * ircd/list.c (free_connection): make sure the client is really
82         gone before doing away with the connection
83
84         * ircd/s_bsd.c: record that socket has been added in con_freeflag
85         field; queue a socket_del() as soon as the socket is close()'d;
86         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
87         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
88         then dealloc the connection if safe; mark socket as dead when
89         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
90         to client_timer_callback(); dealloc connection if safe upon
91         ET_DESTROY event in client_timer_callback()
92
93         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
94         the connection if both socket and timer have been destroyed;
95         destroy both socket and timer explicitly and carefully
96
97         * include/client.h: replace the con_timer field with a
98         con_freeflag field, to indicate what still needs freeing; define
99         the freeflags
100
101         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
102         become 0
103
104         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
105         become 0
106
107         * ircd/s_bsd.c: add some extra assertions to try to track down a
108         corruption problem
109
110         * ircd/engine_select.c (engine_loop): add an extra assert to try
111         to track down a corruption problem
112
113         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
114         track down a corruption problem
115
116         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
117         to track down a corruption problem
118
119         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
120         empty during processing; add an extra assert to try to track down
121         a corruption problem
122
123         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
124         entries
125
126 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
127
128         * ircd/s_bsd.c (client_sock_callback): client is no longer
129         blocked, so we must mark it as unblocked
130
131         * ircd/engine_select.c: add Debug() calls galore; add handling for
132         SS_NOTSOCK; use a dummy sock variable to keep things from
133         disappearing on us; correct timeout calculation; update nfds for
134         efficiency
135
136         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
137         remove a spurious "if (sock)" which will always be true; update
138         nfds for efficiency
139
140         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
141         SS_NOTSOCK (just in case); correct timeout calculation
142
143         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
144         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
145
146         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
147         pretty-indent numbers
148
149         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
150         case--it's not a socket; the check for writability is most likely
151         not needed, but present for completeness
152
153 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
154
155         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
156         no newline flag is set; call read_packet() when the timer expires,
157         regardless of what's in the buffer--read_packet() should be able
158         to deal properly
159
160         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
161         sent to clients to include the client nickname (duh)
162
163         * ircd/ircd_events.c: don't destroy a timer if it's already marked
164         for destruction; replace a missing ! in socket_del()
165
166         * ircd/engine_poll.c (engine_loop): reference a temporary variable
167         so we don't have to worry about sockList[i] going away
168
169         * ircd/s_bsd.c (client_sock_callback): add Debug messages
170
171         * ircd/s_auth.c: add Debug messages all over the place
172
173         * ircd/ircd_events.c: add and edit some Debug messages; add a list
174         of routines to convert some of the enums and flags from numbers
175         into human-readable strings for the Debug messages
176
177         * ircd/engine_poll.c: hack some Debug messages to use the new name
178         conversion routines in ircd_events.c; add an extra assert for a
179         condition that shouldn't ever happen; apparently recv() can return
180         EAGAIN when poll() returns readable--I wonder why...
181
182         * include/ircd_events.h: declare some helper routines under
183         DEBUGMODE
184
185 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
186
187         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
188         check
189
190         * ircd/s_auth.c: add more Debug messages
191
192         * ircd/list.c (make_client): add an extra assertion check
193
194         * ircd/ircd_events.c (socket_events): don't call the engine events
195         changer if we haven't actually made any changes to the event mask
196
197         * ircd/uping.c: add some Debug messages
198
199         * ircd/s_stats.c: document new /STATS e
200
201         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
202
203         * ircd/s_bsd.c: remove static client_timer variable; in
204         read_packet(), if there's still data in the client's recvQ after
205         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
206         of client_sock_callback to handle destroying the timer properly;
207         rewrote client_timer_callback from scratch to be called on an
208         individual client
209
210         * ircd/m_stats.c: add /STATS e to report the engine name
211
212         * ircd/list.c: deal with con_timer field in struct Connection
213         properly; correct a core-level bug in remove_client_from_list--if
214         the client is the only one in the list, we try to update
215         GlobalClientList's cli_prev pointer--not good
216
217         * ircd/ircd.c: remove call to init_client_timer()
218
219         * ircd/engine_poll.c: made Debug messages more uniform by
220         prepending "poll:" to them all; corrected an off-by-one error that
221         caused poll_count to be 1 less than the actual count and removed
222         my work-around; added Debug messages to indicate which socket is
223         being checked and what the results are
224
225         * ircd/Makefile.in: ran a make depend
226
227         * include/s_bsd.h: remove init_client_timer(), since we're doing
228         it differently now
229
230         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
231         engine name
232
233         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
234         reports for non-opers
235
236         * include/client.h: add con_timer and con_proc fields to struct
237         Connection and define accessor macros--con_timer marks that
238         con_proc contains a valid timer, and con_proc is used to pace user
239         data
240
241         * ircd/s_bsd.c (close_connection): let free_client() destroy the
242         socket
243
244         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
245         auth has begun on a client
246
247         * ircd/ircd_events.c: ensure that event_execute() is called with a
248         non-NULL event; modify event_add() macro to properly zero list
249         bits; modify gen_dequeue() to not try to clip it out of a list
250         it's already been clipped out of; change signal socket
251         initialization to use state SS_NOTSOCK; permit timeout values of
252         0 in add_timer(); add many Debug calls; change socket_del() and
253         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
254         timer_run() instead of GEN_DESTROY so that event_generate() will
255         pass on the events; remove the switch and replace with a simpler
256         if-then-else tree in timer_run(); don't allow destroyed sockets to
257         be destroyed again, nor their states or event masks to be changed
258
259         * ircd/ircd.c: initialize "running" to 1
260
261         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
262         messages all over the place; fix a counting problem in
263         engine_add(); turn wait into a signed integer and set it to -1
264         only if timer_next() returns 0; adjust wait time to be relative;
265         don't call gen_ref_dec() if socket disappeared while we were
266         processing it
267
268         * include/ircd_events.h: the pipe for signals is not a socket, so
269         we must mark it as such--added SS_NOTSOCK for that special socket;
270         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
271         for the benefit of timer_run()
272
273         * configure.in: add --enable-pedantic and --enable-warnings to
274         turn on (and off) -Wall -pedantic in CFLAGS
275
276 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
277
278         * ircd/s_conf.c: change "s_addr" element accesses to "address"
279         element accesses
280
281         * include/s_conf.h: on some systems, "s_addr" is a macro; use
282         "address" instead
283
284 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
285
286         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
287         void in this file; add a missing semi-colon; declare errcode,
288         codesize
289
290         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
291
292         * ircd/s_user.c (register_user): comment out spurious reference to
293         nextping
294
295         * ircd/s_serv.c (server_estab): comment out spurious reference to
296         nextping
297
298         * ircd/s_conf.c (read_configuration_file): comment out spurious
299         reference to nextping and nextconnect
300
301         * ircd/s_bsd.c: comment out some spurious references to formerly
302         global (now non-existant) variables; correct a couple of typos
303
304         * ircd/s_auth.c: pre-declare some functions referenced in the
305         callback; correct a typo
306
307         * ircd/res.c (start_resolver): pass errno value of ENFILE
308
309         * ircd/listener.c (accept_connection): you know your API is messed
310         up when...variables that shouldn't have been global crop up in
311         other files
312
313         * ircd/list.c (free_client): substitution of == for =
314
315         * ircd/ircd_signal.c: include assert.h for assertion checking;
316         check ev_data() to find out what signal generated event
317
318         * ircd/ircd_events.c: some references to the variable "timer"
319         should have been references to the variable "ptr"
320
321         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
322         ev_timer(ev) is already a timer pointer; declare codesize as a
323         size_t to correct signedness issue; use timer_next(), not
324         time_next()
325
326         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
327         select fd out of struct pollfd in assertion checking; declare
328         errcode and codesize; use timer_next(), not time_next()
329
330         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
331         use function timer_next(), not time_next()
332
333         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
334         use function timer_next(), not time_next()
335
336         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
337         compiled sources; do make depend
338
339         * include/list.h: pre-declare struct Connection
340
341         * include/ircd_events.h (gen_ref_inc): cast to the right structure
342         name
343
344         * include/s_auth.h: duh; missing */
345
346 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
347
348         * ircd/send.c: update write events status after sending data or
349         accumulating data to be sent
350
351         * ircd/m_list.c (m_list): update write events status after
352         canceling a running /list
353
354         * ircd/channel.c (list_next_channels): update write events status
355         after listing a few channels
356
357         * ircd/s_bsd.c: extensive changes to update to new events model;
358         remove on_write_unblocked() and the two implementations of
359         read_message(), which have been deprecated by this change
360
361         * ircd/s_auth.c: set the socket events we're interested in for
362         clients; simplify some logic that does the connect_nonb followed
363         by the socket_add
364
365         * ircd/list.c: define free_connection() to free a connection
366         that's become freeable once the struct Socket has been
367         deallocated; fix up free_client() to take this new behavior into
368         account
369
370         * ircd/ircd.c: call init_client_timer()
371
372         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
373         to register connect-in-progress with events system; declare
374         init_client_timer() (HACK!) to preserve rate-limiting behavior
375
376         * include/list.h: declare new free_connection()
377
378         * include/client.h: add a struct Socket to struct Connection
379
380 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
381
382         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
383         SIGTERM into event callbacks; perform the actions in the
384         callbacks, since they're not called in the context of the signal;
385         set up the signal callbacks in the event engine
386
387         * ircd/ircd_events.c (signal_callback): we're supposed to look for
388         a specific signal; don't generate an event if there is no signal
389         structure for it
390
391         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
392         connect_timer and ping_timer; massage try_connections() and
393         check_pings() into timer callbacks that re-add themselves at the
394         right time; remove ircd.c's "event_loop()"; initialize the event
395         system and the connect_timer and ping_timer
396
397         * ircd/uping.c: correct a couple more typos
398
399         * ircd/s_auth.c: rework to use new events system
400
401         * ircd/os_solaris.c (os_connect_nonb): update to new interface
402
403         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
404
405         * ircd/os_linux.c (os_connect_nonb): update to new interface
406
407         * ircd/os_generic.c (os_connect_nonb): update to new interface
408
409         * ircd/os_bsd.c (os_connect_nonb): update to new interface
410
411         * include/s_auth.h: remove deprecated members of struct
412         AuthRequest, replacing them with struct Socket and struct Timer
413         structures; add flags to indicate when these structures have been
414         released by the event system; remove the deprecated
415         timeout_auth_queries()
416
417         * include/ircd_osdep.h (os_connect_nonb): connect could complete
418         immediately, so change the interface to handle that possibility
419
420         * ircd/uping.c (uping_server): noticed and corrected a typo
421
422         * ircd/listener.c: set up to use ircd_event's struct Socket by
423         adding an socket_add() call to inetport(), replacing
424         free_listener() with socket_del() in close_listener(), and
425         reworking accept_connection to be called as the callback
426
427         * ircd/ircd.c: add a call to IPcheck_init()
428
429         * ircd/IPcheck.c: remove IPcheck_expire(); rework
430         ip_registry_expire() to be called from a timer; write
431         IPcheck_init() to set up the expiration timer (hard-coded for a
432         60-second expiration time)
433
434         * include/listener.h: add a struct Socket to the struct Listener;
435         remove accept_connection()
436
437         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
438
439 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
440
441         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
442         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
443
444         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
445         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
446
447         * ircd/engine_poll.c: include config.h
448
449         * ircd/engine_kqueue.c: include config.h
450
451         * ircd/engine_devpoll.c: include config.h
452
453         * ircd/Makefile.in: include engine sources in compilation and make
454         depend steps
455
456         * configure.in: add checks for enabling the /dev/poll- and
457         kqueue-based engines
458
459         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
460
461         * ircd/Makefile.in: work in the engine sources
462
463 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
464
465         * ircd/m_settime.c: include ircd_snprintf.h
466
467         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
468         parens around a construct that had both || and &&
469
470         * ircd/chkconf.c: #include "config.h" to get some important
471         definitions
472
473         * ircd/Makefile.in: revamp ircd makefile for new build system
474
475         * doc/Makefile.in: revamp doc makefile for new build system
476
477         * config/*: Removed old build system files
478
479         * stamp-h.in: a stamp file
480
481         * install-sh: install-sh for new build system
482
483         * configure.in: configure.in for new build system
484
485         * configure: configure script for new build system (built by
486         autoconf)
487
488         * config.sub: config.sub for new build system
489
490         * config.h.in: config.h.in for new build system (built by
491         autoheader)
492
493         * config.guess: config.guess for new build system
494
495         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
496         1.4)
497
498         * acinclude.m4: aclocal.m4 macros for new build system
499
500         * acconfig.h: config.h skeleton for new build system
501
502         * Makefile.in: modify for new build system
503
504 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
505
506         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
507
508         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
509
510         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
511
512 2001-05-01  Perry Lorier       <Isomer@coders.net>
513         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
514         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
515                 when you have far far too many sockets in use.
516         * {include,ircd}/iauth.c: A start on iauth support.
517
518 2001-05-01  Perry Lorier       <Isomer@coders.net>
519         * ircd/s_err.c: Suggested wording change.
520         * ircd/s_user.c: Users aren't target limited against +k users.
521         * ircd/chkconf.c: Made it compile again, who knows if it works, but
522                 now I can at least make install
523         * various: Cleanups on m_*.c files.
524
525
526 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
527
528         * ircd/s_misc.c (exit_client): make netsplit server notice say the
529         right thing
530
531         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
532         change to make Khaled happy...
533
534         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
535         (do_whois): duh...
536
537 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
538
539         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
540         turned up no more bugs
541
542         * ircd/ircd.c: use /* */ comments instead of // comments--all the
543         world's not gcc :(
544
545         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
546         // comments--all the world's not gcc :(
547
548         * ircd/runmalloc.c: finally garbage-collect unused file
549
550         * include/runmalloc.h: finally garbage-collect unused file
551
552         * ircd/<multiple files>: addition of '#include "config.h"' before
553         all other includes in most .c files
554
555         * include/<multiple files>: remove includes of config.h, which are
556         now going into the raw .c files
557
558 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
559
560         * ircd/m_whois.c (do_whois): display proper server name if the
561         user is looking up himself
562
563         * ircd/m_who.c (m_who): disable match by servername or display of
564         server names by non-opers
565
566         * include/ircd_policy.h: add define for
567         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
568         of CFV 165
569
570 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
571
572         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
573         when we do a /stats k
574
575         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
576         users from turning on +s and +g
577
578         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
579         net.split notice
580
581         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
582         /map for users
583
584         * ircd/m_whois.c (do_whois): pull-up of server name masking for
585         /whois
586
587         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
588         functions, pull-up
589
590         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
591
592         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
593
594         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
595
596         * ircd/channel.c (channel_modes): pull-up of channel key display
597         as *
598
599         * include/ircd_policy.h: pull-up of ircd_policy.h
600
601         * include/client.h: pull-up of Set/ClearServNotice()
602
603         * ircd/gline.c (do_gline): report client name in G-line message
604         (pull-up)
605
606         * ircd/s_user.c (register_user): pull-up--show IP address in some
607         server notices dealing only with users; report which connection
608         class has filled up
609
610         * ircd/s_stats.c (report_deny_list): use conf->flags &
611         DENY_FLAGS_IP insteaf of conf->ip_kill
612
613         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
614         insteaf of conf->ip_kill
615
616         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
617         K-line by real name
618
619         * include/s_conf.h: use a flags field in struct DenyConf; define
620         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
621         pull-up of K-line by real name
622
623         * ircd/m_trace.c: pull-up of IP show for user connections
624
625         * doc/example.conf: pull-up of the realname K-line documentation
626
627         * ircd/ircd.c: forward port of pid file advisory locking mechanism
628
629 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
630
631         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
632         all servers, rather than to only servers that have +w/+g/whatever
633         users on them; among other things, this removes that atrocity
634         known as sentalong[] from this function
635
636         * ircd/m_admin.c: must include ircd.h to declare "me"; must
637         include hash.h to declare FindUser()
638
639         * ircd/m_wallusers.c: implementation of WALLUSERS
640
641         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
642
643         * ircd/m_wallops.c: only send WALLOPS to opers
644
645         * ircd/parse.c: add WALLUSERS command to parser table
646
647         * include/handlers.h: declare wallusers handlers
648
649         * include/msg.h: add WALLUSERS command
650
651         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
652         flag, send only to appropriate opers
653
654 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
655
656         * ircd/uping.c: refit to use the new events interface
657
658         * ircd/res.c: refit to use the new events interface
659
660         * ircd/ircd_events.c: create timer_chg(), which permits a
661         (non-periodic) timer's expire time to be modified; change the
662         logic in timer_run() so that timers that were re-added while the
663         event was being processed will not be destroyed prematurely
664
665         * include/uping.h: include the events header, declare some extra
666         fields in struct UPing, remove timeout value, and define some
667         flags for marking which cleanup items have yet to be done
668
669         * include/ircd_events.h: add a prototype for timer_chg() to change
670         the expire time of a running timer
671
672 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
673         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
674         
675 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
676
677         * config/configure.in: Add check for OpenBSD
678
679         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
680         differs from generic BSD, particularly in its handling of
681         _XOPEN_SOURCE.
682         
683 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
684
685         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
686         have been added by a U-lined server, rather than going through the
687         activate/deactivate logic; propagate G-line removals by U-lined
688         servers as well
689
690         * ircd/gline.c: rename propagate_gline() to gline_propagate();
691         make gline_propagate() return an int 0 (convenience return); only
692         update lastmod in gline_activate() and gline_deactivate() if the
693         current lastmod is non-zero, since 0 lastmod is our flag of a
694         U-lined server having added a G-line
695
696         * include/gline.h (gline_propagate): exporting the G-line
697         propagation function
698
699         * ircd/m_list.c (m_list): duh; permit explicit channel name
700         specification only when /list gets two arguments ("Kev
701         #wasteland") rather than when /list gets more than two
702         arguments--nice braino
703
704 2001-01-29  Thomas Helvey <twhelvey1@home.com>
705
706         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
707         unregistered clients to spam opers with protocol violation
708         messages. Note: the bugfix may have eliminated some useful
709         protocol violation messages.
710         Please send protocol violation messages explicitly from the
711         functions they are discovered in, you have much better context
712         for the error there and it helps to document the behavior of the
713         server. This was also a design bug in that it violated the
714         "A function should do one thing" heuristic. Patching this one
715         would have resulted in a continuous spawning of other bugs over
716         the next 3 years, so I killed it. Check around for stuff this
717         broke and readd the calls to protocol_violation in the functions
718         that need to send the message.
719
720 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
721
722         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
723         already existed, then the logic would (attempt to) skip it, but
724         would not free the ban string; now the ban string is free'd and
725         the ban count is decremented, releasing the ban for use
726
727         * ircd/s_user.c: make send_umode_out() take a prop argument
728         instead of testing for the PRIV_PROPAGATE privilege itself; fix
729         set_umode() to use this new argument, calculating it before
730         calculating the new privileges for a -o'd user
731
732         * ircd/m_oper.c (m_oper): pass the new prop argument to
733         send_umode_out()
734
735         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
736         that we're not actually going to add because they already exist;
737         test that particular bit before adding to the linked list
738
739         * include/s_user.h: add a prop argument to send_umode_out() to
740         indicate whether or not to propagate the user mode
741
742 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
743
744         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
745         it would have written; upper-bound the number to prevent overflows
746         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
747         into account the fact that ircd_vsnprintf() already takes the
748         terminal \0 into account
749
750 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
751
752         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
753         down an apparent buffer overflow; remove msgq_map(), since it's no
754         longer used anywhere; slight tweaks to prevent off-by-one errors,
755         but these can't explain the problems we've seen
756
757         * include/msgq.h: remove msgq_map(), since it's no longer used
758         anywhere
759
760 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
761
762         * ircd/s_user.c (set_nick_name): call client_set_privs() after
763         parsing user modes
764
765 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
766
767         * ircd/s_bsd.c (read_message): fix a typo in the select version of
768         read_message()
769
770         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
771         its argument to be an lvalue, which means we can't use
772         whowas_clean()'s handy-dandy "return ww" feature
773
774         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
775
776 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
777
778         * ircd/ircd_events.c (timer_run): it's possible that the timer got
779         deleted during the callback processing, so don't go to the bother
780         of requeuing it if the destroy flag is set
781
782         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
783         out of config.h if this is a *BSD; include errno.h (oops);
784         decrement error count after an hour using a timer; use FD_SETSIZE
785         constant instead of IRCD_FD_SETSIZE constant; fill in event
786         processing code
787
788         * ircd/engine_poll.c: include errno.h (oops); decrement error
789         count after an hour using a timer; fill in event processing code
790
791         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
792         count after an hour using a timer; assert events filter is either
793         EVFILT_READ or EVFILT_WRITE; fill in event processing code
794
795         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
796         count after an hour using a timer; fill in event processing code
797
798 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
799
800         * ircd/client.c: fixed feattab; basically, when I changed features
801         to use small integers specifying bit positions, instead of the
802         bits themselves, I forgot to update feattab to not | these
803         privileges together; also fixed a bug in the antiprivs masking
804         loop in client_set_privs()--last index wouldn't get parsed
805
806 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
807
808         * ircd/ircd_events.c: call event_generate() with new data
809         argument; make it set that field in struct Event; make
810         socket_add() return the value of the eng_add callback
811
812         * ircd/engine_select.c: make engine_add() return a
813         successful/unsuccessful status; add bounds-checking outside of an
814         assert; use accessor macros; use log_write(), not the deprecated
815         ircd_log(); add an assert to engine_loop() to double-check for
816         data structure corruption
817
818         * ircd/engine_poll.c: make engine_add() return a
819         successful/unsuccessful status; add bounds-checking outside of an
820         assert; use accessor macros; use log_write(), not the deprecated
821         ircd_log(); add an assert to engine_loop() to double-check for
822         data structure corruption
823
824         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
825
826         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
827
828         * include/ircd_events.h: define some accessor macros; add ev_data
829         to struct Event for certain important data--errno values, for
830         instance; make EngineAdd callback tell us if it was successful or
831         not; add extra argument to event_generate(); make socket_add()
832         return the status from EngineAdd
833
834 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
835
836         * ircd/ircd_events.c: pass initializer information about how many
837         total _filedescriptors_ may be opened at once
838
839         * ircd/ircd.c: use exported "running" instead of unexported
840         thisServer.running
841
842         * ircd/engine_select.c: implementation of an event engine based on
843         select()
844
845         * ircd/engine_poll.c: implementation of an event engine based on
846         poll()
847
848         * include/ircd_events.h: pass the engine initializer an integer
849         specifing how many _filedescriptors_ may be opened at once
850
851         * include/ircd.h: running has to be exported for the engine_*
852         event loops
853
854 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
855
856         * ircd/ircd_events.c: include some needed headers; add some
857         comments; make evEngines[] const; bundle sig_sock and sig_fd into
858         a struct named sigInfo; rework struct evInfo to have a queue of
859         _generators_, and only when threaded; added a gen_init() function
860         to centralize generator initialization; fix various compile-time
861         errors; rework event_add() for new queueing scheme and checked for
862         compile-time errors; add casts where needed; spell evEngines[]
863         correctly; make engine_name() return const char*
864
865         * include/ircd_events.h: type EventCallBack depends on struct
866         Event, so pre-declare it; put _event_ queue into generators, and
867         only when threaded; give engine data a union to store both ints
868         and pointers; make engine name a const; fix gen_ref_dec() macro;
869         make engine_name() return a const char*
870
871         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
872         down with the non-static functions; modify event_execute() to use
873         the new gen_ref_dec() to simplify code; make sure event_generate()
874         does not generate new events for generators marked for destruction
875
876         * include/ircd_events.h: the engines, at least, may need to modify
877         reference counts to keep generators from going away while
878         something still points at them, so add reference counter
879         manipulators and export gen_dequeue() for them
880
881         * ircd/ircd_events.c: set up the list of engines to try; set up
882         the signal struct Socket; rename netInfo to evInfo; move static
883         functions near the beginning of the file; do away with
884         signal_signal() (since we no longer keep a signal count ourselves)
885         and call event_generate() directly from signal_callback--also
886         renamed some functions; allow signal_callback() to read up to
887         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
888         initialize the entire event system; add event_loop() to call the
889         engine's event loop; initialize new struct GenHeader member,
890         gh_engdata; remove timer_next(); add socket_add() function to add
891         a socket; add socket_del() to mark a socket for deletion; add
892         socket_state() to transition a socket between states; add
893         socket_events() to set what events we're interested in on the
894         socket; add engine_name() to retrieve event engine's name
895
896         * include/ircd_events.h: add engine data field to struct
897         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
898         note about states vs s_events; remove signal count; fold union
899         Generator back into struct Event; remove count members from struct
900         Generators; redefine engine callbacks to not take a struct
901         Engine*; add explanatory comments to callback definitions; add
902         some engine callbacks to handle operations; remove struct Engine
903         flag member--can detect single flag from eng_signal member; add
904         event_init(), event_loop(), engine_name(), and the socket_*()
905         functions; make timer_next() a macro to avoid a function call
906
907 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
908
909         * include/ircd_events.h: rename to ircd_events.h, since it handles
910         events, not just networking stuff; add signal support; more
911         structural rearrangement
912
913         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
914         events, not just networking stuff; add signal support; more
915         structural rearrangement
916
917 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
918
919         * ircd/ircd_network.c: implement timer API; add reference counts
920         appropriately
921
922         * include/ircd_network.h: firm up some pieces of the interface;
923         split out members everything has into a separate structure; add
924         reference counts; add timer API
925
926 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
927
928         * ircd/ircd_network.c: static data and event manipulation
929         functions for new event processing system
930
931         * include/ircd_network.h: data structures for new event processing
932         system
933
934 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
935
936         * ircd/whowas.c: Completely re-did the old allocation scheme by
937         turning it into a linked list, permitting the
938         NICKNAMEHISTORYLENGTH feature to be changed on the fly
939
940         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
941         feature instead of old #define
942
943         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
944         integer feature with a notify callback (whowas_realloc)
945
946         * ircd/client.c (client_set_privs): second memset was supposed to
947         be over antiprivs, not privs; thanks, Chris Behrens
948         <cbehrens@xo.com> for pointing that out...
949
950         * include/whowas.h: new elements for an extra linked list in
951         struct Whowas; a notify function for feature value changes
952
953         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
954
955         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
956
957 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
958
959         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
960         compile-time option--now in features subsystem
961
962         * ircd/motd.c (motd_init): rework motd_init() to be called as the
963         notify function for MPATH and RPATH features (should probably
964         split it up a bit, though...)
965
966         * ircd/m_privs.c (mo_privs): if called with no parameters, return
967         privs of the caller, rather than an error
968
969         * ircd/m_list.c: pull usage message into its own function; pull
970         list parameter processing into its own function that does not
971         modify the contents of the parameter; add list_set_default() to
972         set the default list parameter (uses the notify hook); rework
973         m_list() to make use of these functions; removed dead code
974
975         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
976         we have no notify handler
977
978         * ircd/ircd_features.c: add notify callback for notification of
979         value changes; give mark callback an int return value to indicate
980         whether or not to call the notify callback; fix up feature macros
981         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
982         string handling in feature_set() to deal with def_str being a null
983         pointer; wrote feature_init() to set up all defaults appropriately
984
985         * ircd/ircd.c (main): call feature_init() instead of
986         feature_mark(), to avoid calling notify functions while setting up
987         defaults
988
989         * ircd/client.c: updated to deal with new privileges structure
990
991         * ircd/class.c: updated so init_class() can be called should one
992         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
993         DEFAULTMAXSENDQLENGTH be changed
994
995         * include/ircd_log.h: log_feature_mark() updated to fit with new
996         API changes
997
998         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
999         feature_init() function (found necessary since adding the notify
1000         stuff and notifying motd.c during start-up...before we defined
1001         RPATH!)
1002
1003         * include/client.h: move privs around to enable addition of more
1004         bits if necessary; based on the FD_* macros
1005
1006         * include/channel.h: declare list_set_default (actually located in
1007         m_list.c *blanche*)
1008
1009         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
1010         AVBANLEN*MAXSILES) from features subsystem
1011
1012         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
1013         anything anymore
1014
1015         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
1016         the features subsystem
1017
1018         * ircd/s_auth.c (start_auth): NODNS migrated to the features
1019         subsystem
1020
1021         * ircd/random.c: created random_seed_set() function to set seed
1022         value, along with some stuff to make ircrandom() a little more
1023         random--state preserving, xor of time instead of direct usage,
1024         etc.; it's still a pseudo-random number generator, though, and
1025         hopefully I haven't broken the randomness
1026
1027         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
1028
1029         * ircd/m_join.c: use features interface to retrieve
1030         MAXCHANNELSPERUSER
1031
1032         * ircd/ircd_features.c: add NODISP flag for super-secret features;
1033         add a whole bunch of new features migrated over from make config
1034
1035         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
1036         CONNECTTIMEOUT, and TIMESEC
1037
1038         * ircd/client.c (client_get_ping): use features interface to
1039         retrieve PINGFREQUENCY
1040
1041         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
1042         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
1043
1044         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
1045         features subsystem, we have to add something explicit
1046
1047         * ircd/channel.c: use features interface to retrieve
1048         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
1049         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
1050         and AVBANLEN
1051
1052         * ircd/Makefile.in: run make depend
1053
1054         * include/supported.h (FEATURESVALUES): update to reference
1055         feature settings
1056
1057         * include/random.h: add prototype for random_seed_set
1058
1059         * include/ircd_features.h: add several more features
1060
1061         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
1062         subsystem
1063
1064         * config/config-sh.in: feature-ized some more stuff
1065
1066         * include/motd.h: some new elements in motd.h for motd.c changes
1067
1068         * ircd/motd.c: motd_cache() now searches a list of already cached
1069         MOTD files; saves us from having duplicate caches in memory if
1070         there are two identical T-lines for two different sites...
1071
1072 2001-01-02  Perry Lorier <isomer@coders.net>
1073         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
1074         Amarande.
1075
1076 2001-01-02  Perry Lorier <isomer@coders.net>
1077         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
1078         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
1079                 to guppy for noticing, and hektik for providing the fix.
1080         * misc others: Minor cleanups, added more protocol_violations, ripped
1081                 out more P09 stuffs, bit more protocol neg stuff.
1082
1083 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
1084
1085         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
1086         space (*sigh* stupid clients...)
1087
1088         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
1089         ircd_features.[ch]
1090
1091         * ircd/s_err.c: get rid of GODMODE conditionals
1092
1093         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
1094         calls into the features subsystem for various serveropts
1095         characters
1096
1097         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
1098
1099         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
1100         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
1101         NOFLOWCONTROL conditional
1102
1103         * ircd/s_auth.c: use features subsystem to determine value of
1104         KILL_IPMISMATCH
1105
1106         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
1107         features subsystem to determine the setting of IDLE_FROM_MSG
1108
1109         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
1110
1111         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
1112         use features subsystem to get motd file names
1113
1114         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
1115         subsystem
1116
1117         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
1118         us no good; use features subsystem to figure out if we need to do
1119         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
1120         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
1121         features subsystem
1122
1123         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
1124
1125         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
1126         subsystem
1127
1128         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
1129
1130         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
1131         from getting marked if they were already set to something...
1132
1133         * ircd/ircd_features.c: add a flag to indicates read-only access;
1134         add several new features that used to be compile-time selected
1135
1136         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
1137         access to motd files (what the heck?); make sure to initialize the
1138         feature subsystem before trying to write the config file
1139
1140         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
1141         use feature_bool() to figure out if we're using the FERGUSON
1142         flusher
1143
1144         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
1145         remove the clause that creates empty files of that name; also ran
1146         make depend
1147
1148         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
1149         there is no easy way to bounds-check it at present
1150
1151         * include/querycmds.h: make sure ircd_features.h is included; use
1152         feature_str(FEAT_DOMAINNAME) in calls to match()
1153
1154         * include/ircd_features.h: many new features that used to be
1155         compile-time selected
1156
1157         * config/config-sh.in: add * to DOMAINNAME; try also using first
1158         argument to search in /etc/resolv.conf; removed many compile-time
1159         options that now can be configured through the features system
1160
1161 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
1162
1163         * doc/api/log.txt: how to use the logging API
1164
1165         * doc/api/features.txt: how to use the features API
1166
1167         * doc/api/api.txt: how to write API documentation
1168
1169         * include/ircd_features.h: rearranged a couple of features for
1170         neatness purposes
1171
1172         * ircd/ircd_features.c: cleaned up the macros some; rearranged
1173         some code to all go into the switch; rearranged a couple of
1174         features for neatness purposes
1175
1176 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1177         * ircd/os_bsd.c: Added os_set_tos for BSD users.
1178
1179 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
1180
1181         * ircd/ircd_features.c: Isomer almost got it right; you need to
1182         use F_I(), since it's an integer value, not a boolean value.  The
1183         asserts in feature_int would catch you out...  Also made the F_*
1184         macros take flags
1185
1186         * ircd/s_err.c: define RPL_PRIVS reply
1187
1188         * ircd/parse.c: put new PRIVS command into command table
1189
1190         * ircd/m_privs.c (mo_privs): message handler to report operator
1191         privileges
1192
1193         * ircd/ircd_features.c: declare new features OPER_SET and
1194         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
1195         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
1196
1197         * ircd/client.c: simplify client_set_privs() with a table that
1198         defines what features to test for; add new client_report_privs()
1199
1200         * ircd/Makefile.in: compile new m_privs.c; run make depend
1201
1202         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
1203         an operator's privileges
1204
1205         * include/msg.h: define new command: PRIVS
1206
1207         * include/ircd_features.h: create new features OPER_SET and
1208         LOCOP_SET for controlling access to /set
1209
1210         * include/handlers.h (mo_privs): declare message handler for
1211         reporting oper privileges
1212
1213         * include/client.h (client_report_privs): declare function to
1214         report what privileges an oper has
1215
1216         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
1217         report that a user is an oper if the oper doing the /whois had
1218         PRIV_SEE_OPERS
1219
1220 2000-12-17  Isomer <Isomer@coders.net>
1221         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
1222
1223 2000-12-17  Isomer <Isomer@coders.net>
1224         * ircd/os_linux.c: add TOS stuffs
1225
1226         * ircd/listener.c: add TOS stuffs
1227
1228 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
1229
1230         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
1231         to indicate a user is an oper
1232
1233         * ircd/s_user.c: clear privileges setting when deopping; don't
1234         propagate +o unless user has PRIV_PROPAGATE privilege
1235
1236         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
1237         function and replaced how the server option string is generated
1238
1239         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
1240
1241         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
1242         not to indicate the user is an operator
1243
1244         * ircd/m_who.c: use HasPriv to determine whether or not a user
1245         should be displayed in the list of opers
1246
1247         * ircd/m_version.c: call debug_serveropts() to get server option
1248         string
1249
1250         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
1251         whether or not to show oper status
1252
1253         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
1254         whether or not to show oper status
1255
1256         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
1257         checks with HasPriv check; remove dead code
1258
1259         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
1260         checks with HasPriv check
1261
1262         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
1263         use feature_bool to check if disabled
1264
1265         * ircd/m_oper.c (m_oper): set oper priviliges
1266
1267         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
1268         check
1269
1270         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
1271         can kill
1272
1273         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
1274         check
1275
1276         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
1277         use feature_bool to check if disabled
1278
1279         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
1280         #ifdef conditional with a HasPriv check
1281
1282         * ircd/m_gline.c (mo_gline): rework permissions checking
1283         structure; use feature_bool to check if any part is disabled
1284
1285         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
1286         check; remove dead code
1287
1288         * ircd/m_clearmode.c: use feature_bool() to detect if we're
1289         disabled; use HasPriv to figure out what we're permitted to do;
1290         only allow clearmode on moded channels
1291
1292         * ircd/ircd_features.c: define various features; use HasPriv to
1293         verify permissions to set/reset
1294
1295         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
1296         conditionals
1297
1298         * ircd/client.c (client_set_privs): function to set an oper's
1299         privileges
1300
1301         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
1302
1303         * include/whocmds.h: deconditionalize several macros and
1304         substitute appropriate calls to HasPriv()
1305
1306         * include/s_debug.h: get rid of global serveropts[]; define new
1307         function debug_serveropts() to build that string on the fly
1308
1309         * include/ircd_features.h: define some features
1310
1311         * include/client.h: add privs member to struct Connection; define
1312         various priviledges
1313
1314         * include/channel.h: no longer using IsOperOnLocalChannel; remove
1315         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
1316
1317         * doc/Configure.help: remove help information for deprecated
1318         options
1319
1320         * config/config-sh.in: remove certain deprecated options having to
1321         do with what opers can and cannot do--first stage in moving
1322         compile-time constants into the .conf
1323
1324 2000-12-16  Isomer <Isomer@coders.net>
1325         * ircd/parse.c: detect if the prefix is missing and try and recover
1326         instead of coring.
1327
1328 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
1329
1330         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
1331         code that would sometimes result in the log file not being
1332         reopened--which meant that a user could connect and get the
1333         logging output--oops
1334
1335         * ircd/Makefile.in: run make depend...
1336
1337         * ircd/s_stats.c: get rid of report_feature_list()
1338
1339         * ircd/s_err.c: add the 'bad value' error message, shift error
1340         messages over somewhat
1341
1342         * ircd/s_debug.c (debug_init): call log_debug_init with the
1343         use_tty flag
1344
1345         * ircd/s_conf.c (read_configuration_file): unmark features before
1346         reading the config file, then reset unmarked features after
1347         reading the config file
1348
1349         * ircd/m_stats.c: use feature_report() instead of
1350         report_feature_list()
1351
1352         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
1353         special 'mark' flags and use them; add the stuff needed by the
1354         features API
1355
1356         * ircd/ircd_features.c: rework the features API and add gobs of
1357         comments to try to explain what some of these complex functions
1358         are actually doing
1359
1360         * include/s_stats.h: get rid of report_feature_list(); use
1361         feature_report() instead
1362
1363         * include/numeric.h: added a new error message and shifted old
1364         values over some--this is, after all, an alpha
1365
1366         * include/ircd_log.h: log_debug_init now takes an integer to tell
1367         it if it should be using the tty; added a couple of functions
1368         required by the features API
1369
1370         * include/ircd_features.h: add an enum and some more functions to
1371         flesh out the feature API--it should now be possible to put all
1372         those compile-time constants in the config file!
1373
1374         * ircd/send.c: got the direction of the assert incorrect...
1375
1376         * ircd/send.c: implement the efficiency of flush_connections by
1377         creating a linked list of struct Connection's with queued data;
1378         also get rid of flush_sendq_except and make sure to yank
1379         connections out of the list when their sendQs become empty (notice
1380         the assertion in flush_connections!)
1381
1382         * ircd/s_bsd.c (close_connection): must yank the Connection out of
1383         the sendq list
1384
1385         * ircd/list.c (dealloc_connection): must yank the Connection out
1386         of the sendq list
1387
1388         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
1389         deprecated flush_sendq_except
1390
1391         * ircd/client.c: define a couple new helper functions for sendq
1392         threading--this will make the flush_connections function in send.c
1393         considerably more efficient by creating a linked list of
1394         Connections that have queued data to send
1395
1396         * include/send.h: remove flush_sendq_except, as it's not used
1397         anymore
1398
1399         * include/client.h: declare a couple new helper functions for the
1400         sendq threading system
1401
1402 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
1403
1404         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
1405         parse all arguments
1406
1407         * ircd/s_debug.c (count_memory): modify to report for clients and
1408         connections, not local clients and remote clients
1409
1410         * ircd/list.c: fiddle with the client-fiddling functions to take
1411         into account the divorce of struct Connection from struct Client
1412
1413         * ircd/ircd.c: define a struct Connection for me, initialize it,
1414         and link it into the right place (ewww, globals!)
1415
1416         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
1417         struct Client into struct Client and struct Connection; redefine
1418         local-portion accessor macros to go through struct Client to the
1419         struct Connection; define struct Connection accessor macros
1420
1421 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
1422
1423         * ircd/whowas.c: missed a couple of accesses to a struct Client
1424
1425         * ircd/uping.c: missed a couple of accesses to a struct Client
1426
1427         * ircd/send.c: missed a couple of accesses to a struct Client
1428
1429         * ircd/s_user.c: missed a couple of accesses to a struct Client
1430
1431         * ircd/s_misc.c: missed a couple of accesses to a struct Client
1432
1433         * ircd/s_conf.c: missed a couple of accesses to a struct Client
1434
1435         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
1436
1437         * ircd/s_auth.c: missed a couple of accesses to a struct Client
1438
1439         * ircd/res.c: missed a couple of accesses to a struct Client
1440
1441         * ircd/parse.c: missed a couple of accesses to a struct Client
1442
1443         * ircd/m_whois.c: use new accessor macros for struct Client
1444
1445         * ircd/m_who.c: use new accessor macros for struct Client
1446
1447         * ircd/m_wallchops.c: use new accessor macros for struct Client
1448
1449         * ircd/m_version.c: use new accessor macros for struct Client
1450
1451         * ircd/m_userip.c: use new accessor macros for struct Client
1452
1453         * ircd/m_userhost.c: use new accessor macros for struct Client
1454
1455         * ircd/m_user.c: use new accessor macros for struct Client
1456
1457         * ircd/m_uping.c: use new accessor macros for struct Client
1458
1459         * ircd/m_trace.c: use new accessor macros for struct Client
1460
1461         * ircd/m_topic.c: use new accessor macros for struct Client
1462
1463         * ircd/m_time.c: use new accessor macros for struct Client
1464
1465         * ircd/m_stats.c: use new accessor macros for struct Client
1466
1467         * ircd/m_squit.c: use new accessor macros for struct Client
1468
1469         * ircd/m_silence.c: use new accessor macros for struct Client
1470
1471         * ircd/m_server.c: use new accessor macros for struct Client;
1472         remove dead code
1473
1474         * ircd/m_rpong.c: use new accessor macros for struct Client
1475
1476         * ircd/m_rping.c: use new accessor macros for struct Client
1477
1478         * ircd/m_quit.c: use new accessor macros for struct Client
1479
1480         * ircd/m_privmsg.c: use new accessor macros for struct Client
1481
1482         * ircd/m_pong.c: use new accessor macros for struct Client; remove
1483         dead code
1484
1485         * ircd/m_ping.c: use new accessor macros for struct Client
1486
1487         * ircd/m_pass.c: use new accessor macros for struct Client
1488
1489         * ircd/m_part.c: use new accessor macros for struct Client
1490
1491         * ircd/m_oper.c: use new accessor macros for struct Client
1492
1493         * ircd/m_notice.c: use new accessor macros for struct Client
1494
1495         * ircd/m_nick.c: use new accessor macros for struct Client
1496
1497         * ircd/m_names.c: use new accessor macros for struct Client
1498
1499         * ircd/m_mode.c: use new accessor macros for struct Client
1500
1501         * ircd/m_map.c: use new accessor macros for struct Client
1502
1503         * ircd/m_list.c: use new accessor macros for struct Client
1504
1505         * ircd/m_links.c: use new accessor macros for struct Client;
1506         remove some dead code
1507
1508         * ircd/m_kill.c: use new accessor macros for struct Client; remove
1509         some dead code
1510
1511         * ircd/m_kick.c: use new accessor macros for struct Client
1512
1513         * ircd/m_join.c: use new accessor macros for struct Client; remove
1514         some dead code
1515
1516         * ircd/m_ison.c: use new accessor macros for struct Client
1517
1518         * ircd/m_invite.c: use new accessor macros for struct Client
1519
1520         * ircd/m_info.c: use new accessor macros for struct Client
1521
1522         * ircd/m_gline.c: use new accessor macros for struct Client
1523
1524         * ircd/m_error.c: use new accessor macros for struct Client
1525
1526         * ircd/m_create.c: use new accessor macros for struct Client
1527
1528         * ircd/m_connect.c: use new accessor macros for struct Client;
1529         removed some dead code
1530
1531         * ircd/m_burst.c: use new accessor macros for struct Client
1532
1533         * ircd/m_away.c: use new accessor macros for struct Client
1534
1535         * ircd/m_admin.c: use new accessor macros for struct Client
1536
1537         * ircd/hash.c: missed a couple of accesses to a struct Client
1538
1539         * ircd/gline.c: missed a couple of accesses to a struct Client
1540
1541         * ircd/crule.c: missed a couple of accesses to a struct Client
1542
1543         * ircd/class.c: missed an access to a struct Client
1544
1545         * ircd/channel.c: missed a couple of accesses to a struct Client
1546
1547         * ircd/IPcheck.c: missed an access to a struct Client
1548
1549         * include/querycmds.h: fix a couple of stats macros to use
1550         structure accessor macros
1551
1552         * include/client.h: change structure member names to highlight any
1553         places in the code I've missed
1554
1555 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
1556
1557         * ircd/whowas.c: use new struct Client accessor macros
1558
1559         * ircd/whocmds.c: use new struct Client accessor macros
1560
1561         * ircd/send.c: use new struct Client accessor macros
1562
1563         * ircd/s_user.c: use new struct Client accessor macros; removed
1564         some dead code
1565
1566         * ircd/s_serv.c: use new struct Client accessor macros; removed
1567         some dead code
1568
1569         * ircd/s_numeric.c: use new struct Client accessor macros
1570
1571         * ircd/s_misc.c: use new struct Client accessor macros
1572
1573         * ircd/s_debug.c: use new struct Client accessor macros
1574
1575         * ircd/s_conf.c: use new struct Client accessor macros
1576
1577         * ircd/s_bsd.c: use new struct Client accessor macros
1578
1579         * ircd/s_auth.c: use new struct Client accessor macros
1580
1581         * ircd/parse.c: use new struct Client accessor macros
1582
1583         * ircd/packet.c: use new struct Client accessor macros
1584
1585         * ircd/numnicks.c: use new struct Client accessor macros
1586
1587         * ircd/motd.c: use new struct Client accessor macros
1588
1589         * ircd/listener.c: use new struct Client accessor macros
1590
1591         * ircd/list.c: use new struct Client accessor macros
1592
1593         * ircd/jupe.c: use new struct Client accessor macros
1594
1595         * ircd/ircd_snprintf.c: use new struct Client accessor macros
1596
1597         * ircd/ircd_reply.c: use new struct Client accessor macros
1598
1599         * ircd/ircd_relay.c: use new struct Client accessor macros
1600
1601         * ircd/ircd.c: use new struct Client accessor macros
1602
1603         * ircd/gline.c: catch some instances of me.<stuff> I missed
1604         previously
1605
1606         * ircd/client.c: use cli_ instead of con_
1607
1608         * ircd/class.c: use cli_ instead of con_
1609
1610         * ircd/channel.c: use cli_ instead of con_
1611
1612         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
1613         of me.<stuff> I missed previously
1614
1615         * include/client.h: use cli_ instead of con_...seemed like a good
1616         idea at the time *shrug*
1617
1618 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
1619
1620         * ircd/hash.c: use struct Client accessor macros
1621
1622         * ircd/gline.c: use struct Client accessor macros
1623
1624         * ircd/crule.c: use struct Client accessor macros
1625
1626         * ircd/client.c: use struct Client accessor macros; remove some
1627         dead code
1628
1629         * ircd/class.c: use struct Client accessor macros
1630
1631         * ircd/channel.c: use struct Client accessor macros; remove some
1632         dead code
1633
1634         * ircd/IPcheck.c: use struct Client accessor macros
1635
1636         * include/numnicks.h: use struct Client accessor macros
1637
1638         * include/client.h: first step to divorcing struct Client and
1639         struct Connection--define accessor macros and use them
1640
1641         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
1642         uplink would remove them.  This is because the removal protocol
1643         message wasn't being sent to the uplinks.  This is fixed by fixing
1644         propagate_gline() to send the proper number of arguments depending
1645         on whether or not we're adding or deleting the Uworld gline, and
1646         by having gline_deactivate() make sure to turn off the active bit
1647         and call propagate_gline() if it's a Uworld gline
1648
1649 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
1650
1651         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
1652
1653         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
1654         anywhere intelligent...
1655
1656 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
1657
1658         * ircd/send.c (send_queued): call deliver_it with appropriate
1659         arguments
1660
1661         * ircd/s_serv.c: reorder a couple of headers--cosmetic
1662
1663         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
1664         MsgQ
1665
1666         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
1667         with appropriate iovec
1668
1669         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
1670         with appropriate iovec
1671
1672         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
1673         with appropriate iovec
1674
1675         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
1676         appropriate iovec
1677
1678         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
1679         exactly how much we're trying to write out to the fd
1680
1681         * include/s_bsd.h: make deliver_it take a struct MsgQ
1682
1683         * include/msgq.h: add a len_p argument to msgq_mapiov to help
1684         detect short writes that indicate possible socket blocking
1685
1686         * include/ircd_osdep.h: declare os_sendv_nonb()
1687
1688         * ircd/channel.c (modebuf_mode): don't add empty modes...
1689
1690 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
1691
1692         * include/send.h: add prio argument to send_buffer to select
1693         between normal and priority queues
1694
1695         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
1696         call
1697
1698         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
1699
1700         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
1701         call
1702
1703         * ircd/channel.c (send_channel_modes): add prio argument to
1704         send_buffer call
1705
1706         * ircd/send.c (send_buffer): add a prio argument to select the
1707         priority queue; update send.c functions to use it
1708
1709         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
1710         msgq_add; add a prio argument to msgq_add to select the priority
1711         queue
1712
1713         * include/msgq.h: remove msgq_prio; add a prio argument to
1714         msgq_add
1715
1716         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
1717         using msgq functions instead of dbuf functions; remove old, dead
1718         sendto_* functions; redo send_buffer to take a struct MsgBuf;
1719         rework sendcmdto_* functions to make use of the new struct MsgBuf
1720
1721         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
1722         make appropriate use of struct MsgBuf
1723
1724         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
1725         system and report it
1726
1727         * ircd/s_conf.c (read_configuration_file): use
1728         sendto_opmask_butone instead of the now dead sendto_op_mask
1729
1730         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
1731         calls on sendQ
1732
1733         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
1734
1735         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
1736         msgq_clean
1737
1738         * ircd/m_version.c: fix spelling in comments marking dead code
1739
1740         * ircd/m_userip.c (userip_formatter): restructure to make use of
1741         struct MsgBuf
1742
1743         * ircd/m_userhost.c (userhost_formatter): restructure to make use
1744         of struct MsgBuf
1745
1746         * ircd/m_stats.c: use MsgQLength on a sendQ
1747
1748         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
1749         sendQ; mark a piece of dead code
1750
1751         * ircd/m_names.c: use send_reply instead of sendto_one
1752
1753         * ircd/m_mode.c: use new mode; remove old dead code
1754
1755         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
1756
1757         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
1758         dead code
1759
1760         * ircd/listener.c (accept_connection): use sendto_opmask_butone
1761         instead of sendto_op_mask
1762
1763         * ircd/list.c (free_client): use MsgQClear to clear sendQ
1764
1765         * ircd/ircd_reply.c: remove send_error_to_client; restructure
1766         send_reply to make use of struct MsgBuf
1767
1768         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
1769         since its no longer used (at least currently)
1770
1771         * ircd/channel.c: restructure send_channel_modes to make use of
1772         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
1773         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
1774
1775         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
1776
1777         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
1778
1779         * include/send.h: send_buffer now takes a struct MsgBuf * instead
1780         of a char *; flush_sendq_except now takes no arguments, as sendq
1781         flushing currently only happens in dbuf.h and sendQ is a struct
1782         MsgQ; remove prototypes for a lot of old sendto_* functions that
1783         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
1784         no longer needed, and the latter is identical to BUFSIZE in
1785         ircd_defs.h
1786
1787         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
1788         instead of a char *; also make it return void, instead of char *
1789
1790         * include/msgq.h: add msgq_append and msgq_bufleft functions
1791
1792         * include/client.h: use a struct MsgQ instead of a struct DBuf for
1793         sendq
1794
1795         * doc/Configure.help: Remove help for compile-time options that
1796         have gone away
1797
1798         * config/config-sh.in: remove CONFIG_NEWMODE
1799
1800         * ircd/m_server.c (mr_server): don't send server IPs in any server
1801         notices
1802
1803         * ircd/msgq.c (msgq_vmake): add \r\n to messages
1804
1805 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
1806
1807         * include/msgq.h: declare the MsgQ API
1808
1809         * ircd/msgq.c: implementation of new MsgQ system
1810
1811 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
1812
1813         * ircd/ircd_features.c: #include was supposed to be for
1814           ircd_features.h, not features.h--missed when I had to do a
1815           rename because of namespace collision
1816
1817 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1818         * ircd/m_topic.c: Added missing braces that caused all remote
1819           topics to be ignored.
1820
1821 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
1822
1823         * ircd/m_create.c: I'm tired of the exit_client warning :)
1824         (ms_create): discovered that exit_client() was being called with
1825         too few arguments
1826
1827         * ircd/s_misc.c (exit_client): remove all dependance on
1828         FNAME_USERLOG, since that's now gone; log only to LS_USER
1829
1830         * ircd/s_debug.c: USE_SYSLOG no longer means anything
1831
1832         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
1833         log to LS_OPER
1834
1835         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
1836
1837         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
1838
1839         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
1840         the same purpose as LS_USER and LS_OPER
1841
1842         * config/config-sh.in: remove no longer relevant log config
1843         variables
1844
1845         * ircd/uping.c (uping_init): use log_write instead of ircd_log
1846
1847         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
1848
1849         * ircd/s_conf.c: use log_write instead of ircd_log
1850
1851         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
1852
1853         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
1854         ircd_log
1855
1856         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
1857
1858         * ircd/m_who.c: use log_write instead of write_log; no longer
1859         conditionalize on WPATH; mark dead ircd_log calls
1860
1861         * ircd/m_uping.c: mark dead ircd_log call
1862
1863         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
1864
1865         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
1866         ircd_log calls
1867
1868         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
1869
1870         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
1871         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
1872
1873         * ircd/m_kill.c: mark dead ircd_log calls
1874
1875         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
1876         ircd_log
1877
1878         * ircd/m_clearmode.c: use log_write instead of write_log; no
1879         longer conditionalize on OPATH
1880
1881         * ircd/jupe.c: use log_write instead of write_log; no longer
1882         conditionalize on JPATH
1883
1884         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
1885         function; fix a couple of bugs
1886
1887         * ircd/ircd_alloc.c: fixed a comment
1888
1889         * ircd/ircd.c: use log_write instead of ircd_log; fold server
1890         notice generation in a couple of cases
1891
1892         * ircd/gline.c: use log_write instead of write_log; no longer
1893         conditionalize on GPATH
1894
1895         * ircd/channel.c (modebuf_flush_int): use log_write instead of
1896         write_log; no longer conditionalize on OPATH
1897
1898         * ircd/Makefile.in: run make depend, since dependencies have
1899         changed
1900
1901         * doc/example.conf: add system USER to documentation
1902
1903         * include/ircd_log.h: add system USER; remove old ircd_log()
1904         declarations
1905
1906 2000-12-04  Isomer <isomer@coders.net>
1907         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
1908         'end_of_names' reply when done.
1909         * ircd/m_join.c: use NAMES_EON as mentioned above
1910
1911 2000-12-01  net  <simms@LUCIDA.QC.CA>
1912
1913         * ircd/motd.c: add a freelist for struct Motds
1914
1915 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
1916
1917         * ircd/s_stats.c (report_feature_list): report features--only
1918         local opers can see logging configuration, since it doesn't really
1919         mean anything to users
1920
1921         * ircd/s_err.c: add reply messages for new feature subsystem
1922
1923         * ircd/s_conf.c: add F lines to .conf
1924
1925         * ircd/parse.c: add the message descriptions for /set, /reset, and
1926         /get
1927
1928         * ircd/m_stats.c: add /stats f
1929
1930         * ircd/m_set.c (mo_set): implement /set
1931
1932         * ircd/m_reset.c (mo_reset): implement /reset
1933
1934         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
1935         reopens log files (for log file rotation)
1936
1937         * ircd/m_get.c (mo_get): implement /get
1938
1939         * ircd/ircd_log.c: use int instead of void return value; add
1940         log_report_features() and log_canon(); fix a function that
1941         disappears if DEBUGMODE not #define'd
1942
1943         * ircd/ircd_features.c: functions to manipulate feature settings
1944         either from the config file or with the new /set, /reset, and /get
1945         commands
1946
1947         * ircd/Makefile.in: add new .c files, run make depend
1948
1949         * include/s_stats.h: declare report_feature_list() (/stats f
1950         handler)
1951
1952         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
1953         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
1954         reply numerics
1955
1956         * include/msg.h: add defines for SET, RESET, and GET
1957
1958         * include/ircd_log.h: add a function to canonicalize subsystem
1959         names; change some void return values to int
1960
1961         * include/ircd_features.h: new features subsystem handles all the
1962         manipulation of special features, like log files
1963
1964         * include/handlers.h: declare new mo_{s,res,g}et message handlers
1965         for fiddling with features run-time
1966
1967         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
1968         seemed like a good idea at the time...
1969
1970         * doc/example.conf: document new F lines
1971
1972 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
1973
1974         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
1975         new logging functions, which have special support for the debug
1976         log; added loop detection to vdebug(), so that I can
1977         sendto_opmask_butone() from log_vwrite() without incurring another
1978         call to vdebug()
1979
1980         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
1981         this allows log file rotations
1982
1983         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
1984
1985         * ircd/ircd_log.c: much more work fleshing out the interface;
1986         removed old interface; included backwards-compat ircd_log()
1987         function that logs to subsystem LS_OLDLOG
1988
1989         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
1990         functions
1991
1992         * include/ircd_log.h: include stdarg.h for va_list; move ordering
1993         warning to top of file; fill out LogSys enum; declare new
1994         log_debug_init(), log_vwrite(), log_write_kill(), and
1995         log_[sg]et_*() functions; add flags argument to log_write();
1996         defined flags to inhibit various logging actions
1997
1998         * include/client.h: added support for new SNO_DEBUG, enabled only
1999         if DEBUGMODE is defined
2000
2001 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
2002
2003         * ircd/ircd_log.c: make sure the various LOG_* constants are
2004         defined (probably not needed, since #include <syslog.h> isn't
2005         conditional); various static data needed for the new logging
2006         functions; definitions of new logging functions
2007
2008         * include/ircd_log.h: new LogSys enum, declarations for part of
2009         new logging API
2010
2011         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
2012         which was of course stupid; switched to using switch/case in
2013         initialization in motd_create(); zero the MotdList.other pointer
2014         from motd_clear()
2015
2016         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
2017         or we overwrite init_conf()'s hard work with respect to T-lines
2018
2019 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
2020
2021         * ircd/s_stats.c: comment out report_motd_list and include a
2022         reference to motd_report()
2023
2024         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
2025         motd_add() from the conf parser; call motd_clear() from the rehash
2026         routine; remove the no longer needed memory clearing and reloading
2027         stuff from the rehash service routine
2028
2029         * ircd/motd.c: loads new API, including static internal functions
2030         to do allocation/deallocation, etc.
2031
2032         * ircd/m_stats.c: use new motd_report() instead of
2033         report_motd_list()
2034
2035         * ircd/m_motd.c: use new syntax for motd_send()
2036
2037         * ircd/ircd.c: use new motd_init() function
2038
2039         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
2040         Makefile.(in); also ran make depend
2041
2042         * include/motd.h: don't need config.h, but now do need time.h;
2043         define new structures and constants; redefine old API and define
2044         new functions
2045
2046 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
2047
2048         * ircd/s_user.c (register_user): use motd_signon() instead of
2049         calling m_motd; much cleaner this way
2050
2051         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
2052         less of a crock
2053
2054         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
2055         functions
2056
2057         * include/motd.h: define new MOTD API stuff
2058
2059 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
2060
2061         * ircd/ircd_reply.c (protocol_violation): rewrite
2062         protocol_violation so it'll actually work
2063
2064         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
2065         the client's real name in there.
2066
2067         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
2068         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
2069         gets called from register_user with a NULL sptr.  This is probably
2070         a design problem, but this bandaid will do for now...
2071
2072 2000-11-19  Isomer <isomer@coders.net>
2073         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
2074         to problems in the server<->server protocol.
2075
2076         * ircd/m_connect.c: allow remote connects with a port of '0'
2077         meaning to use the port in the config file.
2078
2079         * ircd/m_create.c: Enable hacking protection, lets see how far we
2080         get.
2081
2082         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
2083         clients, so we don't any more.
2084
2085         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
2086         and the user@host is displayed of the victim.
2087
2088         * ircd/m_map.c: reloaded 'dump_map'.
2089
2090         * ircd/m_trace.c: allow per class T:
2091
2092         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
2093
2094 2000-11-17  Isomer <isomer@coders.net>
2095
2096         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
2097         that were the *same* instead of different.  Oh the embarrasment!
2098
2099         * ircd/IPcheck.c: Merged net's fix.
2100
2101 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
2102
2103         * ircd/m_whois.c: remove compiler warning by adding a newline to
2104         end of file
2105
2106         * ircd/m_names.c: moved the flags up to s_user.h
2107
2108         * ircd/m_join.c: call do_names instead of m_names; restructure
2109         ms_join to never transmute a JOIN into a CREATE, but use the TS in
2110         the JOIN (if present) to timestamp the channel
2111
2112         * ircd/channel.c: send JOINs individually, instead of grouping
2113         them, so that we can send the channel's creation time
2114
2115         * include/s_user.h: declare do_names()
2116
2117 2000-10-30  Isomer <isomer@coders.net>
2118         * ircd/m_oper.c: Fixed warning
2119
2120 2000-10-30  Isomer <isomer@coders.net>
2121         * ircd/m_oper.c: Fixed over agressive cut and no paste
2122
2123 2000-10-30  Isomer <isomer@coders.net>
2124
2125         * ircd/m_topic.c: Restructured, fixed bug where topics on local
2126         channels are propergated (I forget who pointed this out to me, but
2127         thanks anyway).  Also to save bandwidth don't send the topic to
2128         users if the topic is already the same on the server (but still
2129         propergate to other servers).  X/W's "autotopic" feature must
2130         chew a lot of bandwidth, hopefully this will help reduce this.
2131
2132         * doc/rfc1459.rfc: Updated documentation on /topic.
2133
2134         * ircd/listener.c: snotice warnings about failed accept()'s
2135         potentially warning admins that they're running out of fd's.
2136
2137         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
2138         people in a class in /stats y
2139
2140         * ircd/m_create.c: Checks for timewarp hacking and squit's
2141         evil servers. (currently disabled)
2142         
2143
2144 2000-10-30  net <simms@lucida.qc.ca>
2145         
2146         * ircd/gline.c: Fixed various bugs Isomer left behind.
2147
2148 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
2149
2150         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
2151         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
2152
2153 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
2154
2155         * ircd/channel.c: ok, now last mode rules; mode +ps will always
2156         result in +s (and won't send a mode if the channel is already +s);
2157         mode +sp will always result in +p; -n+n on a +n channel results in
2158         no mode change; -n+n on a -n channel results in a +n mode change;
2159         etc.
2160
2161 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
2162
2163         * ircd/channel.c: add "add" and "del" elements to ParseState to
2164         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
2165         mode_parse_limit that caused it to clear all channel modes
2166         prematurely; restructure mode_parse_mode to avoid calling
2167         modebuf_mode too early (ties in with first mentioned change);
2168         better logic for +p/+s mutual exclusivity; initialize "add" and
2169         "del" elements in mode_parse; send simple modes down to
2170         modebuf_mode after the loop in mode_parse
2171
2172 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2173         * ircd/m_names.c: Fixed a non-lethal logic error that 
2174         triggers an assert() in find_member_link while debugging.
2175         (Spotted by Maniac-).
2176 2000-09-19  Thomas Helvey <helveytw@home.com>
2177         * ircd/s_conf.c: move K:lines to their own list and data
2178         structures, add supporting code.
2179         * ircd/m_stats.c: cleanup stats processing a bit move
2180         kline listing code to a new function, haven't figured
2181         out where it goes yet tho'
2182         * ircd/s_stats.c: added K:line bulk lister
2183         * include/s_conf.h: added new DenyConf struct
2184         * *[ch]: fixeup code that depended on changes
2185
2186 2000-09-17  Thomas Helvey <helveytw@home.com>
2187         * ircd/class.c: encapsulate class list
2188         * include/class.h: clean up classes
2189         * * fixup code that depended on changes
2190
2191 2000-09-17  Thomas Helvey <helveytw@home.com>
2192         * ircd/s_conf.c: add me to local conf
2193         * include/s_conf.h: move CONF_ME macro to chkconf.c
2194         * ircd/s_bsd.c: cleanup initialization, allow virtual host
2195         to be changed by rehash
2196
2197 2000-09-17  Thomas Helvey <helveytw@home.com>
2198         * include/class.h: add missing prototype
2199         * ircd/class.c: make argument to get_conf_class const
2200
2201 2000-09-17  Thomas Helvey <helveytw@home.com>
2202         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
2203         merge conflicts.
2204         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
2205         merge conflicts
2206
2207 2000-09-16  Thomas Helvey <helveytw@home.com>
2208         * ircd/s_conf.c: add code for server struct
2209         * ircd/client.c: copy of class.c sort of, new file for client
2210         specific operations, will move things here as appropriate,
2211         currently only one function is exported from here.
2212         * ircd/*.c: general logic cleanups, convert negatives to
2213         positives in places.
2214
2215 2000-09-16  Thomas Helvey <helveytw@home.com>
2216         * ircd/s_conf.c: add code for new crule data structs, strip quotes
2217         * ircd/crule.c: clean up scary casting a bit, type safety stuff
2218         * include/s_conf.h: add CRuleConf struct and support, remove
2219         unused constants
2220         * include/crule.h: type safety cleanups
2221         * ircd/*.c: fixup code that depended on stuff I changed
2222
2223 2000-09-15  Thomas Helvey <helveytw@home.com>
2224         * ircd/s_conf.c: start adding code for new conf data structs, changed
2225         listeners, admin line, motd lines, class lines. Move validate_hostent
2226         to resolver. General mayhem.
2227         * include/s_conf.h: new data structs and accessors
2228         * ircd/res.c: move validate_hostent here, rewrite, use regular
2229         expression for validation.
2230         * doc/example.conf: update docs for port
2231
2232 2000-09-14  Thomas Helvey <helveytw@home.com>
2233         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
2234         up conf_init into managable chunks.
2235         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
2236         * include/s_conf.h: add new data struct for local info (unwinding the mess).
2237
2238 2000-09-13  Thomas Helvey <helveytw@home.com>
2239         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
2240         local clients.
2241         * ircd/list.c: put SLinks in free lists
2242         * ircd/channel.c: put Memberships in free lists
2243         * ircd/ircd.c: rearrange initializations a bit in main
2244         Note: With these changes, ircd NEVER frees Clients, SLinks or
2245         Memberships. It will also rarely need to allocate new
2246         ones during net bursts and other disruptions. This should
2247         cut down on memory fragmentation a bit as well.
2248
2249 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
2250
2251         * ircd/m_names.c (do_names): pull-up from do_names fix in
2252         u2.10.10.pl11
2253
2254 2000-07-15  Perry Lorier       <Isomer@coders.net>
2255         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
2256                  match()'s.  Major Major cpu savings.  Also speed up the
2257                  other case slightly.  As a side effect you can now
2258                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
2259                  3am.
2260
2261 2000-07-15  Perry Lorier       <Isomer@coders.net>
2262         * various: Fixed warnings after compiling on an alpha.
2263 2000-07-09  Perry Lorier       <Isomer@coders.net>
2264         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
2265                       changes suggested by various other people.
2266         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
2267                         that it gets a corrupt entry somehow.
2268 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2269         * ircd/m_oper.c: Clean up compiler warning.
2270
2271 2000-07-08  Perry Lorier       <Isomer@coders.net>
2272         * doc/ircd.8: Updated the documentation, it was slightly out of date
2273                       being updated around 1989.
2274         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
2275                           fixed a few minor glitches.
2276         * doc/rfc1459.unet: Updated.
2277         * ircd/IPcheck.c: Fixed more bugs.
2278         * ircd/s_bsd.c: We now keep track of servers we've conected.
2279
2280 2000-07-02  Perry Lorier       <Isomer@coders.net>
2281         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
2282                         me.  Thanks to Hektik, thanks thanks thanks thanks
2283                         thanks thanks thanks thanks thank thanks thank thanks
2284
2285 2000-07-01  Perry Lorier       <Isomer@coders.net>
2286         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
2287         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
2288
2289 2000-06-22  Perry Lorier       <Isomer@coders.net>
2290         * ircd/IPcheck.c: Large chunks redone.
2291         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
2292                         single AND double digit limits are allowed now.
2293         * misc other: Changes to IPcheck.
2294
2295 2000-06-30  Perry Lorier       <Isomer@coders.net>
2296         * ircd/ircd.c: Fix command line parameter bugs.
2297
2298 2000-06-30  Perry Lorier       <Isomer@coders.net>
2299         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
2300         * ircd/m_nick.c: Tidied things up.
2301
2302 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
2303         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
2304         
2305 2000-05-29  Perry Lorier       <Isomer@coders.net>
2306         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
2307         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
2308                         you think it'll get bored and fix itself?
2309
2310 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2311
2312         * ircd/m_names.c: Clean up compiler warnings.
2313
2314 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
2315
2316         * ircd/channel.c (mode_parse_client): don't send warning if
2317         there's not enough arguments for a +/-o/v; means the habit of
2318         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
2319         error messages
2320
2321 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2322
2323         * ircd/m_names.c: Re-factor code to remove unneccessary
2324         GlobalChannelList iteration every time someone joins a channel.
2325
2326 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
2327
2328         * ircd/s_user.c: add struct Gline * argument to register_user;
2329         look up global glines and repropagate them if necessary; send
2330         acknowledgement of gline to remote servers when registering users
2331
2332         * ircd/s_serv.c (server_estab): don't send acknowledgement of
2333         local glines to remote servers; do send gline acknowledgement of
2334         bursted users
2335
2336         * ircd/m_user.c (m_user): pass new struct Gline * argument to
2337         register_user
2338
2339         * ircd/m_pong.c: pass new struct Gline * argument to register_user
2340
2341         * ircd/m_nick.c (ms_nick): document protocol change
2342
2343         * ircd/gline.c: support GLINE_LASTMOD
2344
2345         * include/s_user.h: add struct Gline * argument to register_user
2346
2347         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
2348
2349         * ircd/s_conf.c (find_kill): add unsigned int argument to
2350         gline_lookup()
2351
2352         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
2353         glines; add unsigned int argument to gline_lookup()
2354
2355         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
2356         argument to gline_lookup()
2357
2358         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
2359         parameter, or when it falls out of bounds: see comments prior to
2360         call to jupe_resend(); call server_estab with struct Jupe
2361         parameter, so that we place the appropriate %<lastmod> in the
2362         appropriate place.
2363
2364         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
2365         server, as well as for servers when we're sending the BURST
2366
2367         * include/s_serv.h: add a struct Jupe * to the arguments for
2368         server_estab() so that we can send the appropriate lastmod
2369         parameter
2370
2371         * ircd/m_gline.c (ms_gline): actually, this should be the
2372         slightest bit more efficient...
2373
2374         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
2375         bit more efficient...
2376
2377         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
2378         during netburst
2379
2380         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
2381         netburst
2382
2383         * ircd/channel.c (joinbuf_join): really remove user from local
2384         channels
2385
2386 2000-05-29  Perry Lorier       <Isomer@coders.net>
2387         * ircd/m_names.c: Removed redundant space. 
2388         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
2389
2390 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
2391
2392         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
2393         a " "
2394
2395 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
2396
2397         * ircd/channel.c: replace bogus assertions with returns, which is
2398         logically correct; only wipe out limit/key if they were originally
2399         set in the first place; remove user from channel when doing a
2400         PARTALL; only send MODE +o for user CREATEing channel if user is
2401         not MyUser--CREATE will only be used if the channel did not
2402         originally exist, therefore we can assume no one local is on the
2403         channel anyway, and we don't exactly need for the user to see an
2404         explicit +o for themselves
2405
2406         * doc/readme.gline: describe the syntax of the GLINE command
2407
2408         * doc/readme.jupe: update to reflect a couple of changes to JUPE
2409
2410         * ircd/gline.c: don't propagate local changes
2411
2412         * ircd/jupe.c: don't propagate local changes
2413
2414         * ircd/m_gline.c (mo_gline): force local flag when deactivating
2415         glines with 0 lastmod
2416
2417         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
2418         are now removed instead of being deactivated
2419
2420         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
2421         -<mask>" be accepted
2422
2423         * ircd/channel.c (send_channel_modes): deal with one of the last
2424         vestiges of sendbuf
2425
2426         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
2427         debugging hooks
2428
2429         * ircd/channel.c (modebuf_extract): remove debugging
2430         sendto_opmask_butone calls
2431
2432 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
2433
2434         * ircd/channel.c: support a couple of new flags to support using
2435         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
2436         of modebuf_extract to extract added flags for use by ms_burst
2437
2438         * include/channel.h: a couple of new flags to support using
2439         mode_parse inside ms_burst
2440
2441         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
2442
2443         * ircd/m_endburst.c: add loop to processing of end_of_burst to
2444         free empty channels after the BURST is over.
2445
2446         * ircd/m_server.c: convert to use new send.c functions--I wanted
2447         to rewrite it from scratch, but the logic's pretty complex; I may
2448         still rewrite it, though...
2449
2450 2000-05-02  Thomas Helvey <tomh@inxpress.net>
2451
2452         * ircd/ircd.c: fix broken header include ordering
2453
2454 2000-05-02  Thomas Helvey <tomh@inxpress.net>
2455         
2456         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
2457         review emailed privately
2458
2459         * include/IPcheck.h: removed unneeded include
2460
2461 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
2462
2463         * ircd/s_user.c (hunt_server): throw in a comment so I know what
2464         the sendto_one is for
2465
2466         * include/querycmds.h (Count_unknownbecomesclient): convert to
2467         sendto_opmask_butone
2468
2469         * ircd/send.c: start removing dead code
2470
2471         * include/send.h: start removing dead code
2472
2473         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
2474         hunt_server_cmd
2475
2476         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
2477
2478 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
2479
2480         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
2481
2482         * ircd/m_kick.c: Completely reimplement m_kick
2483
2484         * ircd/channel.c: send_user_joins removed; it was dead code,
2485         anyway...
2486
2487 2000-05-01  Perry Lorier <isomer@coders.net>
2488         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
2489         * ircd/channels.c: My fix for the part problem.  Untested, probably
2490                 won't work.  Can't be much worse than the current problem.
2491                 it'll either work or core, take your pick.
2492
2493
2494 2000-04-30  Perry Lorier <isomer@coders.net>
2495         * config/config-sh.in: Fix for CONNEXIT
2496         * ircd/s_{user,misc}.c: Fix for CONNEXIT
2497         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
2498                         (Kev: Want to come talk to me about this?)
2499
2500 2000-04-30  Steven M. Doyle <steven@doyle.net>
2501         * ircd/ircd.c
2502           - general cleanups and readability enhancements
2503           - rewrite of setuid/chroot code.
2504           - server will no longer run as root
2505           - -DPROFIL compile option removed
2506           - Fixed IPcheck API calls
2507  
2508         * config/config-sh.in
2509           - Fixed up chroot compile options
2510           - Added options for debug and profile compiles
2511  
2512         * config/gen.ircd.Makefile
2513           - Support for new debug/profile options
2514  
2515         * ircd/Makefile.in
2516           - Support for new debug/profile options
2517  
2518         * ircd/ircd_signal.c
2519           - Removed -DPROFIL
2520
2521         * include/IPcheck.h
2522           - Removed old API prototypes, added new ones
2523         
2524         * ircd/IPcheck.c
2525           - Readability cleanups (well, I -think-...)
2526           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
2527             used unsigned short was probably causing interesting things after
2528             a client had been connected longer than about 65,535 seconds...
2529           - Removed old API functions.
2530
2531         * ircd/whocmds.c
2532           - Removed IPcheck.h include
2533         
2534         * Additionally modified IPcheck API calls in:
2535           - ircd/m_nick.c
2536           - ircd/m_auth.c
2537           - ircd/s_bsd.c
2538           - ircd/s_conf.c
2539           - ircd/s_misc.c
2540           - ircd/s_serv.c
2541           - ircd/s_user.c
2542         
2543         
2544 2000-04-30  Perry Lorier <isomer@coders.net>
2545         * ircd/s_bsd.c: Sigh. :)
2546         * ircd/m_mode.c: fix for modeless channels by poptix.
2547
2548 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
2549
2550         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
2551
2552         * ircd/channel.c (clean_channelname): make clean_channelname also
2553         truncate long channel names
2554
2555 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
2556
2557         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
2558
2559         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
2560         joinbuf_flush
2561
2562         * include/channel.h: definitions and declarations for the struct
2563         JoinBuf abstraction
2564
2565 2000-04-29  Perry Lorier <isomer@coders.net>
2566         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
2567
2568 2000-04-29  Perry Lorier <isomer@coders.net>
2569         * ircd/s_bsd.c: Add debugging code to IPcheck
2570
2571 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
2572
2573         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
2574
2575         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
2576         RPL_EXPLICIT
2577
2578         * ircd/m_userhost.c (m_userhost): add a dead code comment
2579
2580         * ircd/m_desynch.c: forgot one...
2581
2582         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
2583
2584         * ircd/m_proto.c (proto_send_supported): just change a comment so
2585         it doesn't show up in my scans
2586
2587         * ircd/ircd_reply.c (send_reply): fix a slight bug...
2588
2589         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
2590         kinda hackish...
2591
2592         * ircd/parse.c (parse_server): argument wrangling to make
2593         processing in do_numeric a little easier to deal with
2594
2595         * ircd/s_serv.c (server_estab): SERVER should come from
2596         acptr->serv->up, not &me
2597
2598         * ircd/m_lusers.c: accidentally left out sptr for a %C
2599
2600         * ircd/send.c: hack to support doing wallchops...
2601
2602         * ircd/m_whowas.c: convert to new send functions
2603
2604         * ircd/m_whois.c: convert to new send functions
2605
2606         * ircd/m_who.c: convert to new send functions
2607
2608         * ircd/m_wallops.c: convert to new send functions
2609
2610         * ircd/m_wallchops.c: convert to new send functions
2611
2612         * ircd/m_version.c: convert to new send functions
2613
2614         * ircd/m_userip.c: convert to new send functions
2615
2616         * ircd/m_userhost.c: convert to new send functions
2617
2618         * ircd/m_uping.c: convert to new send functions
2619
2620         * ircd/m_trace.c: convert to new send functions
2621
2622         * ircd/m_topic.c: convert to new send functions
2623
2624         * ircd/m_time.c: convert to new send functions
2625
2626         * ircd/m_squit.c: convert to new send functions
2627
2628         * ircd/m_silence.c: convert to new send functions
2629
2630         * ircd/m_settime.c: convert to new send functions
2631
2632         * ircd/m_restart.c: convert to new send functions
2633
2634         * ircd/m_rehash.c: convert to new send functions
2635
2636         * ircd/m_privmsg.c: convert to new send functions
2637
2638         * ircd/m_pong.c: convert to new send functions
2639
2640         * ircd/m_ping.c: convert to new send functions
2641
2642         * ircd/m_pass.c: convert to new send functions
2643
2644         * ircd/m_opmode.c: convert to new send functions
2645
2646         * ircd/m_oper.c: convert to new send functions
2647
2648         * ircd/m_notice.c: convert to new send functions
2649
2650         * ircd/m_nick.c: convert to new send functions
2651
2652         * ircd/m_names.c: convert to new send functions
2653
2654         * ircd/m_motd.c: convert to new send functions
2655
2656         * ircd/m_mode.c: convert to new send functions
2657
2658         * ircd/m_map.c: convert to new send functions
2659
2660         * ircd/m_lusers.c: convert to new send functions
2661
2662         * ircd/m_list.c: convert to new send functions
2663
2664         * ircd/m_links.c: convert to new send functions
2665
2666         * ircd/m_kill.c: convert to new send functions
2667
2668         * ircd/m_jupe.c: convert to new send functions
2669
2670         * ircd/m_invite.c: convert to new send functions
2671
2672         * ircd/m_info.c: convert to new send functions
2673
2674         * ircd/m_help.c: convert to new send functions
2675
2676         * ircd/m_gline.c: convert to new send functions
2677
2678         * ircd/m_error.c: convert to new send functions
2679
2680         * ircd/m_endburst.c: convert to new send functions
2681
2682         * ircd/m_die.c: convert to new send functions
2683
2684         * ircd/m_destruct.c: convert to new send functions
2685
2686         * ircd/m_defaults.c: convert to new send functions
2687
2688         * ircd/m_connect.c: convert to new send functions
2689
2690 2000-04-28  Perry Lorier <isomer@coders.net>
2691         * RELEASE.NOTES: Describe a few more undocumented features.
2692         * config/config-sh.in: change the default paths for logging
2693         and the recommended number of channels.
2694         * include/supported.h: Rearrange slightly, added CHANTYPE's
2695
2696 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
2697
2698         * ircd/m_close.c: convert to send_reply
2699
2700         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
2701
2702         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
2703
2704         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
2705
2706         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
2707         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
2708         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
2709         carefully rethought...
2710
2711         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
2712
2713         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
2714
2715         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
2716         numeric nick; therefore, we have to use the server name
2717
2718         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
2719
2720         * ircd/send.c: fix minor bugs
2721
2722         * ircd/s_user.c (check_target_limit): mark dead code so I filter
2723         it when I grep
2724
2725         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
2726         when I grep
2727
2728         * ircd/parse.c: mark dead code so I filter it when I grep
2729
2730         * ircd/map.c: mark dead code so I filter it when I grep
2731
2732         * ircd/ircd.c: mark dead code so I filter it when I grep
2733
2734         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
2735         functions
2736
2737         * ircd/channel.c: mark dead code so I filter it when I grep
2738
2739         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
2740         hope I'm not stepping on toes...
2741
2742         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
2743         conversions; use ircd_snprintf in a couple of cases to negate the
2744         possibility of buffer overflow
2745
2746 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
2747
2748         * ircd/channel.c: convert as much as possible to new send
2749         semantics
2750
2751         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
2752         test member->user->from->fd, not from->fd
2753
2754         * ircd/gline.c (gline_add): go ahead and add badchans; we just
2755         won't look for them in m_gline; this way, they always work...
2756
2757         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
2758
2759         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
2760         ircd_vsnprintf conversion specifiers
2761
2762         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
2763         I have my conversion specifiers
2764
2765         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
2766
2767         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
2768         local users
2769
2770         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
2771         little less brain-dead
2772
2773         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
2774
2775         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
2776         RPL_STATSDEBUG
2777
2778         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
2779         RPL_STATSDEBUG
2780
2781         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
2782         for RPL_STATSDEBUG
2783
2784         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
2785
2786         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
2787
2788         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
2789         ERR_INVALIDUSERNAME
2790
2791         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
2792
2793         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
2794         a numeric as needing to use an explicit pattern, which will be the
2795         first argument in the variable argument list
2796
2797         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
2798         non-prefixed nospoof PING
2799
2800         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
2801         non-prefixed SERVER login
2802
2803         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
2804         a numeric usage further up)
2805
2806         * include/send.h: declare sendrawto_one
2807
2808         * ircd/send.c (sendrawto_one): new function to use ONLY for
2809         non-prefixed commands, like PING to client, or PASS/SERVER on
2810         server registration
2811
2812 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
2813
2814         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
2815         future expansion (channel numerics?)
2816
2817         * include/ircd_snprintf.h: added documentation to # to explain use
2818         with %C; added documentation for : to explain use with %C; added
2819         documentation for %H for channels
2820
2821         * ircd/whocmds.c: use send_reply
2822
2823         * ircd/userload.c: use sendcmdto_one
2824
2825         * ircd/uping.c: use sendcmdto_one
2826
2827         * ircd/send.c: use new flags to %C format string; ':' prefixes
2828         client name with a colon for local connects, '#' uses
2829         nick!user@host form for local connects
2830
2831         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
2832         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
2833
2834         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
2835
2836         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
2837         sendcmdto_one
2838
2839         * ircd/s_auth.c: use sendto_opmask_butone
2840
2841         * ircd/res.c: use sendcmdto_one
2842
2843         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
2844         debugging assertions
2845
2846 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
2847
2848         * ircd/support.c: dumpcore is no longer used, so get rid of it
2849
2850         * ircd/parse.c: use send_reply, sendcmdto_one
2851
2852         * ircd/map.c: use send_reply
2853
2854         * ircd/listener.c: use send_reply
2855
2856         * ircd/jupe.c: use sendto_opmask_butone, send_reply
2857
2858         * ircd/ircd_reply.c: use send_reply
2859
2860         * ircd/ircd.c: use sendto_opmask_butone
2861
2862         * ircd/gline.c: use sendto_opmask_butone, send_reply
2863
2864         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
2865         registered clients; make FLAG_ALT print nick!user@host; make
2866         FLAG_COLON print :blah
2867
2868         * ircd/class.c (report_classes): use send_reply instead of
2869         sendto_one
2870
2871         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
2872
2873         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
2874         sendto_one with sendcmdto_one
2875
2876 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
2877
2878         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
2879         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
2880         sendcmdto_match_butone
2881
2882         * include/send.h: declare sendcmdto_match_butone
2883
2884 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
2885
2886         * ircd/jupe.c: update to use send_reply()
2887
2888         * ircd/gline.c: update to use send_reply()
2889
2890         * include/ircd_reply.h: declare send_reply
2891
2892         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
2893         replies; uses ircd_snprintf
2894
2895         * ircd/send.c: added comments to redirect searchers to appropriate
2896         sendcmdto_* function; moved new functions to end of file; added
2897         explanatory comments; reordered arguments; defined new functions
2898         mentioned below
2899
2900         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
2901
2902         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
2903
2904         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
2905
2906         * ircd/gline.c: reorder arguments to sendcmdto_* functions
2907
2908         * include/send.h: reorder arguments, add explanatory comments,
2909         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
2910         and vsendto_opmask_butone
2911
2912 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
2913
2914         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
2915         vsendto_op_mask that uses '*' instead of the receiving client
2916         nickname
2917
2918         * include/send.h: declare sendcmdto_channel_butone; takes a skip
2919         argument that allows you to skip (or not to skip) deaf users,
2920         users behind bursting servers, and non channel operators
2921
2922 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
2923
2924         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
2925         sendto_channel_butserv has a subtle bug; also wrote
2926         sendcmdto_common_channels.
2927
2928         * include/send.h: declare new sendcmdto_* functions
2929
2930         * ircd/jupe.c: support local deactivations of jupes
2931
2932         * ircd/gline.c: support local deactivations of glines
2933
2934         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
2935         deactivated; if they aren't locally deactivated, then it slaves to
2936         the net-wide activation status; JupeIsRemActive() tests only
2937         whether the jupe is active everywhere else
2938
2939         * include/gline.h: GLINE_LDEACT allows glines to be locally
2940         deactivated; if they aren't locally deactivated, then it slaves to
2941         the net-wide activation status; GlineIsRemActive() tests only
2942         whether the gline is active everywhere else
2943
2944         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
2945         gline expires after the new one will, we drop the new one,
2946         otherwise we add the G-line after that one (so the wide one will
2947         apply first); if the new one contains an existing G-line and if it
2948         will expire after the existing one, we drop the existing one to
2949         save memory
2950
2951         * ircd/m_gline.c (mo_gline): opers could issue remote local
2952         glines when CONFIG_OPERCMDS was off; fixed
2953
2954 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
2955
2956         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
2957         this is a local JUPE
2958
2959         * ircd/gline.c: add flags argument to gline_activate and
2960         gline_deactivate for future expansion
2961
2962         * ircd/m_gline.c: pass flags to gline_activate and
2963         gline_deactivate
2964
2965         * include/gline.h: add flags argument to gline_activate and
2966         gline_deactivate
2967
2968         * ircd/jupe.c: add flags argument to jupe_activate and
2969         jupe_deactivate for future expansion
2970
2971         * include/jupe.h: add flags argument to jupe_activate and
2972         jupe_deactivate
2973
2974         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
2975         local, active; pass flags to jupe_activate and jupe_deactivate
2976
2977         * include/gline.h: remove dead code
2978
2979         * ircd/gline.c: make gline expire times relative to CurrentTime,
2980         since that should be monotonically increasing, instead of
2981         TStime(), which can be set backwards, and which can therefore
2982         cause an expire time to increase; make local glines be removed
2983         instead of just deactivated; don't let gline_find() look for
2984         user@host glines if the mask being looked up is a channel mask
2985
2986         * ircd/send.c (vsendcmdto_one): forgot to account for the case
2987         where origin is a server and destination is a user
2988
2989         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
2990         since that should be monotonically increasing, instead of
2991         TStime(), which can be set backwards, and which can therefore
2992         cause an expire time to increase; make local jupes be removed
2993         instead of just deactivated
2994
2995         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
2996         limit is fine.  any other warnings I should know about?
2997
2998 2000-04-15  Thomas Helvey <tomh@inxpress.net>
2999
3000         * ircd/*.c: const correctness and type safety cleanups to
3001         get code to compile with C++ compiler. Still has
3002         signed/unsigned comparison warnings.
3003
3004 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3005
3006         * ircd/userload.c: change <sys/time.h> include to <time.h> for
3007           portability.
3008
3009 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
3010
3011         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
3012         and convert acptr...
3013
3014         * ircd/s_user.c: move gline_lookup function call into
3015         register_user, where it'll have a username to lookup!
3016
3017         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
3018         functions; also stuff send_error_to_client into return clauses
3019
3020         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
3021         functions; also use send_error_to_client where that makes sense
3022
3023         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
3024         functions; also use send_error_to_client where that makes sense
3025
3026         * ircd/gline.c: modify to utilize new sendcmdto_* series of
3027         functions; also fix gline_lookup() to deal properly with remote
3028         clients--boy, do struct Client and struct User need to be cleaned
3029         up!
3030
3031         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
3032         too...
3033
3034         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
3035         sendcmdto_serv_butone(), all utilizing the %v conversion of
3036         ircd_snprintf()
3037
3038         * include/send.h: define IRC_BUFSIZE, max size of a message;
3039         declare sendcmdto_one(), vsendcmdto_one(), and
3040         sendcmdto_serv_butone()
3041
3042         * include/msg.h: define all the CMD_* constants needed to utilize
3043         the new sendcmdto_* series of functions
3044
3045         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
3046
3047         * ircd/gline.c: remove old, dead code.
3048
3049         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
3050         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
3051         (don't advertise proxies); remove dead code
3052
3053         * ircd/parse.c: oper handler for JUPE only lists jupes unless
3054         CONFIG_OPERCMDS is enabled
3055
3056         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
3057         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
3058
3059         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
3060         always return ERR_DISABLED
3061
3062         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
3063         enabled, always return ERR_DISABLED
3064
3065         * ircd/s_err.c: add error message to indicate disabled commands
3066
3067         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
3068
3069         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
3070
3071         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
3072         CONFIG_NEW_MODE to 'y' for now
3073
3074         * ircd/gline.c (gline_list): fix a minor formatting bogon
3075
3076         * BUGS: since I fixed that bug, might as well mark it fixed.
3077
3078         * ircd/m_join.c: look up badchans with GLINE_EXACT
3079
3080         * ircd/m_gline.c: fix parc count problems; look up existing
3081         G-lines with GLINE_EXACT; only set new lastmod when
3082         activating/deactivating existing glines if old lastmod was not 0
3083
3084         * ircd/gline.c: forgot to copy the gline reason over; don't
3085         propagate a gline with 0 lastmod if origin is user; add
3086         GLINE_EXACT to force exact matching of gline mask
3087
3088         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
3089         flag properly
3090
3091         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
3092         but gline_lookup() actually takes a client--d'oh.
3093
3094 2000-04-13  Thomas Helvey <tomh@inxpress.net>
3095         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
3096
3097 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3098
3099         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
3100           "/who * x"
3101           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
3102           (Found by Plexus).
3103
3104         * ircd/whocmds.c: Change idle time calc from socket idle to user
3105           idle.
3106
3107 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
3108
3109         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
3110         too, for ircd_snprintf.c
3111
3112         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
3113         comments; mostly descended from the Linux manpage for printf, but
3114         also documenting the extensions.
3115
3116         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
3117         client; make 'q' be the same as 'L'; remove __inline__; only
3118         define EXTENSION if HAVE_LONG_LONG is defined
3119
3120         * include/handlers.h: declare m_gline()
3121
3122         * ircd/parse.c: gline can be called by users, but it only lists
3123         the glines.
3124
3125         * ircd/s_user.c (set_nick_name): resend gline if a remote server
3126         introduces a glined client
3127
3128         * ircd/s_serv.c (server_estab): burst glines, too
3129
3130         * ircd/gline.c: fix up all the expire times to be offsets;
3131         simplify gline_resend()
3132
3133         * ircd/m_gline.c: begin coding replacements for ms_gline(),
3134         mo_gline(), and m_gline()
3135
3136         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
3137         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
3138
3139 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3140
3141         * tools/Bouncer/*: Add comments/documentation/tags.
3142         * tools/Bouncer/*: Add debug defines, make task fork().
3143
3144 2000-04-12  Thomas Helvey <tomh@inxpress.net>
3145         * ircd/s_err.c: Cleanup s_err.c make one table so we
3146         don't have to do anything tricky to get an error string.
3147
3148 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3149         * Add port bouncer for http (x/w)
3150
3151 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
3152
3153         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
3154         call to gline_find(); also used GlineReason() instead of direct
3155         reference to structure member
3156
3157         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
3158         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
3159         is active
3160
3161         * ircd/channel.c: nothing seems to be called anywhere...
3162
3163         * ircd/s_err.c: update a couple of replies to dovetail with new
3164         semantics
3165
3166         * ircd/gline.c: begin complete re-implementation of gline.c along
3167         the lines of the final design of jupe.c
3168
3169         * include/gline.h: begin complete re-implementation of gline.c
3170         along the lines of the final design of jupe.c
3171
3172         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
3173         %s by %s" message...
3174
3175         * ircd/ircd_snprintf.c: my new snprintf()-like functions
3176
3177         * include/ircd_snprintf.h: my new snprintf()-like functions
3178
3179 2000-04-11  Thomas Helvey <tomh@inxpress.net>
3180         * ircd/IPcheck.c: removed old dead code
3181         * ircd/s_user.c (send_user_info): removed non-standard
3182           user not found message for userhost/userip
3183
3184 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3185
3186         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
3187         * doc/p10.html: Work on chapter 4.
3188
3189 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
3190
3191         * ircd/channel.c (mode_parse_client): fix coredump on /mode
3192         #foobar +o nosuchnick
3193
3194 2000-04-10  Perry Lorier  <Isomer@coders.net>
3195         * BUGS: Added bug.
3196
3197 2000-04-09  Thomas Helvey <tomh@inxpress.net>
3198         * include/IPcheck.h: fix prototype
3199         * ircd/s_user.c: fix usage of IPcheck_remote_connect
3200         * ircd/IPcheck.c: removed unused args
3201
3202 2000-04-09  Thomas Helvey <tomh@inxpress.net>
3203         * include/IPcheck.h: add proto for IPcheck_expire
3204
3205         * ircd/IPcheck.c: Rewrote
3206
3207         * ircd/ircd.c: Add IPcheck_expire to main message loop
3208
3209         * ircd/s_user.c: Redo target hashing, refactor target code
3210
3211         * include/numeric.h: Cleaned up numerics, added which ones are
3212         in use by other networks and what they are in use for.
3213
3214         * ircd/channel.c: cleaned can_join(), allow anyone through anything
3215         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
3216         will get a message explaining to them not to cheat.
3217
3218         * ircd/m_join.c: cleaned up the various join functions, should be
3219         a lot more efficient.  Still needs work.  Now assumes that s<->s
3220         won't send it a JOIN 0.  Service coders - note this and tread with
3221         care.
3222
3223         * ircd/m_stats.c: added Gte-'s stats doc patch.
3224
3225         * ircd/m_version.c: /version now returns the 005 numeric as well.
3226         as requested by Liandrin.
3227
3228
3229 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
3230
3231         * ircd/m_clearmode.c: add include for support.h for write_log()
3232
3233         * configure: move ircd/crypt/* to tools/*
3234
3235 2000-04-06  Thomas Helvey <tomh@inxpress.net>
3236         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
3237           set client host to server alias if connection from localhost
3238
3239 2000-04-06  Perry Lorier <isomer@coders.net>
3240         * ircd/ircd.c: Fix core during pinging (oops)
3241         
3242 2000-04-06  Perry Lorier <isomer@coders.net>
3243         * ircd/send.c: fixed wrong ident being sent to channels bug.
3244         * include/numerics.h: Updated some of the numerics from other
3245         networks.  Flagged some as 'unused' by undernet.
3246
3247 2000-03-30  Perry Lorier <isomer@coders.net>
3248         * ircd/ircd.c: Lets see if this helps the ping problem at all.
3249         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
3250         time for local clients. (as requested), extended who now returns all
3251         the flags (@+!) so you can tell the complete state of a client.
3252
3253 2000-03-30  Thomas Helvey <tomh@inxpress.net>
3254         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
3255
3256 2000-03-30  Perry Lorier <isomer@coders.net>
3257         * ircd/parse.c: oops, missed opers.
3258
3259 2000-03-30  Perry Lorier <isomer@coders.net>
3260         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
3261         for so long.  Remember: m_ping MUST be in the parse array. :)
3262
3263 2000-03-30  Perry Lorier <isomer@coders.net>
3264         * ircd/ircd.c: test in check_pings was wrong.  I move that we
3265         disallow cvs commit after 10pm localtime....
3266
3267 2000-03-30  Perry Lorier <isomer@coders.net>
3268         * ircd/m_pong.c: Fix it for servers too.
3269
3270 2000-03-30  Perry Lorier <isomer@coders.net>
3271         * ircd/m_pong.c: Fix ping timeout bugs
3272
3273 2000-03-30  Perry Lorier <isomer@coders.net>
3274         * ircd/channel.c: Bans had CurrentTime in their when field instead
3275         of TStime()
3276
3277 2000-03-31  Thomas Helvey <tomh@ixpress.net>
3278         * ircd/numnicks.c (SetXYYCapacity): fix for extended
3279         numerics.
3280
3281 2000-03-30  Perry Lorier <isomer@coders.net>
3282         * ircd/m_nick.c: send kills both ways so when we add nick change
3283         on collision we don't desync the network.
3284
3285         * ircd/map.c: Fixup the map a bit more.
3286
3287 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
3288
3289         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
3290
3291         * ircd/m_opmode.c: Log the mode changes to OPATH
3292
3293         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
3294         OPATH
3295
3296         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
3297         OPATH
3298
3299         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
3300
3301         * config/config-sh.in: added OPATH for opmode log file
3302
3303         * ircd/m_clearmode.c (do_clearmode): updated uses of
3304         modebuf_mode_string() for the new usage
3305
3306         * ircd/channel.c: added flag MODE_FREE and an int argument to
3307         modebuf_mode_string() to indicate that the string must be free'd;
3308         updated calls to modebuf_mode_string() for the new usage; called
3309         collapse(pretty_mask()) on the ban string and use allocated memory
3310         for it; added ban list length accounting; fixed a number of small
3311         bugs in ban processing
3312
3313         * include/channel.h: added flag MODE_FREE and an int argument to
3314         modebuf_mode_string() to indicate that the string must be free'd
3315
3316         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
3317         keys and limits that are set
3318
3319 2000-03-30  Perry Lorier <isomer@coders.net>
3320         * ircd/ircd.c: rewrote check_pings() for maintainability
3321         and speed.  Also changed quit msg's so they don't have
3322         redundant nick[host] info in them.
3323
3324         * ircd/send.c: Changed write errors to report what error
3325         occured (if possible).
3326
3327         * ircd/gline.c: added gline comment to the quit.
3328
3329         * ircd/m_server.c: Added suggestions to server quits mentioning
3330         what went wrong so the admin can fix it earlier instead of asking
3331         questions...
3332
3333         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
3334         servers that aren't fully burst yet.  And show '(--s)' for servers
3335         where its not sure.
3336
3337         * doc/example.conf: Fixed wrapped U:
3338
3339 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
3340
3341         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
3342         mode_parse() (version selectable at compile time)
3343
3344         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
3345
3346         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
3347
3348         * config/config-sh.in: add new config option to enable new m_mode
3349         implementation
3350
3351         * doc/Configure.help: add documentation for new config option
3352         CONFIG_NEW_MODE
3353
3354         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
3355         MODE -v : Not enough parameters
3356
3357         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
3358         +k and +l even if they weren't set...
3359
3360         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
3361
3362         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
3363         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
3364         for; test the 0-th member, not the i-th member, of the client
3365         change state stuff
3366
3367         * ircd/m_clearmode.c (do_clearmode): use the new
3368         mode_invite_clear() function
3369
3370         * ircd/channel.c: cleared up all the compile-time warnings and
3371         errors
3372
3373         * include/channel.h: added declarations for mode_ban_invalidate()
3374         and mode_invite_clear()
3375
3376         * ircd/channel.c: finished mode_parse(), then broke it up into a
3377         dozen or so helper functions to make the code easier to read
3378
3379 2000-03-29  Thomas Helvey <tomh@inxpress.net>
3380         * ircd/ircd.c: refactor server initialization a bit, use
3381         getopt for parsing command line, refactor init_sys, main,
3382         and other bits.
3383
3384         * ircd/s_bsd.c: add functions for initialization to clean
3385         up logic a bit and remove duplicated code.
3386
3387         * include/ircd.h: add struct for server process related
3388         variables.
3389
3390 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
3391
3392         * ircd/channel.c: initial definition of mode_parse(); flags to
3393         prevent doing the same thing multiple times; helper method
3394         send_notoper() to send a "Not oper"/"Not on channel" notice
3395
3396         * include/channel.h: declare mode_parse() and helper flags
3397
3398         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
3399         sending to match the current action of set_mode() closely enough
3400         that hopefully there won't be major conflicts
3401
3402         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
3403         building logic, reversed the order of the arguments to mode
3404         commands to have '-' preceed '+'
3405
3406 2000-03-29  Thomas Helvey <tomh@inxpress.net>
3407         * ircd/s_bsd.c (add_connection): don't disable socket options
3408         let OS tune itself and allow important performance tweaks to 
3409         work.
3410
3411 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
3412
3413         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
3414         confused by set_mode, which is doing some really weird logic;
3415         guess what I'm going to rewrite next?  ;)
3416
3417 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
3418
3419         * include/channel.h: added MODE_SAVE for the bounds checking stuff
3420         in modebuf_flush
3421
3422         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
3423         make it do bounds checking on the buffer; all modes are sent only
3424         if the all parameter is 1; modebuf_flush is the exported wrapper
3425
3426         * include/channel.h: add BOUNCE, renumber flags to get a little
3427         more space
3428
3429         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
3430         BOUNCE; send DESYNCH message
3431
3432 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
3433
3434         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
3435         channel actually has in effect for deletion
3436
3437         * ircd/channel.c: added explanatory comments to all added
3438         functions; made flushing take place at the correct place even if
3439         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
3440         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
3441         is empty, fixed the apparent source, removed some bogus string
3442         termination code, properly terminate the mode strings, add support
3443         for HACK2 and HACK3, made limit strings not be sent if the limit
3444         is being removed, changed where '+' and '-' come from in sent
3445         strings, added support for DEOP flag, set up bouncing code for
3446         HACK2
3447
3448         * ircd/Makefile.in: ran make depend
3449
3450         * include/channel.h: added new defines for future functionality,
3451         made modebuf_flush() return int so I can use tail recursion
3452
3453         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
3454         to make it all compile
3455
3456         * ircd/m_opmode.c: add msg.h to includes...
3457
3458         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
3459
3460         * ircd/channel.c (modebuf_flush): realized I forgot to
3461         nul-terminate addbuf/rembuf properly...
3462
3463         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
3464
3465         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
3466         sendto_serv_butone--blah^2
3467
3468         * ircd/send.c (sendto_serv_butone): stupid comments confused me
3469
3470         * ircd/channel.c (modebuf_flush): if there are no mode changes to
3471         propagate, we're done...
3472
3473         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
3474         not sendto_all_butone
3475
3476         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
3477
3478         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
3479
3480         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
3481         the list
3482
3483         * ircd/parse.c: added messages for opmode and clearmode
3484
3485         * include/handlers.h: added declarations for mo_opmode(),
3486         ms_opmode(), mo_clearmode(), and ms_clearmode()
3487
3488         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
3489         TOK_CLEARMODE
3490
3491         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
3492         MODEBUF_DEST_OPMODE flag
3493
3494         * ircd/channel.c (modebuf_flush): added new flag,
3495         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
3496         to originate from source's server (or source itself, if
3497         IsServer(source)); also causes a server-level MODE to be sent as
3498         OPMODE instead
3499
3500         * include/channel.h: defined MODEBUF_DEST_SERVER,
3501         MODEBUF_DEST_HACK4
3502
3503         * ircd/channel.c: Add another argument to build_string() to handle
3504         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
3505         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
3506         to be sent out
3507
3508 2000-03-27  Perry Lorier <isomer@coders.net>
3509
3510         * ircd/s_bsd.c: fixed missing 'u' typo.
3511
3512 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
3513
3514         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
3515         _mode_string(), _mode_client(), _flush(); also implemented a
3516         simple build_string()
3517
3518         * include/channel.h: added definition of ModeBuf, modebuf_*
3519         manipulation functions, and a couple of helper macros
3520
3521 2000-03-24 Thomas Helvey <tomh@inxpress.net>
3522   * numicks.c: convert extended numerics to use original mask version
3523   * numnicks.h: ""
3524   * s_user.c:
3525 2000-03-23 Thomas Helvey <tomh@inxpress.net>
3526   * Merge in changes from production
3527 2000-03-22 Thomas Helvey <tomh@inxpress.net>
3528   * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
3529   * rfc1459.unet: Add Maniac's documentation for /names 0
3530 * Fix misc. jupe bugs that somehow made it into the tree
3531 * Escape /names 0 to mean /names --Maniac
3532 * Don't core when server asks for info --Maniac 
3533 * Add Kev's jupe patch --Bleep
3534 * Add Maniacs squit patch --Bleep
3535 * Merge in u2_10_10_beta07 changes --Bleep
3536 * Merge in u2_10_10_beta06 changes --Bleep
3537 * Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
3538 #-----------------------------------------------------------------------------