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