Author: Alex Badea <vampire@p16.pub.ro>
[ircu2.10.12-pk.git] / ChangeLog
1 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
2
3         * ircd/class.c (get_client_class): fixed typo which caused
4         /trace (and perhaps motd) to core
5
6 2002-04-15  beware <steendijk@tomaatnet.nl>
7
8         * ircd/m_whois.c: Fixed /whois servermask nomatch bug
9         where normal users could use the function to discover servers,
10         also the NOSUCHSERVER check code was missing.
11
12 2002-04-14  Alex Badea  <vampire@p16.pub.ro>
13
14         * ircd/ircd_parser.y: fixed cli_info(&me) not being set
15         from 'description' conf
16
17 2002-04-13  Stephane Thiell <mbuna@undernet.org>
18
19         * ircd/m_whois.c: removed FindUser() in ms_whois to fix
20         remote whois relaying.
21
22         * ircd/class.c: removed unused (and duplicated) code
23         get_client_ping().
24         
25         * include/class.h: removed unused function prototype.
26         
27         * config.guess: upgraded with latest
28         
29         * config.sub: upgraded with latest
30
31 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
32
33         * ircd-patch: report which files failed the dry run (so the
34         user may force the patch if the rejects are in less-than-vital
35         files, such as ChangeLog or documentation)
36
37 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
38
39         * ircd/m_invite.c: don't propagate invites for local channels
40
41         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
42
43 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
44
45         * ircd/ircd.c: The last fix broke autoconnects completely.
46         Fixed it another way.
47         
48 2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
49
50         * ircd/ircd.c (try_connections): To avoid problems with infinite event
51         loops, don't try connecting to servers whose connect frequency is 0.
52         
53 2002-04-10  Alex Badea  <vampire@p16.pub.ro>
54
55         * ircd/ircd_parser.y: fixed a "features" block parse bug
56
57         * tools/convert-conf.py: added a configuration file converter
58         from 2.10.11 to 2.10.12 format
59
60         * ircd-patch: added GPL information to top of file
61
62 2002-04-09  Alex Badea  <vampire@p16.pub.ro>
63
64         * configure.in: added a human-readable report of configured
65         options at the end of the configure process
66
67         * configure: regenerated with autoconf
68
69 2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
70
71         * include/supported.h: change CHARSET to CASEMAPPING after
72         discussions as to what would be the preferred name.
73
74 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
75         * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
76         specification.
77         * Fix a minor parser bug that meant rehash didn't always
78         work correctly.
79
80 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
81
82         * include/channel.h: fix compiler warnings (paratheses around &&)
83
84         * ircd/channel.c (modebuf_extract): fix compiler warnings
85         (uninitialized variables)
86
87         * ircd/Makefile.in: make ircd properly compile outside the
88         source tree
89
90 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
91
92         * include/s_user.h: added a sptr parameter to InfoFormatter
93         function type
94
95         * ircd/m_who.c: don't match IPs for clients which have a hidden host,
96         except when the inquiring user is an oper
97
98         * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
99         target has a hidden host, but show real IP to opers
100
101         * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
102         fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
103         show real IP to opers
104
105         * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
106
107         * ircd/s_user.c (send_user_info): pass sptr to the formatting function
108
109         * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
110         fake IP to show for clients with a hidden host)
111
112         * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
113
114         * doc/example.conf: default value for FEAT_HIDDEN_IP
115
116         * doc/readme.features: documented FEAT_HIDDEN_IP
117
118 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
119         * doc/example.conf: Cleaned up some comments that ended up in
120           strange places due to problems in the merge process.
121         * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
122           probably dates back to Jarkko code.
123
124 2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
125
126         * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
127         from the path before calling do_kill(); add a msg argument to
128         do_kill() and use it in preference to comment; remove all that old
129         code that fiddled with the buf and the comment
130
131         * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
132
133         * include/ircd_log.h: add a seperate msg argument to
134         log_write_kill()
135
136         * ircd/ircd.c: display event engine and MAXCONNECTIONS information
137  
138 2002-04-02  Alex Badea <vampire@p16.pub.ro>
139
140         * ircd-patch: Automatically generate a version string from patches
141
142 2002-04-02  Alex Badea <vampire@p16.pub.ro>
143         
144         * ircd-patch: Test before doing anything dangerous, provide -f to
145                 to it anyway.  exit levels for easy scripting.
146
147 2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
148
149         * ircd/channel.c (joinbuf_join): don't add a channel to the list
150         in the joinbuf unless when we flush it, we empty the list
151
152 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
153         * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
154           old configuration file format.
155         * ircd/ircd_lexer.l
156         * ircd/s_conf.c
157         * doc/example.conf
158
159 2002-03-23 Bert Faes <bert.faes@pandora.be>
160
161         * s_misc.c made /trace reply always show the username
162         
163 2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
164
165         * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
166         for setrlimit, getrusage, and times
167
168         * configure: rerun auto-conf
169
170         * config.h.in: rerun autoheader
171
172 2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
173
174         * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
175         sending of the key to the channel
176
177         * ircd/channel.c (modebuf_flush_int): when processing keys, only
178         include the actual key in the mode sent to the channel if
179         MODEBUF_DEST_NOKEY is not set
180
181         * include/channel.h: needed more bits for MODEBUF_DEST_*,
182         especially when adding MODEBUF_DEST_NOKEY to force keys in the
183         BURST to be reported as "*" to the channel
184
185         * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
186         inherited from the class associated with the O-line
187
188 2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
189
190         * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
191         when a user changes his nickname so we can catch if he now matches
192         a ban
193
194 2002-03-20 Reed Loden <reed@redmagnet.com>
195         * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
196
197         * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
198
199 2002-03-20 LordLuke <lordluke@undernet.org>
200         * ircd/client.c: Add LOCOP_LIST_CHAN feature.
201
202         * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
203
204 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
205
206         * ircd/m_links.c: Make /links behave like /map for head_in_sand.
207         cleaned up excess code.
208
209         * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
210         map_add() and map_update() for links changes.
211
212         * include/map.h: Added info and prot to struct Map
213
214         * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
215         servers are cached in MapList
216
217         * ircd/s_misc.c: changed #ifdef for map_update()
218
219         * ircd/m_server.c: changed #ifdef for map_update()
220
221         * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
222         hiding features.
223
224         * configure.in: add --disable-headinsand
225
226         * configure: Ran autoconf
227
228         * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
229         connect limits
230
231         * ircd/s_stats.c: Made /stats i report connect limits
232
233         * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
234         "*" for the password field.
235         
236 2002-03-19 LordLuke <lordluke@undernet.org>
237
238         * include/channel.h: Allow opers to view +s channels in /list
239
240         * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
241
242         * include/ircd_features.h: added "LIST_CHAN" feature
243
244         * ircd/channel.c: Allow opers to view +s channels in /list
245
246         * ircd/client.c: Add "PRIV_LIST_CHAN"
247
248         * ircd/ircd_features.c: Add "LIST_CHAN" feature
249
250 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
251
252         * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
253         Must be more careful when forward porting by hand...
254         
255 2002-03-13  Carlo Wood  <run@alinoe.com>
256
257         * include/channel.h: CHFL_CHANNEL_MANAGER, new local
258         channel flag set when someone creates a channel or joins
259         using the Apass.  IsChannelManager(), SetChannelManager():
260         macros to manipulate new channel flag.
261         channel_modes: Added new argument to avoid calling
262         find_member_link more often than needed.
263
264         * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
265         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
266         ERR_UPASSNOTSET: new numeric replies.
267
268         * ircd/channel.c: is_level0_op: removed.
269         member_can_send_to_channel: disallow channel manager
270         to talk.  channel_modes: show upass to level0 ops.
271         mode_parse_upass: Only the channel manager is allowed
272         to change the upass.  Only allow to set upass when apass
273         is also set.  mode_parse_apass: Don't allow to change the
274         Apass if the channel is older than 48 hours.  Only allow
275         to remove the apass when upass is not set.  Send clear
276         warnings regarding the importance of apass.
277         mode_process_clients: Don't change the oplevel of an opped
278         member in a channel where upass is not set.
279
280         * ircd/destruct_event.c: exec_expired_destruct_events:
281         Bug fix: send DESTRUCT message when destructing a channel.
282
283         * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
284         prefix for DESTRUCT message.
285
286         * ircd/m_join.c: m_join: Handle apass and upass.
287
288         * ircd/m_kick.c: m_kick: Don't allow to kick member with
289         a higher or equal op-level.
290
291         * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
292         ms_mode: Allow server to do modes on channels with apass
293         set.
294
295         * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
296         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
297         ERR_UPASSNOTSET: new numeric replies.
298
299
300 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
301
302         * ircd/m_kill.c: Last of the bug fixes for do_kill()
303
304         * ircd/list.c: Don't remove clients from the linked list
305         that aren't actually in the list.
306         
307 2002-03-08  Carlo Wood  <run@alinoe.com>
308         * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
309         and CHFL_BURST_ALREADY_VOICED.
310
311         * ircd/m_burst.c: Allow BURST outside net-burst
312         and take into account that users are already joined
313         to the channel in that case.
314
315         * ircd/m_destruct.c: Implementation of DESTRUCT
316         handling code.
317
318         * ircd/m_join.c: Set the channel creationtime to
319         the timestamp of a message when that timestamp is
320         smaller.
321 2002-02-27 Reed Loden <reed@redmagnet.com>
322        * tools/crypter: Updated some variables, added another notice,
323        added CVS Id tag, and updated Perl location.
324
325        * tools/ringlog.c: Added IRC - Internet Relay Chat, 
326        tools/ringlog.c
327
328        * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
329        tools/ringlog.pl
330
331        * tools/wrapper.c: Added IRC - Internet Relay Chat, 
332        tools/wrapper.c
333
334        * tools/mkpasswd.c: Added CVS Id tag
335
336        * tools/sums: Updated to comply with sums being moved to tools/
337        and added CVS Id tag
338
339        * tools/README: Updated location of file and partly rewrote to fit 
340        u2.10.11's Features
341
342        * tools/Makefile.crypt: Updated location of file and added CVS Id 
343        tag
344
345        * acconfig.h: Updated location of file
346
347        * config.h.in: Updated location of file
348
349        * tools/Bounce/bounce.conf: Added CVS Id tag
350
351        * tools/Bounce/Bounce.cpp: Updated location of file
352
353        * tools/Bounce/Bounce.h: Updated location of file
354
355        * tools/hashtoy: Added CVS Id Tag
356
357 2002-02-27  Carlo Wood  <run@alinoe.com>
358
359         * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
360
361 2002-03-01  Carlo Wood  <run@alinoe.com>
362
363         * include/channel.h: struct Channel: new attribute destruct_event.
364         Prototype for destruct_channel().
365
366         * include/destruct_event.h: new header file for destruct_event.c.
367
368         * ircd/Makefile.in: New source file: destruct_event.c.
369
370         * ircd/channel.c: sub1_from_channel: Don't destruct channel
371         immedeately but instead schedule it for destruction after
372         some time when a channel becomes empty (and clear invite
373         only and limit in that case).
374         destruct_channel: new function, was previously the destructing
375         part of sub1_from_channel.
376         add_user_to_channel: remove destruction request if any.
377
378         * ircd/destruct_event.c: New file.  Implementation of functions
379         schedule_destruct_event_1m, schedule_destruct_event_48h,
380         remove_destruct_event and exec_expired_destruct_events.
381
382         * ircd/ircd.c: destruct_event_timer: new timer.
383         main: use destruct_event_timer to call exec_expired_destruct_events
384         once per minute.
385
386         * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
387         channels.  Schedule new empty channels for destruction.
388
389         * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
390
391 2002-03-01  Carlo Wood  <run@alinoe.com>
392         * ircd/s_misc.c: exit_client: Only call map_update()
393         for servers.
394
395 2002-02-28  Carlo Wood  <run@alinoe.com>
396         * include/channel.h: New attribute 'oplevel' in struct Membership.
397         Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
398         New macros:  OpLevel(member): returns op-level of member and
399         SetOpLevel(member, value): sets op-level of member.
400         Prototype of add_user_to_channel: add oplevel to parameters.
401         Prototype of mode_parse: add member to to parameters.
402
403         * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
404
405         * ircd/s_err.c: idem.
406
407         * ircd/channel.c: Removed unmatched '{' braces from comments
408         (confuses vi).  add_user_to_channel: oplevel is passed to function
409         and added in the created MemberShip structure.  send_channel_modes:
410         Generate the nick:mode list of the BURST msg in the new style (with
411         op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
412         ParseState: New attribute: member.  mode_process_clients: Disallow
413         deopping someone with an equal or higher op-level, take care of
414         inheritance of op-level.  mode_parse: member is passed to function      
415         and added in the created ParseState structure.  joinbuf_join: pass 0
416         as oplevel to add_user_to_channel as needed initialization of oplevel
417         in struct MemberShip.
418
419         * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
420         decoding of a BURST message and passing on a BURST message.
421         Renamed default_mode to current_mode.
422
423         * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
424
425         * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
426         to mode_parse (causes opped member to get op-level 0).                  
427
428 2002-02-25  Carlo Wood  <run@alinoe.com>
429         * include/channel.h: Added two new strings to struct Mode,
430         upass and apass, both with maximum length PASSLEN (a new
431         define in this file).  Two new mode defines MODE_UPASS and
432         MODE_APASS.
433
434         * ircd/channel.c: is_level0_op: Added as dummy function.
435         channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
436         Added support for MODE_APASS (+A) and MODE_UPASS (+u).
437         mode_parse_upass: New function to parse mode +u.
438         mode_parse_apass: New function to parse mode +A.
439
440         * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
441
442 2002-02-25  Carlo Wood  <carlo@alinoe.com>
443
444         * ircd/m_server.c: remove unused variables
445
446 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
447
448         * ircd/m_map.c: Modified to show a useful output to non-opered
449           clients when HEAD_IN_SAND_MAP is defined. Servers are added to
450           the list when first seen (after receiving SERVER) and that list
451           is sent to clients. Servers are excluded from the list if they are
452           hubs, services, or have been missing for more than 1 week.
453         
454         * ircd/map.c: Created file for map_* functions
455
456         * include/map.h: Created file for map_* functions
457
458         * ircd/m_server.c: Added calls to map_update()
459
460         * ircd/s_misc.c: Added call to map_update()
461
462         * ircd/parse.c: Changed to use m_map() and mo_map()
463         
464 2002-02-22 Reed Loden <reed@redmagnet.com>
465
466        * ircd/m_connect.c: Removed an extra : in remote connect message.
467
468 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
469
470         * ircd/whocmds.c: Local opers should also be able to
471         see servernames in /who
472
473         * ircd/gline.c: Fix core bug in gline_find()
474
475         * ircd/m_kill.c: Bug fix for HIS_KILLWHO
476
477 2002-02-19 John Buttery <john@io.com>
478
479         * ircd/ircd.c: Updated "No such file" error message.
480         
481 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
482
483         * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
484         a message handler, and some general cleanups and bug fixes. 
485
486         * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
487         kill source.
488         
489 2002-02-16  Tim Vogelsang <net@astrolink.org>
490
491         * ircd/m_kill.c: added a new static function, m_kill, which
492         performs the actual kill.
493         
494 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
495
496         * Added support for LIST STOP
497         
498 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
499
500         * Merged changes from u2_10_11 to main branch.
501         
502 2002-02-08  Tim Vogelsang  <net@astrolink.org>
503
504        * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
505        reason is supplied.
506
507 2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
508
509         * ircd/s_auth.c (read_auth_reply): left out an = in an
510         assertion--shouldn't have had any impact, though
511
512         * ircd/Makefile.in: add a hook for using ringlog; run make depend
513
514         * tools/ringlog.c: for the heck of it, add a comment including
515         rules for /etc/magic
516
517 2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
518
519         * tools/ringlog.pl: perl script to take output from ringlog and
520         pass it to addr2line to get function, file, and line number
521         information
522
523         * tools/ringlog.c: program/object to help in building function
524         trace information
525
526 2002-02-04  Alex Badea  <vampire@p16.pub.ro>
527
528         * include/ircd_features.h: added new feature MOTD_BANNER
529
530         * ircd/ircd_features.c: added new feature MOTD_BANNER
531
532         * ircd/motd.c (motd_signon): send a one-line banner from
533         FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
534         is set
535
536         * doc/example.conf: default value for MOTD_BANNER feature
537
538         * doc/readme.features: documented the MOTD_BANNER feature
539
540 2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
541
542         * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
543         check; added character 'A' to the server options string to
544         indicate when assertion checking is enabled
545
546 2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
547
548         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
549
550         * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
551         event if the errno is EBADF, since the caller probably already
552         knows about it and just hasn't gotten around to processing it yet
553
554         * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
555         is generated; don't process socket_events() or socket_state() if
556         an error occurred; add GEN_ERROR to list of flags in gen_flags()
557
558         * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
559         clear it
560
561 2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
562
563         * ircd/channel.c: change make_nick_user_{ip,host} to not use a
564         static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
565         NUI_BUFSIZE--I confess they're not well-named) is allocated by the
566         caller
567
568 2002-02-02  Alex Badea  <vampire@p16.pub.ro>
569
570         * include/client.h: added user flag FLAGS_HIDDENHOST
571
572         * include/ircd_features.h: added FEAT_HOST_HIDING and
573         FEAT_HIDDEN_HOST
574
575         * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
576         to report real hostnames and IPs to opers
577
578         * include/s_user.h: exported hide_hostmask()
579
580         * include/send.h: changed sendcmdto_channel_butserv to
581         sendcmdto_channel_butserv_butone; ditto for
582         sendcmdto_common_channels
583
584         * include/struct.h: added realhost to struct User
585
586         * include/whowas.h: added realhost to struct Whowas
587
588         * ircd/channel.c: match bans against both real and hidden
589         hostmasks; moved some calls to use sendcmdto_*_butone
590
591         * ircd/gline.c: match glines agains real host
592
593         * ircd/ircd_features.c: added FEAT_HOST_HIDING and
594         FEAT_HIDDEN_HOST
595
596         * ircd/m_account.c: call hide_hostmask() for possibly
597         hiding the user's host
598
599         * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
600
601         * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
602
603         * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
604         host
605
606         * ircd/m_who.c: match real hosts, if the query comes from an oper
607
608         * ircd/m_whois.c: report real hostname and IP to opers
609
610         * ircd/m_whowas.c: report real hostname to opers
611
612         * ircd/s_err.c: added user mode 'x' to the list of supported user
613         modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
614         real hostnames to opers
615
616         * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
617
618         * ircd/s_serv.c: send real hostname to servers
619
620         * ircd/s_user.c: send real hostname to servers; added processing
621         of usermode 'x'; added hide_hostmask() which actually does the work
622         of hiding a user's host; moved some calls to use sendcmdto_*_butone
623
624         * ircd/send.c: changed sendcmdto_channel_butserv to
625         sendcmdto_channel_butserv_butone; ditto for
626         sendcmdto_common_channels
627
628         * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
629         it's host hidden
630
631         * ircd/whowas.c: if needed, store a user's real host so we can
632         report it to opers later
633
634         * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
635         features
636
637         * doc/example.conf: default values for HOST_HIDING and
638         HIDDEN_HOST features
639
640 2002-02-01  Tim Vogelsang  <net@astrolink.org>
641
642         * ircd/send.c (sendwallto_group_butone): don't sent wallops to
643         ordinary users
644
645 2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
646
647         * ircd/jupe.c (jupe_activate): remove a bogus assertion
648
649         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
650
651         * ircd/s_err.c: added new channel mode 'r' to list of supported
652         channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
653         numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
654         informing users why they can't join a +r channel
655
656         * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
657         (+r) to do_clearmode(); note that it is *not* being added to the
658         default clearmode mask!
659
660         * ircd/channel.c: don't allow non-+r users to send messages to +r
661         channels from off the channel; add support for MODE_REGONLY (+r)
662         to channel_modes(); don't allow non-+r users to join +r channels
663         without an invite; add support for MODE_REGONLY to the modebuf_*()
664         family of functions (changes in modebuf_flush_int(),
665         modebuf_mode(), and modebuf_extract()); add support for
666         MODE_REGONLY to mode_parse()
667
668         * include/supported.h (FEATURESVALUES2): added the new channel
669         mode 'r' to the list of supported channel modes
670
671         * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
672         conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
673
674         * include/channel.h: remove unused MODE_SENDTS; add new
675         MODE_REGONLY
676
677         * ircd/s_bsd.c (read_packet): remove call to timer_verify()
678
679         * ircd/list.c: remove calls to timer_verify() from
680         alloc_connection() and dealloc_connection()
681
682         * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
683         from timer_run()
684
685 2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
686
687         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
688
689         * ircd/ircd_events.c (timer_run): why did I ever use a next
690         pointer when the algorithm guarantees that the head pointer will
691         always be the next pointer?
692
693 2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
694
695         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
696
697         * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
698         client process timer to catch any list corruption
699
700         * ircd/list.c: surround alloc_connection() and
701         dealloc_connection() with calls to timer_verify()
702
703         * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
704         verify the timer list's structure; call it around timer_run()
705
706 2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
707
708         * ircd/send.c (sendcmdto_common_channels): don't send message to a
709         channel that the source is a zombie on
710
711 2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
712
713         * ircd/ircd_events.c (timer_enqueue): one more assertion--make
714         sure a timer has the ACTIVE flag set before enqueueing the timer
715
716         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
717
718         * ircd/list.c (dealloc_connection): assert that the process timer
719         has been removed from the timer queue before dealloc_connection()
720         is called
721
722 2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
723
724         * ircd/res.c: don't accept T_A when we're looking for T_PTR
725
726         * ircd/channel.c (modebuf_flush_int): nuke the code that would
727         send a HACK DESYNCH notice on a HACK(2)--it would be far too
728         chatty
729
730         * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
731
732         * include/supported.h: add AWAYLEN to the list of supported
733         features
734
735         * include/ircd_defs.h: add AWAYLEN to specify the maximum length
736         of an away message
737
738         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
739
740         * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
741
742         * ircd/channel.c: pass a buflen parameter to channel_modes() for
743         pbuf--we were using sizeof(pbuf), which would always be
744         sizeof(char*) before; change send_channel_modes() to pass extra
745         parameter to channel_modes()
746
747         * include/channel.h: pass a buflen parameter to channel_modes()
748         for pbuf
749
750         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
751
752         * ircd/uping.c (uping_start): initialize some timers
753
754         * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
755         out when we need to re-add the process timer
756
757         * ircd/s_auth.c (make_auth_request): initialize a timer
758
759         * ircd/res.c (init_resolver): initialize some timers
760
761         * ircd/list.c (alloc_connection): initialize the client process
762         timer
763
764         * ircd/ircd_events.c: add a function, timer_init(), to initialize
765         a struct Timer; recast timer_add() to catch when adding a marked
766         timer and not re-enqueue it--but mark it for re-enqueuing; update
767         timer_del() to turn off the GEN_READD flag and to ignore reference
768         counts when destroying the timer--we're using GEN_MARKED as an
769         ersatz referance count; changed timer_run() to work with the new
770         way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
771         map[]
772
773         * ircd/ircd.c: initialize some timers
774
775         * ircd/engine_select.c (engine_loop): initialize a timer
776
777         * ircd/engine_poll.c (engine_loop): initialize a timer
778
779         * ircd/engine_kqueue.c (engine_loop): initialize a timer
780
781         * ircd/engine_devpoll.c (engine_loop): initialize a timer
782
783         * ircd/IPcheck.c (IPcheck_init): initialize a timer
784
785         * include/ircd_events.h: add GEN_READD flag for timers to indicate
786         that a timer must be readded; add t_onqueue() macro to check to
787         see if a timer is on the queue (this is a hack, though); added
788         timer_init() to initialize a struct Timer--we're no longer doing
789         the initialization in timer_add()
790
791 2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
792
793         * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
794         prevent a core bug *in* the assertion
795
796         * doc/readme.features: document new POLLS_PER_LOOP feature; change
797         documentation to reflect that OPER_SET now defaults to FALSE
798
799         * doc/p10.html: documented the new ACCOUNT stuff
800
801         * doc/example.conf: document new POLLS_PER_LOOP default; change
802         default for OPER_SET
803
804         * RELEASE.NOTES: changed documentation to reflect the fact that
805         assertions are now enabled by default and do not cause memory
806         leaks
807
808         * ircd/res.c (make_cache): removed a bogus assertion we probably
809         never caught because assertions haven't been enabled on production
810         servers for any length of time before
811
812         * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
813
814         * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
815         instance of POLLS_PER_KQUEUE
816
817         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
818
819         * ircd/s_bsd.c (client_timer_callback): only clear the
820         FREEFLAG_TIMER flag when the timer is being destroyed
821
822         * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
823         default it to 200; turn OPER_SET off by default
824
825         * ircd/engine_kqueue.c: dynamically allocate and reallocate the
826         array of events to obtain from the kernel
827
828         * ircd/engine_devpoll.c: dynamically allocate and reallocate the
829         array of events to obtain from the kernel
830
831         * include/ircd_features.h: add a new feature for tuning how many
832         events to get from the kernel, for engines that support that
833
834         * ircd/Makefile.in: re-run make depend to correct dependancies
835
836         * ircd/m_who.c: remove unneeded inclusion of list.h
837
838         * ircd/ircd_events.c: remove unneeded inclusion of list.h
839
840         * ircd/whocmds.c (do_who): hide server name in /who unless
841         requester is an operator; simplify hop count insertion
842
843         * ircd/s_misc.c (exit_one_client): make sure client's snomask is
844         cleared
845
846         * ircd/parse.c: use mo_version and mo_admin when opers do /version
847         or /admin
848
849         * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
850         of the static string "*.undernet.org"
851
852         * ircd/m_version.c: only let ordinary users get version
853         information for the server they are on
854
855         * ircd/m_admin.c: only let ordinary users get admin information
856         for the server they are on
857
858         * ircd/channel.c (client_can_send_to_channel): check is_banned()
859         before letting the client speak on a channel s/he is not on
860
861         * include/supported.h: add NETWORK to feature list
862
863         * include/handlers.h: declare mo_admin() and mo_version()
864
865 2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
866
867         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
868
869         * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
870         of !NDEBUG
871
872         * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
873         !NDEBUG
874
875         * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
876         !NDEBUG
877
878         * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
879
880         * ircd/Makefile.in: run make depend on chkconf.c as well
881
882         * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
883         conditionalize on MDEBUG
884
885         * include/fda.h: instead of conditionalizing on !NDEBUG,
886         conditionalize on MDEBUG
887
888         * configure: rebuild configure script
889
890         * configure.in: enable assertion checking by default, since we
891         have now decoupled memory debugging from the NDEBUG macro
892
893         * ircd/s_user.c (set_nick_name): remove calls to
894         verify_client_list()
895
896         * ircd/s_misc.c (exit_one_client): remove calls to
897         verify_client_list()
898
899         * ircd/s_conf.c (rehash): remove calls to verify_client_list()
900
901         * ircd/m_who.c (m_who): remove calls to verify_client_list()
902
903         * ircd/list.c: remove calls to verify_client_list(); keep
904         verify_client_list() around just in case we ever need it again,
905         but never compile it in
906
907         * ircd/ircd_events.c (event_execute): remove calls to
908         verify_client_list()
909
910         * ircd/client.c (client_get_ping): remove calls to
911         verify_client_list()
912
913         * include/list.h (send_listinfo): remove temporary debugging
914         function verify_client_list()
915
916         * ircd/uping.c: don't die if the event type is ET_ERROR in socket
917         callback functions
918
919         * ircd/res.c (res_callback): don't die if the event type is
920         ET_ERROR
921
922         * ircd/listener.c (accept_connection): don't die if the event type
923         is ET_ERROR
924
925 2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
926
927         * ircd/s_user.c (set_nick_name): bracket call to
928         add_client_to_list() with calls to verify_client_list()
929
930         * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
931
932         * ircd/list.c (verify_client_list): add a probabilistic loop
933         detector: for every client added, there is a 2% probability that
934         it will be used to replace the value of sentinel; if at any time,
935         sentinel is found again, we know we're in a loop
936
937         * ircd/ircd_events.c (event_execute): add verify_client_list()
938         calls wrapping event_execute; at the very least, I'll figure out
939         what event the corruption occurred in
940
941         * ircd/list.c: moved verify_client_list() to try to keep it from
942         being inlined
943
944         * ircd/Makefile.in (version.c): version.c wasn't dependant on
945         version.h and patchlevel.h, like it was supposed to be
946
947         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
948
949         * ircd/s_auth.c (destroy_auth_request): overload send_reports
950         argument to also indicate whether or not to call
951         release_auth_client() and thereby enter the client into the linked
952         list
953
954         * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
955
956         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
957
958         * ircd/list.c (free_client): verify that destroy_auth_request()
959         didn't automagically re-add us to the list; we might have to think
960         about this interaction more carefully, actually
961
962         * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
963         calling free_client(); otherwise, free_client() will try to free
964         the auth by calling destroy_auth_request(), which will call
965         add_client_to_list()
966
967         * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
968         verify_client_list() around to catch any corruption that might
969         occur here
970
971         * ircd/s_conf.c (rehash): liberally sprinkle calls to
972         verify_client_list() here, since this is about the only routine I
973         can think of that could cause the "core on kill -HUP" bug
974
975         * ircd/m_who.c: sprinkle calls to verify_client_list() around
976         liberally, since we've seen crashes here; temporarily include the
977         otherwise unneeded list.h header
978
979         * ircd/list.c: sprinkle calls to verify_client_list() around quite
980         liberally; add debugging asserts to list manipulation functions to
981         catch strange settings for next and prev pointers; define
982         verify_client_list(), which walks the client list and verifies
983         that everything is as it's supposed to be
984
985         * ircd/client.c: wrap client_get_ping with calls to
986         verify_client_list() to see if that's where we're dying
987
988         * include/patchlevel.h (PATCHLEVEL): bump to 03
989
990         * include/list.h: declare verify_client_list() if DEBUGMODE
991         enabled; otherwise, define it to be empty
992
993 2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
994
995         * ircd/m_quit.c (m_quit): remove an unused variable
996
997         * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
998
999         * ircd/s_user.c: when building the user mode to send to the user,
1000         don't include +r; add an extra set of parens to squelch a warning
1001
1002         * ircd/m_quit.c (m_quit): use exit_client_msg()
1003
1004         * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
1005         keep track of who's running what version
1006
1007         * ircd/m_squit.c (ms_squit): remove debugging calls to
1008         protocol_violation()
1009
1010         * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
1011         new gmake "feature" (pull-up from trunk)
1012
1013         * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
1014         from trunk)
1015
1016 2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
1017
1018         * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
1019         list of user modes; process account name as part of user mode in
1020         NICK decoding (set_nick_name()); add account name to usermode when
1021         building the usermode to incorporate in outgoing NICK messages
1022
1023         * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
1024         user is logged in to
1025
1026         * ircd/parse.c: define the new ACCOUNT command, usable only by
1027         servers and ignored by everything else
1028
1029         * ircd/m_whois.c: report what account name is associated with a
1030         user, if any
1031
1032         * ircd/m_account.c: implement the ACCOUNT command
1033
1034         * ircd/Makefile.in: add m_account.c to the list of sources; ran
1035         make depend
1036
1037         * include/struct.h: add an account field to struct User
1038
1039         * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
1040         what username a user is logged in under
1041
1042         * include/msg.h: add ACCOUNT command and token (AC)
1043
1044         * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
1045         the maximum length of a username for X
1046
1047         * include/handlers.h: add declaration for ms_account()
1048
1049         * include/client.h: add FLAGS_ACCOUNT to flag when a user account
1050         name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
1051         IsAccount() and SetAccount() to manipulate the flag
1052
1053         * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
1054         name like "Amsterdam2.NL.EU.undernet.org", we get the struct
1055         Client for the server with numeric "Am", which happens to be
1056         stockholm!  To fix this, we look up the full name *first*; if that
1057         doesn't get it, *then* we look up by numeric.
1058
1059 2001-12-24  Perry Lorier <isomer@coders.net>
1060         * ircd/m_server.c: cleanups, maybe this will make the bug easier
1061         to find.
1062
1063         * ircd/m_stats.c: display maximum number of connects in an I:
1064
1065 2001-11-22  Perry Lorier  <isomer@coders.net>
1066         * ircd/m_squit.c: Bug fix in squit
1067
1068 2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1069         * ircd/parse.c, include/handlers.h: Give remote whois the correct
1070         handler.
1071         
1072 2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
1073
1074         * ircd/send.c: some minor white-space fiddling; recast selector
1075         test in sendwallto_group_butone() to remove a warning regarding
1076         putting & within parentheses
1077
1078         * ircd/m_create.c (ms_create): use time_t instead of int as a
1079         declaration for rate
1080
1081         * ircd/ircd_reply.c (protocol_violation): it's supposed to be
1082         WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
1083         wonder we weren't seeing any protocol violations!
1084
1085         * include/send.h: include time.h for time_t; move WALL_* closer to
1086         the function they're used in; some white-space fiddling; add
1087         declaration of sendto_opmask_butone_ratelimited()
1088
1089         * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
1090         cases where we ignore a squit, so we aren't taken by surprise, at
1091         least...
1092
1093         * ircd/m_create.c (ms_create): Display origin server, not origin
1094         user
1095
1096         * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
1097
1098 2001-10-31  Perry Lorier  <isomer@coders.net>
1099         * include/m_ping.c: Forward port ping bug
1100
1101 2001-10-31  Perry Lorier  <isomer@coders.net>
1102         * include/patchlevel.h: We're beta now
1103
1104 2001-10-31  Perry Lorier  <isomer@coders.net>
1105         * ircd/s_user.c: fixed hunt_server
1106
1107 2001-09-21  Perry Lorier  <isomer@coders.net>
1108         * ircd/send.c and various: replace sendcmdto_flag_butone with
1109         sendwallto_group_butone
1110
1111 2001-09-21  Vampire-  <unknown>
1112         * ircd/ircd_string.c: unique_name_vector round II.
1113
1114 2001-09-21  mbuna  <mbuna@undernet.org>
1115         * configure.in: Add support for darwin
1116
1117 2001-09-21  Perry Lorier  <isomer@coders.net>
1118         * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
1119
1120 2001-09-20  Perry Lorier  <isomer@coders.net>
1121
1122         * Pullups from 2.10.10.pl16
1123         * Added some warnings, and the concept of rate limited snotices
1124
1125 2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
1126
1127         * ircd/channel.c: use "%u" to format limit arguments; use
1128         strtoul() to process limit arguments in a /mode command--note:
1129         most clients seem to truncate the integer, probably because
1130         they're using atoi, and perhaps signed ints
1131
1132 2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
1133
1134         * ircd/numnicks.c: include stdlib.h for exit()
1135
1136         * ircd/ircd_log.c: include stdlib.h for exit()
1137
1138         * ircd/ircd_events.c: include stdlib.h for exit()
1139
1140         * ircd/s_stats.c: remove description of /stats v, since it's gone
1141
1142         * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
1143         /wallops to distinguish wallops from wallusers
1144
1145         * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
1146         in the "handshake" or "connecting" states--I think the latter will
1147         never happen, but...
1148
1149         * doc/Authors: apply delete's Authors patch
1150
1151         * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
1152         Braden's version
1153
1154         * README: rewrite README
1155
1156 2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
1157
1158         * ircd/s_serv.c (server_estab): remove unused variable split
1159
1160         * ircd/parse.c: add mr_error to the parse table
1161
1162         * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
1163         unregistered connections--if IsUserPort() is true, the ERROR is
1164         ignored, otherwise, the message is saved
1165
1166 2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
1167
1168         * ircd/m_kill.c (ms_kill): another minor typo *sigh*
1169
1170         * ircd/s_user.c (send_supported): oops, minor typo...
1171
1172         * ircd/s_user.c: implement send_supported() to send two ISUPPORT
1173         messages containing our feature buffers; make register_user() use
1174         send_supported()
1175
1176         * ircd/s_misc.c (exit_client): make sure not to give away a remote
1177         server in the ERROR message sent to the client; if the killer is a
1178         server, we substitute our name in its place
1179
1180         * ircd/m_version.c (m_version): use send_supported() to send the
1181         ISUPPORT values to the user
1182
1183         * ircd/m_nick.c: shave nick collision kills here a bit, too, for
1184         the same reasons as for m_kill.c
1185
1186         * ircd/m_kill.c: shave kills a bit so that the results look
1187         exactly the same no matter where you are; if we didn't do this, it
1188         would be possible to map the network by looking at the differences
1189         between kills originating under various circumstances
1190
1191         * include/supported.h: split the features into two, so as to not
1192         bust the parameter count when sending the features list
1193
1194         * include/s_user.h: declare new send_supported() function to send
1195         the ISUPPORT information
1196
1197 2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
1198
1199         * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
1200         source-routed spoofing attacks; this is only available under
1201         u2.10.11, so don't even bother, since no one but testers are using
1202         the source base
1203
1204 2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
1205
1206         * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
1207
1208         * ircd/s_err.c: put in a . for reporting link version on /trace,
1209         to match what /version does
1210
1211 2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
1212
1213         * ircd/s_misc.c (exit_client): servers don't understand what the
1214         numeric nick ERROR is supposed to mean, so they ignore error
1215         messages, resulting in not knowing why we were rejected; use
1216         sendcmdto_one for servers and sendrawto_one for clients
1217
1218 2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
1219
1220         * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
1221         a nick collide, a bare BURST may be propagated; adjust the
1222         enforced parameter count to accept the bare BURST
1223
1224 2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
1225
1226         * ircd/s_bsd.c: mark a client as having been IP checked
1227
1228         * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
1229         second call to SetIPChecked()
1230
1231 2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
1232
1233         * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
1234
1235         * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
1236
1237 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
1238
1239         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
1240         sections so that if neither is used, the declaration of buf will
1241         not elicit an "unused variable" warning under NetBSD
1242
1243         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
1244         on alpha)
1245
1246         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
1247         warnings on alpha)
1248
1249         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
1250         warnings on alpha)
1251
1252         * ircd/client.c: include string.h to declare memset (fix warnings
1253         on alpha)
1254
1255         * ircd/channel.c: remove unused functions next_overlapped_ban,
1256         del_banid, and is_deopped (fix warnings under -O1)
1257
1258         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
1259         warnings on alpha)
1260
1261 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
1262
1263         * ircd/s_user.c (set_user_mode): clear the snomask if the user
1264         isn't supposed to receive server notices anymore
1265
1266         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
1267
1268         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
1269         installation prefix; default devpoll and kqueue to on (they get
1270         turned off if the required headers aren't present)
1271
1272         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
1273         sprintf_irc(); it's a bit hackish, but it'll do for now
1274
1275         * ircd/support.c: remove unused #include
1276
1277         * ircd/send.c: remove unused #include
1278
1279         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
1280
1281         * ircd/s_serv.c: remove unused #include
1282
1283         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
1284         sprintf_irc() and friends
1285
1286         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
1287         ircd/s_err.c, which is the only other file to refer to it
1288
1289         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
1290         sprintf_irc()
1291
1292         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
1293         sprintf_irc()
1294
1295         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
1296
1297         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
1298
1299         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
1300
1301         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
1302
1303         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
1304
1305         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
1306
1307         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
1308         instead of sprintf_irc()
1309
1310         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
1311         make depend
1312
1313         * include/ircd_string.h: remove declaration of sprintf_irc() (what
1314         was it doing here anyway?)
1315
1316         * include/sprintf_irc.h: removed unneeded source file
1317
1318         * ircd/sprintf_irc.c: removed unneeded source file
1319
1320         * ircd/s_debug.c (count_memory): remove some dead code
1321
1322         * ircd/s_auth.c: remove some dead code
1323
1324         * ircd/res.c (update_list): remove some dead code
1325
1326         * ircd/m_whowas.c: remove some dead code
1327
1328         * ircd/m_whois.c: remove some dead code
1329
1330         * ircd/m_who.c: remove some dead code
1331
1332         * ircd/m_wallusers.c: remove some dead code
1333
1334         * ircd/m_wallops.c: remove some dead code
1335
1336         * ircd/m_wallchops.c: remove some dead code
1337
1338         * ircd/m_version.c: remove some dead code
1339
1340         * ircd/m_userip.c: remove some dead code
1341
1342         * ircd/m_userhost.c: remove some dead code
1343
1344         * ircd/m_uping.c: remove some dead code
1345
1346         * ircd/m_trace.c: remove some dead code
1347
1348         * ircd/m_topic.c: remove some dead code
1349
1350         * ircd/m_tmpl.c: remove some dead code
1351
1352         * ircd/m_time.c: remove some dead code
1353
1354         * ircd/m_squit.c: remove some dead code
1355
1356         * ircd/m_silence.c: remove some dead code
1357
1358         * ircd/m_settime.c: remove some dead code
1359
1360         * ircd/m_set.c: remove some dead code
1361
1362         * ircd/m_server.c: remove some dead code
1363
1364         * ircd/m_rpong.c: remove some dead code
1365
1366         * ircd/m_rping.c: remove some dead code
1367
1368         * ircd/m_restart.c: remove some dead code
1369
1370         * ircd/m_reset.c: remove some dead code
1371
1372         * ircd/m_rehash.c: remove some dead code
1373
1374         * ircd/m_quit.c: remove some dead code
1375
1376         * ircd/m_proto.c: remove some dead code
1377
1378         * ircd/m_privs.c: remove some dead code
1379
1380         * ircd/m_privmsg.c: remove some dead code
1381
1382         * ircd/m_pong.c: remove some dead code
1383
1384         * ircd/m_ping.c: remove some dead code
1385
1386         * ircd/m_pass.c: remove some dead code
1387
1388         * ircd/m_part.c: remove some dead code
1389
1390         * ircd/m_opmode.c: remove some dead code
1391
1392         * ircd/m_oper.c: remove some dead code
1393
1394         * ircd/m_notice.c: remove some dead code
1395
1396         * ircd/m_nick.c: remove some dead code
1397
1398         * ircd/m_map.c: remove some dead code
1399
1400         * ircd/m_lusers.c: remove some dead code
1401
1402         * ircd/m_list.c: remove some dead code
1403
1404         * ircd/m_links.c: remove some dead code
1405
1406         * ircd/m_kill.c: remove some dead code
1407
1408         * ircd/m_kick.c: remove some dead code
1409
1410         * ircd/m_jupe.c: remove some dead code
1411
1412         * ircd/m_join.c: remove some dead code
1413
1414         * ircd/m_ison.c: remove some dead code
1415
1416         * ircd/m_invite.c: remove some dead code
1417
1418         * ircd/m_info.c: remove some dead code
1419
1420         * ircd/m_help.c: remove some dead code
1421
1422         * ircd/m_gline.c: remove some dead code
1423
1424         * ircd/m_get.c: remove some dead code
1425
1426         * ircd/m_error.c: remove some dead code
1427
1428         * ircd/m_endburst.c: remove some dead code
1429
1430         * ircd/m_die.c: remove some dead code
1431
1432         * ircd/m_desynch.c: remove some dead code
1433
1434         * ircd/m_destruct.c: remove some dead code
1435
1436         * ircd/m_defaults.c: remove some dead code
1437
1438         * ircd/m_create.c: remove some dead code, along with an #if 1
1439
1440         * ircd/m_cprivmsg.c: remove some dead code
1441
1442         * ircd/m_connect.c: remove some dead code
1443
1444         * ircd/m_close.c: remove some dead code
1445
1446         * ircd/m_clearmode.c: remove some dead code
1447
1448         * ircd/m_burst.c: remove some dead code
1449
1450         * ircd/m_away.c: remove some dead code
1451
1452         * ircd/m_admin.c: remove some dead code
1453
1454         * ircd/listener.c (accept_connection): remove some dead code
1455
1456         * ircd/ircd_reply.c (need_more_params): remove some dead code
1457
1458         * ircd/channel.c (add_banid): remove some dead code
1459
1460         * include/support.h: remove some dead code
1461
1462         * include/querycmds.h: remove some dead code
1463
1464         * doc/readme.chroot: document how to do chroot operation
1465
1466 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
1467
1468         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
1469         force bin directory to be created if necessary prior to
1470         installation; run make depend
1471
1472         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
1473         the ${srcdir}
1474
1475         * Makefile.in: tune to detect Makefile.in changes in
1476         subdirectories and to create installation directory indicated by
1477         ${prefix}
1478
1479         * ircd/whocmds.c (count_users): routine to count the number of
1480         users matching a given user@host mask
1481
1482         * ircd/s_err.c: add error messages for ERR_LONGMASK,
1483         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
1484
1485         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
1486         from operators; only set GLINE_OPERFORCE flag if oper has the
1487         PRIV_WIDE_GLINE privilege
1488
1489         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
1490         maximum number of users a G-line can impact before it has to be
1491         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
1492         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
1493         operators to use ! to force a wide G-line to be set
1494
1495         * ircd/gline.c: make make_gline() be called with separate user and
1496         host arguments, and not call canon_userhost() directly; implement
1497         gline_checkmask() to verify that a host mask is acceptable; move
1498         BADCHAN check up in gline_add(), and check passed-in mask under
1499         certain circumstances for acceptability; fix call to
1500         sendto_opmask_butone() to handle separation of userhost into user
1501         and host in gline_add(); update call to make_gline()
1502
1503         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
1504         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
1505         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
1506
1507         * include/whocmds.h (count_users): declare routine to count users
1508         matching a given user@host mask
1509
1510         * include/numeric.h: added three new error returns: ERR_LONGMASK
1511         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
1512         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
1513         contains wildcards in the wrong places
1514
1515         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
1516         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
1517
1518         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
1519         to signal to gline_add() that the operator attempted to force the
1520         G-line to be set
1521
1522         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
1523
1524         * doc/readme.gline: update to document new "!" prefix to a G-line
1525         user@host mask
1526
1527         * doc/readme.features: document GLINEMAXUSERCOUNT,
1528         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
1529
1530         * doc/example.conf: update to mention new features along with
1531         their defaults
1532
1533 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
1534
1535         * doc/example.conf: updated example.conf from Braden
1536         <dbtem@yahoo.com>
1537
1538         * include/supported.h: forward-port from pl15
1539
1540 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
1541
1542         * ircd/whocmds.c: include ircd_policy.h and implement
1543         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
1544
1545         * ircd/m_whois.c: forward-port of the idle-time hiding code from
1546         pl15; this also required passing parc into do_whois(), which also
1547         meant passing parc into do_wilds()--*sigh*
1548
1549         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
1550         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
1551
1552 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
1553
1554         * tools/wrapper.c: add a wrapper program that can be used to
1555         adjust file descriptor limits and root directories; program must
1556         be run as root--NOT SETUID!--and given appropriate -u arguments
1557
1558         * doc/readme.log: documentation of how to configure logging
1559
1560         * doc/readme.features: documentation of each feature (except for
1561         logging)
1562
1563 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
1564
1565         * Makefile.in (config): add a deprecation notice with a pointer to
1566         tools/transition
1567
1568         * tools/transition: shell script to convert old compile-time
1569         options into new compile-time options and appropriate F-lines
1570
1571         * tools/mkchroot: shell-script to prepare the chroot area by
1572         copying over all the necessary libraries so they can be found
1573
1574 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
1575
1576         * INSTALL: partial update of INSTALL for u2.10.11 release...
1577
1578 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
1579
1580         * ircd/table_gen.c (makeTables): finally got tired of the
1581         "overflow in implicit conversion" warning, so just got rid of it
1582         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
1583         differences in the tables generated
1584
1585 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
1586
1587         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
1588         if a client is in the STAT_CONNECTING status
1589
1590 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
1591
1592         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
1593         into sendcmdto_one(); define new sendcmdto_prio_one(), which
1594         places the message into the priority queue
1595
1596         * ircd/s_user.c (hunt_server_prio_cmd): definition of
1597         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
1598         instead of sendcmdto_one()
1599
1600         * ircd/m_settime.c: use sendcmdto_prio_one() and
1601         hunt_server_prio_cmd() to send SETTIME
1602
1603         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
1604
1605         * include/send.h: removed declaration for unused vsendcmdto_one();
1606         added a declaration for sendcmdto_prio_one()
1607
1608         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
1609         sendcmdto_prio_one()
1610
1611         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
1612         put in the server's priority queue, too...
1613
1614         * ircd/ircd.c: don't check LPATH for accessibility at all
1615
1616 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
1617
1618         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
1619         command if we're configured as a hub; send individual server flags
1620         in SERVER commands
1621
1622         * ircd/s_bsd.c (completed_connection): send a +h flag in our
1623         SERVER command if we're configured as a hub
1624
1625         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
1626         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
1627         flag for a server; +hs sets both flags; also modify CMD_SERVER
1628         format string to send the flags
1629
1630         * include/client.h: define two new flags, FLAGS_HUB and
1631         FLAGS_SERVICE to mark services and hubs as such; define testing
1632         macros, setting macros
1633
1634         * ircd/s_user.c: remove deprecated struct Gline* argument to
1635         register_user(); remove GLINE rebroadcast; do not send GLINE
1636         acknowledgement parameter to NICK; do not look for GLINE
1637         acknowledgement parameter to NICK while parsing
1638
1639         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
1640         argument to server_estab(); do not send JUPE/GLINE acknowledgement
1641         parameters for SERVER or NICK
1642
1643         * ircd/m_user.c (m_user): remove deprecated argument to
1644         register_user()
1645
1646         * ircd/m_server.c: remove deprecated argument to server_estab();
1647         remove documentation comment regarding JUPE acknowledgement
1648         parameter to SERVER; remove JUPE rebroadcast
1649
1650         * ircd/m_pong.c (mr_pong): remove deprecated argument to
1651         register_user()
1652
1653         * ircd/m_nick.c: remove documentation comment regarding GLINE
1654         acknowledgement parameter to NICK
1655
1656         * ircd/jupe.c: use user's real name in JUPE server notices if
1657         HEAD_IN_SAND_SNOTICES is defined
1658
1659         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
1660         setuid code; correct ancient DEBUG vs DEBUGMODE typo
1661
1662         * ircd/gline.c: use user's real name in GLINE server notices if
1663         HEAD_IN_SAND_SNOTICES is defined
1664
1665         * ircd/channel.c (modebuf_flush_int): make apparent source be
1666         local server, not oper's server; use user's real name in hack
1667         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
1668
1669         * include/s_user.h: remove struct Gline pre-declaration; remove
1670         deprecated struct Gline argument from register_user()
1671
1672         * include/s_serv.h: remove struct Jupe pre-declaration; remove
1673         deprecated struct Jupe argument from server_estab()
1674
1675 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
1676
1677         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
1678         changes required to control remote stats
1679
1680         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
1681         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
1682         [forward-port from pl15]
1683
1684         * ircd/m_whowas.c (m_whowas): report server name only if requester
1685         is an operator [forward-port from pl15]
1686
1687         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
1688         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
1689         and obtain the report from the user's server [forward-port from
1690         pl15]
1691
1692         * ircd/m_who.c: add missing include for ircd_policy.h
1693         [forward-port from pl15]
1694
1695         * ircd/m_version.c (m_version): require oper access for remote
1696         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1697
1698         * ircd/m_time.c (m_time): require oper access for remote /time if
1699         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1700
1701         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
1702         missing semicolon [forward-port from pl15]
1703
1704         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
1705         kills [forward-port from pl15]
1706
1707         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
1708         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1709
1710         * ircd/m_lusers.c (m_lusers): require oper access for remote
1711         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1712
1713         * ircd/m_burst.c (ms_burst): server-added bans are stored using
1714         local server name, to hide remote server names; modes also are to
1715         originate from the local server [forward-port from pl15]
1716
1717         * ircd/m_admin.c (m_admin): require oper access for remote /admin
1718         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
1719
1720         * ircd/channel.c (add_banid): if a server is adding a ban, use my
1721         server name to hide the remote server's name [forward-port from
1722         pl15]
1723
1724         * ircd/Makefile.in: ran make depend
1725
1726         * include/s_stats.h: hunt_stats() has to have an extra argument to
1727         support the forward-port from pl15
1728
1729         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
1730         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
1731
1732         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
1733         forgot to check in the events branch
1734
1735 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
1736
1737         * ircd/res.c (init_resolver): don't start DNS expires with a 0
1738         relative timeout--if the server starts slow, timeouts could be
1739         messy...there's probably a better solution, but this'll do for now
1740
1741         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
1742         headers very well; include stropts.h; define an os_set_tos()
1743
1744         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
1745         os_generic.c
1746
1747         * ircd/ircd.c: if there are no C-lines, we don't want to have a
1748         timer that expires at the absolute time of 0--it kinda blocks all
1749         the other timers!
1750
1751         * ircd/engine_devpoll.c: some includes for open(); declare errcode
1752         and codesize in engine_loop()
1753
1754         * ircd/list.c (free_client): remove bogus check on timer active
1755         flag
1756
1757         * ircd/s_auth.c: pull out destruction code in
1758         auth_timeout_request() into an externally-visible
1759         destroy_auth_request(); manage cli_auth pointer in client
1760         structure; use it for an extra assertion check
1761
1762         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
1763         debugging notices to show flow when deallocating
1764         connections/clients; call destroy_auth_request() when free'ing a
1765         client that has an auth outstanding; don't free the connection if
1766         the process timer is unmarked but still active
1767
1768         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
1769         and reset it before calling the event handler for an ET_DESTROY
1770         event
1771
1772         * include/s_auth.h (destroy_auth_request): declare
1773         destroy_auth_request(), which can be used to destroy an
1774         outstanding auth request if a client socket goes away before the
1775         auth exchange is completed
1776
1777         * include/ircd_events.h: add an active flag to keep track of
1778         whether or not particular generators are active, for the
1779         convenience of functions using the API
1780
1781         * include/client.h: add a pointer for auth requests to struct
1782         Connection so we can kill outstanding auth requests if a client
1783         socket closes unexpectedly
1784
1785         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
1786         the sock or timer callback; take that into account in the assert
1787
1788         * ircd/list.c: add magic number checking and setting--magic
1789         numbers are zero'd on frees to detect double-frees; add back
1790         setting of cli_from() to 0 to break the back-link from the struct
1791         Connection (duh)
1792
1793         * ircd/ircd.c: set me's magic number correctly
1794
1795         * include/client.h: define magic numbers and accessor/verifier
1796         macros
1797
1798         * ircd/list.c: assert that dealloc_client() is called with
1799         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
1800         dealloc_client(); don't mess with cli_from(cptr)
1801
1802         * ircd/s_bsd.c: only attempt to dealloc a connection if the
1803         associated client has already been destroyed, or at least delinked
1804
1805 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
1806
1807         * ircd/list.c (free_client): only try to delete the socket when
1808         the fd hasn't already been closed, avoiding a double-free
1809
1810         * ircd/list.c (free_connection): make sure the client is really
1811         gone before doing away with the connection
1812
1813         * ircd/s_bsd.c: record that socket has been added in con_freeflag
1814         field; queue a socket_del() as soon as the socket is close()'d;
1815         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
1816         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
1817         then dealloc the connection if safe; mark socket as dead when
1818         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
1819         to client_timer_callback(); dealloc connection if safe upon
1820         ET_DESTROY event in client_timer_callback()
1821
1822         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
1823         the connection if both socket and timer have been destroyed;
1824         destroy both socket and timer explicitly and carefully
1825
1826         * include/client.h: replace the con_timer field with a
1827         con_freeflag field, to indicate what still needs freeing; define
1828         the freeflags
1829
1830         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
1831         become 0
1832
1833         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
1834         become 0
1835
1836         * ircd/s_bsd.c: add some extra assertions to try to track down a
1837         corruption problem
1838
1839         * ircd/engine_select.c (engine_loop): add an extra assert to try
1840         to track down a corruption problem
1841
1842         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
1843         track down a corruption problem
1844
1845         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
1846         to track down a corruption problem
1847
1848         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
1849         empty during processing; add an extra assert to try to track down
1850         a corruption problem
1851
1852         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
1853         entries
1854
1855 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
1856
1857         * ircd/s_bsd.c (client_sock_callback): client is no longer
1858         blocked, so we must mark it as unblocked
1859
1860         * ircd/engine_select.c: add Debug() calls galore; add handling for
1861         SS_NOTSOCK; use a dummy sock variable to keep things from
1862         disappearing on us; correct timeout calculation; update nfds for
1863         efficiency
1864
1865         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
1866         remove a spurious "if (sock)" which will always be true; update
1867         nfds for efficiency
1868
1869         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
1870         SS_NOTSOCK (just in case); correct timeout calculation
1871
1872         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
1873         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
1874
1875         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
1876         pretty-indent numbers
1877
1878         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
1879         case--it's not a socket; the check for writability is most likely
1880         not needed, but present for completeness
1881
1882 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
1883
1884         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
1885         no newline flag is set; call read_packet() when the timer expires,
1886         regardless of what's in the buffer--read_packet() should be able
1887         to deal properly
1888
1889         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
1890         sent to clients to include the client nickname (duh)
1891
1892         * ircd/ircd_events.c: don't destroy a timer if it's already marked
1893         for destruction; replace a missing ! in socket_del()
1894
1895         * ircd/engine_poll.c (engine_loop): reference a temporary variable
1896         so we don't have to worry about sockList[i] going away
1897
1898         * ircd/s_bsd.c (client_sock_callback): add Debug messages
1899
1900         * ircd/s_auth.c: add Debug messages all over the place
1901
1902         * ircd/ircd_events.c: add and edit some Debug messages; add a list
1903         of routines to convert some of the enums and flags from numbers
1904         into human-readable strings for the Debug messages
1905
1906         * ircd/engine_poll.c: hack some Debug messages to use the new name
1907         conversion routines in ircd_events.c; add an extra assert for a
1908         condition that shouldn't ever happen; apparently recv() can return
1909         EAGAIN when poll() returns readable--I wonder why...
1910
1911         * include/ircd_events.h: declare some helper routines under
1912         DEBUGMODE
1913
1914 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
1915
1916         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
1917         check
1918
1919         * ircd/s_auth.c: add more Debug messages
1920
1921         * ircd/list.c (make_client): add an extra assertion check
1922
1923         * ircd/ircd_events.c (socket_events): don't call the engine events
1924         changer if we haven't actually made any changes to the event mask
1925
1926         * ircd/uping.c: add some Debug messages
1927
1928         * ircd/s_stats.c: document new /STATS e
1929
1930         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
1931
1932         * ircd/s_bsd.c: remove static client_timer variable; in
1933         read_packet(), if there's still data in the client's recvQ after
1934         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
1935         of client_sock_callback to handle destroying the timer properly;
1936         rewrote client_timer_callback from scratch to be called on an
1937         individual client
1938
1939         * ircd/m_stats.c: add /STATS e to report the engine name
1940
1941         * ircd/list.c: deal with con_timer field in struct Connection
1942         properly; correct a core-level bug in remove_client_from_list--if
1943         the client is the only one in the list, we try to update
1944         GlobalClientList's cli_prev pointer--not good
1945
1946         * ircd/ircd.c: remove call to init_client_timer()
1947
1948         * ircd/engine_poll.c: made Debug messages more uniform by
1949         prepending "poll:" to them all; corrected an off-by-one error that
1950         caused poll_count to be 1 less than the actual count and removed
1951         my work-around; added Debug messages to indicate which socket is
1952         being checked and what the results are
1953
1954         * ircd/Makefile.in: ran a make depend
1955
1956         * include/s_bsd.h: remove init_client_timer(), since we're doing
1957         it differently now
1958
1959         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
1960         engine name
1961
1962         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
1963         reports for non-opers
1964
1965         * include/client.h: add con_timer and con_proc fields to struct
1966         Connection and define accessor macros--con_timer marks that
1967         con_proc contains a valid timer, and con_proc is used to pace user
1968         data
1969
1970         * ircd/s_bsd.c (close_connection): let free_client() destroy the
1971         socket
1972
1973         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
1974         auth has begun on a client
1975
1976         * ircd/ircd_events.c: ensure that event_execute() is called with a
1977         non-NULL event; modify event_add() macro to properly zero list
1978         bits; modify gen_dequeue() to not try to clip it out of a list
1979         it's already been clipped out of; change signal socket
1980         initialization to use state SS_NOTSOCK; permit timeout values of
1981         0 in add_timer(); add many Debug calls; change socket_del() and
1982         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
1983         timer_run() instead of GEN_DESTROY so that event_generate() will
1984         pass on the events; remove the switch and replace with a simpler
1985         if-then-else tree in timer_run(); don't allow destroyed sockets to
1986         be destroyed again, nor their states or event masks to be changed
1987
1988         * ircd/ircd.c: initialize "running" to 1
1989
1990         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
1991         messages all over the place; fix a counting problem in
1992         engine_add(); turn wait into a signed integer and set it to -1
1993         only if timer_next() returns 0; adjust wait time to be relative;
1994         don't call gen_ref_dec() if socket disappeared while we were
1995         processing it
1996
1997         * include/ircd_events.h: the pipe for signals is not a socket, so
1998         we must mark it as such--added SS_NOTSOCK for that special socket;
1999         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
2000         for the benefit of timer_run()
2001
2002         * configure.in: add --enable-pedantic and --enable-warnings to
2003         turn on (and off) -Wall -pedantic in CFLAGS
2004
2005 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
2006
2007         * ircd/s_conf.c: change "s_addr" element accesses to "address"
2008         element accesses
2009
2010         * include/s_conf.h: on some systems, "s_addr" is a macro; use
2011         "address" instead
2012
2013 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
2014
2015         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
2016         void in this file; add a missing semi-colon; declare errcode,
2017         codesize
2018
2019         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
2020
2021         * ircd/s_user.c (register_user): comment out spurious reference to
2022         nextping
2023
2024         * ircd/s_serv.c (server_estab): comment out spurious reference to
2025         nextping
2026
2027         * ircd/s_conf.c (read_configuration_file): comment out spurious
2028         reference to nextping and nextconnect
2029
2030         * ircd/s_bsd.c: comment out some spurious references to formerly
2031         global (now non-existant) variables; correct a couple of typos
2032
2033         * ircd/s_auth.c: pre-declare some functions referenced in the
2034         callback; correct a typo
2035
2036         * ircd/res.c (start_resolver): pass errno value of ENFILE
2037
2038         * ircd/listener.c (accept_connection): you know your API is messed
2039         up when...variables that shouldn't have been global crop up in
2040         other files
2041
2042         * ircd/list.c (free_client): substitution of == for =
2043
2044         * ircd/ircd_signal.c: include assert.h for assertion checking;
2045         check ev_data() to find out what signal generated event
2046
2047         * ircd/ircd_events.c: some references to the variable "timer"
2048         should have been references to the variable "ptr"
2049
2050         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
2051         ev_timer(ev) is already a timer pointer; declare codesize as a
2052         size_t to correct signedness issue; use timer_next(), not
2053         time_next()
2054
2055         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
2056         select fd out of struct pollfd in assertion checking; declare
2057         errcode and codesize; use timer_next(), not time_next()
2058
2059         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
2060         use function timer_next(), not time_next()
2061
2062         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
2063         use function timer_next(), not time_next()
2064
2065         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
2066         compiled sources; do make depend
2067
2068         * include/list.h: pre-declare struct Connection
2069
2070         * include/ircd_events.h (gen_ref_inc): cast to the right structure
2071         name
2072
2073         * include/s_auth.h: duh; missing */
2074
2075 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
2076
2077         * ircd/send.c: update write events status after sending data or
2078         accumulating data to be sent
2079
2080         * ircd/m_list.c (m_list): update write events status after
2081         canceling a running /list
2082
2083         * ircd/channel.c (list_next_channels): update write events status
2084         after listing a few channels
2085
2086         * ircd/s_bsd.c: extensive changes to update to new events model;
2087         remove on_write_unblocked() and the two implementations of
2088         read_message(), which have been deprecated by this change
2089
2090         * ircd/s_auth.c: set the socket events we're interested in for
2091         clients; simplify some logic that does the connect_nonb followed
2092         by the socket_add
2093
2094         * ircd/list.c: define free_connection() to free a connection
2095         that's become freeable once the struct Socket has been
2096         deallocated; fix up free_client() to take this new behavior into
2097         account
2098
2099         * ircd/ircd.c: call init_client_timer()
2100
2101         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
2102         to register connect-in-progress with events system; declare
2103         init_client_timer() (HACK!) to preserve rate-limiting behavior
2104
2105         * include/list.h: declare new free_connection()
2106
2107         * include/client.h: add a struct Socket to struct Connection
2108
2109 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
2110
2111         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
2112         SIGTERM into event callbacks; perform the actions in the
2113         callbacks, since they're not called in the context of the signal;
2114         set up the signal callbacks in the event engine
2115
2116         * ircd/ircd_events.c (signal_callback): we're supposed to look for
2117         a specific signal; don't generate an event if there is no signal
2118         structure for it
2119
2120         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
2121         connect_timer and ping_timer; massage try_connections() and
2122         check_pings() into timer callbacks that re-add themselves at the
2123         right time; remove ircd.c's "event_loop()"; initialize the event
2124         system and the connect_timer and ping_timer
2125
2126         * ircd/uping.c: correct a couple more typos
2127
2128         * ircd/s_auth.c: rework to use new events system
2129
2130         * ircd/os_solaris.c (os_connect_nonb): update to new interface
2131
2132         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
2133
2134         * ircd/os_linux.c (os_connect_nonb): update to new interface
2135
2136         * ircd/os_generic.c (os_connect_nonb): update to new interface
2137
2138         * ircd/os_bsd.c (os_connect_nonb): update to new interface
2139
2140         * include/s_auth.h: remove deprecated members of struct
2141         AuthRequest, replacing them with struct Socket and struct Timer
2142         structures; add flags to indicate when these structures have been
2143         released by the event system; remove the deprecated
2144         timeout_auth_queries()
2145
2146         * include/ircd_osdep.h (os_connect_nonb): connect could complete
2147         immediately, so change the interface to handle that possibility
2148
2149         * ircd/uping.c (uping_server): noticed and corrected a typo
2150
2151         * ircd/listener.c: set up to use ircd_event's struct Socket by
2152         adding an socket_add() call to inetport(), replacing
2153         free_listener() with socket_del() in close_listener(), and
2154         reworking accept_connection to be called as the callback
2155
2156         * ircd/ircd.c: add a call to IPcheck_init()
2157
2158         * ircd/IPcheck.c: remove IPcheck_expire(); rework
2159         ip_registry_expire() to be called from a timer; write
2160         IPcheck_init() to set up the expiration timer (hard-coded for a
2161         60-second expiration time)
2162
2163         * include/listener.h: add a struct Socket to the struct Listener;
2164         remove accept_connection()
2165
2166         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
2167
2168 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
2169
2170         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
2171         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
2172
2173         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
2174         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
2175
2176         * ircd/engine_poll.c: include config.h
2177
2178         * ircd/engine_kqueue.c: include config.h
2179
2180         * ircd/engine_devpoll.c: include config.h
2181
2182         * ircd/Makefile.in: include engine sources in compilation and make
2183         depend steps
2184
2185         * configure.in: add checks for enabling the /dev/poll- and
2186         kqueue-based engines
2187
2188         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
2189
2190         * ircd/Makefile.in: work in the engine sources
2191
2192 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
2193
2194         * ircd/m_settime.c: include ircd_snprintf.h
2195
2196         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
2197         parens around a construct that had both || and &&
2198
2199         * ircd/chkconf.c: #include "config.h" to get some important
2200         definitions
2201
2202         * ircd/Makefile.in: revamp ircd makefile for new build system
2203
2204         * doc/Makefile.in: revamp doc makefile for new build system
2205
2206         * config/*: Removed old build system files
2207
2208         * stamp-h.in: a stamp file
2209
2210         * install-sh: install-sh for new build system
2211
2212         * configure.in: configure.in for new build system
2213
2214         * configure: configure script for new build system (built by
2215         autoconf)
2216
2217         * config.sub: config.sub for new build system
2218
2219         * config.h.in: config.h.in for new build system (built by
2220         autoheader)
2221
2222         * config.guess: config.guess for new build system
2223
2224         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
2225         1.4)
2226
2227         * acinclude.m4: aclocal.m4 macros for new build system
2228
2229         * acconfig.h: config.h skeleton for new build system
2230
2231         * Makefile.in: modify for new build system
2232
2233 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
2234
2235         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
2236
2237         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
2238
2239         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
2240
2241 2001-05-01  Perry Lorier       <Isomer@coders.net>
2242         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
2243         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
2244                 when you have far far too many sockets in use.
2245         * {include,ircd}/iauth.c: A start on iauth support.
2246
2247 2001-05-01  Perry Lorier       <Isomer@coders.net>
2248         * ircd/s_err.c: Suggested wording change.
2249         * ircd/s_user.c: Users aren't target limited against +k users.
2250         * ircd/chkconf.c: Made it compile again, who knows if it works, but
2251                 now I can at least make install
2252         * various: Cleanups on m_*.c files.
2253
2254
2255 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
2256
2257         * ircd/s_misc.c (exit_client): make netsplit server notice say the
2258         right thing
2259
2260         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
2261         change to make Khaled happy...
2262
2263         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
2264         (do_whois): duh...
2265
2266 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
2267
2268         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
2269         turned up no more bugs
2270
2271         * ircd/ircd.c: use /* */ comments instead of // comments--all the
2272         world's not gcc :(
2273
2274         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
2275         // comments--all the world's not gcc :(
2276
2277         * ircd/runmalloc.c: finally garbage-collect unused file
2278
2279         * include/runmalloc.h: finally garbage-collect unused file
2280
2281         * ircd/<multiple files>: addition of '#include "config.h"' before
2282         all other includes in most .c files
2283
2284         * include/<multiple files>: remove includes of config.h, which are
2285         now going into the raw .c files
2286
2287 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
2288
2289         * ircd/m_whois.c (do_whois): display proper server name if the
2290         user is looking up himself
2291
2292         * ircd/m_who.c (m_who): disable match by servername or display of
2293         server names by non-opers
2294
2295         * include/ircd_policy.h: add define for
2296         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
2297         of CFV 165
2298
2299 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
2300
2301         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
2302         when we do a /stats k
2303
2304         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
2305         users from turning on +s and +g
2306
2307         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
2308         net.split notice
2309
2310         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
2311         /map for users
2312
2313         * ircd/m_whois.c (do_whois): pull-up of server name masking for
2314         /whois
2315
2316         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
2317         functions, pull-up
2318
2319         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
2320
2321         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
2322
2323         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
2324
2325         * ircd/channel.c (channel_modes): pull-up of channel key display
2326         as *
2327
2328         * include/ircd_policy.h: pull-up of ircd_policy.h
2329
2330         * include/client.h: pull-up of Set/ClearServNotice()
2331
2332         * ircd/gline.c (do_gline): report client name in G-line message
2333         (pull-up)
2334
2335         * ircd/s_user.c (register_user): pull-up--show IP address in some
2336         server notices dealing only with users; report which connection
2337         class has filled up
2338
2339         * ircd/s_stats.c (report_deny_list): use conf->flags &
2340         DENY_FLAGS_IP insteaf of conf->ip_kill
2341
2342         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
2343         insteaf of conf->ip_kill
2344
2345         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
2346         K-line by real name
2347
2348         * include/s_conf.h: use a flags field in struct DenyConf; define
2349         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
2350         pull-up of K-line by real name
2351
2352         * ircd/m_trace.c: pull-up of IP show for user connections
2353
2354         * doc/example.conf: pull-up of the realname K-line documentation
2355
2356         * ircd/ircd.c: forward port of pid file advisory locking mechanism
2357
2358 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
2359
2360         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
2361         all servers, rather than to only servers that have +w/+g/whatever
2362         users on them; among other things, this removes that atrocity
2363         known as sentalong[] from this function
2364
2365         * ircd/m_admin.c: must include ircd.h to declare "me"; must
2366         include hash.h to declare FindUser()
2367
2368         * ircd/m_wallusers.c: implementation of WALLUSERS
2369
2370         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
2371
2372         * ircd/m_wallops.c: only send WALLOPS to opers
2373
2374         * ircd/parse.c: add WALLUSERS command to parser table
2375
2376         * include/handlers.h: declare wallusers handlers
2377
2378         * include/msg.h: add WALLUSERS command
2379
2380         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
2381         flag, send only to appropriate opers
2382
2383 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
2384
2385         * ircd/uping.c: refit to use the new events interface
2386
2387         * ircd/res.c: refit to use the new events interface
2388
2389         * ircd/ircd_events.c: create timer_chg(), which permits a
2390         (non-periodic) timer's expire time to be modified; change the
2391         logic in timer_run() so that timers that were re-added while the
2392         event was being processed will not be destroyed prematurely
2393
2394         * include/uping.h: include the events header, declare some extra
2395         fields in struct UPing, remove timeout value, and define some
2396         flags for marking which cleanup items have yet to be done
2397
2398         * include/ircd_events.h: add a prototype for timer_chg() to change
2399         the expire time of a running timer
2400
2401 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
2402         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
2403         
2404 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
2405
2406         * config/configure.in: Add check for OpenBSD
2407
2408         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
2409         differs from generic BSD, particularly in its handling of
2410         _XOPEN_SOURCE.
2411         
2412 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
2413
2414         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
2415         have been added by a U-lined server, rather than going through the
2416         activate/deactivate logic; propagate G-line removals by U-lined
2417         servers as well
2418
2419         * ircd/gline.c: rename propagate_gline() to gline_propagate();
2420         make gline_propagate() return an int 0 (convenience return); only
2421         update lastmod in gline_activate() and gline_deactivate() if the
2422         current lastmod is non-zero, since 0 lastmod is our flag of a
2423         U-lined server having added a G-line
2424
2425         * include/gline.h (gline_propagate): exporting the G-line
2426         propagation function
2427
2428         * ircd/m_list.c (m_list): duh; permit explicit channel name
2429         specification only when /list gets two arguments ("Kev
2430         #wasteland") rather than when /list gets more than two
2431         arguments--nice braino
2432
2433 2001-01-29  Thomas Helvey <twhelvey1@home.com>
2434
2435         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
2436         unregistered clients to spam opers with protocol violation
2437         messages. Note: the bugfix may have eliminated some useful
2438         protocol violation messages.
2439         Please send protocol violation messages explicitly from the
2440         functions they are discovered in, you have much better context
2441         for the error there and it helps to document the behavior of the
2442         server. This was also a design bug in that it violated the
2443         "A function should do one thing" heuristic. Patching this one
2444         would have resulted in a continuous spawning of other bugs over
2445         the next 3 years, so I killed it. Check around for stuff this
2446         broke and readd the calls to protocol_violation in the functions
2447         that need to send the message.
2448
2449 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
2450
2451         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
2452         already existed, then the logic would (attempt to) skip it, but
2453         would not free the ban string; now the ban string is free'd and
2454         the ban count is decremented, releasing the ban for use
2455
2456         * ircd/s_user.c: make send_umode_out() take a prop argument
2457         instead of testing for the PRIV_PROPAGATE privilege itself; fix
2458         set_umode() to use this new argument, calculating it before
2459         calculating the new privileges for a -o'd user
2460
2461         * ircd/m_oper.c (m_oper): pass the new prop argument to
2462         send_umode_out()
2463
2464         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
2465         that we're not actually going to add because they already exist;
2466         test that particular bit before adding to the linked list
2467
2468         * include/s_user.h: add a prop argument to send_umode_out() to
2469         indicate whether or not to propagate the user mode
2470
2471 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
2472
2473         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
2474         it would have written; upper-bound the number to prevent overflows
2475         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
2476         into account the fact that ircd_vsnprintf() already takes the
2477         terminal \0 into account
2478
2479 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
2480
2481         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
2482         down an apparent buffer overflow; remove msgq_map(), since it's no
2483         longer used anywhere; slight tweaks to prevent off-by-one errors,
2484         but these can't explain the problems we've seen
2485
2486         * include/msgq.h: remove msgq_map(), since it's no longer used
2487         anywhere
2488
2489 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
2490
2491         * ircd/s_user.c (set_nick_name): call client_set_privs() after
2492         parsing user modes
2493
2494 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
2495
2496         * ircd/s_bsd.c (read_message): fix a typo in the select version of
2497         read_message()
2498
2499         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
2500         its argument to be an lvalue, which means we can't use
2501         whowas_clean()'s handy-dandy "return ww" feature
2502
2503         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
2504
2505 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
2506
2507         * ircd/ircd_events.c (timer_run): it's possible that the timer got
2508         deleted during the callback processing, so don't go to the bother
2509         of requeuing it if the destroy flag is set
2510
2511         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
2512         out of config.h if this is a *BSD; include errno.h (oops);
2513         decrement error count after an hour using a timer; use FD_SETSIZE
2514         constant instead of IRCD_FD_SETSIZE constant; fill in event
2515         processing code
2516
2517         * ircd/engine_poll.c: include errno.h (oops); decrement error
2518         count after an hour using a timer; fill in event processing code
2519
2520         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
2521         count after an hour using a timer; assert events filter is either
2522         EVFILT_READ or EVFILT_WRITE; fill in event processing code
2523
2524         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
2525         count after an hour using a timer; fill in event processing code
2526
2527 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
2528
2529         * ircd/client.c: fixed feattab; basically, when I changed features
2530         to use small integers specifying bit positions, instead of the
2531         bits themselves, I forgot to update feattab to not | these
2532         privileges together; also fixed a bug in the antiprivs masking
2533         loop in client_set_privs()--last index wouldn't get parsed
2534
2535 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
2536
2537         * ircd/ircd_events.c: call event_generate() with new data
2538         argument; make it set that field in struct Event; make
2539         socket_add() return the value of the eng_add callback
2540
2541         * ircd/engine_select.c: make engine_add() return a
2542         successful/unsuccessful status; add bounds-checking outside of an
2543         assert; use accessor macros; use log_write(), not the deprecated
2544         ircd_log(); add an assert to engine_loop() to double-check for
2545         data structure corruption
2546
2547         * ircd/engine_poll.c: make engine_add() return a
2548         successful/unsuccessful status; add bounds-checking outside of an
2549         assert; use accessor macros; use log_write(), not the deprecated
2550         ircd_log(); add an assert to engine_loop() to double-check for
2551         data structure corruption
2552
2553         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
2554
2555         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
2556
2557         * include/ircd_events.h: define some accessor macros; add ev_data
2558         to struct Event for certain important data--errno values, for
2559         instance; make EngineAdd callback tell us if it was successful or
2560         not; add extra argument to event_generate(); make socket_add()
2561         return the status from EngineAdd
2562
2563 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
2564
2565         * ircd/ircd_events.c: pass initializer information about how many
2566         total _filedescriptors_ may be opened at once
2567
2568         * ircd/ircd.c: use exported "running" instead of unexported
2569         thisServer.running
2570
2571         * ircd/engine_select.c: implementation of an event engine based on
2572         select()
2573
2574         * ircd/engine_poll.c: implementation of an event engine based on
2575         poll()
2576
2577         * include/ircd_events.h: pass the engine initializer an integer
2578         specifing how many _filedescriptors_ may be opened at once
2579
2580         * include/ircd.h: running has to be exported for the engine_*
2581         event loops
2582
2583 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
2584
2585         * ircd/ircd_events.c: include some needed headers; add some
2586         comments; make evEngines[] const; bundle sig_sock and sig_fd into
2587         a struct named sigInfo; rework struct evInfo to have a queue of
2588         _generators_, and only when threaded; added a gen_init() function
2589         to centralize generator initialization; fix various compile-time
2590         errors; rework event_add() for new queueing scheme and checked for
2591         compile-time errors; add casts where needed; spell evEngines[]
2592         correctly; make engine_name() return const char*
2593
2594         * include/ircd_events.h: type EventCallBack depends on struct
2595         Event, so pre-declare it; put _event_ queue into generators, and
2596         only when threaded; give engine data a union to store both ints
2597         and pointers; make engine name a const; fix gen_ref_dec() macro;
2598         make engine_name() return a const char*
2599
2600         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
2601         down with the non-static functions; modify event_execute() to use
2602         the new gen_ref_dec() to simplify code; make sure event_generate()
2603         does not generate new events for generators marked for destruction
2604
2605         * include/ircd_events.h: the engines, at least, may need to modify
2606         reference counts to keep generators from going away while
2607         something still points at them, so add reference counter
2608         manipulators and export gen_dequeue() for them
2609
2610         * ircd/ircd_events.c: set up the list of engines to try; set up
2611         the signal struct Socket; rename netInfo to evInfo; move static
2612         functions near the beginning of the file; do away with
2613         signal_signal() (since we no longer keep a signal count ourselves)
2614         and call event_generate() directly from signal_callback--also
2615         renamed some functions; allow signal_callback() to read up to
2616         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
2617         initialize the entire event system; add event_loop() to call the
2618         engine's event loop; initialize new struct GenHeader member,
2619         gh_engdata; remove timer_next(); add socket_add() function to add
2620         a socket; add socket_del() to mark a socket for deletion; add
2621         socket_state() to transition a socket between states; add
2622         socket_events() to set what events we're interested in on the
2623         socket; add engine_name() to retrieve event engine's name
2624
2625         * include/ircd_events.h: add engine data field to struct
2626         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
2627         note about states vs s_events; remove signal count; fold union
2628         Generator back into struct Event; remove count members from struct
2629         Generators; redefine engine callbacks to not take a struct
2630         Engine*; add explanatory comments to callback definitions; add
2631         some engine callbacks to handle operations; remove struct Engine
2632         flag member--can detect single flag from eng_signal member; add
2633         event_init(), event_loop(), engine_name(), and the socket_*()
2634         functions; make timer_next() a macro to avoid a function call
2635
2636 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
2637
2638         * include/ircd_events.h: rename to ircd_events.h, since it handles
2639         events, not just networking stuff; add signal support; more
2640         structural rearrangement
2641
2642         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
2643         events, not just networking stuff; add signal support; more
2644         structural rearrangement
2645
2646 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
2647
2648         * ircd/ircd_network.c: implement timer API; add reference counts
2649         appropriately
2650
2651         * include/ircd_network.h: firm up some pieces of the interface;
2652         split out members everything has into a separate structure; add
2653         reference counts; add timer API
2654
2655 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
2656
2657         * ircd/ircd_network.c: static data and event manipulation
2658         functions for new event processing system
2659
2660         * include/ircd_network.h: data structures for new event processing
2661         system
2662
2663 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
2664
2665         * ircd/whowas.c: Completely re-did the old allocation scheme by
2666         turning it into a linked list, permitting the
2667         NICKNAMEHISTORYLENGTH feature to be changed on the fly
2668
2669         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
2670         feature instead of old #define
2671
2672         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
2673         integer feature with a notify callback (whowas_realloc)
2674
2675         * ircd/client.c (client_set_privs): second memset was supposed to
2676         be over antiprivs, not privs; thanks, Chris Behrens
2677         <cbehrens@xo.com> for pointing that out...
2678
2679         * include/whowas.h: new elements for an extra linked list in
2680         struct Whowas; a notify function for feature value changes
2681
2682         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
2683
2684         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
2685
2686 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
2687
2688         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
2689         compile-time option--now in features subsystem
2690
2691         * ircd/motd.c (motd_init): rework motd_init() to be called as the
2692         notify function for MPATH and RPATH features (should probably
2693         split it up a bit, though...)
2694
2695         * ircd/m_privs.c (mo_privs): if called with no parameters, return
2696         privs of the caller, rather than an error
2697
2698         * ircd/m_list.c: pull usage message into its own function; pull
2699         list parameter processing into its own function that does not
2700         modify the contents of the parameter; add list_set_default() to
2701         set the default list parameter (uses the notify hook); rework
2702         m_list() to make use of these functions; removed dead code
2703
2704         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
2705         we have no notify handler
2706
2707         * ircd/ircd_features.c: add notify callback for notification of
2708         value changes; give mark callback an int return value to indicate
2709         whether or not to call the notify callback; fix up feature macros
2710         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
2711         string handling in feature_set() to deal with def_str being a null
2712         pointer; wrote feature_init() to set up all defaults appropriately
2713
2714         * ircd/ircd.c (main): call feature_init() instead of
2715         feature_mark(), to avoid calling notify functions while setting up
2716         defaults
2717
2718         * ircd/client.c: updated to deal with new privileges structure
2719
2720         * ircd/class.c: updated so init_class() can be called should one
2721         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
2722         DEFAULTMAXSENDQLENGTH be changed
2723
2724         * include/ircd_log.h: log_feature_mark() updated to fit with new
2725         API changes
2726
2727         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
2728         feature_init() function (found necessary since adding the notify
2729         stuff and notifying motd.c during start-up...before we defined
2730         RPATH!)
2731
2732         * include/client.h: move privs around to enable addition of more
2733         bits if necessary; based on the FD_* macros
2734
2735         * include/channel.h: declare list_set_default (actually located in
2736         m_list.c *blanche*)
2737
2738         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
2739         AVBANLEN*MAXSILES) from features subsystem
2740
2741         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
2742         anything anymore
2743
2744         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
2745         the features subsystem
2746
2747         * ircd/s_auth.c (start_auth): NODNS migrated to the features
2748         subsystem
2749
2750         * ircd/random.c: created random_seed_set() function to set seed
2751         value, along with some stuff to make ircrandom() a little more
2752         random--state preserving, xor of time instead of direct usage,
2753         etc.; it's still a pseudo-random number generator, though, and
2754         hopefully I haven't broken the randomness
2755
2756         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
2757
2758         * ircd/m_join.c: use features interface to retrieve
2759         MAXCHANNELSPERUSER
2760
2761         * ircd/ircd_features.c: add NODISP flag for super-secret features;
2762         add a whole bunch of new features migrated over from make config
2763
2764         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
2765         CONNECTTIMEOUT, and TIMESEC
2766
2767         * ircd/client.c (client_get_ping): use features interface to
2768         retrieve PINGFREQUENCY
2769
2770         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
2771         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
2772
2773         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
2774         features subsystem, we have to add something explicit
2775
2776         * ircd/channel.c: use features interface to retrieve
2777         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
2778         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
2779         and AVBANLEN
2780
2781         * ircd/Makefile.in: run make depend
2782
2783         * include/supported.h (FEATURESVALUES): update to reference
2784         feature settings
2785
2786         * include/random.h: add prototype for random_seed_set
2787
2788         * include/ircd_features.h: add several more features
2789
2790         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
2791         subsystem
2792
2793         * config/config-sh.in: feature-ized some more stuff
2794
2795         * include/motd.h: some new elements in motd.h for motd.c changes
2796
2797         * ircd/motd.c: motd_cache() now searches a list of already cached
2798         MOTD files; saves us from having duplicate caches in memory if
2799         there are two identical T-lines for two different sites...
2800
2801 2001-01-02  Perry Lorier <isomer@coders.net>
2802         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
2803         Amarande.
2804
2805 2001-01-02  Perry Lorier <isomer@coders.net>
2806         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
2807         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
2808                 to guppy for noticing, and hektik for providing the fix.
2809         * misc others: Minor cleanups, added more protocol_violations, ripped
2810                 out more P09 stuffs, bit more protocol neg stuff.
2811
2812 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
2813
2814         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
2815         space (*sigh* stupid clients...)
2816
2817         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
2818         ircd_features.[ch]
2819
2820         * ircd/s_err.c: get rid of GODMODE conditionals
2821
2822         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
2823         calls into the features subsystem for various serveropts
2824         characters
2825
2826         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
2827
2828         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
2829         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
2830         NOFLOWCONTROL conditional
2831
2832         * ircd/s_auth.c: use features subsystem to determine value of
2833         KILL_IPMISMATCH
2834
2835         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
2836         features subsystem to determine the setting of IDLE_FROM_MSG
2837
2838         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
2839
2840         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
2841         use features subsystem to get motd file names
2842
2843         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
2844         subsystem
2845
2846         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
2847         us no good; use features subsystem to figure out if we need to do
2848         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
2849         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
2850         features subsystem
2851
2852         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
2853
2854         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
2855         subsystem
2856
2857         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
2858
2859         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
2860         from getting marked if they were already set to something...
2861
2862         * ircd/ircd_features.c: add a flag to indicates read-only access;
2863         add several new features that used to be compile-time selected
2864
2865         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
2866         access to motd files (what the heck?); make sure to initialize the
2867         feature subsystem before trying to write the config file
2868
2869         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
2870         use feature_bool() to figure out if we're using the FERGUSON
2871         flusher
2872
2873         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
2874         remove the clause that creates empty files of that name; also ran
2875         make depend
2876
2877         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
2878         there is no easy way to bounds-check it at present
2879
2880         * include/querycmds.h: make sure ircd_features.h is included; use
2881         feature_str(FEAT_DOMAINNAME) in calls to match()
2882
2883         * include/ircd_features.h: many new features that used to be
2884         compile-time selected
2885
2886         * config/config-sh.in: add * to DOMAINNAME; try also using first
2887         argument to search in /etc/resolv.conf; removed many compile-time
2888         options that now can be configured through the features system
2889
2890 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
2891
2892         * doc/api/log.txt: how to use the logging API
2893
2894         * doc/api/features.txt: how to use the features API
2895
2896         * doc/api/api.txt: how to write API documentation
2897
2898         * include/ircd_features.h: rearranged a couple of features for
2899         neatness purposes
2900
2901         * ircd/ircd_features.c: cleaned up the macros some; rearranged
2902         some code to all go into the switch; rearranged a couple of
2903         features for neatness purposes
2904
2905 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2906         * ircd/os_bsd.c: Added os_set_tos for BSD users.
2907
2908 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
2909
2910         * ircd/ircd_features.c: Isomer almost got it right; you need to
2911         use F_I(), since it's an integer value, not a boolean value.  The
2912         asserts in feature_int would catch you out...  Also made the F_*
2913         macros take flags
2914
2915         * ircd/s_err.c: define RPL_PRIVS reply
2916
2917         * ircd/parse.c: put new PRIVS command into command table
2918
2919         * ircd/m_privs.c (mo_privs): message handler to report operator
2920         privileges
2921
2922         * ircd/ircd_features.c: declare new features OPER_SET and
2923         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
2924         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
2925
2926         * ircd/client.c: simplify client_set_privs() with a table that
2927         defines what features to test for; add new client_report_privs()
2928
2929         * ircd/Makefile.in: compile new m_privs.c; run make depend
2930
2931         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
2932         an operator's privileges
2933
2934         * include/msg.h: define new command: PRIVS
2935
2936         * include/ircd_features.h: create new features OPER_SET and
2937         LOCOP_SET for controlling access to /set
2938
2939         * include/handlers.h (mo_privs): declare message handler for
2940         reporting oper privileges
2941
2942         * include/client.h (client_report_privs): declare function to
2943         report what privileges an oper has
2944
2945         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
2946         report that a user is an oper if the oper doing the /whois had
2947         PRIV_SEE_OPERS
2948
2949 2000-12-17  Isomer <Isomer@coders.net>
2950         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
2951
2952 2000-12-17  Isomer <Isomer@coders.net>
2953         * ircd/os_linux.c: add TOS stuffs
2954
2955         * ircd/listener.c: add TOS stuffs
2956
2957 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
2958
2959         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
2960         to indicate a user is an oper
2961
2962         * ircd/s_user.c: clear privileges setting when deopping; don't
2963         propagate +o unless user has PRIV_PROPAGATE privilege
2964
2965         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
2966         function and replaced how the server option string is generated
2967
2968         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
2969
2970         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
2971         not to indicate the user is an operator
2972
2973         * ircd/m_who.c: use HasPriv to determine whether or not a user
2974         should be displayed in the list of opers
2975
2976         * ircd/m_version.c: call debug_serveropts() to get server option
2977         string
2978
2979         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
2980         whether or not to show oper status
2981
2982         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
2983         whether or not to show oper status
2984
2985         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
2986         checks with HasPriv check; remove dead code
2987
2988         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
2989         checks with HasPriv check
2990
2991         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
2992         use feature_bool to check if disabled
2993
2994         * ircd/m_oper.c (m_oper): set oper priviliges
2995
2996         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
2997         check
2998
2999         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
3000         can kill
3001
3002         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
3003         check
3004
3005         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
3006         use feature_bool to check if disabled
3007
3008         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
3009         #ifdef conditional with a HasPriv check
3010
3011         * ircd/m_gline.c (mo_gline): rework permissions checking
3012         structure; use feature_bool to check if any part is disabled
3013
3014         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
3015         check; remove dead code
3016
3017         * ircd/m_clearmode.c: use feature_bool() to detect if we're
3018         disabled; use HasPriv to figure out what we're permitted to do;
3019         only allow clearmode on moded channels
3020
3021         * ircd/ircd_features.c: define various features; use HasPriv to
3022         verify permissions to set/reset
3023
3024         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
3025         conditionals
3026
3027         * ircd/client.c (client_set_privs): function to set an oper's
3028         privileges
3029
3030         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
3031
3032         * include/whocmds.h: deconditionalize several macros and
3033         substitute appropriate calls to HasPriv()
3034
3035         * include/s_debug.h: get rid of global serveropts[]; define new
3036         function debug_serveropts() to build that string on the fly
3037
3038         * include/ircd_features.h: define some features
3039
3040         * include/client.h: add privs member to struct Connection; define
3041         various priviledges
3042
3043         * include/channel.h: no longer using IsOperOnLocalChannel; remove
3044         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
3045
3046         * doc/Configure.help: remove help information for deprecated
3047         options
3048
3049         * config/config-sh.in: remove certain deprecated options having to
3050         do with what opers can and cannot do--first stage in moving
3051         compile-time constants into the .conf
3052
3053 2000-12-16  Isomer <Isomer@coders.net>
3054         * ircd/parse.c: detect if the prefix is missing and try and recover
3055         instead of coring.
3056
3057 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
3058
3059         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
3060         code that would sometimes result in the log file not being
3061         reopened--which meant that a user could connect and get the
3062         logging output--oops
3063
3064         * ircd/Makefile.in: run make depend...
3065
3066         * ircd/s_stats.c: get rid of report_feature_list()
3067
3068         * ircd/s_err.c: add the 'bad value' error message, shift error
3069         messages over somewhat
3070
3071         * ircd/s_debug.c (debug_init): call log_debug_init with the
3072         use_tty flag
3073
3074         * ircd/s_conf.c (read_configuration_file): unmark features before
3075         reading the config file, then reset unmarked features after
3076         reading the config file
3077
3078         * ircd/m_stats.c: use feature_report() instead of
3079         report_feature_list()
3080
3081         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
3082         special 'mark' flags and use them; add the stuff needed by the
3083         features API
3084
3085         * ircd/ircd_features.c: rework the features API and add gobs of
3086         comments to try to explain what some of these complex functions
3087         are actually doing
3088
3089         * include/s_stats.h: get rid of report_feature_list(); use
3090         feature_report() instead
3091
3092         * include/numeric.h: added a new error message and shifted old
3093         values over some--this is, after all, an alpha
3094
3095         * include/ircd_log.h: log_debug_init now takes an integer to tell
3096         it if it should be using the tty; added a couple of functions
3097         required by the features API
3098
3099         * include/ircd_features.h: add an enum and some more functions to
3100         flesh out the feature API--it should now be possible to put all
3101         those compile-time constants in the config file!
3102
3103         * ircd/send.c: got the direction of the assert incorrect...
3104
3105         * ircd/send.c: implement the efficiency of flush_connections by
3106         creating a linked list of struct Connection's with queued data;
3107         also get rid of flush_sendq_except and make sure to yank
3108         connections out of the list when their sendQs become empty (notice
3109         the assertion in flush_connections!)
3110
3111         * ircd/s_bsd.c (close_connection): must yank the Connection out of
3112         the sendq list
3113
3114         * ircd/list.c (dealloc_connection): must yank the Connection out
3115         of the sendq list
3116
3117         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
3118         deprecated flush_sendq_except
3119
3120         * ircd/client.c: define a couple new helper functions for sendq
3121         threading--this will make the flush_connections function in send.c
3122         considerably more efficient by creating a linked list of
3123         Connections that have queued data to send
3124
3125         * include/send.h: remove flush_sendq_except, as it's not used
3126         anymore
3127
3128         * include/client.h: declare a couple new helper functions for the
3129         sendq threading system
3130
3131 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
3132
3133         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
3134         parse all arguments
3135
3136         * ircd/s_debug.c (count_memory): modify to report for clients and
3137         connections, not local clients and remote clients
3138
3139         * ircd/list.c: fiddle with the client-fiddling functions to take
3140         into account the divorce of struct Connection from struct Client
3141
3142         * ircd/ircd.c: define a struct Connection for me, initialize it,
3143         and link it into the right place (ewww, globals!)
3144
3145         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
3146         struct Client into struct Client and struct Connection; redefine
3147         local-portion accessor macros to go through struct Client to the
3148         struct Connection; define struct Connection accessor macros
3149
3150 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
3151
3152         * ircd/whowas.c: missed a couple of accesses to a struct Client
3153
3154         * ircd/uping.c: missed a couple of accesses to a struct Client
3155
3156         * ircd/send.c: missed a couple of accesses to a struct Client
3157
3158         * ircd/s_user.c: missed a couple of accesses to a struct Client
3159
3160         * ircd/s_misc.c: missed a couple of accesses to a struct Client
3161
3162         * ircd/s_conf.c: missed a couple of accesses to a struct Client
3163
3164         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
3165
3166         * ircd/s_auth.c: missed a couple of accesses to a struct Client
3167
3168         * ircd/res.c: missed a couple of accesses to a struct Client
3169
3170         * ircd/parse.c: missed a couple of accesses to a struct Client
3171
3172         * ircd/m_whois.c: use new accessor macros for struct Client
3173
3174         * ircd/m_who.c: use new accessor macros for struct Client
3175
3176         * ircd/m_wallchops.c: use new accessor macros for struct Client
3177
3178         * ircd/m_version.c: use new accessor macros for struct Client
3179
3180         * ircd/m_userip.c: use new accessor macros for struct Client
3181
3182         * ircd/m_userhost.c: use new accessor macros for struct Client
3183
3184         * ircd/m_user.c: use new accessor macros for struct Client
3185
3186         * ircd/m_uping.c: use new accessor macros for struct Client
3187
3188         * ircd/m_trace.c: use new accessor macros for struct Client
3189
3190         * ircd/m_topic.c: use new accessor macros for struct Client
3191
3192         * ircd/m_time.c: use new accessor macros for struct Client
3193
3194         * ircd/m_stats.c: use new accessor macros for struct Client
3195
3196         * ircd/m_squit.c: use new accessor macros for struct Client
3197
3198         * ircd/m_silence.c: use new accessor macros for struct Client
3199
3200         * ircd/m_server.c: use new accessor macros for struct Client;
3201         remove dead code
3202
3203         * ircd/m_rpong.c: use new accessor macros for struct Client
3204
3205         * ircd/m_rping.c: use new accessor macros for struct Client
3206
3207         * ircd/m_quit.c: use new accessor macros for struct Client
3208
3209         * ircd/m_privmsg.c: use new accessor macros for struct Client
3210
3211         * ircd/m_pong.c: use new accessor macros for struct Client; remove
3212         dead code
3213
3214         * ircd/m_ping.c: use new accessor macros for struct Client
3215
3216         * ircd/m_pass.c: use new accessor macros for struct Client
3217
3218         * ircd/m_part.c: use new accessor macros for struct Client
3219
3220         * ircd/m_oper.c: use new accessor macros for struct Client
3221
3222         * ircd/m_notice.c: use new accessor macros for struct Client
3223
3224         * ircd/m_nick.c: use new accessor macros for struct Client
3225
3226         * ircd/m_names.c: use new accessor macros for struct Client
3227
3228         * ircd/m_mode.c: use new accessor macros for struct Client
3229
3230         * ircd/m_map.c: use new accessor macros for struct Client
3231
3232         * ircd/m_list.c: use new accessor macros for struct Client
3233
3234         * ircd/m_links.c: use new accessor macros for struct Client;
3235         remove some dead code
3236
3237         * ircd/m_kill.c: use new accessor macros for struct Client; remove
3238         some dead code
3239
3240         * ircd/m_kick.c: use new accessor macros for struct Client
3241
3242         * ircd/m_join.c: use new accessor macros for struct Client; remove
3243         some dead code
3244
3245         * ircd/m_ison.c: use new accessor macros for struct Client
3246
3247         * ircd/m_invite.c: use new accessor macros for struct Client
3248
3249         * ircd/m_info.c: use new accessor macros for struct Client
3250
3251         * ircd/m_gline.c: use new accessor macros for struct Client
3252
3253         * ircd/m_error.c: use new accessor macros for struct Client
3254
3255         * ircd/m_create.c: use new accessor macros for struct Client
3256
3257         * ircd/m_connect.c: use new accessor macros for struct Client;
3258         removed some dead code
3259
3260         * ircd/m_burst.c: use new accessor macros for struct Client
3261
3262         * ircd/m_away.c: use new accessor macros for struct Client
3263
3264         * ircd/m_admin.c: use new accessor macros for struct Client
3265
3266         * ircd/hash.c: missed a couple of accesses to a struct Client
3267
3268         * ircd/gline.c: missed a couple of accesses to a struct Client
3269
3270         * ircd/crule.c: missed a couple of accesses to a struct Client
3271
3272         * ircd/class.c: missed an access to a struct Client
3273
3274         * ircd/channel.c: missed a couple of accesses to a struct Client
3275
3276         * ircd/IPcheck.c: missed an access to a struct Client
3277
3278         * include/querycmds.h: fix a couple of stats macros to use
3279         structure accessor macros
3280
3281         * include/client.h: change structure member names to highlight any
3282         places in the code I've missed
3283
3284 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
3285
3286         * ircd/whowas.c: use new struct Client accessor macros
3287
3288         * ircd/whocmds.c: use new struct Client accessor macros
3289
3290         * ircd/send.c: use new struct Client accessor macros
3291
3292         * ircd/s_user.c: use new struct Client accessor macros; removed
3293         some dead code
3294
3295         * ircd/s_serv.c: use new struct Client accessor macros; removed
3296         some dead code
3297
3298         * ircd/s_numeric.c: use new struct Client accessor macros
3299
3300         * ircd/s_misc.c: use new struct Client accessor macros
3301
3302         * ircd/s_debug.c: use new struct Client accessor macros
3303
3304         * ircd/s_conf.c: use new struct Client accessor macros
3305
3306         * ircd/s_bsd.c: use new struct Client accessor macros
3307
3308         * ircd/s_auth.c: use new struct Client accessor macros
3309
3310         * ircd/parse.c: use new struct Client accessor macros
3311
3312         * ircd/packet.c: use new struct Client accessor macros
3313
3314         * ircd/numnicks.c: use new struct Client accessor macros
3315
3316         * ircd/motd.c: use new struct Client accessor macros
3317
3318         * ircd/listener.c: use new struct Client accessor macros
3319
3320         * ircd/list.c: use new struct Client accessor macros
3321
3322         * ircd/jupe.c: use new struct Client accessor macros
3323
3324         * ircd/ircd_snprintf.c: use new struct Client accessor macros
3325
3326         * ircd/ircd_reply.c: use new struct Client accessor macros
3327
3328         * ircd/ircd_relay.c: use new struct Client accessor macros
3329
3330         * ircd/ircd.c: use new struct Client accessor macros
3331
3332         * ircd/gline.c: catch some instances of me.<stuff> I missed
3333         previously
3334
3335         * ircd/client.c: use cli_ instead of con_
3336
3337         * ircd/class.c: use cli_ instead of con_
3338
3339         * ircd/channel.c: use cli_ instead of con_
3340
3341         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
3342         of me.<stuff> I missed previously
3343
3344         * include/client.h: use cli_ instead of con_...seemed like a good
3345         idea at the time *shrug*
3346
3347 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
3348
3349         * ircd/hash.c: use struct Client accessor macros
3350
3351         * ircd/gline.c: use struct Client accessor macros
3352
3353         * ircd/crule.c: use struct Client accessor macros
3354
3355         * ircd/client.c: use struct Client accessor macros; remove some
3356         dead code
3357
3358         * ircd/class.c: use struct Client accessor macros
3359
3360         * ircd/channel.c: use struct Client accessor macros; remove some
3361         dead code
3362
3363         * ircd/IPcheck.c: use struct Client accessor macros
3364
3365         * include/numnicks.h: use struct Client accessor macros
3366
3367         * include/client.h: first step to divorcing struct Client and
3368         struct Connection--define accessor macros and use them
3369
3370         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
3371         uplink would remove them.  This is because the removal protocol
3372         message wasn't being sent to the uplinks.  This is fixed by fixing
3373         propagate_gline() to send the proper number of arguments depending
3374         on whether or not we're adding or deleting the Uworld gline, and
3375         by having gline_deactivate() make sure to turn off the active bit
3376         and call propagate_gline() if it's a Uworld gline
3377
3378 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
3379
3380         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
3381
3382         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
3383         anywhere intelligent...
3384
3385 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
3386
3387         * ircd/send.c (send_queued): call deliver_it with appropriate
3388         arguments
3389
3390         * ircd/s_serv.c: reorder a couple of headers--cosmetic
3391
3392         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
3393         MsgQ
3394
3395         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
3396         with appropriate iovec
3397
3398         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
3399         with appropriate iovec
3400
3401         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
3402         with appropriate iovec
3403
3404         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
3405         appropriate iovec
3406
3407         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
3408         exactly how much we're trying to write out to the fd
3409
3410         * include/s_bsd.h: make deliver_it take a struct MsgQ
3411
3412         * include/msgq.h: add a len_p argument to msgq_mapiov to help
3413         detect short writes that indicate possible socket blocking
3414
3415         * include/ircd_osdep.h: declare os_sendv_nonb()
3416
3417         * ircd/channel.c (modebuf_mode): don't add empty modes...
3418
3419 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
3420
3421         * include/send.h: add prio argument to send_buffer to select
3422         between normal and priority queues
3423
3424         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
3425         call
3426
3427         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
3428
3429         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
3430         call
3431
3432         * ircd/channel.c (send_channel_modes): add prio argument to
3433         send_buffer call
3434
3435         * ircd/send.c (send_buffer): add a prio argument to select the
3436         priority queue; update send.c functions to use it
3437
3438         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
3439         msgq_add; add a prio argument to msgq_add to select the priority
3440         queue
3441
3442         * include/msgq.h: remove msgq_prio; add a prio argument to
3443         msgq_add
3444
3445         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
3446         using msgq functions instead of dbuf functions; remove old, dead
3447         sendto_* functions; redo send_buffer to take a struct MsgBuf;
3448         rework sendcmdto_* functions to make use of the new struct MsgBuf
3449
3450         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
3451         make appropriate use of struct MsgBuf
3452
3453         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
3454         system and report it
3455
3456         * ircd/s_conf.c (read_configuration_file): use
3457         sendto_opmask_butone instead of the now dead sendto_op_mask
3458
3459         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
3460         calls on sendQ
3461
3462         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
3463
3464         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
3465         msgq_clean
3466
3467         * ircd/m_version.c: fix spelling in comments marking dead code
3468
3469         * ircd/m_userip.c (userip_formatter): restructure to make use of
3470         struct MsgBuf
3471
3472         * ircd/m_userhost.c (userhost_formatter): restructure to make use
3473         of struct MsgBuf
3474
3475         * ircd/m_stats.c: use MsgQLength on a sendQ
3476
3477         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
3478         sendQ; mark a piece of dead code
3479
3480         * ircd/m_names.c: use send_reply instead of sendto_one
3481
3482         * ircd/m_mode.c: use new mode; remove old dead code
3483
3484         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
3485
3486         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
3487         dead code
3488
3489         * ircd/listener.c (accept_connection): use sendto_opmask_butone
3490         instead of sendto_op_mask
3491
3492         * ircd/list.c (free_client): use MsgQClear to clear sendQ
3493
3494         * ircd/ircd_reply.c: remove send_error_to_client; restructure
3495         send_reply to make use of struct MsgBuf
3496
3497         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
3498         since its no longer used (at least currently)
3499
3500         * ircd/channel.c: restructure send_channel_modes to make use of
3501         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
3502         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
3503
3504         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
3505
3506         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
3507
3508         * include/send.h: send_buffer now takes a struct MsgBuf * instead
3509         of a char *; flush_sendq_except now takes no arguments, as sendq
3510         flushing currently only happens in dbuf.h and sendQ is a struct
3511         MsgQ; remove prototypes for a lot of old sendto_* functions that
3512         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
3513         no longer needed, and the latter is identical to BUFSIZE in
3514         ircd_defs.h
3515
3516         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
3517         instead of a char *; also make it return void, instead of char *
3518
3519         * include/msgq.h: add msgq_append and msgq_bufleft functions
3520
3521         * include/client.h: use a struct MsgQ instead of a struct DBuf for
3522         sendq
3523
3524         * doc/Configure.help: Remove help for compile-time options that
3525         have gone away
3526
3527         * config/config-sh.in: remove CONFIG_NEWMODE
3528
3529         * ircd/m_server.c (mr_server): don't send server IPs in any server
3530         notices
3531
3532         * ircd/msgq.c (msgq_vmake): add \r\n to messages
3533
3534 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
3535
3536         * include/msgq.h: declare the MsgQ API
3537
3538         * ircd/msgq.c: implementation of new MsgQ system
3539
3540 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
3541
3542         * ircd/ircd_features.c: #include was supposed to be for
3543           ircd_features.h, not features.h--missed when I had to do a
3544           rename because of namespace collision
3545
3546 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3547         * ircd/m_topic.c: Added missing braces that caused all remote
3548           topics to be ignored.
3549
3550 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
3551
3552         * ircd/m_create.c: I'm tired of the exit_client warning :)
3553         (ms_create): discovered that exit_client() was being called with
3554         too few arguments
3555
3556         * ircd/s_misc.c (exit_client): remove all dependance on
3557         FNAME_USERLOG, since that's now gone; log only to LS_USER
3558
3559         * ircd/s_debug.c: USE_SYSLOG no longer means anything
3560
3561         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
3562         log to LS_OPER
3563
3564         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
3565
3566         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
3567
3568         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
3569         the same purpose as LS_USER and LS_OPER
3570
3571         * config/config-sh.in: remove no longer relevant log config
3572         variables
3573
3574         * ircd/uping.c (uping_init): use log_write instead of ircd_log
3575
3576         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
3577
3578         * ircd/s_conf.c: use log_write instead of ircd_log
3579
3580         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
3581
3582         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
3583         ircd_log
3584
3585         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
3586
3587         * ircd/m_who.c: use log_write instead of write_log; no longer
3588         conditionalize on WPATH; mark dead ircd_log calls
3589
3590         * ircd/m_uping.c: mark dead ircd_log call
3591
3592         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
3593
3594         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
3595         ircd_log calls
3596
3597         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
3598
3599         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
3600         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
3601
3602         * ircd/m_kill.c: mark dead ircd_log calls
3603
3604         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
3605         ircd_log
3606
3607         * ircd/m_clearmode.c: use log_write instead of write_log; no
3608         longer conditionalize on OPATH
3609
3610         * ircd/jupe.c: use log_write instead of write_log; no longer
3611         conditionalize on JPATH
3612
3613         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
3614         function; fix a couple of bugs
3615
3616         * ircd/ircd_alloc.c: fixed a comment
3617
3618         * ircd/ircd.c: use log_write instead of ircd_log; fold server
3619         notice generation in a couple of cases
3620
3621         * ircd/gline.c: use log_write instead of write_log; no longer
3622         conditionalize on GPATH
3623
3624         * ircd/channel.c (modebuf_flush_int): use log_write instead of
3625         write_log; no longer conditionalize on OPATH
3626
3627         * ircd/Makefile.in: run make depend, since dependencies have
3628         changed
3629
3630         * doc/example.conf: add system USER to documentation
3631
3632         * include/ircd_log.h: add system USER; remove old ircd_log()
3633         declarations
3634
3635 2000-12-04  Isomer <isomer@coders.net>
3636         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
3637         'end_of_names' reply when done.
3638         * ircd/m_join.c: use NAMES_EON as mentioned above
3639
3640 2000-12-01  net  <simms@LUCIDA.QC.CA>
3641
3642         * ircd/motd.c: add a freelist for struct Motds
3643
3644 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
3645
3646         * ircd/s_stats.c (report_feature_list): report features--only
3647         local opers can see logging configuration, since it doesn't really
3648         mean anything to users
3649
3650         * ircd/s_err.c: add reply messages for new feature subsystem
3651
3652         * ircd/s_conf.c: add F lines to .conf
3653
3654         * ircd/parse.c: add the message descriptions for /set, /reset, and
3655         /get
3656
3657         * ircd/m_stats.c: add /stats f
3658
3659         * ircd/m_set.c (mo_set): implement /set
3660
3661         * ircd/m_reset.c (mo_reset): implement /reset
3662
3663         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
3664         reopens log files (for log file rotation)
3665
3666         * ircd/m_get.c (mo_get): implement /get
3667
3668         * ircd/ircd_log.c: use int instead of void return value; add
3669         log_report_features() and log_canon(); fix a function that
3670         disappears if DEBUGMODE not #define'd
3671
3672         * ircd/ircd_features.c: functions to manipulate feature settings
3673         either from the config file or with the new /set, /reset, and /get
3674         commands
3675
3676         * ircd/Makefile.in: add new .c files, run make depend
3677
3678         * include/s_stats.h: declare report_feature_list() (/stats f
3679         handler)
3680
3681         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
3682         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
3683         reply numerics
3684
3685         * include/msg.h: add defines for SET, RESET, and GET
3686
3687         * include/ircd_log.h: add a function to canonicalize subsystem
3688         names; change some void return values to int
3689
3690         * include/ircd_features.h: new features subsystem handles all the
3691         manipulation of special features, like log files
3692
3693         * include/handlers.h: declare new mo_{s,res,g}et message handlers
3694         for fiddling with features run-time
3695
3696         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
3697         seemed like a good idea at the time...
3698
3699         * doc/example.conf: document new F lines
3700
3701 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
3702
3703         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
3704         new logging functions, which have special support for the debug
3705         log; added loop detection to vdebug(), so that I can
3706         sendto_opmask_butone() from log_vwrite() without incurring another
3707         call to vdebug()
3708
3709         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
3710         this allows log file rotations
3711
3712         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
3713
3714         * ircd/ircd_log.c: much more work fleshing out the interface;
3715         removed old interface; included backwards-compat ircd_log()
3716         function that logs to subsystem LS_OLDLOG
3717
3718         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
3719         functions
3720
3721         * include/ircd_log.h: include stdarg.h for va_list; move ordering
3722         warning to top of file; fill out LogSys enum; declare new
3723         log_debug_init(), log_vwrite(), log_write_kill(), and
3724         log_[sg]et_*() functions; add flags argument to log_write();
3725         defined flags to inhibit various logging actions
3726
3727         * include/client.h: added support for new SNO_DEBUG, enabled only
3728         if DEBUGMODE is defined
3729
3730 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
3731
3732         * ircd/ircd_log.c: make sure the various LOG_* constants are
3733         defined (probably not needed, since #include <syslog.h> isn't
3734         conditional); various static data needed for the new logging
3735         functions; definitions of new logging functions
3736
3737         * include/ircd_log.h: new LogSys enum, declarations for part of
3738         new logging API
3739
3740         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
3741         which was of course stupid; switched to using switch/case in
3742         initialization in motd_create(); zero the MotdList.other pointer
3743         from motd_clear()
3744
3745         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
3746         or we overwrite init_conf()'s hard work with respect to T-lines
3747
3748 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
3749
3750         * ircd/s_stats.c: comment out report_motd_list and include a
3751         reference to motd_report()
3752
3753         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
3754         motd_add() from the conf parser; call motd_clear() from the rehash
3755         routine; remove the no longer needed memory clearing and reloading
3756         stuff from the rehash service routine
3757
3758         * ircd/motd.c: loads new API, including static internal functions
3759         to do allocation/deallocation, etc.
3760
3761         * ircd/m_stats.c: use new motd_report() instead of
3762         report_motd_list()
3763
3764         * ircd/m_motd.c: use new syntax for motd_send()
3765
3766         * ircd/ircd.c: use new motd_init() function
3767
3768         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
3769         Makefile.(in); also ran make depend
3770
3771         * include/motd.h: don't need config.h, but now do need time.h;
3772         define new structures and constants; redefine old API and define
3773         new functions
3774
3775 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
3776
3777         * ircd/s_user.c (register_user): use motd_signon() instead of
3778         calling m_motd; much cleaner this way
3779
3780         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
3781         less of a crock
3782
3783         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
3784         functions
3785
3786         * include/motd.h: define new MOTD API stuff
3787
3788 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
3789
3790         * ircd/ircd_reply.c (protocol_violation): rewrite
3791         protocol_violation so it'll actually work
3792
3793         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
3794         the client's real name in there.
3795
3796         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
3797         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
3798         gets called from register_user with a NULL sptr.  This is probably
3799         a design problem, but this bandaid will do for now...
3800
3801 2000-11-19  Isomer <isomer@coders.net>
3802         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
3803         to problems in the server<->server protocol.
3804
3805         * ircd/m_connect.c: allow remote connects with a port of '0'
3806         meaning to use the port in the config file.
3807
3808         * ircd/m_create.c: Enable hacking protection, lets see how far we
3809         get.
3810
3811         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
3812         clients, so we don't any more.
3813
3814         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
3815         and the user@host is displayed of the victim.
3816
3817         * ircd/m_map.c: reloaded 'dump_map'.
3818
3819         * ircd/m_trace.c: allow per class T:
3820
3821         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
3822
3823 2000-11-17  Isomer <isomer@coders.net>
3824
3825         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
3826         that were the *same* instead of different.  Oh the embarrasment!
3827
3828         * ircd/IPcheck.c: Merged net's fix.
3829
3830 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
3831
3832         * ircd/m_whois.c: remove compiler warning by adding a newline to
3833         end of file
3834
3835         * ircd/m_names.c: moved the flags up to s_user.h
3836
3837         * ircd/m_join.c: call do_names instead of m_names; restructure
3838         ms_join to never transmute a JOIN into a CREATE, but use the TS in
3839         the JOIN (if present) to timestamp the channel
3840
3841         * ircd/channel.c: send JOINs individually, instead of grouping
3842         them, so that we can send the channel's creation time
3843
3844         * include/s_user.h: declare do_names()
3845
3846 2000-10-30  Isomer <isomer@coders.net>
3847         * ircd/m_oper.c: Fixed warning
3848
3849 2000-10-30  Isomer <isomer@coders.net>
3850         * ircd/m_oper.c: Fixed over agressive cut and no paste
3851
3852 2000-10-30  Isomer <isomer@coders.net>
3853
3854         * ircd/m_topic.c: Restructured, fixed bug where topics on local
3855         channels are propergated (I forget who pointed this out to me, but
3856         thanks anyway).  Also to save bandwidth don't send the topic to
3857         users if the topic is already the same on the server (but still
3858         propergate to other servers).  X/W's "autotopic" feature must
3859         chew a lot of bandwidth, hopefully this will help reduce this.
3860
3861         * doc/rfc1459.rfc: Updated documentation on /topic.
3862
3863         * ircd/listener.c: snotice warnings about failed accept()'s
3864         potentially warning admins that they're running out of fd's.
3865
3866         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
3867         people in a class in /stats y
3868
3869         * ircd/m_create.c: Checks for timewarp hacking and squit's
3870         evil servers. (currently disabled)
3871         
3872
3873 2000-10-30  net <simms@lucida.qc.ca>
3874         
3875         * ircd/gline.c: Fixed various bugs Isomer left behind.
3876
3877 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
3878
3879         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
3880         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
3881
3882 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
3883
3884         * ircd/channel.c: ok, now last mode rules; mode +ps will always
3885         result in +s (and won't send a mode if the channel is already +s);
3886         mode +sp will always result in +p; -n+n on a +n channel results in
3887         no mode change; -n+n on a -n channel results in a +n mode change;
3888         etc.
3889
3890 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
3891
3892         * ircd/channel.c: add "add" and "del" elements to ParseState to
3893         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
3894         mode_parse_limit that caused it to clear all channel modes
3895         prematurely; restructure mode_parse_mode to avoid calling
3896         modebuf_mode too early (ties in with first mentioned change);
3897         better logic for +p/+s mutual exclusivity; initialize "add" and
3898         "del" elements in mode_parse; send simple modes down to
3899         modebuf_mode after the loop in mode_parse
3900
3901 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3902         * ircd/m_names.c: Fixed a non-lethal logic error that 
3903         triggers an assert() in find_member_link while debugging.
3904         (Spotted by Maniac-).
3905 2000-09-19  Thomas Helvey <helveytw@home.com>
3906         * ircd/s_conf.c: move K:lines to their own list and data
3907         structures, add supporting code.
3908         * ircd/m_stats.c: cleanup stats processing a bit move
3909         kline listing code to a new function, haven't figured
3910         out where it goes yet tho'
3911         * ircd/s_stats.c: added K:line bulk lister
3912         * include/s_conf.h: added new DenyConf struct
3913         * *[ch]: fixeup code that depended on changes
3914
3915 2000-09-17  Thomas Helvey <helveytw@home.com>
3916         * ircd/class.c: encapsulate class list
3917         * include/class.h: clean up classes
3918         * * fixup code that depended on changes
3919
3920 2000-09-17  Thomas Helvey <helveytw@home.com>
3921         * ircd/s_conf.c: add me to local conf
3922         * include/s_conf.h: move CONF_ME macro to chkconf.c
3923         * ircd/s_bsd.c: cleanup initialization, allow virtual host
3924         to be changed by rehash
3925
3926 2000-09-17  Thomas Helvey <helveytw@home.com>
3927         * include/class.h: add missing prototype
3928         * ircd/class.c: make argument to get_conf_class const
3929
3930 2000-09-17  Thomas Helvey <helveytw@home.com>
3931         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
3932         merge conflicts.
3933         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
3934         merge conflicts
3935
3936 2000-09-16  Thomas Helvey <helveytw@home.com>
3937         * ircd/s_conf.c: add code for server struct
3938         * ircd/client.c: copy of class.c sort of, new file for client
3939         specific operations, will move things here as appropriate,
3940         currently only one function is exported from here.
3941         * ircd/*.c: general logic cleanups, convert negatives to
3942         positives in places.
3943
3944 2000-09-16  Thomas Helvey <helveytw@home.com>
3945         * ircd/s_conf.c: add code for new crule data structs, strip quotes
3946         * ircd/crule.c: clean up scary casting a bit, type safety stuff
3947         * include/s_conf.h: add CRuleConf struct and support, remove
3948         unused constants
3949         * include/crule.h: type safety cleanups
3950         * ircd/*.c: fixup code that depended on stuff I changed
3951
3952 2000-09-15  Thomas Helvey <helveytw@home.com>
3953         * ircd/s_conf.c: start adding code for new conf data structs, changed
3954         listeners, admin line, motd lines, class lines. Move validate_hostent
3955         to resolver. General mayhem.
3956         * include/s_conf.h: new data structs and accessors
3957         * ircd/res.c: move validate_hostent here, rewrite, use regular
3958         expression for validation.
3959         * doc/example.conf: update docs for port
3960
3961 2000-09-14  Thomas Helvey <helveytw@home.com>
3962         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
3963         up conf_init into managable chunks.
3964         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
3965         * include/s_conf.h: add new data struct for local info (unwinding the mess).
3966
3967 2000-09-13  Thomas Helvey <helveytw@home.com>
3968         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
3969         local clients.
3970         * ircd/list.c: put SLinks in free lists
3971         * ircd/channel.c: put Memberships in free lists
3972         * ircd/ircd.c: rearrange initializations a bit in main
3973         Note: With these changes, ircd NEVER frees Clients, SLinks or
3974         Memberships. It will also rarely need to allocate new
3975         ones during net bursts and other disruptions. This should
3976         cut down on memory fragmentation a bit as well.
3977
3978 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
3979
3980         * ircd/m_names.c (do_names): pull-up from do_names fix in
3981         u2.10.10.pl11
3982
3983 2000-07-15  Perry Lorier       <Isomer@coders.net>
3984         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
3985                  match()'s.  Major Major cpu savings.  Also speed up the
3986                  other case slightly.  As a side effect you can now
3987                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
3988                  3am.
3989
3990 2000-07-15  Perry Lorier       <Isomer@coders.net>
3991         * various: Fixed warnings after compiling on an alpha.
3992 2000-07-09  Perry Lorier       <Isomer@coders.net>
3993         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
3994                       changes suggested by various other people.
3995         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
3996                         that it gets a corrupt entry somehow.
3997 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3998         * ircd/m_oper.c: Clean up compiler warning.
3999
4000 2000-07-08  Perry Lorier       <Isomer@coders.net>
4001         * doc/ircd.8: Updated the documentation, it was slightly out of date
4002                       being updated around 1989.
4003         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
4004                           fixed a few minor glitches.
4005         * doc/rfc1459.unet: Updated.
4006         * ircd/IPcheck.c: Fixed more bugs.
4007         * ircd/s_bsd.c: We now keep track of servers we've conected.
4008
4009 2000-07-02  Perry Lorier       <Isomer@coders.net>
4010         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
4011                         me.  Thanks to Hektik, thanks thanks thanks thanks
4012                         thanks thanks thanks thanks thank thanks thank thanks
4013
4014 2000-07-01  Perry Lorier       <Isomer@coders.net>
4015         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
4016         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
4017
4018 2000-06-22  Perry Lorier       <Isomer@coders.net>
4019         * ircd/IPcheck.c: Large chunks redone.
4020         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
4021                         single AND double digit limits are allowed now.
4022         * misc other: Changes to IPcheck.
4023
4024 2000-06-30  Perry Lorier       <Isomer@coders.net>
4025         * ircd/ircd.c: Fix command line parameter bugs.
4026
4027 2000-06-30  Perry Lorier       <Isomer@coders.net>
4028         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
4029         * ircd/m_nick.c: Tidied things up.
4030
4031 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
4032         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
4033         
4034 2000-05-29  Perry Lorier       <Isomer@coders.net>
4035         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
4036         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
4037                         you think it'll get bored and fix itself?
4038
4039 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4040
4041         * ircd/m_names.c: Clean up compiler warnings.
4042
4043 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
4044
4045         * ircd/channel.c (mode_parse_client): don't send warning if
4046         there's not enough arguments for a +/-o/v; means the habit of
4047         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
4048         error messages
4049
4050 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4051
4052         * ircd/m_names.c: Re-factor code to remove unneccessary
4053         GlobalChannelList iteration every time someone joins a channel.
4054
4055 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
4056
4057         * ircd/s_user.c: add struct Gline * argument to register_user;
4058         look up global glines and repropagate them if necessary; send
4059         acknowledgement of gline to remote servers when registering users
4060
4061         * ircd/s_serv.c (server_estab): don't send acknowledgement of
4062         local glines to remote servers; do send gline acknowledgement of
4063         bursted users
4064
4065         * ircd/m_user.c (m_user): pass new struct Gline * argument to
4066         register_user
4067
4068         * ircd/m_pong.c: pass new struct Gline * argument to register_user
4069
4070         * ircd/m_nick.c (ms_nick): document protocol change
4071
4072         * ircd/gline.c: support GLINE_LASTMOD
4073
4074         * include/s_user.h: add struct Gline * argument to register_user
4075
4076         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
4077
4078         * ircd/s_conf.c (find_kill): add unsigned int argument to
4079         gline_lookup()
4080
4081         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
4082         glines; add unsigned int argument to gline_lookup()
4083
4084         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
4085         argument to gline_lookup()
4086
4087         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
4088         parameter, or when it falls out of bounds: see comments prior to
4089         call to jupe_resend(); call server_estab with struct Jupe
4090         parameter, so that we place the appropriate %<lastmod> in the
4091         appropriate place.
4092
4093         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
4094         server, as well as for servers when we're sending the BURST
4095
4096         * include/s_serv.h: add a struct Jupe * to the arguments for
4097         server_estab() so that we can send the appropriate lastmod
4098         parameter
4099
4100         * ircd/m_gline.c (ms_gline): actually, this should be the
4101         slightest bit more efficient...
4102
4103         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
4104         bit more efficient...
4105
4106         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
4107         during netburst
4108
4109         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
4110         netburst
4111
4112         * ircd/channel.c (joinbuf_join): really remove user from local
4113         channels
4114
4115 2000-05-29  Perry Lorier       <Isomer@coders.net>
4116         * ircd/m_names.c: Removed redundant space. 
4117         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
4118
4119 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
4120
4121         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
4122         a " "
4123
4124 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
4125
4126         * ircd/channel.c: replace bogus assertions with returns, which is
4127         logically correct; only wipe out limit/key if they were originally
4128         set in the first place; remove user from channel when doing a
4129         PARTALL; only send MODE +o for user CREATEing channel if user is
4130         not MyUser--CREATE will only be used if the channel did not
4131         originally exist, therefore we can assume no one local is on the
4132         channel anyway, and we don't exactly need for the user to see an
4133         explicit +o for themselves
4134
4135         * doc/readme.gline: describe the syntax of the GLINE command
4136
4137         * doc/readme.jupe: update to reflect a couple of changes to JUPE
4138
4139         * ircd/gline.c: don't propagate local changes
4140
4141         * ircd/jupe.c: don't propagate local changes
4142
4143         * ircd/m_gline.c (mo_gline): force local flag when deactivating
4144         glines with 0 lastmod
4145
4146         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
4147         are now removed instead of being deactivated
4148
4149         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
4150         -<mask>" be accepted
4151
4152         * ircd/channel.c (send_channel_modes): deal with one of the last
4153         vestiges of sendbuf
4154
4155         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
4156         debugging hooks
4157
4158         * ircd/channel.c (modebuf_extract): remove debugging
4159         sendto_opmask_butone calls
4160
4161 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
4162
4163         * ircd/channel.c: support a couple of new flags to support using
4164         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
4165         of modebuf_extract to extract added flags for use by ms_burst
4166
4167         * include/channel.h: a couple of new flags to support using
4168         mode_parse inside ms_burst
4169
4170         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
4171
4172         * ircd/m_endburst.c: add loop to processing of end_of_burst to
4173         free empty channels after the BURST is over.
4174
4175         * ircd/m_server.c: convert to use new send.c functions--I wanted
4176         to rewrite it from scratch, but the logic's pretty complex; I may
4177         still rewrite it, though...
4178
4179 2000-05-02  Thomas Helvey <tomh@inxpress.net>
4180
4181         * ircd/ircd.c: fix broken header include ordering
4182
4183 2000-05-02  Thomas Helvey <tomh@inxpress.net>
4184         
4185         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
4186         review emailed privately
4187
4188         * include/IPcheck.h: removed unneeded include
4189
4190 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
4191
4192         * ircd/s_user.c (hunt_server): throw in a comment so I know what
4193         the sendto_one is for
4194
4195         * include/querycmds.h (Count_unknownbecomesclient): convert to
4196         sendto_opmask_butone
4197
4198         * ircd/send.c: start removing dead code
4199
4200         * include/send.h: start removing dead code
4201
4202         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
4203         hunt_server_cmd
4204
4205         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
4206
4207 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
4208
4209         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
4210
4211         * ircd/m_kick.c: Completely reimplement m_kick
4212
4213         * ircd/channel.c: send_user_joins removed; it was dead code,
4214         anyway...
4215
4216 2000-05-01  Perry Lorier <isomer@coders.net>
4217         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
4218         * ircd/channels.c: My fix for the part problem.  Untested, probably
4219                 won't work.  Can't be much worse than the current problem.
4220                 it'll either work or core, take your pick.
4221
4222
4223 2000-04-30  Perry Lorier <isomer@coders.net>
4224         * config/config-sh.in: Fix for CONNEXIT
4225         * ircd/s_{user,misc}.c: Fix for CONNEXIT
4226         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
4227                         (Kev: Want to come talk to me about this?)
4228
4229 2000-04-30  Steven M. Doyle <steven@doyle.net>
4230         * ircd/ircd.c
4231           - general cleanups and readability enhancements
4232           - rewrite of setuid/chroot code.
4233           - server will no longer run as root
4234           - -DPROFIL compile option removed
4235           - Fixed IPcheck API calls
4236  
4237         * config/config-sh.in
4238           - Fixed up chroot compile options
4239           - Added options for debug and profile compiles
4240  
4241         * config/gen.ircd.Makefile
4242           - Support for new debug/profile options
4243  
4244         * ircd/Makefile.in
4245           - Support for new debug/profile options
4246  
4247         * ircd/ircd_signal.c
4248           - Removed -DPROFIL
4249
4250         * include/IPcheck.h
4251           - Removed old API prototypes, added new ones
4252         
4253         * ircd/IPcheck.c
4254           - Readability cleanups (well, I -think-...)
4255           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
4256             used unsigned short was probably causing interesting things after
4257             a client had been connected longer than about 65,535 seconds...
4258           - Removed old API functions.
4259
4260         * ircd/whocmds.c
4261           - Removed IPcheck.h include
4262         
4263         * Additionally modified IPcheck API calls in:
4264           - ircd/m_nick.c
4265           - ircd/m_auth.c
4266           - ircd/s_bsd.c
4267           - ircd/s_conf.c
4268           - ircd/s_misc.c
4269           - ircd/s_serv.c
4270           - ircd/s_user.c
4271         
4272         
4273 2000-04-30  Perry Lorier <isomer@coders.net>
4274         * ircd/s_bsd.c: Sigh. :)
4275         * ircd/m_mode.c: fix for modeless channels by poptix.
4276
4277 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
4278
4279         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
4280
4281         * ircd/channel.c (clean_channelname): make clean_channelname also
4282         truncate long channel names
4283
4284 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
4285
4286         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
4287
4288         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
4289         joinbuf_flush
4290
4291         * include/channel.h: definitions and declarations for the struct
4292         JoinBuf abstraction
4293
4294 2000-04-29  Perry Lorier <isomer@coders.net>
4295         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
4296
4297 2000-04-29  Perry Lorier <isomer@coders.net>
4298         * ircd/s_bsd.c: Add debugging code to IPcheck
4299
4300 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
4301
4302         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
4303
4304         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
4305         RPL_EXPLICIT
4306
4307         * ircd/m_userhost.c (m_userhost): add a dead code comment
4308
4309         * ircd/m_desynch.c: forgot one...
4310
4311         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
4312
4313         * ircd/m_proto.c (proto_send_supported): just change a comment so
4314         it doesn't show up in my scans
4315
4316         * ircd/ircd_reply.c (send_reply): fix a slight bug...
4317
4318         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
4319         kinda hackish...
4320
4321         * ircd/parse.c (parse_server): argument wrangling to make
4322         processing in do_numeric a little easier to deal with
4323
4324         * ircd/s_serv.c (server_estab): SERVER should come from
4325         acptr->serv->up, not &me
4326
4327         * ircd/m_lusers.c: accidentally left out sptr for a %C
4328
4329         * ircd/send.c: hack to support doing wallchops...
4330
4331         * ircd/m_whowas.c: convert to new send functions
4332
4333         * ircd/m_whois.c: convert to new send functions
4334
4335         * ircd/m_who.c: convert to new send functions
4336
4337         * ircd/m_wallops.c: convert to new send functions
4338
4339         * ircd/m_wallchops.c: convert to new send functions
4340
4341         * ircd/m_version.c: convert to new send functions
4342
4343         * ircd/m_userip.c: convert to new send functions
4344
4345         * ircd/m_userhost.c: convert to new send functions
4346
4347         * ircd/m_uping.c: convert to new send functions
4348
4349         * ircd/m_trace.c: convert to new send functions
4350
4351         * ircd/m_topic.c: convert to new send functions
4352
4353         * ircd/m_time.c: convert to new send functions
4354
4355         * ircd/m_squit.c: convert to new send functions
4356
4357         * ircd/m_silence.c: convert to new send functions
4358
4359         * ircd/m_settime.c: convert to new send functions
4360
4361         * ircd/m_restart.c: convert to new send functions
4362
4363         * ircd/m_rehash.c: convert to new send functions
4364
4365         * ircd/m_privmsg.c: convert to new send functions
4366
4367         * ircd/m_pong.c: convert to new send functions
4368
4369         * ircd/m_ping.c: convert to new send functions
4370
4371         * ircd/m_pass.c: convert to new send functions
4372
4373         * ircd/m_opmode.c: convert to new send functions
4374
4375         * ircd/m_oper.c: convert to new send functions
4376
4377         * ircd/m_notice.c: convert to new send functions
4378
4379         * ircd/m_nick.c: convert to new send functions
4380
4381         * ircd/m_names.c: convert to new send functions
4382
4383         * ircd/m_motd.c: convert to new send functions
4384
4385         * ircd/m_mode.c: convert to new send functions
4386
4387         * ircd/m_map.c: convert to new send functions
4388
4389         * ircd/m_lusers.c: convert to new send functions
4390
4391         * ircd/m_list.c: convert to new send functions
4392
4393         * ircd/m_links.c: convert to new send functions
4394
4395         * ircd/m_kill.c: convert to new send functions
4396
4397         * ircd/m_jupe.c: convert to new send functions
4398
4399         * ircd/m_invite.c: convert to new send functions
4400
4401         * ircd/m_info.c: convert to new send functions
4402
4403         * ircd/m_help.c: convert to new send functions
4404
4405         * ircd/m_gline.c: convert to new send functions
4406
4407         * ircd/m_error.c: convert to new send functions
4408
4409         * ircd/m_endburst.c: convert to new send functions
4410
4411         * ircd/m_die.c: convert to new send functions
4412
4413         * ircd/m_destruct.c: convert to new send functions
4414
4415         * ircd/m_defaults.c: convert to new send functions
4416
4417         * ircd/m_connect.c: convert to new send functions
4418
4419 2000-04-28  Perry Lorier <isomer@coders.net>
4420         * RELEASE.NOTES: Describe a few more undocumented features.
4421         * config/config-sh.in: change the default paths for logging
4422         and the recommended number of channels.
4423         * include/supported.h: Rearrange slightly, added CHANTYPE's
4424
4425 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
4426
4427         * ircd/m_close.c: convert to send_reply
4428
4429         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
4430
4431         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
4432
4433         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
4434
4435         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
4436         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
4437         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
4438         carefully rethought...
4439
4440         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
4441
4442         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
4443
4444         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
4445         numeric nick; therefore, we have to use the server name
4446
4447         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
4448
4449         * ircd/send.c: fix minor bugs
4450
4451         * ircd/s_user.c (check_target_limit): mark dead code so I filter
4452         it when I grep
4453
4454         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
4455         when I grep
4456
4457         * ircd/parse.c: mark dead code so I filter it when I grep
4458
4459         * ircd/map.c: mark dead code so I filter it when I grep
4460
4461         * ircd/ircd.c: mark dead code so I filter it when I grep
4462
4463         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
4464         functions
4465
4466         * ircd/channel.c: mark dead code so I filter it when I grep
4467
4468         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
4469         hope I'm not stepping on toes...
4470
4471         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
4472         conversions; use ircd_snprintf in a couple of cases to negate the
4473         possibility of buffer overflow
4474
4475 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
4476
4477         * ircd/channel.c: convert as much as possible to new send
4478         semantics
4479
4480         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
4481         test member->user->from->fd, not from->fd
4482
4483         * ircd/gline.c (gline_add): go ahead and add badchans; we just
4484         won't look for them in m_gline; this way, they always work...
4485
4486         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
4487
4488         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
4489         ircd_vsnprintf conversion specifiers
4490
4491         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
4492         I have my conversion specifiers
4493
4494         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
4495
4496         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
4497         local users
4498
4499         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
4500         little less brain-dead
4501
4502         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
4503
4504         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
4505         RPL_STATSDEBUG
4506
4507         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
4508         RPL_STATSDEBUG
4509
4510         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
4511         for RPL_STATSDEBUG
4512
4513         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
4514
4515         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
4516
4517         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
4518         ERR_INVALIDUSERNAME
4519
4520         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
4521
4522         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
4523         a numeric as needing to use an explicit pattern, which will be the
4524         first argument in the variable argument list
4525
4526         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
4527         non-prefixed nospoof PING
4528
4529         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
4530         non-prefixed SERVER login
4531
4532         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
4533         a numeric usage further up)
4534
4535         * include/send.h: declare sendrawto_one
4536
4537         * ircd/send.c (sendrawto_one): new function to use ONLY for
4538         non-prefixed commands, like PING to client, or PASS/SERVER on
4539         server registration
4540
4541 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
4542
4543         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
4544         future expansion (channel numerics?)
4545
4546         * include/ircd_snprintf.h: added documentation to # to explain use
4547         with %C; added documentation for : to explain use with %C; added
4548         documentation for %H for channels
4549
4550         * ircd/whocmds.c: use send_reply
4551
4552         * ircd/userload.c: use sendcmdto_one
4553
4554         * ircd/uping.c: use sendcmdto_one
4555
4556         * ircd/send.c: use new flags to %C format string; ':' prefixes
4557         client name with a colon for local connects, '#' uses
4558         nick!user@host form for local connects
4559
4560         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
4561         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
4562
4563         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
4564
4565         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
4566         sendcmdto_one
4567
4568         * ircd/s_auth.c: use sendto_opmask_butone
4569
4570         * ircd/res.c: use sendcmdto_one
4571
4572         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
4573         debugging assertions
4574
4575 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
4576
4577         * ircd/support.c: dumpcore is no longer used, so get rid of it
4578
4579         * ircd/parse.c: use send_reply, sendcmdto_one
4580
4581         * ircd/map.c: use send_reply
4582
4583         * ircd/listener.c: use send_reply
4584
4585         * ircd/jupe.c: use sendto_opmask_butone, send_reply
4586
4587         * ircd/ircd_reply.c: use send_reply
4588
4589         * ircd/ircd.c: use sendto_opmask_butone
4590
4591         * ircd/gline.c: use sendto_opmask_butone, send_reply
4592
4593         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
4594         registered clients; make FLAG_ALT print nick!user@host; make
4595         FLAG_COLON print :blah
4596
4597         * ircd/class.c (report_classes): use send_reply instead of
4598         sendto_one
4599
4600         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
4601
4602         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
4603         sendto_one with sendcmdto_one
4604
4605 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
4606
4607         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
4608         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
4609         sendcmdto_match_butone
4610
4611         * include/send.h: declare sendcmdto_match_butone
4612
4613 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
4614
4615         * ircd/jupe.c: update to use send_reply()
4616
4617         * ircd/gline.c: update to use send_reply()
4618
4619         * include/ircd_reply.h: declare send_reply
4620
4621         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
4622         replies; uses ircd_snprintf
4623
4624         * ircd/send.c: added comments to redirect searchers to appropriate
4625         sendcmdto_* function; moved new functions to end of file; added
4626         explanatory comments; reordered arguments; defined new functions
4627         mentioned below
4628
4629         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
4630
4631         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
4632
4633         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
4634
4635         * ircd/gline.c: reorder arguments to sendcmdto_* functions
4636
4637         * include/send.h: reorder arguments, add explanatory comments,
4638         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
4639         and vsendto_opmask_butone
4640
4641 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
4642
4643         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
4644         vsendto_op_mask that uses '*' instead of the receiving client
4645         nickname
4646
4647         * include/send.h: declare sendcmdto_channel_butone; takes a skip
4648         argument that allows you to skip (or not to skip) deaf users,
4649         users behind bursting servers, and non channel operators
4650
4651 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
4652
4653         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
4654         sendto_channel_butserv has a subtle bug; also wrote
4655         sendcmdto_common_channels.
4656
4657         * include/send.h: declare new sendcmdto_* functions
4658
4659         * ircd/jupe.c: support local deactivations of jupes
4660
4661         * ircd/gline.c: support local deactivations of glines
4662
4663         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
4664         deactivated; if they aren't locally deactivated, then it slaves to
4665         the net-wide activation status; JupeIsRemActive() tests only
4666         whether the jupe is active everywhere else
4667
4668         * include/gline.h: GLINE_LDEACT allows glines to be locally
4669         deactivated; if they aren't locally deactivated, then it slaves to
4670         the net-wide activation status; GlineIsRemActive() tests only
4671         whether the gline is active everywhere else
4672
4673         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
4674         gline expires after the new one will, we drop the new one,
4675         otherwise we add the G-line after that one (so the wide one will
4676         apply first); if the new one contains an existing G-line and if it
4677         will expire after the existing one, we drop the existing one to
4678         save memory
4679
4680         * ircd/m_gline.c (mo_gline): opers could issue remote local
4681         glines when CONFIG_OPERCMDS was off; fixed
4682
4683 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
4684
4685         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
4686         this is a local JUPE
4687
4688         * ircd/gline.c: add flags argument to gline_activate and
4689         gline_deactivate for future expansion
4690
4691         * ircd/m_gline.c: pass flags to gline_activate and
4692         gline_deactivate
4693
4694         * include/gline.h: add flags argument to gline_activate and
4695         gline_deactivate
4696
4697         * ircd/jupe.c: add flags argument to jupe_activate and
4698         jupe_deactivate for future expansion
4699
4700         * include/jupe.h: add flags argument to jupe_activate and
4701         jupe_deactivate
4702
4703         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
4704         local, active; pass flags to jupe_activate and jupe_deactivate
4705
4706         * include/gline.h: remove dead code
4707
4708         * ircd/gline.c: make gline expire times relative to CurrentTime,
4709         since that should be monotonically increasing, instead of
4710         TStime(), which can be set backwards, and which can therefore
4711         cause an expire time to increase; make local glines be removed
4712         instead of just deactivated; don't let gline_find() look for
4713         user@host glines if the mask being looked up is a channel mask
4714
4715         * ircd/send.c (vsendcmdto_one): forgot to account for the case
4716         where origin is a server and destination is a user
4717
4718         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
4719         since that should be monotonically increasing, instead of
4720         TStime(), which can be set backwards, and which can therefore
4721         cause an expire time to increase; make local jupes be removed
4722         instead of just deactivated
4723
4724         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
4725         limit is fine.  any other warnings I should know about?
4726
4727 2000-04-15  Thomas Helvey <tomh@inxpress.net>
4728
4729         * ircd/*.c: const correctness and type safety cleanups to
4730         get code to compile with C++ compiler. Still has
4731         signed/unsigned comparison warnings.
4732
4733 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4734
4735         * ircd/userload.c: change <sys/time.h> include to <time.h> for
4736           portability.
4737
4738 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
4739
4740         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
4741         and convert acptr...
4742
4743         * ircd/s_user.c: move gline_lookup function call into
4744         register_user, where it'll have a username to lookup!
4745
4746         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
4747         functions; also stuff send_error_to_client into return clauses
4748
4749         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
4750         functions; also use send_error_to_client where that makes sense
4751
4752         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
4753         functions; also use send_error_to_client where that makes sense
4754
4755         * ircd/gline.c: modify to utilize new sendcmdto_* series of
4756         functions; also fix gline_lookup() to deal properly with remote
4757         clients--boy, do struct Client and struct User need to be cleaned
4758         up!
4759
4760         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
4761         too...
4762
4763         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
4764         sendcmdto_serv_butone(), all utilizing the %v conversion of
4765         ircd_snprintf()
4766
4767         * include/send.h: define IRC_BUFSIZE, max size of a message;
4768         declare sendcmdto_one(), vsendcmdto_one(), and
4769         sendcmdto_serv_butone()
4770
4771         * include/msg.h: define all the CMD_* constants needed to utilize
4772         the new sendcmdto_* series of functions
4773
4774         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
4775
4776         * ircd/gline.c: remove old, dead code.
4777
4778         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
4779         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
4780         (don't advertise proxies); remove dead code
4781
4782         * ircd/parse.c: oper handler for JUPE only lists jupes unless
4783         CONFIG_OPERCMDS is enabled
4784
4785         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
4786         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
4787
4788         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
4789         always return ERR_DISABLED
4790
4791         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
4792         enabled, always return ERR_DISABLED
4793
4794         * ircd/s_err.c: add error message to indicate disabled commands
4795
4796         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
4797
4798         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
4799
4800         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
4801         CONFIG_NEW_MODE to 'y' for now
4802
4803         * ircd/gline.c (gline_list): fix a minor formatting bogon
4804
4805         * BUGS: since I fixed that bug, might as well mark it fixed.
4806
4807         * ircd/m_join.c: look up badchans with GLINE_EXACT
4808
4809         * ircd/m_gline.c: fix parc count problems; look up existing
4810         G-lines with GLINE_EXACT; only set new lastmod when
4811         activating/deactivating existing glines if old lastmod was not 0
4812
4813         * ircd/gline.c: forgot to copy the gline reason over; don't
4814         propagate a gline with 0 lastmod if origin is user; add
4815         GLINE_EXACT to force exact matching of gline mask
4816
4817         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
4818         flag properly
4819
4820         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
4821         but gline_lookup() actually takes a client--d'oh.
4822
4823 2000-04-13  Thomas Helvey <tomh@inxpress.net>
4824         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
4825
4826 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4827
4828         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
4829           "/who * x"
4830           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
4831           (Found by Plexus).
4832
4833         * ircd/whocmds.c: Change idle time calc from socket idle to user
4834           idle.
4835
4836 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
4837
4838         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
4839         too, for ircd_snprintf.c
4840
4841         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
4842         comments; mostly descended from the Linux manpage for printf, but
4843         also documenting the extensions.
4844
4845         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
4846         client; make 'q' be the same as 'L'; remove __inline__; only
4847         define EXTENSION if HAVE_LONG_LONG is defined
4848
4849         * include/handlers.h: declare m_gline()
4850
4851         * ircd/parse.c: gline can be called by users, but it only lists
4852         the glines.
4853
4854         * ircd/s_user.c (set_nick_name): resend gline if a remote server
4855         introduces a glined client
4856
4857         * ircd/s_serv.c (server_estab): burst glines, too
4858
4859         * ircd/gline.c: fix up all the expire times to be offsets;
4860         simplify gline_resend()
4861
4862         * ircd/m_gline.c: begin coding replacements for ms_gline(),
4863         mo_gline(), and m_gline()
4864
4865         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
4866         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
4867
4868 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4869
4870         * tools/Bouncer/*: Add comments/documentation/tags.
4871         * tools/Bouncer/*: Add debug defines, make task fork().
4872
4873 2000-04-12  Thomas Helvey <tomh@inxpress.net>
4874         * ircd/s_err.c: Cleanup s_err.c make one table so we
4875         don't have to do anything tricky to get an error string.
4876
4877 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4878         * Add port bouncer for http (x/w)
4879
4880 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
4881
4882         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
4883         call to gline_find(); also used GlineReason() instead of direct
4884         reference to structure member
4885
4886         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
4887         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
4888         is active
4889
4890         * ircd/channel.c: nothing seems to be called anywhere...
4891
4892         * ircd/s_err.c: update a couple of replies to dovetail with new
4893         semantics
4894
4895         * ircd/gline.c: begin complete re-implementation of gline.c along
4896         the lines of the final design of jupe.c
4897
4898         * include/gline.h: begin complete re-implementation of gline.c
4899         along the lines of the final design of jupe.c
4900
4901         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
4902         %s by %s" message...
4903
4904         * ircd/ircd_snprintf.c: my new snprintf()-like functions
4905
4906         * include/ircd_snprintf.h: my new snprintf()-like functions
4907
4908 2000-04-11  Thomas Helvey <tomh@inxpress.net>
4909         * ircd/IPcheck.c: removed old dead code
4910         * ircd/s_user.c (send_user_info): removed non-standard
4911           user not found message for userhost/userip
4912
4913 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
4914
4915         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
4916         * doc/p10.html: Work on chapter 4.
4917
4918 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
4919
4920         * ircd/channel.c (mode_parse_client): fix coredump on /mode
4921         #foobar +o nosuchnick
4922
4923 2000-04-10  Perry Lorier  <Isomer@coders.net>
4924         * BUGS: Added bug.
4925
4926 2000-04-09  Thomas Helvey <tomh@inxpress.net>
4927         * include/IPcheck.h: fix prototype
4928         * ircd/s_user.c: fix usage of IPcheck_remote_connect
4929         * ircd/IPcheck.c: removed unused args
4930
4931 2000-04-09  Thomas Helvey <tomh@inxpress.net>
4932         * include/IPcheck.h: add proto for IPcheck_expire
4933
4934         * ircd/IPcheck.c: Rewrote
4935
4936         * ircd/ircd.c: Add IPcheck_expire to main message loop
4937
4938         * ircd/s_user.c: Redo target hashing, refactor target code
4939
4940         * include/numeric.h: Cleaned up numerics, added which ones are
4941         in use by other networks and what they are in use for.
4942
4943         * ircd/channel.c: cleaned can_join(), allow anyone through anything
4944         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
4945         will get a message explaining to them not to cheat.
4946
4947         * ircd/m_join.c: cleaned up the various join functions, should be
4948         a lot more efficient.  Still needs work.  Now assumes that s<->s
4949         won't send it a JOIN 0.  Service coders - note this and tread with
4950         care.
4951
4952         * ircd/m_stats.c: added Gte-'s stats doc patch.
4953
4954         * ircd/m_version.c: /version now returns the 005 numeric as well.
4955         as requested by Liandrin.
4956
4957
4958 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
4959
4960         * ircd/m_clearmode.c: add include for support.h for write_log()
4961
4962         * configure: move ircd/crypt/* to tools/*
4963
4964 2000-04-06  Thomas Helvey <tomh@inxpress.net>
4965         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
4966           set client host to server alias if connection from localhost
4967
4968 2000-04-06  Perry Lorier <isomer@coders.net>
4969         * ircd/ircd.c: Fix core during pinging (oops)
4970         
4971 2000-04-06  Perry Lorier <isomer@coders.net>
4972         * ircd/send.c: fixed wrong ident being sent to channels bug.
4973         * include/numerics.h: Updated some of the numerics from other
4974         networks.  Flagged some as 'unused' by undernet.
4975
4976 2000-03-30  Perry Lorier <isomer@coders.net>
4977         * ircd/ircd.c: Lets see if this helps the ping problem at all.
4978         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
4979         time for local clients. (as requested), extended who now returns all
4980         the flags (@+!) so you can tell the complete state of a client.
4981
4982 2000-03-30  Thomas Helvey <tomh@inxpress.net>
4983         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
4984
4985 2000-03-30  Perry Lorier <isomer@coders.net>
4986         * ircd/parse.c: oops, missed opers.
4987
4988 2000-03-30  Perry Lorier <isomer@coders.net>
4989         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
4990         for so long.  Remember: m_ping MUST be in the parse array. :)
4991
4992 2000-03-30  Perry Lorier <isomer@coders.net>
4993         * ircd/ircd.c: test in check_pings was wrong.  I move that we
4994         disallow cvs commit after 10pm localtime....
4995
4996 2000-03-30  Perry Lorier <isomer@coders.net>
4997         * ircd/m_pong.c: Fix it for servers too.
4998
4999 2000-03-30  Perry Lorier <isomer@coders.net>
5000         * ircd/m_pong.c: Fix ping timeout bugs
5001
5002 2000-03-30  Perry Lorier <isomer@coders.net>
5003         * ircd/channel.c: Bans had CurrentTime in their when field instead
5004         of TStime()
5005
5006 2000-03-31  Thomas Helvey <tomh@ixpress.net>
5007         * ircd/numnicks.c (SetXYYCapacity): fix for extended
5008         numerics.
5009
5010 2000-03-30  Perry Lorier <isomer@coders.net>
5011         * ircd/m_nick.c: send kills both ways so when we add nick change
5012         on collision we don't desync the network.
5013
5014         * ircd/map.c: Fixup the map a bit more.
5015
5016 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
5017
5018         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
5019
5020         * ircd/m_opmode.c: Log the mode changes to OPATH
5021
5022         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
5023         OPATH
5024
5025         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
5026         OPATH
5027
5028         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
5029
5030         * config/config-sh.in: added OPATH for opmode log file
5031
5032         * ircd/m_clearmode.c (do_clearmode): updated uses of
5033         modebuf_mode_string() for the new usage
5034
5035         * ircd/channel.c: added flag MODE_FREE and an int argument to
5036         modebuf_mode_string() to indicate that the string must be free'd;
5037         updated calls to modebuf_mode_string() for the new usage; called
5038         collapse(pretty_mask()) on the ban string and use allocated memory
5039         for it; added ban list length accounting; fixed a number of small
5040         bugs in ban processing
5041
5042         * include/channel.h: added flag MODE_FREE and an int argument to
5043         modebuf_mode_string() to indicate that the string must be free'd
5044
5045         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
5046         keys and limits that are set
5047
5048 2000-03-30  Perry Lorier <isomer@coders.net>
5049         * ircd/ircd.c: rewrote check_pings() for maintainability
5050         and speed.  Also changed quit msg's so they don't have
5051         redundant nick[host] info in them.
5052
5053         * ircd/send.c: Changed write errors to report what error
5054         occured (if possible).
5055
5056         * ircd/gline.c: added gline comment to the quit.
5057
5058         * ircd/m_server.c: Added suggestions to server quits mentioning
5059         what went wrong so the admin can fix it earlier instead of asking
5060         questions...
5061
5062         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
5063         servers that aren't fully burst yet.  And show '(--s)' for servers
5064         where its not sure.
5065
5066         * doc/example.conf: Fixed wrapped U:
5067
5068 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
5069
5070         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
5071         mode_parse() (version selectable at compile time)
5072
5073         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
5074
5075         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
5076
5077         * config/config-sh.in: add new config option to enable new m_mode
5078         implementation
5079
5080         * doc/Configure.help: add documentation for new config option
5081         CONFIG_NEW_MODE
5082
5083         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
5084         MODE -v : Not enough parameters
5085
5086         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
5087         +k and +l even if they weren't set...
5088
5089         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
5090
5091         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
5092         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
5093         for; test the 0-th member, not the i-th member, of the client
5094         change state stuff
5095
5096         * ircd/m_clearmode.c (do_clearmode): use the new
5097         mode_invite_clear() function
5098
5099         * ircd/channel.c: cleared up all the compile-time warnings and
5100         errors
5101
5102         * include/channel.h: added declarations for mode_ban_invalidate()
5103         and mode_invite_clear()
5104
5105         * ircd/channel.c: finished mode_parse(), then broke it up into a
5106         dozen or so helper functions to make the code easier to read
5107
5108 2000-03-29  Thomas Helvey <tomh@inxpress.net>
5109         * ircd/ircd.c: refactor server initialization a bit, use
5110         getopt for parsing command line, refactor init_sys, main,
5111         and other bits.
5112
5113         * ircd/s_bsd.c: add functions for initialization to clean
5114         up logic a bit and remove duplicated code.
5115
5116         * include/ircd.h: add struct for server process related
5117         variables.
5118
5119 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
5120
5121         * ircd/channel.c: initial definition of mode_parse(); flags to
5122         prevent doing the same thing multiple times; helper method
5123         send_notoper() to send a "Not oper"/"Not on channel" notice
5124
5125         * include/channel.h: declare mode_parse() and helper flags
5126
5127         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
5128         sending to match the current action of set_mode() closely enough
5129         that hopefully there won't be major conflicts
5130
5131         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
5132         building logic, reversed the order of the arguments to mode
5133         commands to have '-' preceed '+'
5134
5135 2000-03-29  Thomas Helvey <tomh@inxpress.net>
5136         * ircd/s_bsd.c (add_connection): don't disable socket options
5137         let OS tune itself and allow important performance tweaks to 
5138         work.
5139
5140 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
5141
5142         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
5143         confused by set_mode, which is doing some really weird logic;
5144         guess what I'm going to rewrite next?  ;)
5145
5146 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
5147
5148         * include/channel.h: added MODE_SAVE for the bounds checking stuff
5149         in modebuf_flush
5150
5151         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
5152         make it do bounds checking on the buffer; all modes are sent only
5153         if the all parameter is 1; modebuf_flush is the exported wrapper
5154
5155         * include/channel.h: add BOUNCE, renumber flags to get a little
5156         more space
5157
5158         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
5159         BOUNCE; send DESYNCH message
5160
5161 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
5162
5163         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
5164         channel actually has in effect for deletion
5165
5166         * ircd/channel.c: added explanatory comments to all added
5167         functions; made flushing take place at the correct place even if
5168         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
5169         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
5170         is empty, fixed the apparent source, removed some bogus string
5171         termination code, properly terminate the mode strings, add support
5172         for HACK2 and HACK3, made limit strings not be sent if the limit
5173         is being removed, changed where '+' and '-' come from in sent
5174         strings, added support for DEOP flag, set up bouncing code for
5175         HACK2
5176
5177         * ircd/Makefile.in: ran make depend
5178
5179         * include/channel.h: added new defines for future functionality,
5180         made modebuf_flush() return int so I can use tail recursion
5181
5182         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
5183         to make it all compile
5184
5185         * ircd/m_opmode.c: add msg.h to includes...
5186
5187         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
5188
5189         * ircd/channel.c (modebuf_flush): realized I forgot to
5190         nul-terminate addbuf/rembuf properly...
5191
5192         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
5193
5194         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
5195         sendto_serv_butone--blah^2
5196
5197         * ircd/send.c (sendto_serv_butone): stupid comments confused me
5198
5199         * ircd/channel.c (modebuf_flush): if there are no mode changes to
5200         propagate, we're done...
5201
5202         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
5203         not sendto_all_butone
5204
5205         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
5206
5207         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
5208
5209         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
5210         the list
5211
5212         * ircd/parse.c: added messages for opmode and clearmode
5213
5214         * include/handlers.h: added declarations for mo_opmode(),
5215         ms_opmode(), mo_clearmode(), and ms_clearmode()
5216
5217         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
5218         TOK_CLEARMODE
5219
5220         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
5221         MODEBUF_DEST_OPMODE flag
5222
5223         * ircd/channel.c (modebuf_flush): added new flag,
5224         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
5225         to originate from source's server (or source itself, if
5226         IsServer(source)); also causes a server-level MODE to be sent as
5227         OPMODE instead
5228
5229         * include/channel.h: defined MODEBUF_DEST_SERVER,
5230         MODEBUF_DEST_HACK4
5231
5232         * ircd/channel.c: Add another argument to build_string() to handle
5233         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
5234         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
5235         to be sent out
5236
5237 2000-03-27  Perry Lorier <isomer@coders.net>
5238
5239         * ircd/s_bsd.c: fixed missing 'u' typo.
5240
5241 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
5242
5243         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
5244         _mode_string(), _mode_client(), _flush(); also implemented a
5245         simple build_string()
5246
5247         * include/channel.h: added definition of ModeBuf, modebuf_*
5248         manipulation functions, and a couple of helper macros
5249