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