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