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