Make DESTRUCT crossing CREATE or BURST not send a BURST.
[ircu2.10.12-pk.git] / ChangeLog
1 2005-11-14  Carlo Wood <run@alinoe.com>
2
3         * ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
4         (modebuf_mode_uint): Make sure the limit is included as an
5         argument when necessary (and only when necessary) in a bounce.
6
7         * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead
8         of burst to resynchronize a non-empty destructed channel.
9
10 2005-11-14  Michael Poole <mdpoole@troilus.org>
11
12         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
13         changes by voiceless no-account users on a +r channel.
14
15 2005-11-14  Michael Poole <mdpoole@troilus.org>
16
17         * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
18         server is kicking him.
19
20 2005-11-13  Michael Poole <mdpoole@troilus.org>
21
22         * include/patchlevel.h (PATCHLEVEL): Bump for pre04.
23
24 2005-11-13  Michael Poole <mdpoole@troilus.org>
25
26         * include/patchlevel.h (PATCHLEVEL): Update for release.
27
28 2005-11-13  Carlo Wood <run@alinoe.com>
29
30         * ircd/m_create (ms_create): Accept CREATE for zannels.
31
32         * ircd/m_join.c (m_join): MODE +o for a zannel must come from the
33         server for compatibility with older versions.
34
35 2005-11-12  Michael Poole <mdpoole@troilus.org>
36
37         * include/patchlevel.h (PATCHLEVEL): Bump for pre03.
38
39 2005-11-12  Michael Poole <mdpoole@troilus.org>
40
41         * include/patchlevel.h (PATCHLEVEL): Update for release.
42
43 2005-11-11  Michael Poole <mdpoole@troilus.org>
44
45         * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A
46         and AAAA lookups as well as PTR.
47
48 2005-11-07  Michael Poole <mdpoole@troilus.org>
49
50         * ircd/channel.c (mode_parse_client): Allow clients to specify
51         oplevel in MODE #channel +o.
52         (mode_process_clients): Allow oplevel 999 to deop another 999.
53
54         * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999.
55
56 2005-10-31  Michael Poole <mdpoole@troilus.org>
57         (Based on a patch by Romain Bignon <progs@ir3.org>)
58
59         * ircd/channel.c: Some modes (currently only WASDELJOINS) should
60         not be propagated to remote servers.
61
62 2005-10-30  Michael Poole <mdpoole@troilus.org>
63
64         * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
65         inside an if (MyUser(state->sptr)) test.
66
67         * ircd/m_join.c (m_join): Reorganize zannel join check to match
68         surrounding code.
69
70 2005-10-30  Carlo Wood <run@alinoe.com>
71
72         * ircd/channel.c (sub1_from_channel): Delay destruction for -A
73         channels.  They become zombie channels (zannels).
74         (mode_parse_upass): Add duration to ERR_NOMANAGER message.
75         (mode_parse_apass): Likewise.  Unconditionally set the member who
76         sets Apass as oplevel 0.  Clear Upass when clearing Apass.
77         (joinbuf_join): Remove code to pass oplevel in JOIN.
78
79         * ircd/m_burst.c (ms_burst): Handle zannels.
80
81         * ircd/m_join.c (m_join): Handle a join to a zannel.  If the user
82         is joining with ops and/or an oplevel, send those.
83         (ms_join): Stop trying to parse oplevels in JOIN.  Copy join
84         timestamp when a user joins a zannel.
85
86         * ircd/m_mode.c (ms_mode): Never generate HACK3.  Silently allow a
87         user to op himself if he is the only one in a channel.
88
89         * ircd/s_err.c (ERR_UPASSSET): Remove extra space.
90         (ERR_UPASSNOTSET): Likewise.
91         (ERR_NOMANAGER): Add field for channel lifetime.
92
93 2005-10-30  Michael Poole <mdpoole@troilus.org>
94
95         * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real
96         channel key is OVERRIDE.  (Reworked patch from a1kmm.)
97
98 2005-10-30  Michael Poole <mdpoole@troilus.org>
99
100         * .cvsignore: Add autom4te.cache.
101
102         * ircd/.cvsignore: Add convert-conf.
103
104         * ircd/test/.cvsignore: Add ircd_match_t.
105
106         * patches/.cvsignore: Add marks.
107
108 2005-10-28  Alex Badea  <vamposdecampos@gmail.com>
109
110         * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538)
111
112 2005-10-17  Diane Bruce  <db@db.net>
113
114         * ircd/ircd_res.c: Don't send retries if the client did
115         not resolve (SERVFAIL); this fixes a bug causing a flurry
116         of retries in this case
117
118 2005-10-14  Michael Poole <mdpoole@troilus.org>
119
120         * include/patchlevel.h (PATCHLEVEL): Update to pre02.
121
122 2005-10-14  Michael Poole <mdpoole@troilus.org>
123
124         * doc/readme.cvs: Document tag name consistently with the release
125         name.
126
127         * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release
128         of 2.10.12.01.
129
130 2005-10-12  Michael Poole <mdpoole@troilus.org>
131
132         * doc/example.conf: Update documentation to match this change.
133
134         * ircd/client.c (client_set_privs): Make default global oper
135         privileges match what was in 2.10.11.
136
137 2005-10-11  Michael Poole <mdpoole@troilus.org>
138
139         * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE
140         to mitigate bug #1313429.
141
142 2005-10-12  Perry Lorier <isomer@undernet.org>
143
144         * include/s_stats.h: Add new "Local" only flag to /stats.
145
146         * ircd/m_stats.c: Consult it.
147
148         * ircd/s_stats.c: Use the flag.
149
150 2004-01-04  Kevin L Mitchell  <klmitch@mit.edu>
151
152         * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is
153         sent to a channel...
154
155 2005-10-06  Michael Poole <mdpoole@troilus.org>
156
157         * ircd/m_join.c (m_join): Report too-long channel names as
158         non-existent.
159
160 2005-10-05  Michael Poole <mdpoole@troilus.org>
161
162         * ircd/m_names.c (m_names): Fix format string when forwarding
163         /names -D to other servers.
164         (ms_names): Likewise.  Add support for remote /names -D.
165
166 2005-10-05  Michael Poole <mdpoole@troilus.org>
167
168         * ircd/class.c (do_find_class): Fix bug from previous commit.
169
170         * ircd/ircd_parser.y (clientblock): Allow setting Client port.
171
172         * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline.
173         (attach_iline): Only set FLAG_DOID when we are sure we will attach
174         this Client block to the client. [Credit: Jukka Ollila and others]
175
176 2005-10-04  Michael Poole <mdpoole@troilus.org>
177         [Based on a patch by Jukka Ollila]
178
179         * include/class.h (find_class): Rename to do_find_class().
180
181         * ircd/class.c (class_delete_marked): Keep invalid classes in list
182         until next rehash.
183         (add_class): Use new parameter to do_find_class() to allow a class
184         to be "resurrected".
185         (find_class): Rename.
186         (report_classes): Use 'y' instead of 'Y' when reporting invalid
187         classes.
188
189 2005-10-01  Michael Poole <mdpoole@troilus.org>
190
191         * ircd/m_kick.c (ms_kick): If the kick target is join-delayed,
192         only send the KICK to the kicker.  Spotted by Cesar_.
193
194 2005-10-01  Michael Poole <mdpoole@troilus.org>
195
196         * include/patchlevel.h (PATCHLEVEL): Update to pre1.
197
198         * ircd/class.c (init_class): Only set default class's ->next
199         pointer when first allocating it.
200
201 2005-09-30  Michael Poole <mdpoole@troilus.org>
202
203         * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when
204         matching users.
205
206 2005-09-30  Michael Poole <mdpoole@troilus.org>
207
208         * include/patchlevel.h: Update for release.
209
210 2005-09-28  Michael Poole <mdpoole@troilus.org>
211
212         * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a
213         chanop being kicked.
214
215 2005-09-26  Michael Poole <mdpoole@troilus.org>
216
217         * ircd/whocmds.c (do_who): Fix uninitialized variable warning
218         about 'chan'.
219
220 2005-09-26  Michael Poole <mdpoole@troilus.org>
221
222         * ircd/parse.c (del_msg_element): Only delete empty subtrees, and
223         leave subtrees that may still contain data.
224
225 2005-09-26  Michael Poole <mdpoole@troilus.org>
226
227         * include/channel.h (struct ModeBuf): Add mbm_oplevel to args
228         array.
229         (MB_OPLEVEL): New corresponding macro.
230         (modebuf_mode_client): Add corresponding argument.
231
232         * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer
233         usage to include :999 suffix.  Change format for oplevel passing.
234         (modebuf_mode_client): Set oplevel field in mbuf args array.
235         (struct ParseState): Add oplevel field to cli_change array.
236         (mode_parse_client): Accept and record oplevel suffix from
237         servers; fix it up if we're bouncing a deop.
238         (mode_process_clients): If a valid oplevel was parsed, use it.
239
240         * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client().
241
242         * ircd/m_clearmode.c (do_clearmode): Likewise.
243
244         * ircd/m_create.c (ms_create): Likewise.
245
246         * ircd/m_kick.c (ms_kick): Likewise.
247
248 2005-09-23  Michael Poole <mdpoole@troilus.org>
249
250         * include/whocmds.h (WHOSELECT_DELAY): Define new constant.
251
252         * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set
253         WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER.  Do not skip
254         join-delayed users if WHOSELECT_DELAY is set.
255
256         * ircd/whocmds.c (do_who): Remember membership for shared channel
257         if one exists.  Use it when displaying flags, adding '<' for
258         join-delayed users.
259
260 2005-09-22  Michael Poole <mdpoole@troilus.org>
261
262         * ircd/channel.c (mode_parse_key): Only accept the new key when
263         the current one is empty or "greater" than the new one.
264         (mode_parse_upass): Likewise, for upass.
265         (mode_parse_apass): Likewise, for apass.
266
267 2005-09-22  Michael Poole <mdpoole@troilus.org>
268
269         * ircd/gline.c (gline_checkmask): Add missing digit in mask length
270         check.
271
272 2005-09-21  Michael Poole <mdpoole@troilus.org>
273
274         * doc/example.conf: Remove confused and outdated references to
275         Martians.
276
277 2005-09-20  Michael Poole <mdpoole@troilus.org>
278
279         * ircd/Makefile.in: Regenerate "make depend" dependencies.
280
281         * ircd/test/Makefile.in: Likewise.
282
283 2005-09-16  Kevin L. Mitchell  <klmitch@mit.edu>
284
285         * ircd/m_join.c (last0): fix problem leading to protocol
286         violations on certain combinations of /join 0 from remote servers
287         (probably from local users, too) [bug #1291029]; remove redundant
288         !IsChannelChar() check
289
290 2005-09-14  Michael Poole <mdpoole@troilus.org>
291
292         * doc/readme.cvs: Document the branching scheme for 2.10.12.
293
294 2005-09-14  Michael Poole <mdpoole@troilus.org>
295
296         * include/patchlevel.h (PATCHLEVEL): Increment to reflect the
297         pre-release code freeze.
298
299 2005-09-14  Michael Poole <mdpoole@troilus.org>
300
301         * ircd/channel.c (find_ban): Fix the sense of another check.
302
303 2005-09-13  Michael Poole <mdpoole@troilus.org>
304
305         * include/channel.h (clean_channelname): Remove prototype.
306
307         * ircd/m_invite.c (m_invite): Do not clean channel name; just
308         reject invalid channel names.
309
310         * ircd/m_join.c (m_join): Likewise.
311
312         * ircd/m_mode.c (m_mode): Do not clean channel name.
313
314         * ircd/m_names.c (m_names): Likewise.
315
316         * ircd/m_opmode.c (mo_opmode): Likewise.
317
318 2005-09-13  Michael Poole <mdpoole@troilus.org>
319
320         * ircd/channel.c (find_ban): Revert to older style of comparison,
321         fixing the sense of one check.  Spotted by Alex Badea.
322
323 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
324
325         * ircd/ircd.c (try_connections): modify autoreconnect logic to
326         allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq
327
328 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
329
330         * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList,
331         otherwise the linked list has an invalid ending sentinel on rehash
332
333 2005-09-12  Michael Poole <mdpoole@troilus.org>
334
335         * ircd/channel.c (find_ban): Compare ban mask against hostname
336         even when it looks like an IP, to match things like *!*@1.* when
337         users have a hostname like 1.2.3.example.com.
338
339 2005-09-12  Michael Poole <mdpoole@troilus.org>
340
341         * RELEASE.NOTES: Note the resolution of ambiguous ipmasks.
342
343         * ircd/ircd_string.c (ipmask_parse): Implement it.
344
345 2005-09-12  Michael Poole <mdpoole@troilus.org>
346
347         * ircd/m_join.c (m_join): If we find an empty key, null out the
348         key pointer.
349
350 2005-09-11  Michael Poole <mdpoole@troilus.org>
351
352         * RELEASE.NOTES: Mention the side benefits of this change.
353
354         * include/ircd_string.h (ipmask_parse): Declare function here.
355         (ircd_aton): Becomes a special case of ipmask_parse().
356
357         * include/match.h (check_if_ipmask): Undeclare function.
358         (ipmask_parse): Remove function prototype from this file.
359
360         * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter
361         to accept ipmask length.  Rework to fill that in.
362         (ircd_aton): Rework into...
363         (ipmask_parse): this function, which knows how to fill in its own
364         pbits parameter.
365
366         * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban
367         flags correctly, to avoid call to check_if_ipmask().
368
369         * ircd/match.c (ipmask_parse_ipv4): Delete function.
370         (check_if_ipmask): Likewise.
371         (ipmask_parse): Delete this version in favor of ircd_string.c's.
372
373         * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type.
374         (test_masks): New array of ipmask_test.
375         (test_ipmask): Function to run one of those tests.
376         (main): Call test_ipmask().
377
378 2005-09-11  Alex Badea <vamposdecampos@gmail.com>
379
380         * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code
381         (probably during the forward port) which broke AsLL; fixed.
382
383 2005-09-01  Michael Poole <mdpoole@troilus.org>
384
385         * ircd/gline.c (make_gline): Remove debug output from when IPv6
386         support was being debugged.
387         (do_gline): Likewise.
388         (gline_lookup): Likewise, plus remove redundant code.
389
390 2005-09-01  Michael Poole <mdpoole@troilus.org>
391
392         * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining
393         0, since no other call passes a null channel.
394
395         * ircd/m_join.c: Remove comment discussing argument meanings.
396         (last0): Make this also handle the JOIN 0 logic, doxyfy.
397         (join0): Merge into last0.
398         (m_join): Doxygenate.  Remove check for join0.  Further
399         reorganize, so new versus old channel handling are moved to just
400         one place each within this function.
401         (ms_join): Doxygenate.  Remove check for join0.
402
403 2005-09-01  Michael Poole <mdpoole@troilus.org>
404
405         * RELEASE.NOTES: Bump revision date and highlight this change.
406
407         * include/channel.h (MAGIC_OPER_OVERRIDE): Remove.
408         (can_join): Remove declaration.
409
410         * ircd/channel.c (compall): Remove.
411         (can_join): Remove.
412
413         * ircd/m_join.c (m_join): Remove redundant check for control
414         characters (clean_channelname() will get them). Reorganize initial
415         flags calculation.  Accept channel keys like RFC 1459 says; this
416         requires the old compall()/can_join() logic to modify 'keys', so
417         inline the code and reorganize it.
418
419 2005-08-30  Michael Poole <mdpoole@troilus.org>
420
421         * include/channel.h (PASSLEN): Remove; use KEYLEN instead.
422
423         * ircd/channel.c (mode_parse_upass): Likewise.
424         (mode_parse_apass): Likewise.
425         The inconsistency (in clean_key()) was reported by Reed.
426
427 2005-08-30  Michael Poole <mdpoole@troilus.org>
428
429         * RELEASE.NOTES: Document +D and +d channel modes.
430
431 2005-08-29  Michael Poole <mdpoole@troilus.org>
432
433         * include/numeric.h (ERR_NOMANAGER_LONG): Undefine.
434         (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER.
435
436         * ircd/s_err.c (replyTable): Change to reflect that.
437
438         * ircd/channel.c (clean_key): New function.
439         (mode_parse_key): Use it, and check that keys do not start with :.
440         (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER.
441         (mode_parse_apass): Likewise.
442         The key and password changes fix bugs reported by coekie.
443
444 2005-08-27  Michael Poole <mdpoole@troilus.org>
445
446         * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
447         of assigning directly to member->oplevel.
448         (mode_parse_apass): Likewise.
449         (mode_process_clients): Users opped by outsiders should get
450         oplevel 1, since they are not channel managers.
451
452         * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
453         directly to member->oplevel.
454
455 2005-08-25  Michael Poole <mdpoole@troilus.org>
456
457         * ircd/channel.c (member_can_send_to_channel): At coekie's
458         suggestion, disallow channel manager talking after Apass is set,
459         so they set and use Upass sooner.
460
461         * ircd/class.c (init_class): Default class should have 1 link.
462         (report_classes): Return links count minus one to match old output.
463
464         * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by
465         Reed).
466
467 2005-08-25  Michael Poole <mdpoole@troilus.org>
468
469         * ircd/channel.c (mode_parse): Accept +A/+U from servers
470         regardless of FEAT_OPLEVELS.
471
472 2005-08-24  Michael Poole <mdpoole@troilus.org>
473
474         * ircd/ircd.c (parse_command_line): Mention epoll engine when run
475         with -v.
476
477 2005-08-24  Michael Poole <mdpoole@troilus.org>
478
479         * include/patchlevel.h (PATCHLEVEL): Increment.
480
481         * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or
482         1 when propagating JOIN <level>:#channel, to avoid PV on receiver.
483
484         * ircd/engine_epoll.c: Add system call numbers for more CPU types.
485
486         * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls;
487         anyone who writes logs over NFS is mental.  (Thanks to D. Bruce.)
488
489 2005-08-21  Michael Poole <mdpoole@troilus.org>
490
491         * include/s_conf.h (free_mapping): Declare new function.
492
493         * ircd/ircd_parser.y (pseudoblock): Use it.
494
495         * ircd/s_conf.c (free_mapping): Define it.
496         (close_mappings): New function.
497         (rehash): Call close_mappings() before reading file.
498
499         * ircd/m_kill.c (do_kill): Revert 2005-08-18 change.
500
501 2005-08-19  Michael Poole <mdpoole@troilus.org>
502
503         * ircd/parse.c (tok_tree): Re-add token tree structure.
504         (initmsgtree): Populate it.
505         (parse_server): Prefer it to full message tree.
506
507 2005-08-18  Michael Poole <mdpoole@troilus.org>
508
509         * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent
510         source of KILLs to &his instead of &me.
511
512 2005-08-16  Michael Poole <mdpoole@troilus.org>
513
514         * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
515         newban->banstr[] when the source is a server.  (Spotted by jcq.)
516
517 2005-08-16  Michael Poole <mdpoole@troilus.org>
518
519         * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
520         announcements to local users in a channel.
521
522         * ircd/m_burst.c (ms_burst): Likewise.
523
524         * ircd/m_invite.c (m_invite): Likewise.
525         (ms_invite): Likewise.
526
527         * ircd/m_kick.c (ms_kick): Likewise.
528
529         * ircd/m_topic.c (do_settopic): Another &me -> &his change for
530         HIS, and use that apparent source for the channel localcast.
531
532 2005-08-16  Jukka Ollila <jaollila@niksula.hut.fi>
533
534         * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the
535         real thing for the post-mode-x rejoin.
536
537 2005-08-15  Michael Poole <mdpoole@troilus.org>
538
539         * include/supported.h (FEATURESVALUES2): Add +d channel mode.
540
541         * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not
542         a varadic function.  (Suggested by Ian Kumlien.)
543
544         * ircd/convert-conf.c (finish_operators): Likewise.
545
546         * ircd/listener.c (close_listeners): Likewise.
547
548         * ircd/channel.c (CheckDelayedJoins): Use HIS server name to
549         remove channel mode +d.
550
551 2005-08-12  Michael Poole <mdpoole@troilus.org>
552
553         * ircd/channel.c (pretty_mask): Recognize ':' as unique to the
554         host part of a ban mask.
555
556 2005-08-03  Jan Krueger <jast@heapsort.de>
557
558         * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on
559         invisible member.
560
561 2005-08-08  Michael Poole <mdpoole@troilus.org>
562
563         * ircd/channel.c (find_ban): For non-IPmask bans, match the ban
564         string against the string form of the client's IP address.
565
566 2005-07-16  Michael Poole <mdpoole@troilus.org>
567
568         * configure.in: Apply a test for socklen_t that Reed found.
569
570         * configure: Regenerate.
571
572 2005-07-16  Michael Poole <mdpoole@troilus.org>
573
574         * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels.
575
576         * README.FreeBSD: Remove (merged into README).
577
578         * README.Solaris: Remove (merged into README).
579
580         * README: Merge in the above; also update for 2.10.12.
581
582         * doc/example.conf: Change mention of K-lines to say Kill blocks
583         instead.
584
585         * doc/iauth.txt: Remove (out of date).
586
587         * doc/readme.features: Update to reflect that 2.10.11 is not the
588         current release.  Change mention of various config lines to use
589         the equivalent config entries or blocks instead.
590
591         * doc/readme.log: Likewise.
592
593         * doc/api/features.txt: Change F-line mentions to say Feature
594         entry instead.
595
596         * doc/api/modebuf.txt: Change U-line mention to say Uworld entry.
597
598         * doc/api/motd.txt: Change T-line mentions to say Motd entry.
599
600 2005-07-15  Michael Poole <mdpoole@troilus.org>
601
602         * ircd/ircd_features.c (feature_init): Always call
603         feature_notify_server*() so that 'his' is initialized.
604
605         * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose
606         between user->server and &his.
607
608 2005-07-14  Michael Poole <mdpoole@troilus.org>
609
610         * ircd/channel.c (mode_parse_apass): Update oplevels when setting
611         or removing the +A password.  Partial credit goes to Reed Loden.
612
613 2005-07-14  Michael Poole <mdpoole@troilus.org>
614
615         * include/ircd_features.h: Declare new "his" pseudo-server to hold
616         FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place.
617
618         * ircd/ircd_features.c: Initialize and update it.
619
620         * ircd/channel.c (modebuf_flush_int): Use it as the apparent
621         source for opmodes and server mode changes (also when the source
622         is me).
623
624         * ircd/m_burst.c (ms_burst): Use it as the apparent source for net
625         rider kicks.
626
627         * ircd/m_whois.c (do_whois): Use it to simplify code here.
628
629         * ircd/s_misc.c (exit_client): Use it as the apparent killer.
630
631 2005-07-14  Michael Poole <mdpoole@troilus.org>
632
633         * doc/example.conf (General): Update comment about vhost to match
634         the code change below.
635
636         * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a
637         synonym for the default behavior (for backwards compatibility).
638         Spotted by Kev.
639
640         * ircd/channel.c (sub1_from_channel): Remove stale code and
641         comment, replacing with an up-to-date comment.  Spotted by skx.
642
643 2005-07-11  Michael Poole <mdpoole@troilus.org>
644
645         * ircd/engine_select.c: Remove outdated comment about USE_POLL.
646
647         * ircd/parse.c (msgtab): #if out CAP handler until we have caps.
648
649         * RELEASE.NOTES: Remove mention of capabilities for now.
650
651 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
652
653         * ircd/gline.c (gline_add): It's only a protocol violation when a
654         server issues a "whacky" gline.  If it's an oper, only tell opers
655         with SNO_GLINE.
656
657         * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole
658         network is not likely to care about IAuth PVs, so only tell opers
659         with SNO_CONNEXIT.
660
661 2005-07-11  Michael Poole <mdpoole@troilus.org>
662
663         * doc/readme.features: Document FEAT_CHANNELLEN.
664
665         * doc/example.conf: Give an example of it.
666
667         * ircd/m_join.c (ms_join): Do not clean channel names from remote
668         servers, to avoid desynchs.
669
670         * ircd/m_names.c (ms_names): Likewise.
671
672 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
673
674         * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
675
676         * include/supported.h: Add it to the ISUPPORT display.
677
678         * ircd/channel.c (clean_channelname): Impose the lower limit
679         between FEAT_CHANNELLEN and CHANNELLEN.
680
681         * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
682
683 2005-07-11  Reed Loden <reed@reedloden.com>
684
685         * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
686
687         * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c
688         Remove unused #include <sys/poll.h>.
689
690         * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity
691         checks here, since they are not used elsewhere in the daemon.
692         [Order slightly changed by Michael Poole to compile.]
693
694 2005-07-03  Michael Poole <mdpoole@troilus.org>
695
696         * ircd/convert-conf.c: New file.
697
698         * ircd/Makefile: Compile it.
699
700 2005-06-27  Michael Poole <mdpoole@troilus.org>
701
702         * ircd/s_bsd.c (add_connection): Split logic for server versus
703         client listeners; only do IPcheck for client connections.
704
705         * ircd/s_serv.c (server_estab): There is no longer a need to
706         remove IPcheck reference, so don't.
707
708 2005-06-27  Michael Poole <mdpoole@troilus.org>
709
710         * include/client.h (struct Connection): Remove con_dns_reply (and
711         associated macros).
712
713         * include/res.h (gethost_byname): Change calling signature to
714         clarify memory ownership.
715         (gethost_byaddr): Likewise.
716
717         * include/s_bsd.h (release_dns_reply): Remove function.
718
719         * ircd/hash.c: #include "match.h" to quash warning.
720
721         * ircd/ircd_auth.c (struct IAuth): Remove i_query field.
722         (iauth_dns_callback): Adjust for new gethost_byname signature.
723         (iauth_reconnect): Likewise.
724
725         * ircd/ircd_res.c (struct reslist): Make elements of query field
726         inline rather than in a contained structure.
727         (make_request): Reflect removal of DNSQuery.
728         (do_query_name): Likewise.
729         (do_query_number): Likewise.
730         (make_dnsreply): Remove now-unused function.
731         (timeout_resolver): Adjust to new callback signature.
732         (delete_resolver_queries): Reflect removal of DNSQuery.
733         (gethost_byname): Update to new signature.
734         (gethost_byaddr): Likewise.
735         (res_readreply): Reflect removal of DNSReply.
736
737         * ircd/list.c (dealloc_connection): con_dns_reply no longer
738         exists, so do not free it.
739
740         * ircd/s_auth.c (auth_verify_hostname): constify.
741         (auth_dns_callback): Adjust to new callback signature.
742         (start_auth): Adjust to new gethost_byaddr() signature.
743
744         * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback
745         signature.
746         (release_dns_reply): Remove unused function.
747         (connect_server): Adjust to new gethost_byname() signature.
748
749         * ircd/s_conf.c (conf_dns_callback): Adjust to new callback
750         signature.
751         (conf_dns_lookup): Adjust to new gethost_byname() signature.
752         (attach_iline): Use cli_sockhost() instead of DNS reply.
753         (conf_check_server): Simplify use of DNS results.
754
755         * ircd/s_serv.c (server_estab): Remove call to removed function.
756
757         * ircd/s_user.c (register_user): Remove call to removed function.
758
759 2005-06-27  Michael Poole <mdpoole@troilus.org>
760
761         * include/s_misc.h (get_sockhost): Remove the unused (and
762         deceptively named) get_sockhost().
763
764         * ircd/s_misc.c (get_sockhost): Likewise.
765
766 2005-06-25  Andrew Miller  <a1kmm@amxl.com>
767
768         * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to
769         DupStr so memdebug works.
770
771         * doc/debug_memleak_gc.patch : Update to gc6.5
772         
773 2005-06-24  Andrew Miller  <a1kmm@amxl.com>
774         * ircd/m_invite.c (m_invite): Don't propagate invites to local channels.
775         
776 2005-06-21  Andrew Miller  <a1kmm@amxl.com>
777
778         * ircd/m_list.c (param_parse): Add support for channel wildcards.
779         * ircd/m_list.c (show_usage): Document the new format.
780         * ircd/hash.c (list_next_channels): Check channel wildcard in list.
781         * include/channel.h (ListingArgs): Add the wildcard member.
782
783 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
784
785         * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more
786         gracefully.
787
788         * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking
789         the pending request list, to make DoS attacks harder.
790
791         * ircd/m_invite.c (m_invite): Give no such channel rather than not on
792         channel when the channel being invited to does not exist.
793         
794 2005-06-18  Michael Poole <mdpoole@troilus.org>
795
796         * ircd/s_debug.c (count_memory): Consolidate several lines; make
797         initial letter capitalization consistent.
798
799 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
800
801         * ircd/s_stats.c: Remove the "debug only" label on memusage stats,
802         since it no longer applies.
803
804 2005-05-16  Michael Poole <mdpoole@troilus.org>
805
806         * include/channel.h (struct Ban): Make 'who' and 'banstr' direct
807         arrays, rather than pointers.
808
809         * ircd/channel.c (bans_alloc): New variable to count number of ban
810         structures allocated.
811         (bans_inuse): New variable to count number of ban structures
812         currently in use.
813         (set_banmask): Adapt to changes in struct Ban.
814         (make_ban): Likewise, and update ban counts.
815         (free_ban): Likewise.
816         (bans_send_meminfo): New function.
817         (apply_ban): Adapt to changes in struct Ban.
818         (mode_parse_ban): Likewise.
819         (mode_process_bans): Likewise.
820         (mode_parse): Likewise.
821         (RevealDelayedJoin): Fix brace placement.
822         (CheckDelayedJoins): Fix brace placement and whitespace.
823
824         * ircd/list.c (struct liststats): Add new fields to eliminate the
825         separate count variables.
826         (init_list): Adapt to those changes.
827         (alloc_client): Likewise.
828         (dealloc_client): Likewise.
829         (alloc_connection): Likewise.
830         (dealloc_connection): Likewise.
831         (make_server): Likewise.
832         (remove_client_from_list): Likewise.
833         (verify_client_list): Likewise.
834         (make_link): Likewise.
835         (free_link): Likewise.
836         (send_liststats): New function.
837         (send_listinfo): Rewrite to use new struct liststats layout.
838
839         * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban.
840
841         * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct
842         Ban.
843
844         * ircd/s_stats.c (stats_meminfo): Define unconditionally and call
845         bans_send_meminfo().
846         (statsinfo): Always give access to stats_meminfo.
847
848 2005-06-16  Michael Poole <mdpoole@troilus.org>
849
850         * include/ircd_string.h: Include necessary <string.h> header.
851
852         * ircd/test/.cvsignore: Ignore log output files.
853
854         * ircd/test/Makefile.in: Remove log output files.
855
856         * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills.
857
858         * ircd/test/run-tests.sh: Switch sense of argument.  Send an IRC
859         debug dump to log files.
860
861 2005-06-13  Michael Poole <mdpoole@troilus.org>
862
863         * ircd/s_user.c (make_user): Unconditionally increment userCount.
864         (free_user): Unconditionally decrement it here.
865
866         * ircd/s_conf.c (make_conf): Unconditionally increment
867         GlobalConfCount.
868         (free_conf): Unconditionally decrement it here.
869
870         * ircd/s_debug.c (count_memory): Fix termination condition for
871         ban-walking loop.  Add missing "e" to "members".
872
873
874 2005-06-10  Michael Poole <mdpoole@troilus.org>
875
876         * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot
877         be true IP masks.
878
879 2005-05-30  Michael Poole <mdpoole@troilus.org>
880
881         * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes.
882
883         * ircd/test/ircd_match_t.c: Test recovery from backtracking.
884
885         * ircd/test/channel-1.cmd: Modify to improve code coverage.
886
887         * ircd/test/client-1.cmd: Likewise.
888
889         * ircd/test/gline-1.cmd: Likewise.
890
891         * ircd/test/ircd-t1.conf: Likewise.
892
893         * ircd/test/stats-1.cmd: Likewise.
894
895         * ircd/test/run-tests.sh: Explicitly start ircds.  Add new test scripts.
896
897         * ircd/test/test-driver.pl: Silently handle more signals from IRC.
898
899         * ircd/test/commands-1.cmd: New test script.
900
901         * ircd/test/feature-1.cmd: New test script.
902
903         * ircd/test/jupe-1.cmd: New test script.
904
905         * ircd/test/kill-block-1.cmd: New test script.
906
907         * ircd/test/ircd-t1-2.conf: New configuration file for test scripts.
908
909         * ircd/test/ircd-t2.conf: Likewise.
910
911 2005-05-30  Michael Poole <mdpoole@troilus.org>
912
913         * ircd/s_debug.c (count_memory): Use count_listener_memory() to
914         report memory used by listener structures.
915
916 2005-05-30  Michael Poole <mdpoole@troilus.org>
917
918         * include/class.h (get_con_freq): Remove unused function.
919
920         * include/list.h (find_user_link): Remove unused function.
921
922         * include/class.c (get_con_freq): Remove.
923
924         * ircd/list.c (find_user_link): Remove.
925
926         * include/string.h (string_is_hostname, string_is_address,
927         strnChattr): Remove unused functions.
928         (init_string): Remove function that becomes a noop.
929
930         * ircd/string.h (init_string): Remove.
931         (string_is_hostname, string_is_address, strnChattr): Likewise.
932
933         * ircd/ircd.c (main): Remove call to init_string().
934
935 2005-05-30  Michael Poole <mdpoole@troilus.org>
936
937         * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS,
938         RPL_NOTOPERANYMORE): Undefine unused numeric replies.
939
940         * ircd/s_err.c (replyTable): Fix format fields for certain numeric
941         arguments.  Remove some unused entries.
942
943         * ircd/s_stats.c (stats_configured_links): Move invariant
944         parameters to message format string.
945
946 2005-05-30  Michael Poole <mdpoole@troilus.org>
947
948         * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move
949         WIDE_GLINE to reflect its enumerated value.
950
951         * ircd/s_debug.c (count_memory): Use user_count_memory() function
952         to count User structs in-use.
953
954         * ircd/m_server.c (mr_server): Change "C:line" to "Connect block".
955
956         * ircd/s_bsd.c (connect_server): Likewise.
957
958         * ircd/s_conf.c (conf_check_server): Likewise.
959
960         * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block".
961
962 2005-05-30  Michael Poole <mdpoole@troilus.org>
963
964         * ircd/match.c (match): Rewrite to handle globs that end in an
965         escaped wildcard (and hopefully clarify the code).
966
967         * ircd/test/Makefile.in: Add new ircd_match_t test program.
968
969         * ircd/test/ircd_match_t.c: New file.
970
971         * ircd/test/test_stub.c: Emite newlines after log and debug
972         messages.
973
974 2005-05-25  Reed Loden <reed@reedloden.com>
975
976         * ircd/s_err.c (replyTable): Allow for the specification of 'O' or
977         'o' in RPL_STATSOLINE.
978
979         * ircd/s_stats.c (stats_configured_links): In /stats o/O, display
980         'O' if either the oper block or the connection class has
981         PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE
982         (local oper).
983
984 2005-05-30  Michael Poole <mdpoole@troilus.org>
985
986         * ircd/IPcheck.c: Add Debug()s to try to track why the connected
987         count underflows.
988
989         * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan'
990         after it may be freed (in sub1_from_channel).
991
992         * ircd/s_user.c (register_user): Rearrange code to reduce number
993         of "if (MyConnect(sptr))" checks.
994
995 2005-05-12  Michael Poole <mdpoole@troilus.org>
996
997         * configure.in: Do not try to outsmart the default CFLAGS.
998         Simply add parameters explicitly requested by the user.
999
1000         * configure: Regenerate.
1001
1002         * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is
1003         used in os_generic.c) to get crypt() on NetBSD.
1004
1005 2005-05-11  Kevin L. Mitchell  <klmitch@mit.edu>
1006
1007         * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and
1008         -x given), reserve fd 2 for the use of the debugging log;
1009         otherwise, some engines may attempt to use fd 2, which would end
1010         up getting closed by debug_init() (actually, by
1011         log_debug_reopen(), called by log_debug_init(), called by
1012         debug_init())
1013
1014 2005-08-10  Michael Poole <mdpoole@troilus.org>
1015
1016         * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a
1017         local user creates a channel.
1018
1019         * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of
1020         memory for the tagged output string.
1021
1022         * ircd/test/test-driver.pl: Add -vhost=... option.
1023
1024         * ircd/test/ircd-t1.conf: Add new Operator blocks.
1025
1026         * ircd/test/*.cmd: Rearrange and add more coverage tests.
1027
1028 2005-08-09  Michael Poole <mdpoole@troilus.org>
1029
1030         * ircd/ircd_parser.y: Move error tokens to top level of parse, and
1031         make ';' a synchronizing token for them.  This avoids crashes in
1032         situations like missing ';' between two Kill blocks.  Move several
1033         ';'s earlier for earlier detection of syntax errors.
1034
1035         * ircd/motd.c (motd_memory_count): Use size_t for memory counts to
1036         match the format strings used for those variables.
1037
1038         * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of
1039         unsigned int, not unsigned long; use correct format string.
1040
1041         * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd'
1042         based on crule type, rather than query type.
1043         (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and
1044         "help" stats, which don't use the varparam.
1045
1046         * ircd/test/test-driver.pl: Interpreter for test scripts.b
1047
1048         * ircd/test/ircd-t1.conf: Configuration file for test scripts.
1049
1050         * ircd/test/*.cmd: New test scripts for test-driver.pl.
1051
1052 2005-05-08  Jukka Ollila <jaollila@niksula.hut.fi>
1053         (Adapted slightly by Michael Poole.)
1054
1055         * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
1056         addresses event when !defined(IPV6).
1057
1058 2005-05-07  Michael Poole <mdpoole@troilus.org>
1059
1060         * ircd/channel.c (joinbuf_join): Be smarter about what source to
1061         use when opping a user that joins a channel.
1062
1063 2005-05-04  Reed Loden <reed@reedloden.com>
1064
1065         * ircd/m_trace.c (do_trace): Show the real nickname instead of the
1066         numnick.
1067
1068 2005-05-02  Jan Krueger <jast@heapsort.de>
1069
1070         * ircd/channel.c (member_can_send_to_channel): if the channel can only
1071         be joined by users with accounts (+r), do not allow users without
1072         accounts to speak.
1073
1074 2005-05-07  Michael Poole <mdpoole@troilus.org>
1075
1076         * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
1077         addresses.
1078         * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry.
1079         (test_address): Test base64toip() as well.
1080
1081 2005-05-05  Michael Poole <mdpoole@troilus.org>
1082
1083         * ircd/s_user.c (umode_str): Only clear the operator flag when not
1084         propagating; never set it.
1085
1086 2005-05-04  Michael Poole <mdpoole@troilus.org>
1087
1088         * ircd/channel.c (joinbuf_join): Include channel manager flag in
1089         determination of oplevel.  If opping the user for a non-local
1090         non-create, include oplevel in message to other servers.  Send
1091         "MODE +o <client>" to local users whenever opping the client.
1092
1093         * ircd/m_join.c (m_join): Remove logic that moved into
1094         joinbuf_join().
1095         (ms_join): Look for level 0 and 1 joins from remote servers
1096         and adjust value of 'flags' appropriately.
1097
1098 2005-05-04  Michael Poole <mdpoole@troilus.org>
1099
1100         * include/numeric.h: Remap oplevel numerics to new range.
1101
1102         * ircd/s_err.c: Likewise.
1103
1104 2005-05-03  Michael Poole <mdpoole@troilus.org>
1105
1106         * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT
1107         fields, fixing crash found by nighty.
1108
1109 2005-05-02  Michael Poole <mdpoole@troilus.org>
1110
1111         * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when
1112         trying to set +U pass to the same as the +A pass.
1113
1114         * ircd/channel.c (mode_parse_upass): Use it.
1115
1116         * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if
1117         there is an active IAuth connection, fixing PR#1193808.
1118         (iauth_dispose_request): Only delete the timer if it is active.
1119
1120         * ircd/m_invite.c (m_invite): Always forward the invite in the
1121         correct direction, and then skip it as 'one' if announcing.
1122         (ms_invite): Likewise.
1123
1124         * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as
1125         ::ffff:0.0.0.0; keep it as ::.
1126
1127         * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS.
1128
1129 2005-05-01  Michael Poole <mdpoole@troilus.org>
1130
1131         * doc/readme.log: Document IAUTH log target, remove docs for
1132         OLDLOG log target.
1133
1134         * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG.
1135
1136         * ircd/ircd_log.c (logDesc): Likewise.
1137
1138         * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all
1139         sockets (e.g. when connecting) and do not generate read/write
1140         events in the same pass as error or EOF events.
1141
1142         * ircd/ircd_auth.c: Convert old sendto and debug messages to use
1143         the LS_IAUTH log target.  Consistently use IAUTH_CONNECTED flag
1144         instead of comparing fd to -1.
1145         (iauth_reconnect): If already connected, disconnect and schedule a
1146         reconnect later, since an immediate reconnect can cause assertion
1147         failure in the event engine.  Also schedule a reconnect when the
1148         connection attempt fails.
1149         (iauth_read): Reconnect on IO_FAILURE.
1150         (iauth_sock_callback): Disconnect and schedule a reconnect on both
1151         error (after reporting the error) and EOF.
1152         (iauth_start_client): Record the IAuth request in the client.
1153         (iauth_exit_client): Report the client exit.
1154
1155         * ircd/s_misc.c (exit_one_client): Fix formatting.
1156
1157 2005-04-30  Michael Poole <mdpoole@troilus.org>
1158
1159         * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add)
1160         timer here and set fd to -1.
1161         (iauth_schedule_reconnect): Rewrite to handle previously
1162         initialized timer.
1163         (iauth_reconnect): If server is connected, disconnect first.
1164         Update socket generator fd before calling socket_add().
1165         (iauth_read): When reading 0 bytes (EOF), reconnect.
1166
1167 2005-04-27  Michael Poole <mdpoole@troilus.org>
1168
1169         * ircd/ircd_parser.y: Report non-existent class names as errors
1170         earlier, and do not fall back to "default" for Client blocks.
1171
1172 2005-04-25  Reed Loden  <reed@reedloden.com>
1173
1174         * ircd/ircd_lexer.l: Add missing header to squash a warning.
1175
1176 2005-04-25  Michael Poole <mdpoole@troilus.org>
1177
1178         * ircd/s_user.c (register_user): Replace call with set_user_mode()
1179         with a direct parsing of user modes.  To match this, revert the
1180         initial display of usermode to how it was done before.
1181
1182 2005-04-24  Michael Poole <mdpoole@troilus.org>
1183
1184         * doc/example.conf: Document new autoconnect field of Connect.
1185
1186         * include/s_conf.h: Add CONF_AUTOCONNECT and field for it.
1187
1188         * ircd/ircd.c (try_connections): Skip non-autoconnect servers.
1189
1190         * ircd/ircd_lexer.l: Recognize autoconnect token.
1191
1192         * ircd/ircd_parser.y: Add autoconnect= option to Connect block.
1193
1194         * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to
1195         user being invited.
1196         (ms_invite): Likewise.
1197
1198         * ircd/s_user.c (register_user): Show class name rather than
1199         pointer-as-integer.
1200
1201 2005-04-24  Michael Poole <mdpoole@troilus.org>
1202
1203         * ircd/ircd_parser.y: Rewrite so each error condition gets its own
1204         error message, and so that invalid parameters are printed out.
1205
1206 2005-04-23  Michael Poole <mdpoole@troilus.org>
1207
1208         * ircd/channel.c (apply_ban): Consistently free newban->banstr
1209         when the function fails.
1210         (mode_process_bans): Free banstr for all BAN_DEL bans.
1211
1212         * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
1213
1214 2005-04-23  Michael Poole <mdpoole@troilus.org>
1215
1216         * include/patchlevel.h: Bump to being a beta.
1217
1218         * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that
1219         parser actions don't have to be immediately after a QSTRING.
1220
1221         * ircd/ircd_parser.y (FNAME): Remove unused token.
1222         (QSTRING): Adjust for QSTRING being an already-copied version.
1223
1224 2005-04-23  Michael Poole <mdpoole@troilus.org>
1225
1226         * doc/example.conf (UWorld): Illustrate new config extension.
1227
1228         * ircd/ircd_parser.y (uworldblock): Do the expected thing when
1229         multiple name= entries are present.
1230
1231 2005-04-22  Michael Poole <mdpoole@troilus.org>
1232
1233         * RELEASE.NOTES: Silence exceptions use ~, not -.  Oops!
1234
1235         * doc/example.conf: Fix typo in example Kill block.
1236
1237         * ircd/channel.c (mode_parse_ban): Use correct test for flag_p.
1238
1239         * ircd/m_silence.c (apply_silence): Make mask pretty so that later
1240         processing does not convert * to @ (and match no one).
1241
1242 2005-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
1243
1244         * ircd/m_userip.c (userip_formatter): /userip should *never*
1245         report the user's real IP unless its answering the user
1246         him/herself
1247
1248         * ircd/m_userhost.c (userhost_formatter): /userhost should *never*
1249         report the user's real host unless its answering the user
1250         him/herself
1251
1252 2005-04-20  Michael Poole <mdpoole@troilus.org>
1253
1254         * ircd/ircd.c (parse_command_line): Update usage text.
1255
1256         * ircd/numnicks.c (base64toip): Use v4mapped address range instead
1257         of v4compat address range, fixing IPv4-based /who.
1258
1259 2005-04-19  Michael Poole <mdpoole@troilus.org>
1260
1261         * configure.in: When --enable-profile, add -pg to LDFLAGS.
1262
1263         * configure: Regenerate.
1264
1265 2005-04-19  Michael Poole <mdpoole@troilus.org>
1266
1267         * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo.
1268
1269         * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks
1270         once a matching Client block is found.
1271
1272         * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp().
1273
1274 2005-04-18  Michael Poole <mdpoole@troilus.org>
1275
1276         * ircd/match.c (check_if_ipmask): Do not interpret masks that
1277         start with . or / as IP-based host masks.
1278
1279 2005-04-17  Michael Poole <mdpoole@troilus.org>
1280
1281         * ircd/channel.c (mode_process_clients): Only prohibit deops of
1282         users with the same or higher oplevel where apass is set.
1283         Likewise, when opping users, give them MAXOPLEVEL for non-apass
1284         channels.
1285         (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels.
1286
1287         * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the
1288         same or higher oplevel where apass is set.
1289
1290         * ircd/s_user.c (register_user): Fix order of server version vs
1291         various mode strings.
1292
1293         * tools/linesync/linesync.sh: Add revision id field.
1294
1295 2005-04-17  Michael Poole <mdpoole@troilus.org>
1296
1297         * tools/linesync/linesync.sh: Fix typo comment.  Check for
1298         multiple blocks per line in the linesync input.
1299
1300 2005-04-17  Dan <daniel@undernet.org>
1301
1302         * tools/linesync/linesync.sh: Update to support new syntax and to
1303         avoid rehashing the ircd when the config is the same.
1304
1305         * tools/linesync/linesync.conf: Update allowed conf items.
1306
1307 2005-04-16  Michael Poole <mdpoole@troilus.org>
1308
1309         * doc/example.conf (Kill): Document newly supported syntax.
1310
1311         * include/s_conf.h (DenyConf): Split realname mask into its own
1312         field.  Remove the unused DENY_FLAGS_{IP,REALNAME}.
1313
1314         * ircd/ircd_parser.y (Kill): Only require one of usermask,
1315         hostmask, realmask to be set for a valid block.
1316         (killitem): Add new production killusername.
1317
1318         * ircd/s_conf.c (conf_erase_deny_list): Free realmask field.
1319         (find_kill): Rearrange slightly to clarify control flow.
1320
1321         * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask,
1322         so the old usermask field can be adopted for realname mask.  Add
1323         double quotes around the realmask field.
1324
1325         * ircd/s_stats.c (report_deny_list): Do so.
1326         (stats_klines): Likewise.
1327
1328 2005-04-17  Perry Lorier <isomer@undernet.org>
1329         
1330         * tools/convert-conf.py: Fix lots of conversion problems with
1331         oper privielges (now they are converted), 
1332         features (deprecated features commented out, most converted to
1333         priviliges), 
1334         realname klines (also add host= lines)
1335         quarintines (generate blocks for them), 
1336         connect blocks (don't generate empty port config lines)
1337         etc...
1338
1339 2005-04-16  Michael Poole <mdpoole@troilus.org>
1340
1341         * ircd/gline.c (do_gline): Fix typo when activating IP-based
1342         G-lines.
1343
1344 2005-04-16  Michael Poole <mdpoole@troilus.org>
1345
1346         * ircd/class.c (free_class): Free default_umode field.
1347
1348         * ircd/ircd_parser.y (classblock): Free default_umode field before
1349         overwriting it.
1350
1351         * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit
1352         fields.
1353         (find_kill): Realname Kill blocks no longer have $R at the start,
1354         so do not skip over the first two characters of the mask.
1355
1356 2005-04-15  Michael Poole <mdpoole@troilus.org>
1357
1358         * doc/example.conf (Operator): Properly qualify plaintext password.
1359         (Quarantine): Document (new) syntax.
1360
1361         * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
1362         correctly on BSDs.
1363
1364         * ircd/ircd_parser.y (qconf): Remove global variable.
1365         (killuhost): Null terminate username when present.
1366         (quarantineblock): Replace with a syntax that works.
1367
1368         * ircd/s_stats.c: #include <querycmds.h> for UserStats.
1369         (stats_server_verbose): Reinstate check for UserStats.
1370
1371 2005-04-09  Kevin L. Mitchell  <klmitch@mit.edu>
1372
1373         * ircd/ircd.c: conditionally include sys/resource.h; otherwise,
1374         RLIMIT_CORE will not be defined and so set_core_limit() will never
1375         be defined, much less run.
1376
1377         * configure.in: add sys/resource.h to the list of headers to
1378         search for
1379
1380         * configure: regenerate configure
1381
1382         * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to
1383         config.h.in
1384
1385 2005-04-08  Michael Poole <mdpoole@troilus.org>
1386
1387         * include/s_conf.h (conf_debug_iline): Declare new function.
1388
1389         * ircd/ircd.c (dbg_client): New file-scoped variable.
1390         (parse_command_line): Set it from the new -c option.
1391         (main): If dbg_client is set during chkconf, use it.
1392
1393         * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses,
1394         not IPv4-compatible addresses, to match ipmask_parse().
1395
1396         * ircd/m_whowas.c (m_whowas): Split display of real host to a
1397         separate line, in hopes of not confusing opers in the future.
1398
1399         * ircd/s_conf.c (conf_debug_iline): Implement new function.
1400
1401 2005-04-06  Michael Poole <mdpoole@troilus.org>
1402
1403         * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping
1404         out locally opped and voiced channel members.
1405
1406 2005-04-06  Michael Poole <mdpoole@troilus.org>
1407
1408         * include/numeric.h (RPL_APASSWARN): Replace with three distinct
1409         values.
1410         (ERR_NOMANAGER_LONG): Assign new numeric.
1411         (ERR_NOMANAGER_SHORT): Assign new numeric.
1412
1413         * ircd/channel.c (parse_mode_upass): Adapt to new formats for
1414         ERR_NOTMANAGER separation.
1415         (parse_mode_apass): Likewise.  Also adapt to RPL_APASSWARN split.
1416
1417         * ircd/s_err.c (RPL_APASSWARN): Replace with three message
1418         strings, to avoid embedding long message strings in the logic
1419         implementation.
1420         (ERR_NOTMANAGER): Likewise (but not the same strings).
1421
1422 2005-04-06  Michael Poole <mdpoole@troilus.org>
1423
1424         * ircd/ircd_parser.y (clientblock): Use the password field.
1425
1426         * ircd/s_user.c (register_user): Allow aconf->password to be a
1427         single digit, since per-IP limit is now in a separate field.
1428
1429 2005-04-06  Michael Poole <mdpoole@troilus.org>
1430
1431         * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in
1432         current gcc releases and is slower than files for previous
1433         releases on most OSes.
1434
1435         * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING.
1436         (unet_PIPE_CFLAGS): Remove use of macro.
1437
1438         * aclocal.m4: Regenerate.
1439
1440         * configure: Likewise.
1441
1442 2005-04-04  Michael Poole <mdpoole@troilus.org>
1443
1444         * configure.in: For developers' ease, allow passing an option to
1445         configure to persistently set optimization CFLAGS.
1446
1447         * configure: Regenerate.
1448
1449 2005-04-04  Michael Poole <mdpoole@troilus.org>
1450
1451         * doc/example.conf (Jupe): Make the default Jupe block follow
1452         CFV-0255.  (Thanks to FrankP for pointing me at this and to DinTn
1453         for getting me a copy of the CFV.)
1454
1455 2005-04-04  Michael Poole <mdpoole@troilus.org>
1456
1457         * include/capab.h (CAPFL_STICKY): Define.
1458         (CAPLIST): Remove the entries used for testing.
1459
1460         * include/client.h (Connection): Clarify comment about the
1461         distinction between con_capab and con_active.
1462
1463         * ircd/m_cap.c: Add doxygen comments and replace the long
1464         discussion of m_handler functions with an xref to it.
1465         (send_caplist): Add new parameters and change the terminal vs
1466         non-terminal line distinction to make compliant with current draft
1467         specification.
1468         (cap_empty): Rename to cap_ls().
1469         (cap_req): Track modified capabilities bitwise, so that the
1470         responding ACK contains all the appropriate flags.
1471         (cap_ack): Add comment explaining why there is no response.
1472         (cap_clear): Build and send a list of cleared capabilities, as
1473         required by the current draft.
1474         (cap_list): Send capability list using LIST subcommand.
1475         (cmdlist): Add handler for LS subcommand.  Remove entries for the
1476         empty and LSL subcommands, which are no longer allowed.
1477         (m_cap): Require at least one argument from user.
1478
1479 2005-04-01  Michael Poole <mdpoole@troilus.org>
1480
1481         * include/s_conf.h (SMAP_FAST): Define.
1482         (s_map): Add 'flags' field.
1483
1484         * ircd/ircd_lexer.l: Recognize 'FAST' token.
1485
1486         * ircd/ircd_parser.y (FAST): New token.
1487         (pseudoitem): Add pseudoflags alternative.
1488         (pseudoflags): New production, recognizing FAST token.
1489
1490         * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally.
1491         Remove outdated comment.
1492
1493 2005-04-01  Michael Poole <mdpoole@troilus.org>
1494
1495         * include/handlers.h (ms_privs): Declare.
1496
1497         * include/msg.h (TOK_PRIVS): Assign token.
1498         (CMD_PRIVS): Define.
1499
1500         * ircd/m_privs.c: Add doxygen comments and replace the long
1501         discussion of m_handler functions with an xref to it.
1502         (mo_privs): Forward requests for non-local users
1503         to their own server.
1504         (ms_privs): Implement.
1505
1506         * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends
1507         the message.
1508
1509 2005-03-30  Michael Poole <mdpoole@troilus.org>
1510
1511         * include/client.h (struct Client): Explain where cli_username
1512         comes from.
1513
1514         * include/struct.h (struct User): Explain where this username
1515         comes from, too
1516
1517         * ircd/ircd_res.c (timeout_resolver): Update parameter name in
1518         Doxygen comment, too.
1519
1520         * ircd/s_misc.c (get_client_name): Reorganize to have less
1521         indentation and behave like 2.10.11 when client is not idented.
1522
1523 2005-03-29  Michael Poole <mdpoole@troilus.org>
1524
1525         * doc/example.conf: Remove no-longer-used HIS_STATS_h.
1526
1527         * doc/readme.features: Likewise.
1528
1529         * include/ircd_features.h: Likewise.
1530
1531         * ircd/ircd_features.c: Likewise.
1532
1533 2005-03-20  Reed Loden <reed@reedloden.com>
1534
1535         * include/ircd_features.h: Alphabetize HIS_STATS_? features.
1536
1537         * ircd/ircd_features.c: Likewise.
1538
1539 2005-03-29  Michael Poole <mdpoole@troilus.org>
1540         (The previously unapplied part of another patch (by Carlo Wood?).)
1541
1542         * ircd/m_part.c (ms_part): Remove a check that should already be
1543         done by the user's own server.
1544
1545 2005-03-29  Michael Poole <mdpoole@troilus.org>
1546
1547         * doc/example.conf: Add HIS_STATS_J entry.
1548
1549         * doc/readme.features: Likewise.
1550
1551 2005-03-25  Reed Loden <reed@reedloden.com>
1552
1553         * include/hash.h: Add needed prototypes for new
1554         stats_nickjupes() function.
1555
1556         * include/ircd_features.h: Add FEAT_HIS_STATS_J.
1557
1558         * include/numeric.h: Add RPL_STATSJLINE (222) for new nick
1559         jupes stats. Correct a typo in a comment.
1560
1561         * ircd/hash.c: Add stats_nickjupes() function to report all
1562         nick jupes to an oper. Because of the nature of hash tables,
1563         there is no way to sort this list so the results look weird.
1564
1565         * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE).
1566
1567         * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes
1568         stats.
1569
1570         * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes
1571         stats. Make 'j' case sensitive. Modify the comment for stats
1572         uworld.
1573
1574 2005-03-27  Michael Poole <mdpoole@troilus.org>
1575
1576         * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A
1577         channel when forwarding a channel burst line.
1578
1579 2005-03-25  Michael Poole <mdpoole@troilus.org>
1580
1581         * ircd/m_server.c (set_server_flags): New function.  Unlike the
1582         old code, this recognizes the IPv6 flag.  (Spotted by Reed.)
1583         (mr_server): Use the new function.
1584         (ms_server): Likewise.  Also don't show "Net junction:" message if
1585         any closer server is still bursting (also spotted by Reed).
1586         Finally, forward the +6 flag to other servers.
1587
1588         * ircd/s_serv.c (server_estab): Forward the +6 flag here, too.
1589
1590         * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it
1591         may be cleared by completed_connection().
1592
1593 2005-03-23  Michael Poole <mdpoole@troilus.org>
1594
1595         * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
1596         is wiped out during burst.
1597
1598 2005-03-22  Michael Poole <mdpoole@troilus.org>
1599
1600         * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
1601         kludgy earlier version of the timeout fix.
1602
1603 2005-03-22  Michael Poole <mdpoole@troilus.org>
1604
1605         * ircd/channel.c (send_channel_modes): Fix test for when to send
1606         membership mode suffix, to avoid sending it more than once.
1607
1608 2005-03-22  Michael Poole <mdpoole@troilus.org>
1609         (Many thanks to nex and Reed for helping hunt this down and
1610         doing the testing of various patches.)
1611
1612         * ircd/ircd_events.c (timer_chg): Properly change a timer that is
1613         in the middle of executing its expiration event.
1614
1615         * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for
1616         whether to use timer_chg() or timer_add().
1617         On second thought, use timer_add() unconditionally; the server
1618         connection loop does.
1619         (timeout_resolver): Do not try to re-schedule the DNS timeout
1620         unless it is the expiration event.
1621         (do_query_number): Properly initialize request->state.
1622         (res_readreply): Mention the response code that was bad.
1623
1624 2005-03-22  Michael Poole <mdpoole@troilus.org>
1625
1626         * ircd/engine_kqueue.c (engine_delete): The kernel removes
1627         close()'d FDs from the activity list, so don't try to remove the
1628         FD here (the caller may have already close()'d it).
1629
1630 2005-03-20  Michael Poole <mdpoole@troilus.org>
1631
1632         * ircd/IPcheck.c: Fix typos in comments and strings to reduce
1633         future slumming for credit.
1634
1635         * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise.
1636         * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise.
1637         * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise.
1638         * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise.
1639         * ircd/ircd_features.c, ircd/ircd_log.c: Likewise.
1640         * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise.
1641         * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise.
1642         * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise.
1643         * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise.
1644         * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise.
1645         * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise.
1646         * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise.
1647         * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise.
1648         * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise.
1649         * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise.
1650         * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise.
1651         * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise.
1652
1653         * ircd/test/test_stub.c: Make exit_client() argument list
1654         consistent with that in s_misc.c so doxygen is not confused.
1655
1656 2005-03-20  Michael Poole <mdpoole@troilus.org>
1657         (Thanks to Reed Loden for pointing these out.)
1658
1659         * ircd/channel.c: Fix typos in comments.
1660
1661         * ircd/m_create.c: Likewise.
1662
1663         * ircd/m_list.c: Likewise.
1664
1665         * ircd/m_names.c: Likewise.
1666
1667         * ircd/numnicks.c: Likewise.
1668
1669         * ircd/s_bsd.c: Likewise.
1670
1671 2005-03-20  Michael Poole <mdpoole@troilus.org>
1672         (Thanks to Reed Loden for pointing these out.)
1673
1674         * doc/Configure.help: Remove outdated file.
1675
1676         * doc/exaconf.2: Likewise.
1677
1678         * doc/snomask.html: Add missing <tr>, SNO_AUTO, SNO_DEBUG, and
1679         update SNO_OPERDEFAULT list.
1680
1681         * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd
1682         instead).
1683
1684         * tools/Makefile.crypt: Remove outdated file.
1685
1686         * tools/mkpasswd.c: Likewise.
1687
1688         * tools/transition: Likewise.
1689
1690 2005-03-19  Michael Poole <mdpoole@troilus.org>
1691
1692         * ircd/channel.c (sub1_from_channel): Check apass rather than mode
1693         to determine whether an apass is set (MODE_KEY/APASS/UPASS are not
1694         set in mode.mode).
1695         (send_channel_modes): Use the same change when determining how to
1696         send oplevels for channels.
1697
1698 2005-03-19  Michael Poole <mdpoole@troilus.org>
1699
1700         * include/IPcheck.h (IPcheck_connect_fail): Take a Client
1701         parameter instead of irc_in_addr.
1702
1703         * ircd/IPcheck.c (IPcheck_connect_fail): Likewise.  Assert that
1704         the client has been IP-checked.
1705         (IPcheck_remote_connect): Assert that the client has not yet been
1706         charged for connecting.
1707         (IPcheck_connect_succeeded): Assert that the client has been
1708         charged for connecting.
1709         (IPcheck_disconnect): Likewise.
1710
1711         * ircd/m_nick.c (m_nick): Pass rejected client to
1712         IPcheck_connect_fail() when somebody takes the nick first.
1713         (ms_nick): Likewise.
1714
1715         * ircd/s_serv.c (server_estab): Pass new server to
1716         IPcheck_connect_fail().
1717
1718         * ircd/s_user.c (register_user): When rejecting a user, pass
1719         the struct Client to IPcheck_connect_fail().
1720
1721 2005-03-19  Michael Poole <mdpoole@troilus.org>
1722
1723         * doc/example.conf (Connect): Remove a buggy comment about leaf
1724         directives; refer the reader to the Connect block instead.
1725
1726         * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;"
1727
1728 2005-03-19  Michael Poole <mdpoole@troilus.org>
1729
1730         * doc/example.conf (Operator): Correct the comment explaining
1731         hashed passwords.
1732
1733         * ircd/m_oper.c (oper_password_match): Check correct variable to
1734         determine whether the hashed password matched.
1735
1736 2005-03-08  Michael Poole <mdpoole@troilus.org>
1737
1738         * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask
1739         and bit count for "*".
1740         (ipmask_check): Make more robust to similar errors.
1741
1742 2005-03-07  Michael Poole <mdpoole@troilus.org>
1743
1744         * configure.in: Consistently use a constant in AC_DEFINE().
1745
1746         * configure: Regenerate.
1747
1748         * doc/example.conf (Port): Add comment about the mask option.
1749         (Port): Fix the vhosted Port example.
1750
1751         * ircd/ircd_parser.y (clientblock): Correctly initialize the IP
1752         address and addrbits for a Client block with no IP mask.
1753
1754         * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask.
1755
1756         * ircd/s_auth.c (start_auth_query): Count socket allocation
1757         failure as a failed auth check, as .11 does.
1758
1759         * ircd/s_debug.c (debug_serveropts): Add '6' to server options
1760         when compiled with IPv6 support.
1761
1762 2005-02-23  Michael Poole <mdpoole@troilus.org>
1763
1764         * doc/example.conf: Explain apass_opmode privilege, pointing out
1765         that, unlike previous privs, the default is OFF for global opers.
1766
1767         * include/client.h (PRIV_APASS_OPMODE): Define new privilege.
1768
1769         * ircd/channel.c (mode_parse_upass): Only prevent local opers
1770         without the apass_opmode privilege from forcing a +U change.
1771         (mode_parse_apass): Likewise, for +A.
1772
1773         * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in
1774         the default privileges for global opers.
1775
1776         * ircd/ircd_lexer.l (apass_opmode): Recognize keyword.
1777
1778         * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token.
1779         (privtype): Fix typo for local_badchan privilege value.
1780         Accept apass_opmode token.
1781
1782 2005-02-23  Michael Poole <mdpoole@troilus.org>
1783
1784         * doc/example.conf: Fix comment's description of "whox" privilege.
1785
1786 2005-02-21  Michael Poole <mdpoole@troilus.org>
1787
1788         * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check
1789         from here, so /whois does not show secret global channels.
1790
1791         * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use
1792         "/list s".
1793         (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels.
1794
1795 2005-02-21  Perry Lorier <isomer@undernet.org>
1796
1797         * ircd/s_stats.c: Hide the hub IP's.  They're kinda important.
1798
1799 2005-02-20  Perry Lorier <isomer@undernet.org>
1800
1801         * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to
1802         parse_error()'s so that ./ircd -k will display them.  Also clarified
1803         the warning about oper blocks.
1804
1805 2005-02-20  Perry Lorier <isomer@undernet.org>
1806
1807         * tools/convert-conf.py: A multitude of changes to deal with parsing
1808         mistakes, generate a newer config file, better error handling,
1809         being smarter about what config elements you generate etc.
1810         
1811 2005-02-20  Perry Lorier <isomer@undernet.org>
1812
1813         * ircd/engine_epoll.c: Change a size_t to socklen_t to match
1814         getsockopt prototype, so it compiles without warning on amd64
1815
1816 2005-02-19  Michael Poole <mdpoole@troilus.org>
1817
1818         * ircd/ircd_parser.y (clientblock): Parse IP address before
1819         allocating ConfItem; if the parse fails, generate an error.
1820
1821         * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6
1822         addresses starting with ':'.
1823         (RPL_STATSILINE): Likewise.
1824         (RPL_STATSOLINE): Add format field for username.
1825
1826         * ircd/s_stats.c (stats_configured_links): Pass the appropriate
1827         argument for the RPL_STATSxLINE changes.
1828         Change RPL_STATSILINE to use * instead of <NULL> when IP or host
1829         is null.
1830
1831 2005-02-18  Michael Poole <mdpoole@troilus.org>
1832
1833         * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP
1834         address to look up and compare against hash entries.
1835
1836         * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban.
1837
1838         * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name.
1839         (clienthost): Split hosts that contain '@' into username and host.
1840         (clientip): Split IPs that contain '@' into username and IP.
1841         (killreason): Add missing ~ to mask off DENY_FLAGS_FILE.
1842
1843         * ircd/m_silence.c (forward_silences): When we reject a silence,
1844         splice it out of the ban list.  Warn the user if he is local.
1845
1846         * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server
1847         connections.
1848
1849         * ircd/s_stats.c (stats_configured_links): Display correct field
1850         when listing CONF_UWORLD entries.
1851
1852 2005-02-09  Michael Poole <mdpoole@troilus.org>
1853
1854         * configure.in (YACC): Only warn if we cannot get a version number
1855         from $YACC.
1856
1857         * configure: Regenerate.
1858
1859         * ircd/ircd_res.c (check_resolver_timeout): Try another way to
1860         avoid timer_chg() on a non-queued/active timer.
1861
1862         * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
1863         strings like "::127.0.0.1".
1864
1865         * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
1866
1867 2005-02-02  Michael Poole <mdpoole@troilus.org>
1868
1869         * Makefile.in (install): Do not create ${prefix}/include since it
1870         is no longer used.
1871
1872         * ircd/Makefile.in (install-*): Remove commented-out code to touch
1873         and chown MPATH and RPATH.
1874
1875         * ircd/gline.c (gline_find): Allow searching for host-based
1876         G-lines by plain hostname (not *@host), thus preventing "GLINE
1877         test ..." from inserting duplicate G-lines.
1878
1879         * ircd/motd.c (motd_create): Null out new Motd's hostmask when
1880         appropriate, avoiding an uninitialized or stale pointer.
1881
1882 2005-01-26  Michael Poole <mdpoole@troilus.org>
1883
1884         * include/ircd_alloc.h (DoMallocZero): Parenthesize macro
1885         arguments, fixing operator precedence problems.
1886         (DoFree): Make debug version also overwrite p.
1887
1888         * include/memdebug.h (fda_get_byte_count, fda_get_block_count):
1889         Declare functions used outside memdebug.c.
1890
1891         * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c.
1892
1893         * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not
1894         use these if using the memdebug version.
1895
1896         * ircd/memdebug.c: #include "send.h" and <string.h> to get
1897         declarations for certain functions.
1898
1899         * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug.
1900         (sendto_opmask_butone): Likewise.
1901
1902 2005-01-25  Michael Poole <mdpoole@troilus.org>
1903
1904         * configure.in: Fix typos and thinkos in previous commut.
1905
1906         * configure: Regenerate.
1907
1908         * doc/example.conf: Change class name in Connect block to be
1909         consistent with earlier Class block.
1910
1911         * ircd/ircd.c (try_connections): Consider Connect blocks with hold
1912         time of 0.  Fix Links() vs MaxLinks() comparison to reflect ref
1913         count starting at 1.
1914
1915         * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused
1916         variables after use.
1917
1918 2005-01-24  Michael Poole <mdpoole@troilus.org>
1919
1920         * configure.in: Make sure that $LEX and $YACC are reasonable and
1921         actually run.
1922
1923         * configure: Regenerate.
1924
1925         * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to
1926         test whether the timer is already pending.
1927
1928 2005-01-23  Michael Poole <mdpoole@troilus.org>
1929
1930         * doc/example.conf (Kill): Fix typo in realname Kill block
1931
1932         * include/client.h (infousermodes): Fix typo in comment.
1933
1934         * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY.
1935         (main): Move daemon_init() before event_init() to work around BSD
1936         lameness.
1937
1938 2005-01-23  Michael Poole <mdpoole@troilus.org>
1939
1940         * ircd/test/Makefile.in: Add missing "install" target.  Make
1941         compatible with BSD make (which has no $^ and no $(CPPFLAGS) in
1942         its default .c.o rule).
1943
1944 2005-01-21  Michael Poole <mdpoole@troilus.org>
1945
1946         * ircd/engine_kqueue.c: Move <sys/types.h> earlier to fix build on
1947         FreeBSD 5.x (which needs it for <sys/event.h>).
1948
1949         * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with
1950         portable equivalents.
1951
1952         * ircd/ircd_log.c (log_open): Likewise.
1953
1954         * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so
1955         that IPv6 definitions become visible on FreeBSD 5.3.
1956
1957         * ircd/s_auth.c: Remove apparently unused <sys/file.h> because
1958         it fails to compile on FreeBSD 5.3.
1959
1960 2005-01-22  Perry Lorier <isomer@undernet.org>
1961
1962         * ircd/ircd_parser.y: Fix missing ;
1963
1964 2005-01-19  Michael Poole <mdpoole@troilus.org>
1965
1966         * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in
1967         outbound INVITE messages.  On incoming INVITEs, ignore if the
1968         timestamp is too recent or if the timestamp is missing and the
1969         peer server is in burst.
1970
1971 2005-01-15  Michael Poole <mdpoole@troilus.org>
1972
1973         * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans
1974         and silences.  Mention net.rider kick change.
1975
1976         * doc/example.conf (Class): Add documentation for restart and
1977         local_opmode privileges.  Fix name of local_jupe privilege.
1978
1979         * ircd/ircd_lexer.l: Recognize local_opmode privilege.
1980
1981 2005-01-14  Michael Poole <mdpoole@troilus.org>
1982
1983         * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify
1984         CAP comment, mention named /stats, list config heteromorphisms.
1985
1986         * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L,
1987         HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST.
1988
1989         * ircd/channel.c (mode_parse_apass): Change old mention of +u mode
1990         to say +U.
1991
1992 2005-01-13  Michael Poole <mdpoole@troilus.org>
1993
1994         * RELEASE.NOTES: Update for 2.10.12.
1995
1996 2005-01-08  Michael Poole <mdpoole@troilus.org>
1997
1998         * ircd/channel.c (@page zombie): Add synopsis to explain what
1999         zombies are supposed to do.
2000
2001         * doc/example.conf (Features): Transfer recommended LOG features
2002         from 2.10.11 example.conf.
2003
2004 2005-01-03  Michael Poole <mdpoole@troilus.org>
2005
2006         * ircd/ircd.c (try_connections): Test Connect hold time before
2007         updating it (spotted by Kev).
2008
2009 2005-01-03  Michael Poole <mdpoole@troilus.org>
2010
2011         * Makefile.in: Add ircd/test as a subdirectory.
2012
2013         * ircd/.cvsignore: Ignore umkpasswd binary.
2014
2015         * ircd/Makefile.in: Update dependencies.
2016
2017         * ircd/test/.cvsignore: New file.
2018
2019         * ircd/test/Makefile.in: Use ${} instead of $().  Add build,
2020         depend, distclean targets to integrate with rest of build system.
2021
2022 2005-01-03  Michael Poole <mdpoole@troilus.org>
2023
2024         * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
2025         that have an invalid IP address.
2026
2027         * ircd/ircd.c (try_connections): Update Connect hold time before
2028         skipping it, to prevent infinite loops.
2029
2030 2005-01-03  Kevin L Mitchell  <klmitch@mit.edu>
2031
2032         * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
2033         was a server; fixed to skip servers
2034
2035 2004-12-28  Michael Poole <mdpoole@troilus.org>
2036
2037         * include/s_bsd.h (VirtualHost): Replace with separate variables
2038         for IPv4 and IPv6 virtual hosts.
2039
2040         * include/uping.h (uping_echo): Remove declaration.
2041
2042         * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
2043         VirtualHost_v6 based on iauth server address family.
2044
2045         * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
2046
2047         * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
2048         (RESOLVER): Remove definition.
2049         (generalresolver): Remove.
2050         (generalvhost): Assign address to either VirtualHost_v4 or
2051         VirtualHost_v6, depending on format.
2052
2053         * ircd/ircd_res.c (res_socket): Replace with separate variables
2054         for IPv4 and IPv6 resolver sockets.
2055         (ResolverAddr): Remove definition.
2056         (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
2057         (send_res_msg): Select outbound FD based on resolver address type.
2058         (res_readreply): Recognize either inbound socket FD.
2059
2060         * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
2061         (os_socket): Require local != NULL.
2062
2063         * ircd/s_bsd.c (VirtualHost): Replace with separate variables
2064         for IPv4 and IPv6 virtual hosts.
2065         (connect_inet): Select virtual host based on destination address.
2066
2067         * ircd/uping.c (UPingFIleDescriptor): Remove.
2068         (upingSock): Split into separate IPv4 and IPv6 variables.
2069         (uping_echo_callback): Incorporate uping_echo() body here, so the
2070         proper socket FD can be used.
2071         (uping_init): Attempt to set up both v4 and v6 UPING sockets.
2072         (uping_server): Create uping socket with appropriate local address.
2073
2074         * doc/example.conf (General): Update example config file to
2075         reflect removal of Resolver setting and support for separate IPv4
2076         and IPv6 VHost settings.
2077
2078 2004-12-28  Michael Poole <mdpoole@troilus.org>
2079
2080         * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
2081         DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
2082         unused macros.
2083
2084         * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
2085         ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
2086         #include <arpa/inet.h>.
2087
2088 2004-12-28  Michael Poole <mdpoole@troilus.org>
2089
2090         * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
2091         (ipmask_parse_ipv4): We already parse the dotted quads from the
2092         input string, so use them instead of inet_addr() to populate
2093         out->s_addr.
2094
2095         * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
2096         (do_gline): Pass SHOW_IP instead of TRUE as argument to
2097         get_client_name().
2098
2099         * ircd/ircd.c (try_connections): Revise to use fewer temporary
2100         variables.
2101
2102 2004-12-28  Michael Poole <mdpoole@troilus.org>
2103
2104         * include/res.h: Implement irc_in_addr_* as macros.
2105
2106         * ircd/ircd_res.c: Remove the function bodies.
2107
2108         * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
2109         (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
2110         (ircd_aton): Accept IPv6 addresses with all eight segments
2111         specified (e.g. 0:0:0:0:0:0:0:0).  Correctly parse addresses
2112         with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
2113
2114         * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
2115
2116         * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
2117         support.  Add test_stub.c and ircd_in_addr_t.c references.
2118
2119         * configure.in: Generate ircd/test/Makefile as an output file.
2120
2121         * configure: Update.
2122
2123 2004-12-18  Michael Poole <mdpoole@troilus.org>
2124
2125         * include/client.h: Move unreg, privs, capab and active fields
2126         from struct Client to struct Connection since that is how they
2127         are really associated.  Adjust macros to match.
2128         (SetPriv, ClrPriv): New macros.
2129
2130         * ircd/client.c (client_set_privs): Exit earlier for remote
2131         clients.  Adjust macro use to correspond.
2132
2133         * ircd/m_server.c (mr_server): Grant all privileges except
2134         PRIV_SET to peer servers.
2135
2136 2004-12-18  Michael Poole <mdpoole@troilus.org>
2137
2138         * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
2139         #1087461.
2140
2141 2004-12-18  Michael Poole <mdpoole@troilus.org>
2142
2143         * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
2144         socket's FD is the same after processing as it was before; local
2145         clients apparently have s_fd() == -1 after close.
2146
2147 2004-12-18  Kevin L Mitchell  <klmitch@mit.edu>
2148
2149         * ircd/s_user.c: make absolutely certain register_user() is never
2150         called with cli_unreg non-zero; transition set_nick_name() over to
2151         the new way of determining whether client is ready for
2152         register_user()
2153
2154         * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
2155         understand a given CAP subcommand
2156
2157         * ircd/parse.c: add "CAP" command
2158
2159         * ircd/m_user.c (m_user): transition over to new way of
2160         determining whether client is ready for register_user()
2161
2162         * ircd/m_pong.c (mr_pong): transition over to new way of
2163         determining whether client is ready for register_user()
2164
2165         * ircd/m_cap.c: implementation of the IRC capabilities draft
2166
2167         * ircd/list.c (make_client): initialize cli_unreg element of
2168         client structure
2169
2170         * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
2171         functions that were never found because cross-case ordering has
2172         not been needed until now
2173
2174         * ircd/Makefile.in: add m_cap.c to list of .c files
2175
2176         * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
2177         indicate an unknown CAP subcommand
2178
2179         * include/msg.h: add "CAP" command
2180
2181         * include/handlers.h: add m_cap() to list of handlers
2182
2183         * include/client.h: add support for client capabilities; rototill
2184         the registration mechanism to dovetail well with the capability
2185         system--i.e., allow the capability system to suspend registration
2186         if the user issues one of the CAP commands
2187
2188         * include/capab.h: header file to define client capabilities
2189
2190 2004-12-17  Michael Poole <mdpoole@troilus.org>
2191
2192         * ircd/channel.h (apply_ban): Add new flag to indicate whether
2193         newban should be free()'d after it is used.
2194
2195         * ircd/channel.c (apply_ban): Likewise.  Also set BAN_DEL flag
2196         when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
2197         (mode_parse_ban): Delete buggy shortcut when channel banlist is
2198         empty.
2199         (mode_process_bans): Always give ownership of ban->banstr to the
2200         mode buffer, avoiding a memory leak.
2201
2202         * ircd/m_silence.c (apply_silence): Pass new parameter to
2203         apply_ban.
2204
2205 2004-12-17  Michael Poole <mdpoole@troilus.org>
2206
2207         * ircd/channel.c (sub1_from_channel): Immediately destroy
2208         non-Apass channels when oplevels are enabled; otherwise, they can
2209         stay opless for a considerable period.
2210         (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
2211         does not try to free() an invalid pointer.
2212
2213         * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
2214         aconf->host, not aconf->name.
2215
2216         * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
2217         by host here..
2218
2219         * ircd/s_conf.c (conf_check_server): .. rather than by name here.
2220         (attach_conf_uworld): New function to attach CONF_UWORLD items.
2221         (rehash): Use attach_conf_uworld() instead of attaching by name.
2222
2223 2004-12-15  Michael Poole <mdpoole@troilus.org>
2224
2225         * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
2226         channels they are not joined.
2227
2228 2004-12-15  Michael Poole <mdpoole@troilus.org>
2229
2230         * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
2231         warning.
2232         (ip_registry_canonicalize): New function to convert an IP address
2233         into a canonical form for clone checks.
2234         (ip_registry_hash): Update to reflect canonical form.
2235         (ip_registry_find): Use ip_registry_canonicalize().
2236         (ip_registry_check_local, ip_registry_check_remote): Likewise.
2237
2238         * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
2239         sending them to a non-IPv6 server.
2240
2241 2004-02-17  Michael Poole <mdpoole@troilus.org>
2242
2243         * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
2244         +D channel when they hide their hostmask.
2245
2246 2004-12-15  Michael Poole <dmpoole@troilus.org>
2247
2248         * doc/example.conf: Remove the example Server blocks since they
2249         are no longer used (were merged into Connect).
2250
2251         * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
2252
2253         * ircd/m_server.c (check_loop_and_lh): Use a different argument to
2254         test whether an introduced server is directly connected or not.
2255
2256 2004-12-14  Michael Poole <mdpoole@troilus.org>
2257
2258         * include/client.h (FLAG_IPV6): New value for enum Flag.
2259         (IsIPv6, SetIPv6): Accessor macros for it.
2260
2261         * include/numnicks.h (iptobase64): Add flag indicating whether to
2262         use full IPv6 addresses or fake them in an IPv4-compatible way.
2263
2264         * ircd/numnicks.c (iptobase64): Use the new flag.
2265
2266         * include/send.h (sendcmdto_flag_serv_butone): New function to
2267         send different lines to servers based on flags (like FLAG_IPV6).
2268
2269         * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
2270
2271         * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
2272         our server flags.
2273
2274         * ircd/s_serv.c (server_estab): Likewise.  Also make sure we send
2275         compatible IP addresses for the new server.
2276
2277         * ircd/s_user.c (register_user): Only send full IPv6 addresses to
2278         links that have FLAG_IPV6 set.
2279
2280 2004-12-13  Michael Poole <mdpoole@troilus.org>
2281
2282         * doc/example.conf: Update General block comment to mention
2283         new RESOLVER option and to explain IPv6 support.
2284
2285         * ircd/ircd_lexer.l: Recognize RESOLVER token.
2286
2287         * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
2288         alternative for generalitem.
2289
2290         * ircd/ircd_res.c: Define global ResolverAddr variable.  If it is
2291         valid, use it instead of VirtualHost in restart_resolver().
2292
2293 2004-12-13  Michael Poole <mdpoole@troilus.org>
2294
2295         * doc/example.conf: Update configuration to move Client block
2296         comment after sample Class blocks, and update entries in it.
2297
2298         * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
2299
2300         * ircd/ircd_parser.y: Add ip and username global variables and IP
2301         and USERNAME tokens.  Add clientip and clientusername alternatives
2302         for clientitem, and update clientblock to correspond.
2303
2304         * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
2305         the request_list before request_list is initialized.
2306         (cres_mem): Likewise.
2307
2308         * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
2309         proper address family.
2310
2311         * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
2312         means DNS reply is optional.  If aconf->addrbits >= 0, test it.
2313
2314         * tools/crypter: Delete.
2315
2316 2004-12-11  Kevin L Mitchell  <klmitch@mit.edu>
2317
2318         * ircd/*.c: use new assert() in ircd_log.h in preference to system
2319         assert()
2320
2321         * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
2322         glue so that umkpasswd will successfully compile and link
2323
2324         * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
2325         there are no calls to assert()
2326
2327         * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
2328         from looping should there be an assertion failure somewhere in the
2329         logging subsystem
2330
2331         * include/ircd_log.h: custom implementation of assert() that calls
2332         log_write()
2333
2334 2004-11-21  Michael Poole <mdpoole@troilus.org>
2335
2336         * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
2337         be done by non-channel-managers, fixing a crash from OPMODE.
2338         (mode_parse_apass): Likewise.
2339
2340 2004-11-20  Michael Poole <mdpoole@troilus.org>
2341
2342         * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
2343         a channel they are already in, but do not add them again.
2344
2345 2004-11-09  Michael Poole <mdpoole@troilus.org>
2346
2347         * include/res.h (init_resolver): Delete, and initialize lazily.
2348
2349         * ircd/ircd.c (main): Do not call init_resolver().
2350
2351         * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
2352         local resolver socket address.
2353         (init_resolver): Delete.
2354         (make_request): Call restart_resolver() if necessary.
2355         (query_name): Use ircrandom() instead of rand().
2356
2357         * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
2358         a file descriptor that indicates the socket family to use.
2359         (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
2360
2361 2004-11-09  Michael Poole <mdpoole@troilus.org>
2362
2363         * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
2364         socket from epoll on delete, since the kernel does that for us.
2365
2366 2004-11-07  Michael Poole <mdpoole@troilus.org>
2367
2368         * ircd/m_server.c (m_server, ms_server): Assign timestamp before
2369         it might be used in exit_new_server().
2370
2371 2004-11-07  Michael Poole <mdpoole@troilus.org>
2372
2373         * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
2374         to reflect the changes since these files' last rebuild.
2375
2376 2004-11-07  Michael Poole <mdpoole@troilus.org>
2377
2378         * include/ircd_crypt.h (ircd_crypt): This should return char*, not
2379         const char*, since it does not own the returned pointer.
2380
2381         * ircd/ircd_crypt.c (ircd_crypt): Change return type.
2382
2383         * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
2384         field since it is returned but this function must own the buffer.
2385
2386         * ircd/m_oper.c (oper_password_match): Free the string returned by
2387         ircd_crypt().
2388
2389         * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
2390
2391 2004-11-07  Michael Poole <mdpoole@troilus.org>
2392
2393         * acinclude.m4: Look for a 64-bit integer type.
2394
2395         * configure.in: Look for inttypes.h, since some systems have that
2396         but not stdint.h (and define 64-bit integers therein).
2397
2398         * include/client.h: Delete con_sendK, con_receiveK.  Make
2399         con_sendB and con_receiveB 64 bits wide.
2400
2401         * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
2402         Convert the other byte counters and the connected time counters to
2403         64 bits wide.
2404
2405         * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
2406         HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
2407
2408         * ircd/packet.c (update_bytes_received): Remove use of
2409         cli_receiveK().
2410
2411         * ircd/s_bsd.c (deliver_it): Likewise.
2412         (close_connection): Likewise.
2413
2414         * ircd/s_misc.c (tstats): Likewise.  Update format strings to use
2415         %Lu for 64-bit integer parameters.
2416
2417         * ircd/s_stats (stats_links): Convert cli_sendK() and
2418         cli_receiveK() use shifted versions of the byte counters, and
2419         update format strings to use %Lu for 64-bit integer parameters.
2420
2421 2004-11-07  Michael Poole <mdpoole@troilus.org>
2422
2423         * include/s_user.h (add_silence): Delete.
2424         (del_silence): Delete.
2425
2426         * include/struct.h (struct User): Convert silence list to struct Ban.
2427
2428         * ircd/m_silence.c (apply_silence, forward_silences): New functions.
2429         (m_silence): Use forward_silences() instead of add_silence().
2430         (ms_silence): Likewise.
2431
2432         * ircd/s_err.c (replyTable): Update RPL_SILELIST.
2433
2434         * ircd/s_misc.c (exit_one_client): Update to new silence list type.
2435
2436         * ircd/s_user.c (is_silenced): Use find_ban() to search for
2437         silences.  If one is found, send it plus any silence exceptions.
2438         (del_silence): Delete.
2439         (add_silence): Delete.
2440
2441 2004-11-07  Michael Poole <mdpoole@troilus.org>
2442
2443         * include/channel.h: Remove declarations for undefined functions
2444         cancel_mode(), add_token_to_sendbuf(), IsMember().  Delete
2445         add_banid(), next_removed_overlapped_ban().  Add BAN_EXCEPTION
2446         flag and new functions find_ban(), apply_ban().
2447
2448         * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
2449         LocalChanOperMode): Remove unused variable definitions.
2450         (make_nick_user_host): Delete.
2451         (add_banid): Delete.
2452         (next_removed_overlapped_ban): Delete.
2453         (find_ban): New function, which knows about exceptions.
2454         (is_banned): Use find_ban() and only work on a struct Membership.
2455         (bmatch): New function, which knows about CIDR bans.
2456         (apply_ban): New function to replace add_banid().
2457         (mode_parse_ban): Use apply_ban().
2458
2459 2004-10-28  Michael Poole <mdpoole@troilus.org>
2460
2461         * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
2462         new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
2463
2464 2004-10-22  Michael Poole <mdpoole@troilus.org>
2465
2466         * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
2467         with announcements enabled (do not "announce" to the recipient,
2468         and unconditionally send to the recipient).
2469
2470         * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
2471         the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
2472
2473 2004-10-21  Michael Poole <mdpoole@troilus.org>
2474
2475         * include/channel.h (Ban): Add fields address, nu_len, addrbits to
2476         support netmask-based bans.
2477
2478         * ircd/channel.c (set_ban_mask): New function to parse a ban as
2479         either netmask-based or not.
2480         (make_ban): Use set_ban_mask().
2481         (make_nick_user_ip): Becomes unused; remove it.
2482         (is_banned): Rewrite to match only once against the nick!user part
2483         of a ban, and compare addresses if BAN_IPMASK is set.
2484         (mode_parse_ban): Use set_ban_mask().
2485
2486 2004-10-21  Michael Poole <mdpoole@troilus.org>
2487
2488         * ircd/s_conf.c (attach_iline): Test resolved host names against
2489         aconf->host, not the (NULL) aconf->name.
2490
2491 2004-10-19  Michael Poole <mdpoole@troilus.org>
2492
2493         * include/channel.h: Move ban flags out of channel flags and
2494         rename to reflect this.
2495
2496         * ircd/channel.c: Update ban constant names.
2497
2498         * ircd/m_burst.c: Likewise.
2499
2500 2004-10-18  Michael Poole <mdpoole@troilus.org>
2501
2502         * include/list.h (SLink): Remove ban elements from here...
2503
2504         * include/channel.h (Ban): And move to the new struct Ban.
2505         (Channel): Update banlist field to match.
2506         (next_removed_overlapped_ban): Update return type to match.
2507         (make_ban, free_ban): New functions.
2508
2509         * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
2510         list types.
2511         (free_bans): New variable to hold unused Ban elements.
2512         (make_ban, free_ban): New functions.
2513         (destruct_channel, add_banid, next_removed_overlapped_ban): Update
2514         to use struct Ban.
2515         (is_banned, send_channel_modes, send_ban_list): Likewise.
2516         (ParseState, mode_parse_ban, mode_process_bans): Likewise.
2517         (mode_parse): Likewise.
2518
2519         * ircd/m_burst.c (ms_burst): Update to use struct Ban.
2520
2521         * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
2522
2523         * ircd/s_debug.c (count_memory): Update to use struct Ban.
2524
2525 2004-10-18  Kevin L Mitchell  <klmitch@mit.edu>
2526
2527         * ircd/gline.c (gline_find): unless we're looking for an exact
2528         match, we should call match() on hostnames, not ircd_strcmp()
2529
2530 2004-10-17  Michael Poole <mdpoole@troilus.org>
2531
2532         * include/s_conf.h (ConfItem): Add new field username.  Replace
2533         unused field bits with addrbits.
2534         (find_conf_exact): Replace user and host arguments with cptr.
2535         (find_conf_name, read_tlines, find_restrict): Remove declaration
2536         for undefined functions.
2537         (conf_parse_userhost): New function.
2538
2539         * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
2540         resolved hostname and IP are matched in one pass now.
2541
2542         * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
2543
2544         * ircd/s_conf.c (conf_parse_userhost): New function.
2545         (check_limit_and_attach): Use correct ConfItem field to determine
2546         maximum connections per IP.
2547         (attach_iline): Replace user@host matching with shorter, clearer
2548         matching against username and host/IP fields.
2549         (find_conf_exact): Likewise.
2550
2551         * ircd/ircd_parser.y: Replace assignment to aconf->host for
2552         CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
2553         conf_parse_userhost().  This means CONF_CLIENT ConfItems no longer
2554         use the name field or the IP token.  Remove the latter.
2555
2556         * ircd/ircd_lexer.l: Remove unused token IP.
2557
2558 2004-10-17  Michael Poole <mdpoole@troilus.org>
2559
2560         * ircd/crule.c (crule_via): Simplify the lookup for the directly
2561         connected server name.
2562
2563 2004-10-16  Michael Poole <mdpoole@troilus.org>
2564
2565         * ircd/class.c: Make find_class() return NULL for unknown classes,
2566         rather than returning the start of connClassList.
2567
2568         * ircd/match.c (parse_ipmask): Translate IPv4 masks as
2569         IPv4-compatible addresses.
2570         (check_ipmask): Fix comparison of IP masks.
2571
2572         * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
2573         uses CIDR style masks in the hostname field of a Motd block.
2574
2575 2004-10-16  Michael Poole <mdpoole@troilus.org>
2576
2577         * ircd/numeric.h: Remove the unused RPL_STATMEM and
2578         RPL_STATMEMTOT.  Move the RPL_BOUNCE comment to its current
2579         value (the former RPL_STATMEM).
2580
2581         * ircd/s_err.c: Remove format strings for RPL_STATMEM and
2582         RPL_STATMEMTOT.
2583
2584 2004-10-16  Michael Poole <mdpoole@troilus.org>
2585
2586         * ircd/m_server.c: Look up server configuration by name of our
2587         directly connected peer rather than the server being introduced.
2588
2589 2004-10-13  Michael Poole <mdpoole@troilus.org>
2590
2591         * include/channel.h: Delete MODE_LISTED and is_listed().  Replace
2592         ListingArgs.chptr with ListingArgs.bucket.  Move declaration of
2593         list_next_channels() to..
2594
2595         * include/hash.h: here, and drop the "nr" argument.
2596
2597         * ircd/channel.c: Remove redundant scan of local clients for
2598         channels being listed.  Delete list_next_channels() function.
2599
2600         * ircd/hash.c: Add list_next_channels() here, revising to not use
2601         MODE_LISTED and to use ListingArgs.bucket instead of chptr.  Also
2602         decide when to stop sending RPL_LISTs based on a half-full sendq.
2603
2604         * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
2605
2606         * ircd/m_list.c: Delete mention of MODE_LISTED.  Unconditionally
2607         call list_next_channels(sptr).
2608
2609         * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
2610
2611         * ircd/Makefile.in: Update dependencies (for hash.c).
2612
2613 2004-10-13  Michael Poole <mdpoole@troilus.org>
2614
2615         * ircd/ircd_parser.y: Consistently zero out global variables after
2616         they are used (prevents double frees and other problems).
2617
2618 2004-10-12  Michael Poole <mdpoole@troilus.org>
2619
2620         * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
2621         Set, Clr respectively.  Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
2622         Delete con_fd (get from con_socket) and con_port.  Move sentalong
2623         from send.c to struct Connection, and cli_lasttime and cli_since
2624         from struct Client to struct Connection.  Update cli_*() macros to
2625         use con_*(cli_connect(cli)).
2626
2627         * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
2628         FlagClr(), PrivHas() with FlagHas().
2629
2630         * ircd/ircd_parser.y: Likewise.
2631
2632         * ircd/list.c: Remove assignment to cli_local() since it is now a
2633         calculated value.
2634
2635         * ircd/s_bsd.c: Remove uses of cli_port().
2636
2637         * ircd/s_conf.c: Remove uses of ClearAccess().
2638
2639         * ircd/send.c: Delete sentalong array and replace with references
2640         to con_sentalong().
2641
2642 2004-10-12  Michael Poole <mdpoole@troilus.org>
2643
2644         * doc/example.conf: Update example config to reflect the changes
2645         made in the remainder of this patch.
2646
2647         * include/list.h: Make make_conf() take a type argument.
2648
2649         * include/s_conf.h: Delete CONF_LEAF and CONF_HUB.  Add "maximum"
2650         and "hub_limit" to ConfItem to compensate.
2651
2652         * ircd/ircd_lexer.l: Recognize MAXHOPS token.
2653
2654         * ircd/ircd_parser.y: Get rid of aconf global variable and add
2655         hub_limit global variable.  Add MAXHOPS token, and productions
2656         inside connectblock to recognize it and hub masks.  Allow maxlinks
2657         field in a Client block, rather than overloading password field.
2658         Convert serverblock to uworldblock and remove extraneous fields.
2659
2660         * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
2661         calculate LHcptr and active_lh_line.  Merge some duplicated code
2662         so handling active_lh_line cases is clearer.
2663
2664         * ircd/s_conf.c: Make make_conf() take a type argument.  Delete
2665         CONF_LEAF and CONF_HUB.  Do not overwrite server name with what
2666         is specified in the config file.
2667
2668         * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
2669         RPL_STATSHLINE.  Remove useless parameters and format fields from
2670         RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
2671         RPL_STATSULINE.
2672
2673         * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
2674
2675         * ircd/s_stats.c: Get rid of report_array and make
2676         stats_configured_links() directly use RPL_STATSxLINE (adding the
2677         new fields for Server and Client blocks).  Remove /stats h, since
2678         that has no meaning.
2679
2680 2004-10-12  Michael Poole <mdpoole@troilus.org>
2681
2682         * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
2683         default rather than by listing which should be wiped out.
2684
2685 2004-10-09  Michael Poole <mdpoole@troilus.org>
2686
2687         * ircd/m_server.c: Forward port checks for leaf and hub config
2688         rules, and reorganize mr_server() and ms_server() by moving out
2689         common code.  Add doxygen comments for the file.
2690
2691 2004-10-09  Michael Poole <mdpoole@troilus.org>
2692
2693         * ircd/hash.c: Fix thinko in hash function: It is not indexed
2694         simply by character value, so we cannot just remap the values
2695         by case.
2696
2697 2004-10-05  Michael Poole <mdpoole@troilus.org>
2698
2699         * ircd/hash.c: Replace the old hash function with one based on
2700         randomized CRC-32.  The new one avoids a big table from the old
2701         function.
2702
2703 2004-10-05  Michael Poole <mdpoole@troilus.org>
2704
2705         * ircd/random.c: Convert to use ircd_md5 interface and hopefully
2706         keep more internal random state.
2707
2708 2004-10-05  Michael Poole <mdpoole@troilus.org>
2709
2710         * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
2711         ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
2712         prefixes.
2713
2714 2004-10-05  Michael Poole <mdpoole@troilus.org>
2715
2716         * adns, lib/adns: Remove unused adns library.
2717
2718 2004-10-05  Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
2719
2720         * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
2721         format, and add new comments where needed.
2722
2723         * Doxyfile: New file to tell Doxygen how to run.
2724
2725 2004-09-21  Michael Poole <mdpoole@troilus.org>
2726
2727         * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
2728         programmer, generate magic numbers.
2729         (AuthIncompleteList): Remove.
2730         (AuthPollList): Remove.
2731
2732 2004-09-19  Michael Poole <mdpoole@troilus.org>
2733
2734         * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
2735         acconfig.h.
2736
2737         * acconfig.h: Remove since it is now redundant.
2738
2739         * aclocal.m4, config.h.in, configure: Regenerate.
2740
2741 2004-09-19  hikari <hikari@undernet.org>
2742
2743         * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison 
2744         aren't found as they're essential for compilation.  Regenerated files with 
2745         autreconf.
2746                 
2747 2004-09-18  Michael Poole <mdpoole@troilus.org>
2748
2749         * doc/example.conf: Add NETWORK feature example.  Fix typos in
2750         eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
2751
2752         * include.class.h: Make max_links and ref_count unsigned ints.
2753         Make ping_freq and conn_freq unsigned short. (No more negative
2754         numbers in /stats y.)
2755
2756         * ircd/ircd.c: Report configuration file name for "ircd -k".
2757
2758 2004-09-18  hikari <hikari@undernet.org>
2759
2760         * ircd/Makefile.in: Fixed a missing internal build dependency.
2761         
2762 2004-09-16  Michael Poole <mdpoole@troilus.org>
2763
2764         * INSTALL: Fix name of example.conf and mention its installed
2765         location.
2766
2767         * include/supported.h (FEATURESVALUES2): Fix a reference to
2768         channel mode +u that escaped earlier rename attempts.
2769
2770         * ircd/ircd_auth.c (iauth_connect): Assign port number after
2771         zeroing out the destination address.
2772         Add some additional debug statements to help follow operations.
2773
2774         * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
2775
2776 2004-09-11  Bas Steendijk <steendijk@xs4all.nl>
2777
2778         * include/channel.h, include/supported.h, ircd/channel.c,
2779         ircd/s_err.c: Use +U instead of +u for user keys.
2780
2781 2004-09-13  Michael Poole <mdpoole@troilus.org>
2782
2783         * doc/example.conf: Remove sample VIRTUAL_HOST setting.
2784
2785         * doc/readme.features: Remove VIRTUAL_HOST documentation, and
2786         update NODNS documentation to match current behavior.
2787
2788         * include/s_conf.h: Remove now-unused vhost_address field and
2789         set_virtual_host() function.
2790
2791         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
2792         Remove VIRTUAL_HOST.
2793
2794         * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
2795         if we do not have a more specific alternate.
2796
2797         * ircd/ircd_parser.y: Check for sanity in General blocks (from old
2798         conf_add_local()) and assign vhost directly to VirtualHost.
2799
2800         * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
2801         value will be either != 0 or != 0xffff.
2802
2803         * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
2804         local addresses are specified as IPv4 addresses.
2805
2806         * ircd/s_conf.c: Remove unused conf_add_local() and
2807         set_virtual_host().
2808
2809 2004-09-13  Michael Poole <mdpoole@troilus.org>
2810
2811         * ircd/listener.c (add_listener): Consolidate duplicated code, and
2812         make sure listener->server is set before calling inetport() on it.
2813
2814 2004-09-12  Michael Poole <mdpoole@troilus.org>
2815
2816         * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
2817         services (not normal opers) force a change of +A or +u.
2818
2819 2004-09-11  Michael Poole <mdpoole@troilus.org>
2820
2821         * include/s_stats.h: Add sd_name to struct StatDesc.  Stop
2822         publishing the statsinfo and statsmap arrays; replace them with
2823         stats_find().  Change argument list of StatFunc() to work with
2824         names.
2825
2826         * ircd/m_stats.c: Use stats_find() instead of statsmap[].  Use the
2827         full argument instead of just the first character in reports.
2828
2829         * ircd/s_stats.c: Adapt individual stats handler functions to new
2830         argument list.  Add long names to statsinfo[].  Add new functions
2831         stats_cmp(), stats_search(), stats_find().  Sort statsinfo[] in
2832         stats_init().
2833
2834         * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
2835         a single character.
2836
2837         * ircd/s_user.c: Send an error to the user when a message loses
2838         its target in transit.
2839
2840         * include/class.h include/gline.h include/ircd_features.h
2841         include/listener.h include/motd.h include/msgq.h include/res.h
2842         include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
2843         ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
2844         ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
2845         ircd/userload.c: Adjust stats handlers to new argument list.
2846
2847 2004-09-11  Michael Poole <mdpoole@troilus.org>
2848
2849         * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
2850         replace with RPL_TRACEEND.
2851
2852         * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
2853         do_trace().  Implement RPL_TRACEEND, per RFE#830291.
2854
2855 2003-06-20  Alexander Maassen <outsider@key2peace.org>
2856
2857         * ircd/m_topic.c : Don't allow banned users to set a topic in a
2858         channel.
2859
2860 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
2861
2862         * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
2863         comment in header.
2864
2865         * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
2866         header comment.
2867
2868         * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
2869         ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
2870         ircd/m_version.c: Remove "template" moniker from comments.
2871
2872         * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
2873         channel prefix list.
2874
2875 2004-09-11  Michael Poole <mdpoole@troilus.org>
2876
2877         * doc/example.conf: Add examples for FEAT_HIS_* features.
2878
2879 2003-06-08 Matthias Crauwels <ultimate_@wol.be>
2880         [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
2881
2882         * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
2883
2884         * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
2885
2886         * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
2887
2888         * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
2889
2890         * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
2891
2892 2004-09-11  Michael Poole <mdpoole@troilus.org>
2893
2894         * ircd/ircd_relay.c (server_relay_channel_message,
2895         server_relay_channel_notice): Do not allow other servers to send
2896         or relay to local channels.
2897
2898         * ircd/m_wallchops (ms_wallchops): Likewise.
2899
2900         * ircd/m_wallvoices (ms_wallvoices): Likewise.
2901
2902 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
2903
2904         * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
2905
2906         * ircd/channel.c: removing limits shouldn't gobble an argument;
2907         this was a subtle interaction issue with modebuf...fixed by adding
2908         MODE_LIMIT to modebuf_flush_int() and short-circuiting
2909         modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
2910         removal case.  Note that this is not proof against the sequence,
2911         "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
2912         modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
2913         (Bug #916138)
2914
2915 2004-09-11  Michael Poole <mdpoole@troilus.org>
2916
2917         * include/supported.h: Kev pointed out I misinterpreted the
2918         meaning of CHANMODES; fix this.  Also define CHANNELLEN and
2919         STATUSMSG from the ISUPPORT draft.
2920
2921 2004-09-10  Michael Poole <mdpoole@troilus.org>
2922
2923         * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
2924         when oplevels are enabled.
2925
2926 2004-09-10  Michael Poole <mdpoole@troilus.org>
2927
2928         * ircd/channel.c (send_channel_modes): Only send oplevels for
2929         channels that actually use them -- for -A channels, send chanops
2930         as :o even if OPLEVELS is enabled.
2931
2932         * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
2933
2934         * ircd/numnicks.c (base64toip): Fill in the right number of 0
2935         words when we see _ in a base64-encoded IPv6 address.
2936
2937 2004-09-10  Michael Poole <mdpoole@troilus.org>
2938
2939         * ircd/ircd.c: Add -k as a chkconf-like option to exit after
2940         reading the configuration file.
2941
2942         * ircd/chkconf.c: Remove as unused.
2943
2944         * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
2945
2946 2004-09-10  Michael Poole <mdpoole@troilus.org>
2947
2948         * doc/example.conf: Remove examples for unused features (TIMESEC,
2949         CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
2950
2951         * doc/readme.features: Remove documentation for unused features
2952         (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
2953         HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
2954         add documentation for ANNOUNCE_INVITES.
2955
2956         * include/ircd_features.h: Remove unused features (TIMESEC,
2957         CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
2958
2959         * include/ircd_features.c: Likewise.
2960
2961         * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
2962         FEAT_IRCD_RES_TIMEOUT where appropriate.
2963
2964         * ircd/s_debug.c: Do not display setting of unused (and now
2965         non-existent) FEAT_CRYPT_OPER_PASSWORD.
2966
2967 2004-09-10  Michael Poole <mdpoole@troilus.org>
2968
2969         * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
2970         to use the correct address family and IP offset.
2971
2972 2004-09-10  Michael Poole <mdpoole@troilus.org>
2973
2974         * include/s_conf.h (struct ConfItem): Add origin and origin_name
2975         fields.
2976
2977         * ircd/ircd_parser.y: Add new global variable "origin."  Add a new
2978         "connectionvhost" production that accepts vhost = "IP" inside a
2979         Connect block and assigns the IP to origin_name.
2980
2981         * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
2982         as the local address.  Otherwise, fall back to the old logic (if
2983         VIRTUAL_HOST="TRUE", use the virtual host setting).
2984
2985         * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
2986         origin_name, try to parse it as an IP address.
2987
2988 2004-04-17  Isomer <isomer@undernet.org>
2989         * ircd/parse.c: Don't rate limit /gline messages
2990
2991 2004-09-10  Michael Poole <mdpoole@troilus.org>
2992
2993         * ircd/ircd_parser.y: Replace references to yylval.whatever with
2994         references to the appropriate term.  This fixes bugs like
2995         "1 hour 30 minutes" being misrecognized as 30 seconds.
2996
2997 2004-09-10  Michael Poole <mdpoole@troilus.org>
2998
2999         * ircd/ircd_features.c (features): Change default values for
3000         SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
3001         need not specify them in ircd.conf.
3002
3003 2004-09-10  Michael Poole <mdpoole@troilus.org>
3004
3005         * ircd/ircd_parser.y (serverblock): Server blocks should default
3006         to CONF_LEAF status.
3007
3008         * doc/example.conf: Update example to reflect this.
3009
3010 2004-09-10  Michael Poole <mdpoole@troilus.org>
3011
3012         * ircd/parse.c (msg_tree_parse): Reject commands that contain
3013         non-alphabetic characters.
3014
3015 2004-09-09  Michael Poole <mdpoole@troilus.org>
3016
3017         * config.h.in: Remove duplicated and unused macro definitions.
3018
3019 2004-08-24  Michael Poole <mdpoole@troilus.org>
3020
3021         * ircd/client.h: Properly parenthesize "flag" argument to
3022         FLAGSET_INDEX() and FLAGSET_MASK() macros.
3023
3024 2004-08-22  Michael Poole <mdpoole@troilus.org>
3025
3026         * ircd/channel.c (send_channel_modes): If oplevels are disabled,
3027         send 'o' for chanops instead of the member's oplevel.
3028
3029 2004-08-22  Michael Poole <mdpoole@troilus.org>
3030
3031         * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
3032         instead of memcmp().  (Fixes IPv4 servers linking to an IPv6
3033         server.)
3034
3035 2004-08-22  Alex Badea  <decampos@users.sourceforge.net>
3036
3037         * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
3038
3039 2004-08-19  Michael Poole <mdpoole@troilus.org>
3040
3041         * include/res.h: Remove unused function gethost_byname_type().
3042
3043         * ircd/ircd_res.c: Likewise, and clean up some small functions
3044         only used once (remove_dlink(), timeout_resolver()).  Use rand()
3045         for random request IDs instead of the deprecated *rand48().  Make
3046         resolver timeout event fire only when needed instead of once a
3047         second.
3048
3049 2004-08-17  Michael Poole <mdpoole@troilus.org>
3050
3051         IPv6 support, with lots of code and design borrowed from a patch
3052         by Alex Badea.
3053
3054         * config.h.in: Add place to #define IPV6 support.
3055
3056         * configure.in: Check for struct sockaddr_in6, and use that as
3057         the default choice for IPv6 support.
3058
3059         * configure: Regenerate.
3060
3061         * include/IPcheck.h, include/client.h, include/gline.h,
3062         include/ircd_string.h, include/listener.h, include/match.h,
3063         include/res.h, include/s_bsd.h: Convert from struct in_addr (from
3064         <netinet/in.h>) to struct irc_in_addr (from "res.h").
3065
3066         * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
3067         from struct sockaddr_in (from <netinet/in.h>) to struct
3068         irc_sockaddr (from "res.h").  Add new functions os_socket(),
3069         os_accept(), os_sendto_nonb() to help abstract away actual
3070         sockaddr types.
3071
3072         * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
3073         characters valid in IPv6 addresses.
3074
3075         * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
3076         and base64toip() to convert from base64 to struct irc_in_addr.
3077
3078         * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
3079         ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
3080         ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
3081         irc_in_addr instead of unsigned int or struct in_addr.
3082
3083         * ircd/gline.c: Use new more-generic ipmask functions.
3084
3085         * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
3086         fields.
3087
3088         * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
3089         instead of irc_ssaddr and irc_getaddrinfo().
3090
3091         * ircd/ircd_string.c: Implement new functions: IPv6-capable
3092         ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
3093
3094         * ircd/match.c: Delete IPv4-only matchcompIP().  Replace with
3095         IPv6-capable ipmask_parse() and ipmask_check().
3096
3097         * ircd/numnicks.c: Implement new functions: iptobase64() and
3098         base64toip().
3099
3100         * ircd/os_generic: Convert external parameters to be struct
3101         irc_addrinfo.  When using IPv6 support, sockaddr_in6 is native.
3102         Implement new functions os_sendto_nonb(), os_socket() and
3103         os_accept().
3104
3105         * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
3106         ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
3107         ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
3108         irc_sockaddr instead of separate in_addr and port fields and new
3109         OS support functions.
3110
3111         * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
3112         ircd/ircd_getnameinfo.c: Remove, since these functions are no
3113         longer used.
3114
3115         * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
3116         ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
3117         since these are unused and not compatible with IPv6 support.
3118
3119         * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
3120         Regenerate dependencies.
3121
3122 2004-08-17  Michael Poole <mdpoole@troilus.org>
3123
3124         * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
3125         states and be case-insensitive again.
3126
3127 2004-08-15  Michael Poole <mdpoole@troilus.org>
3128
3129         * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
3130         former is from C99 (and the latter is absent on Solaris).
3131
3132         * configure.in: Remove check for inttypes.h (which is a C99 format
3133         string header); replace with check for stdint.h.  Add checks for
3134         sys/param.h and sys/socket.h.  Check for socklen_t being defined
3135         (OS X does not set it).  Run program tests for lex and yacc, and
3136         use them rather than assuming flex and bison.  Remove OSDEP_C and
3137         mention to adns.  Remove check for res_mkquery().
3138
3139         * config.h.in: Update u_intNN_t #undef lines.  Add #undef
3140         socklen_t so configure test can set it.
3141
3142         * configure: Regenerate.
3143
3144         * include/ircd_addrinfo.h: #include headers needed for netdb.h and
3145         to define struct addrinfo and uintNN_t.
3146
3147         * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
3148
3149         * include/res.h: #include "ircd_addrinfo.h" to get proper type
3150         definitions.  #define INADDR_NONE if it is not defined (as on
3151         Solaris).
3152
3153         * ircd/Makefile.in: Replace LEX and YACC definitions.  Remove
3154         OSDEP_C and OSDEP_SRC; always compile os_generic.c.  Remove adns
3155         directory from CPPFLAGS.  Regenerate dependencies.
3156
3157         * ircd/client.c: Return when no propagation set for oper, to
3158         squash warning about use of "defaults" before it is set.
3159
3160         * ircd/engine_epoll.c: #include correct C99 integer header.
3161
3162         * ircd/engine_poll.c: Last argument to getsockopt() should be of
3163         socklen_t, not size_t; fix.
3164
3165         * ircd/engine_select.c: Squash warning about bzero().
3166
3167         * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
3168         with uint32_t.  We need <stdint.h> for that, so include it.
3169
3170         * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
3171         uint32_t.
3172
3173         * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
3174         There is no portable way to do %option, so remove that.  lex on
3175         Solaris needs several of its internal tables to be bigger, so
3176         increase those sizes.
3177
3178         * ircd/ircd_parser.y: Remove the second declarations of two
3179         tokens, since standard yacc warns about changing precedence.
3180
3181         * ircd/os_generic.c: Make this compile on common OSes (Linux,
3182         Solaris, OS X, FreeBSD, OpenBSD).
3183
3184         * ircd/table_gen.c: Make arguments to isprint() all unsigned char
3185         to squash warnings on Solaris that array index is "char."
3186
3187         * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
3188         portable, and replace basename() with an equivalent.
3189
3190         * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
3191
3192 2004-07-27  Michael Poole <mdpoole@troilus.org>
3193
3194         * ircd/m_burst.c: Add new netride_modes() function to check
3195         which modes could be used in a net.ride.  Use this instead
3196         of the old check for just +i or +k.
3197         (Based on patches by beware and pomac.)
3198
3199 2004-07-25  Michael Poole <mdpoole@troilus.org>
3200
3201         * ircd/ircd_parser.y: Remove redundant semicolon; it causes
3202         errors on some versions of yacc.
3203
3204 2004-07-21  Michael Poole <mdpoole@troilus.org>
3205
3206         * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
3207         ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
3208
3209 2004-07-21  Michael Poole <mdpoole@troilus.org>
3210
3211         New DNS resolver code, courtesy of Dianora and the rest of the
3212         Hybrid team.  (Bugs are of course my fault.)
3213
3214         * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
3215         libresolv from the build process.  Update dependencies.
3216
3217         * configure: Regenerate.
3218
3219         * include/client.h: Change connection's DNS reply type.
3220
3221         * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
3222
3223         * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
3224         RPL_STATSALINE and /stats a to list DNS servers.
3225
3226         * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
3227         ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
3228         ircd/ircd_reslib.c: New resolver files.
3229
3230         * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
3231         Update to new resolver callback interface and to only deal with
3232         one IP and one name per DNS reply.
3233
3234         * ircd/parse.c: Remove /DNS command, since new resolver does not
3235         track those statistics.
3236
3237 2004-07-20  Michael Poole <mdpoole@troilus.org>
3238
3239         * doc/readme.features: Change references to O:, Y:, etc lines into
3240         references to the appropriate block types.
3241
3242 2004-07-01  Michael Poole <mdpoole@troilus.org>
3243
3244         * include/fileio.h: Elaborate on "works for any file descriptor."
3245
3246         * include/iauth.h: Remove unused file.
3247
3248 2004-07-01  Michael Poole <mdpoole@troilus.org>
3249
3250         * include/map.h, ircd/map.c: Remove unused code.
3251
3252         * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
3253         map.h and a call to map_update().
3254
3255         * ircd/Makefile.in: Remove map.c and regenerate dependencies.
3256
3257         * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
3258         for the new config parser.
3259
3260         * ircd/match.c: Remove pointless pointer dereference (Reed points
3261         out that this generates a warning with old gcc).
3262
3263         * ircd/s_user.c: Display connection class in CONNEXIT connection
3264         notice as a string rather than an integer.
3265
3266         * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
3267         lines (falsely) identifying ringlog as related to IRC; the files
3268         are general purpose.
3269
3270         * configure.in, include/ircd_snprintf.h: Add checks for
3271         va_copy()-like alternatives and use them if va_copy() is missing.
3272
3273         * configure, config.h.in: Regenerate.
3274
3275 2004-02-01  beware <steendijk@xs4all.nl>
3276
3277         * ircd/channel.c: Check bans that look like IP bans against user's
3278         hostname just in case they have a host like 1234.domain.tld.
3279
3280 2003-12-18  Timothy Grant Vogelsang <net@astrolink.org>
3281
3282         * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
3283
3284 2004-04-02  Gavin Grieve <hektik@dimebox.net>
3285
3286         * ircd/ircd_parser.y: Fix rehash warnings for servername and
3287         numeric so they only warn if changed in the config file.
3288
3289 2004-06-30  Michael Poole <mdpoole@troilus.org>
3290
3291         * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
3292         files.
3293
3294         * doc/example.conf: Illustrate IAUTH configuration.
3295
3296         * include/client.h: Add fields to record IAUTH status.
3297
3298         * ircd/Makefile.in: Add ircd_auth.c to Makefile.
3299
3300         * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
3301
3302         * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
3303         so that an obsolete connection can be abandoned.
3304
3305         * ircd/s_misc.c: Report client exits via IAUTH.
3306
3307         * ircd/s_user.c: If IAUTH is active and a connecting user has not
3308         been checked against it, interrogate the IAUTH server.
3309
3310 2004-06-25  Michael Poole <mdpoole@troilus.org>
3311
3312         * configure.in: Check for crypt.h as well.
3313
3314         * configure: Regenerate.
3315
3316         * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
3317         affect the first includes of system headers.  Include crypt.h if
3318         it is available.
3319
3320         * ircd/umkpasswd.c: Quash a gcc warning.
3321         
3322 2004-06-23  Michael Poole <mdpoole@troilus.org>
3323
3324         * doc/Authors: Add contributors to ircu2.10.11 and myself.
3325
3326         * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
3327
3328         * configure.in: Add missing check for inttypes.h; remove obsolete
3329         display of Head-in-sand, add display of epoll() engine.
3330
3331         * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
3332         to use SourceForge's CVS server, from the u2.10.11 branch.
3333
3334 2003-11-09 beware <steendijk@xs4all.nl>
3335
3336         * ircd/s_user.c: move assigning a numeric to a local client from
3337         when nick is set, to when connection becomes client, to not waste
3338         numerics.
3339
3340 2004-06-08  Kevin L Mitchell  <klmitch@mit.edu>
3341
3342         * ircd/parse.c: don't let rank-and-file users escape HIS
3343         limitations with /jupe...
3344
3345 2004-06-18  Alex Badea  <decampos@users.sourceforge.net>
3346
3347         * ircd/gline.c (gline_lookup): only return a gline if it's
3348         active
3349
3350         * ircd/s_conf.c (find_kill): don't check for active gline,
3351         since gline_lookup does now
3352
3353 2002-11-11  hikari <shadow@undernet.org>
3354         * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and 
3355         modularise :P
3356
3357         * ircd/ircd_xopen.c: removed, superseded by new crypto system.
3358
3359         * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
3360         wrote ircd_crypt_mech_register() function, various other bits 
3361         designed to create a near-pluggable crypto system for ircu.  currently
3362         this code also loads the various mechanisms i've written code for.
3363
3364         * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from 
3365         elsewhere, manipulated to suit ircu, returns a salted MD5 password.
3366
3367         * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
3368         generate a crypted password using the systems native crypt() function.
3369
3370         * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
3371         only be used for testing purposes.
3372
3373         * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
3374         elsewhere, ircuified.
3375
3376         * ircd/umkpasswd.c: mkpasswd program for ircu.
3377
3378         * include/ircd_xopen.h: removed, superseded by new crypto system.
3379
3380         * include/ircd_crypt.h: external definitions for the new ircd_crypt()
3381         function and definition of the ircd_crypt_mech structure for containing
3382         crypto mechanism data.
3383
3384         * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
3385         mechanism.
3386
3387         * include/ircd_crypt_native.h: sundary definitions for the native 
3388         crypt() mechanism.
3389
3390         * include/ircd_crypt_plain.h: sundary definitions for the plain text
3391         mechanism.
3392
3393         * include/umkpasswd.h: fluff for umkpasswd.
3394
3395 2003-03-11  Landon Fuller (landonf) <landonf@sf.net>
3396
3397         * configure.in: allow ircu to build on OS X.
3398
3399 2004-05-24  Michael Poole <mdpoole@troilus.org>
3400
3401         * ircd/m_invite.c (m_invite): Include channel name in invitation
3402         announcements.
3403         (ms_invite): Likewise, and also fix a use-before-assignment bug in
3404         them.
3405
3406 2004-05-18  Michael Poole <mdpoole@troilus.org>
3407
3408         Announce invitations to other channel operators.
3409
3410         * include/ircd_features.h, ircd/ircd_features.c
3411         (ANNOUNCE_INVITES): Add new boolean feature, default off.
3412
3413         * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
3414         reply.
3415
3416         * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
3417         Add 'skip' parameter that is needed elsewhere.
3418         (sendcmdto_channel_servers_butone): New function.
3419
3420         * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
3421         ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
3422
3423         * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
3424         the INVITE message to all interested servers, and send a numeric
3425         to all local chanops.
3426
3427 2004-05-18  Michael Poole <mdpoole@troilus.org>
3428
3429         * ircd/res_adns.c (res_ourserver): Remove unused function.
3430         (validate_name): Likewise.
3431
3432 2004-05-17  Michael Poole <mdpoole@troilus.org>
3433
3434         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
3435         Rip out feature settings related to oper privileges.
3436
3437         * include/client.h: Comment a few unexplained privileges.
3438
3439         * ircd/ircd_lexer.l: Rename privilege keywords to match their
3440         names in code and /PRIVS output.  Add support for two "new"
3441         privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
3442
3443         * include/class.h, ircd/client.c, ircd/ircd_parser.y,
3444         ircd/m_oper.c: Replace the removed feature settings with
3445         per-connection class operator privileges.
3446
3447         * doc/example.conf: Document the change.
3448
3449         * ircd/ircd_parser.y (portblock): Fix slight memory leak.
3450
3451 2004-05-16  Michael Poole <mdpoole@troilus.org>
3452
3453         * doc/example.conf: Make this show the new NICKLEN default.
3454
3455 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
3456
3457         * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
3458         to 12
3459
3460 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
3461
3462         * ircd/s_user.c: process account creation timestamp if present in
3463         user mode portion of a N protocol message; add account creation
3464         timestamp to outgoing N protocol messages if that timestamp is
3465         non-zero
3466
3467         * ircd/m_account.c: process account creation timestamp if present
3468         in AC protocol message
3469
3470         * include/struct.h: add account creation timestamp
3471
3472 2004-05-16  Michael Poole <mdpoole@troilus.org>
3473
3474         * doc/example.conf: Document operator privilege settings.
3475
3476 2004-05-16  Michael Poole <mdpoole@troilus.org>
3477
3478         Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
3479
3480         * ircd/ircd_parser.y (invert): New variable.
3481         (operlocal): Remove production.
3482         (operpriv): Use "invert" variable.
3483         (privtype): Add LOCAL alternative production.
3484
3485         * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
3486         with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
3487
3488         * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
3489         Likewise.
3490
3491         * ircd/s_stats.c (report_array, statsinfo): Likewise.
3492
3493         * ircd/s_user.c (set_user_mode): Likewise.
3494
3495 2004-05-15  Michael Poole <mdpoole@troilus.org>
3496
3497         * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
3498         patches obsoleted by F: lines.
3499
3500         * patches/diffs/topicburst.diff: Remove patch that was integrated
3501         into the main code.
3502
3503 2004-05-15  Isomer <isomer@undernet.org>
3504
3505         [Original ChangeLog date: 2003-11-05 -MDP]
3506
3507         * ircd/m_whois.c: On remote whois, show +s local channels with a *
3508         prefix to opers.
3509
3510 2004-05-15  Michael Poole <mdpoole@troilus.org>
3511
3512         * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
3513         of gline-related fixes from 2.10.11.  Things that work are due to
3514         Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
3515         to figure out who did what.  Any mistakes are mine.
3516
3517 2004-05-15  Isomer <isomer@undernet.org>
3518
3519         [Original ChangeLog date: 2003-11-05 -MDP]
3520
3521         * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
3522         messages (so you can match EXIT's to CONN's)
3523
3524 2004-05-15  Reed Loden <reed@reedloden.com>
3525
3526         [Original ChangeLog date: 2003-05-01 -MDP]
3527
3528         * ircd/s_err.c: Added network to text and edited 001 a bit.
3529
3530         * ircd/s_user.c: Send network with 001.
3531
3532 2004-05-15  Michael Poole <mdpoole@troilus.org>
3533
3534         * ircd/s_user.c (add_target): Move free target invite check...
3535
3536         * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
3537         behavior.
3538
3539 2004-05-15  Isomer <isomer@undernet.org>
3540
3541         [Original ChangeLog date: 2003-11-23 -MDP]
3542
3543         * ircd/s_user.c: Don't credit users with an extra attempt if they
3544         are klined/glined, throttle them!
3545
3546 2004-05-15  Jeekay <jeekay@netgamers.org>
3547
3548         [Original ChangeLog date: 2003-04-24 -MDP]
3549
3550         * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
3551
3552 2004-05-15  splidge <splidge@quakenet.org>
3553
3554         [Original ChangeLog date: 2003-09-03 -MDP]
3555
3556         * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
3557         channels where the user is a zombie.
3558
3559 2004-05-15  beware <steendijk@xs4all.nl>
3560
3561         [Original ChangeLog date: 2003-10-25 -MDP]
3562         
3563         * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
3564         cpu hog bug
3565
3566 2004-05-15  Michael Poole <mdpoole@troilus.org>
3567
3568         * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
3569         2.10.11 does.  Show ident and IP for clients being killed by new
3570         G-lines and K-lines.
3571
3572 2004-05-15  hikari <shadow@undernet.org>
3573
3574         [Original ChangeLog date: 2003-06-27 -MDP]
3575         
3576         * ircd/ircd.c: After thought, update the next check time based on
3577         when an unregistered client should expire.
3578
3579 2004-05-15   hikari <shadow@undernet.org>
3580
3581         [Original ChangeLog date: 2003-06-22 -MDP]
3582
3583         * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
3584         clients not being able to connect anymore.
3585
3586 2004-05-15  Michael Poole <mdpoole@troilus.org>
3587
3588         * ircd/channel.c (can_join): Revert to using IsInvited() rather
3589         than walking the list directly.
3590         (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
3591         use feature_bool(FEAT_HIS_SNOTICES) instead.
3592
3593 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
3594
3595         [Original ChangeLog date: 2004-01-31 -MDP]
3596
3597         * ircd/channel.c (mode_parse_key): don't allow , in keys!
3598
3599 2003-04-12  David Mansell (splidge) <splidge@sf.net>
3600
3601         [Original ChangeLog date: 2003-04-14 -MDP]
3602
3603         * ircd/channel.c: When keys and limits conflict on burst, the key
3604         which is first alphabetically or the limit which is lower will be 
3605         used by both servers. This matches pre-2.10.11 behaviour.  
3606         Closes: (#713930)
3607
3608 2004-05-15  David Mansell <splidge@quakenet.org>
3609
3610         [Original ChangeLog date: 2002-12-28 -MDP]
3611
3612         * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
3613         set, don't allow -l with negative parameter (or unsigned >2^31).
3614  
3615 2004-05-15  David Mansell <splidge@quakenet.org>
3616
3617         [Original ChangeLog date: 2002-12-31 -MDP]
3618
3619         * ircd/m_burst.c (ms_burst): when kicking net riders, clear
3620         invites too.
3621
3622 2004-05-15  Isomer <isomer@undernet.org>
3623
3624         [Original ChangeLog date: 2003-11-04 -MDP]
3625
3626         * ircd/s_serv.c: Burst glines/jupes early
3627
3628 2004-05-15  volta <volta2@gmx.de>
3629
3630         [Original ChangeLog date: 2003-04-26 -MDP]
3631
3632          * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
3633          allows users to see their own ip & hostname. (Should solve
3634          all problems with dcc)
3635
3636 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
3637
3638         [Original ChangeLog date: 2003-06-13 -MDP]
3639
3640         * ircd/m_settime.c: it's supposed to be %ld, not %l
3641
3642 2004-05-15  Isomer <isomer@undernet.org>
3643
3644         [Original ChangeLog date: 2004-03-20 -MDP]
3645
3646         * ircd/m_invite.c: Disallow invites to non existant channels
3647
3648 2004-05-15  David Mansell <splidge@quakenet.org>
3649
3650         [Original ChangeLog date: 2003-04-26 -MDP]
3651
3652         * ircd/m_invite.c: let +k users invite into channels they aren't on.
3653
3654 2004-05-15  hikari <shadow@undernet.org>
3655
3656         [Original ChangeLog date: 2003-07-13 -MDP]
3657         
3658         * ircd/IPcheck.c: Fixed (another) overflow problem in
3659         ip_registry_check_local()
3660
3661         [Original ChangeLog date: 2003-06-29 -MDP]
3662
3663         * ircd/IPcheck.c: Fixed overflow problem in
3664         ip_registry_connect_fail()
3665
3666 2004-05-15 Isomer <isomer@undernet.org>
3667
3668         [Original ChangeLog date: 2003-05-02 -MDP]
3669         
3670         * ircd/IPcheck.c: Added assert()'s to check for underflow
3671
3672 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
3673
3674         [Original ChangeLog date: 2003-11-22 -MDP]
3675
3676         * tools/wrapper.c: commit uid on chroot fix from ubra
3677
3678         * ircd/version.c.SH: fix generation generation
3679
3680 2004-05-15  Isomer <isomer@undernet.org>
3681
3682         [Original ChangeLog date: 2003-11-23 -MDP]
3683         
3684         * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
3685         to off.  if an admin is smart enough to understand these features
3686         they can enable them manually.
3687
3688 2004-05-15  splidge  <splidge@quakenet.org>
3689
3690         [Original ChangeLog date: 2003-03-26 -MDP]
3691
3692         * ircd/include/ircd_features.h, include/ircd_osdep.h,
3693           ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, 
3694           ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
3695           ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be 
3696           altered via F: lines
3697
3698 2004-05-15  Isomer <isomer@undernet.org>
3699
3700         [Original ChangeLog date: 2003-11-18 -MDP]
3701
3702         * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
3703         the preregistration subsystem allowing customisation of timers,
3704         make the dns resolver stats oper only, and make it much more clear
3705         what all the numbers are.
3706
3707 2004-05-15  Spike <spike@undernet.org>
3708
3709         [Original ChangeLog date: 2003-11-23 -MDP]
3710
3711         * ircd/IPcheck.c: Make IPcheck constants configurable
3712
3713 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
3714
3715         [Original ChangeLog date: 2003-11-22 -MDP]
3716
3717         * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
3718         the maximum allowed length (NICKLEN) or the allowed nickname
3719         length specified as the NICKLEN feature
3720
3721         * ircd/ircd_features.c: declare NICKLEN and set its default value
3722         to 9
3723
3724         * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
3725         rearranging...
3726
3727         * include/ircd_features.h: add NICKLEN feature
3728
3729         * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
3730
3731         * doc/readme.features: document new NICKLEN feature
3732
3733         * doc/example.conf: list new NICKLEN F-line
3734
3735 2004-05-14  Matthias Crauwels <ultimate_@wol.be>
3736
3737         [Original ChangeLog date: 2003-06-08 -MDP]
3738         
3739         * ircd/gline.c: fixed the counting bug in gline_memory_count
3740  
3741         * ircd/jupe.c: fixed the counting bug in jupe_memory_count
3742
3743 2004-05-14  Michael Poole <mdpoole@troilus.org>
3744
3745         * ircd/m_mode.c (ms_mode): Do not always try to call
3746         set_user_mode() when parv[1] is a channel name.
3747
3748 2004-05-10  Michael Poole <mdpoole@troilus.org>
3749
3750         Implement a per-connection-class default usermode option.
3751
3752         * doc/example.conf: Illustrate how to use the option.
3753
3754         * include/class.h (struct ConnectionClass): New "default_umode"
3755         field.
3756         (ConfUmode): New macro.
3757
3758         * include/client.h (client_get_default_umode): New function.
3759
3760         * ircd/client.c (client_get_default_umode): Implement it.
3761
3762         * ircd/ircd_lexer.l (usermode): New token.
3763
3764         * ircd/ircd_parser.y (classblock, etc): New syntax.
3765
3766         * ircd/s_user.c (register_user): Set default user modes for user.
3767         This sends the new mode to the user, so the explicit send later
3768         is no longer necessary.
3769
3770 2004-05-10  Michael Poole <mdpoole@troilus.org>
3771
3772         Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
3773         patch set.
3774
3775         * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
3776
3777         * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
3778         also send a TOPIC to the peer.
3779
3780         * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
3781         feature, defaulting to FALSE.
3782
3783         * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
3784         and allow F:HIS_BANWHO to hide the originator of the topic.
3785         (ms_topic): Parse optional timestamp arguments to TOPIC, and use
3786         them to decide whether to ignore the topic.
3787
3788 2004-05-10  Michael Poole <mdpoole@troilus.org>
3789
3790         Forward port of delayed-join.patch from Quakenet's "Asuka" patch
3791         set (which was a port of code I wrote for the other ircu).
3792
3793         * include/channel.h (CHFL_DELAYED): New membership flag.
3794         (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
3795         (infochanmodes): Add +D to list of supported channel modes.
3796         (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
3797         (member_can_send_to_channel, client_can_send_to_channel): Add
3798         "reveal" parameter to indicate whether a request should cause
3799         a join-delayed user to become visible.
3800         (RevealDelayedJoin, CheckDelayedJoins): New functions.
3801
3802         * include/numeric.h (RPL_DELNAMREPLY): New numeric.
3803         
3804         * include/s_user.h (NAMES_DEL): New flag for do_names().
3805
3806         * include/supported.h (FEATURESVALUES2): Add +D to list of
3807         supported channel modes.
3808
3809         * ircd/channel.c (remove_member_from_channel,
3810         member_can_send_to_channel, client_can_send_to_channel,
3811         joinbuf_join): Handle join-delayed users.
3812         (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
3813         modebuf_extract, mode_process_clients, mode_parse_mode,
3814         mode_parse): Handle delayed-join channels.
3815         (RevealDelayedJoin, CheckDelayedJoins): New functions.
3816
3817         * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
3818         server_relay_channel_message, server_relay_channel_notice): Add
3819         argument for "reveal" parameter to client_can_send_to_channel().
3820
3821         * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
3822
3823         * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
3824
3825         * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
3826         channel with JOIN 0.
3827
3828         * ircd/m_kick.c (m_kick): For join-delayed members, only send the
3829         KICK to the kicker and kickee.  Then check whether +d can be
3830         removed.
3831
3832         * ircd/m_names.c (do_names): Show join-delayed users if and only
3833         if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
3834         RPL_DELNAMREPLY instead of RPL_NAMREPLY.
3835         (m_names): If NAMES -D, pass NAMES_DEL to do_names().
3836
3837         * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
3838         member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
3839         the user is join-delayed.
3840
3841         * ircd/m_quit.c (m_quit): Handle join-delayed users and new
3842         argument for member_can_send_to_channel().
3843
3844         * ircd/m_topic.c (do_settopic): If a join-delayed channel member
3845         changes the topic, reveal the member.
3846
3847         * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
3848         "reveal" parameter to client_can_send_to_channel().
3849
3850         * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
3851
3852         * ircd/m_who.c (m_who): Skip join-delayed members where we skip
3853         zombies.
3854
3855         * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
3856         users.  Use slightly more efficient macros rather than function
3857         calls to test for ops and voice.
3858
3859         * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
3860
3861         * ircd/s_user.c (hide_hostmask): For users with no modes in a
3862         join-delayed channel, do not send JOIN to other members after the
3863         QUIT :Registered.
3864
3865         * ircd/send.c (sendcmdto_common_channels_butone): Skip
3866         join-delayed users where we skip zombies.
3867         
3868 2004-05-10  Michael Poole <mdpoole@troilus.org>
3869
3870         * ircd/ircd_events.c: Actually reference and try to use the epoll
3871         event engine.  Omitted from yesterday's commit.
3872
3873 2004-05-09  Michael Poole <mdpoole@troilus.org>
3874
3875         Forward port of Paul "Zoot" Chang's pseudo-command.patch and
3876         pseudo-support.patch.
3877
3878         * doc/example.conf: Illustrate how to use the feature.
3879
3880         * include/handlers.h (m_pseudo): Declare new handler function.
3881
3882         * include/ircd_features.h (HIS_STATS_R): Add a feature to control
3883         user visibility of the pseudo-commands.
3884
3885         * include/msg.h: Add flag and field for the extra information used
3886         to select a pseudo-command's target.
3887
3888         * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
3889         definitions.
3890
3891         * include/parse.h (register_mapping, unregister_mapping): Declare.
3892
3893         * include/s_conf.h (struct nick_host, struct s_map,
3894         GlobalServiceMapList): Define.
3895
3896         * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
3897         files to "make depend" dependency list.  Update dependencies.
3898
3899         * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
3900         default value.
3901
3902         * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
3903
3904         * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
3905
3906         * ircd/parse.c (msgtab): Add initializer for field "extra" to all
3907         commands.
3908         (msg_tree_insert, msg_tree_remove, register_mapping,
3909         unregister_mapping): New functions.
3910         (parse_client): Implement MFLG_EXTRA extra argument passing.
3911
3912         * ircd/s_conf.c (GlobalServiceMapList): New variable.
3913
3914         * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
3915         strings for new numeric responses.
3916
3917         * ircd/s_stats.c (stats_mapping): New function.
3918         (statsinfo): Add entry for /stats R and make old /stats r entry
3919         case-sensitive.
3920         
3921 2004-05-09  Michael Poole <mdpoole@troilus.org>
3922
3923         * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
3924         yyerror() so that configuration errors all go to the same place.
3925
3926         * ircd/s_conf.c: New variables conf_error and conf_already_read.
3927         conf_error is cleared by read_configuration_file() and set by
3928         yyerror(); conf_already_read is set by read_configuration_file()
3929         and never cleared.  Make yyerror() display error to stderr before
3930         conf_already_read is set.  Make configuration errors a fatal
3931         condition in init_conf().
3932
3933 2004-05-09  Michael Poole <mdpoole@troilus.org>
3934
3935         * ircd/Makefile.in: Pass the source directory as an argument to
3936         version.c.SH so it knows where to find the source files for an
3937         out-of-srcdir build.
3938
3939         * ircd/version.c.SH: Use that information.
3940
3941 2004-05-09  Michael Poole <mdpoole@troilus.org>
3942
3943         * Makefile.in: Ensure ${prefix}/include exists, since the adns
3944         install puts files in that directory.  (The adns Makefile does
3945         not use configure's ${includedir}.)
3946
3947 2004-05-09  Michael Poole <mdpoole@troilus.org>
3948
3949         * doc/readme.features: The logic for F:AUTOHIDE was removed, but
3950         not its documentation.  Fix that omission.
3951
3952         * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
3953         definitions for FEATURE_AUTOHIDE.
3954
3955 2004-05-09  Michael Poole <mdpoole@troilus.org>
3956
3957         * doc/readme.who: Document the support for account matching and
3958         display in the WHO command.
3959
3960 2004-05-09  Michael Poole <mdpoole@troilus.org>
3961
3962         * ircd/ircd.c (main): Move check_pid() call until after we read
3963         the configuration file so that F:PPATH works correctly.
3964
3965 2004-05-09  Michael Poole <mdpoole@troilus.org>
3966
3967         * ircd/match.c (match): Use ToLower() instead of tolower() for
3968         character comparisons.
3969
3970 2004-05-09  Michael Poole <mdpoole@troilus.org>
3971
3972         * ircd/s_user.c (register_user): Initialize "flag" (user's old
3973         modes) passed to send_umode() so that the real set of modes are
3974         sent to the user.
3975         
3976 2004-05-09  Michael Poole <mdpoole@troilus.org>
3977
3978         * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
3979         server, not to a hub between us and the new server.
3980
3981         * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
3982         on target server rather than FLAG_CHSERV (so that directed
3983         messages work at all).
3984
3985 2004-05-09  Michael Poole <mdpoole@troilus.org>
3986
3987         * configure.in: Add checks for epoll_* system call family.
3988
3989         * configure: Regenerate.
3990
3991         * ircd/engine_epoll.c: New file; forward ported from 2.10.11
3992         branch.
3993
3994 2004-05-09  Michael Poole <mdpoole@troilus.org>
3995
3996         * include/ircd_alloc.h: Add definitions for MyRealloc, since they
3997         are needed by kqueue and epoll event engines; kill #if 0'd block.
3998
3999         * include/memdebug.h: Declare dbg_realloc() helper function.
4000
4001         * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
4002
4003         * ircd/memdebug.c: Implement dbg_realloc() helper function.
4004
4005 2004-05-09  Michael Poole <mdpoole@troilus.org>
4006
4007         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
4008         changes on a moderated channel with neither ops nor voice.
4009
4010         * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
4011
4012 2004-01-20  Perry Lorier <isomer@undernet.org>
4013
4014         * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
4015
4016 2004-01-21 Gavin Grieve <hektik@dimebox.net>
4017
4018         * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
4019           code to resolve the multiple part messages bug written by Entrope.
4020
4021 2003-08-12 Timothy Vogelsang <net@astrolink.org>
4022
4023         * ircd/match.c: (match) rewrote function based on existing
4024           code from the hybrid ircd -- death to goto
4025
4026 2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
4027
4028         * ircd/s_user.c: invalidate ban cache for user on host hiding/account
4029
4030 2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
4031
4032         * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
4033         ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
4034         B is an oper", appeared in a lot of places. made it a define SeeOper.
4035
4036 2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
4037         * ircd/s_user.c: umode_str (user modes in N token) internal flags var
4038         was not initialized to the user's flags, returned a string with
4039         random modes set.
4040
4041 2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
4042
4043         * ircd/m_names.c: length counter being incremented one too many
4044         for each nick, resulting names reply messages are about 50 chars
4045         shorter than possible. fixed.
4046
4047 2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
4048
4049         * ircd/channel.c: don't ever send mode changes for local channels to
4050         servers.
4051
4052 2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
4053
4054         * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
4055         moved the supported channel/user mode strings of the 004 reply from
4056         s_err.c to the header files where the channels/user modes are
4057         defined, and show or hide +Au based on OPLEVELS setting.
4058
4059 2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
4060
4061         * ircd/m_burst.c: Clear topic set by netrider on burst.
4062
4063 2003-08-05 Diane Bruce  <db@db.net>
4064
4065         * ircd/parse.c: Fixed the typo the fix of the typo created
4066
4067 2003-08-01 Diane Bruce  <db@db.net>
4068
4069         * ircd/parse.c: Fixed typo
4070
4071 2003-06-22  Diane Bruce  <db@db.net>
4072
4073         * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
4074
4075 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
4076
4077         * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
4078         ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
4079         Make ability to create local channels a feature which can be disabled.
4080
4081 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
4082
4083         * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
4084         ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
4085         makes it possible to disable the +Au/oplevels functions.
4086
4087 2003-06-17  Alex Badea  <vampire@p16.pub.ro>
4088
4089         * ircd/res_adns.c: included sys/types.h, for non-Linux
4090         headers
4091
4092 2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
4093
4094         * libs/dbprim: database primitives library, including
4095         flexible linked lists, auto-resizing hash tables, and sparse
4096         matrices.  Has a test suite for everything but portions of
4097         the sparse matrix routines (I'm lazy; someone help me write
4098         them!).  Documentation generated by doxygen--feel free to
4099         critique, suggest phrasing improvements, etc.
4100
4101 2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
4102         * libs: put third-party libraries in this subdirectory.
4103         Started by copying adns into it--will fix the rest and remove
4104         the top-level copy later.
4105
4106 2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
4107         * ircd/m_settime.c: Fixed a minor format string issue.
4108         
4109 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
4110         * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
4111         ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
4112         bugs in transmit.c and m_opmode.c.
4113
4114 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
4115         * include/class.h, include/ircd_string.h, ircd/class.c,
4116         ircd/gline.c, ircd_string.c: Fix undefined order
4117         of evaluation bug in gline.c, add general purpose hasher for
4118         conf entries. 
4119
4120 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
4121         * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
4122         ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
4123         ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
4124         ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
4125         ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
4126         ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
4127         with g++ again, type safety, const correctness fixes,
4128         remove C++ keywords again :/
4129
4130 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
4131         * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
4132         table data was in a different order than the feature data
4133         structure, which resulted in a wild index being used in
4134         feature_bool. The feature_bool function didn't check it's
4135         index before indexing the features array resulting in
4136         a core dump on /oper.
4137
4138 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
4139         * include/client.h, include/res.h, include/s_bsd.h,
4140         ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
4141         ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
4142         Remove resolver cache wart, change hostent representation, cleanup
4143         resolver clients.
4144
4145 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
4146         * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
4147         HEAD_IN_SAND macros to get server to build, rebuild dependencies.
4148
4149 2003-01-08  Fredrik Soderblom <froo@quakenet.org>
4150         * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
4151         RPL_HOSTHIDDEN and the use of it.
4152
4153 2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
4154
4155         * BUGS: removed from distribution
4156
4157         * ChangeLog.07: moved into doc/history
4158
4159         * ChangeLog.10: moved into doc/history
4160
4161         * INSTALL: pulled up from u2.10.11.04
4162
4163         * README: pulled up from u2.10.11.04
4164
4165         * README.FreeBSD: pulled up from u2.10.11.04
4166
4167         * README.Solaris: pulled up from u2.10.11.04
4168
4169         * RELEASE.NOTES: add sysctl note from u2.10.11.04
4170
4171         * TODO: removed from distribution
4172
4173         * configure.in: add extra check for res_mkquery; remove
4174         --disable-headinsand since it no longer has any effect; pull up
4175         "Enable" vs. "Disable" changes from u2.10.11.04
4176
4177         * doc/readme.asll: pulled up from u2.10.11.04
4178
4179         * doc/readme.features: pull up missing documentation, including a
4180         couple of corrections
4181
4182         * doc/readme.log: correct text to read FACILITY instead of SYSLOG
4183         in the documentation for configuring syslog facility
4184
4185         * include/channel.h: declare IsInvited()
4186
4187         * include/handlers.h: do some minor reorderings
4188
4189         * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
4190         #define's
4191
4192         * include/ircd_policy.h: removed from the distribution
4193
4194         * include/jupe.h: declare jupe_memory_count()
4195
4196         * include/msgq.h: remove MsgCounts structure
4197
4198         * include/numeric.h: add a blank line after RPL_STATSQLINE; add
4199         RPL_HOSTHIDDEN
4200
4201         * include/s_stats.h: include ircd_features.h for definition of the
4202         enum; remove extraneous declarations
4203
4204         * ircd/Makefile.in: add LDFLAGS to table_gen
4205
4206         * ircd/engine_poll.c: remove commented-out assertion
4207
4208         * ircd/ircd.c: include s_stats.h and call stats_init()
4209
4210         * ircd/ircd_features.c: feature names have to be case-sensitive
4211         because of some of the HIS features
4212
4213         * ircd/ircd_relay.c: reorder includes
4214
4215         * ircd/m_account.c: include string.h for strlen()
4216
4217         * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
4218         sure to refer to chname, not parv[1]
4219
4220         * ircd/m_create.c: remove the broken code that squits servers that
4221         are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
4222         desyncs
4223
4224         * ircd/m_gline.c: if it's a server, force the gline; don't
4225         gline_find() before determining if the oper had the privilege
4226
4227         * ircd/m_kick.c: kicks by servers should appear to be from the
4228         local server thanks to HIS
4229
4230         * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
4231
4232         * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
4233
4234         * ircd/m_nick.c: added an assertion and some explanatory comments
4235         pulled up from u2.10.11.04
4236
4237         * ircd/m_opmode.c: no longer requiring oper to be on the channel;
4238         search for quarantines before allowing ops
4239
4240         * ircd/m_privmsg.c: one character typo that probably means nothing
4241
4242         * ircd/m_settime.c: add back comments I left in the code
4243
4244         * ircd/m_squit.c: remove protocol_violation() notices
4245
4246         * ircd/m_userhost.c: return realhost if user is an oper
4247
4248         * ircd/m_wallvoices.c: only m_wallvoices() should add a +
4249
4250         * ircd/m_who.c: add handling for the 'a' field
4251
4252         * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
4253         FEAT_HIS_SERVERINFO
4254
4255         * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
4256         ancient bug fixes from the u2.10.11 branch
4257
4258         * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
4259         call motd_memory_count(), gline_memory_count(), and
4260         jupe_memory_count() when reporting memory usage; add back a
4261         comment regarding "DBuf caveats"
4262
4263         * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
4264         change to ERR_NOPRIVILEGES wording
4265
4266         * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
4267
4268         * ircd/s_stats.c: count from 0 and not 1 when initializing the
4269         stats
4270
4271         * ircd/s_user.c: comment out assertion; remove extraneous
4272         definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
4273         hidden" reply; don't detach oper confs unless sptr is not an oper
4274
4275         * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
4276         change channel name character range to be from '\041' (!) to
4277         UCHAR_MAX
4278
4279         * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
4280
4281         * tools/linesync/linesync.conf: pull up from u2.10.11.04
4282
4283         * tools/linesync/linesync.sh: pull up from u2.10.11.04
4284
4285 2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
4286         * almost everything: Forward ported numerous changes from .11 to .12
4287         
4288 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
4289         * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
4290         when they become a server.
4291         * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
4292         packet is sent.
4293         * ircd/class.c(make_class): Fixed an assert to be more useful.
4294         
4295 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
4296         * ircd/packet.c
4297         * ircd/packet.h: (connect_dopacket): Made a dopacket function for
4298         connecting links which sends the messages through the correct message
4299         handler.
4300         * ircd/s_bsd.c(read_packet): Put packets through the correct handler
4301         for connecting links. Properly handle unknown links becoming
4302         connecting or servers.
4303
4304 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
4305         * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
4306         with, this is used quite a lot.
4307         * ircd/class.c (make_class): Initialise the ref_count to 1 so that
4308         we don't leak.
4309         * ircd/class.c (add_class): When updating a class, free the old name
4310         first to prevent leakage.
4311         * ircd/class.c (class_delete_marked): Decrement the ref_count for the
4312         class after it is removed from the linked list.
4313         * ircd/ircd_parser.y: Changed a free to MyFree().
4314         * ircd/ircd_parser.y: Removed a few debugging messages.
4315
4316 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
4317         * s_bsd.c (read_packet): Our daily addition to the list of entities to
4318         treat as servers - Connecting servers.
4319         
4320 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
4321         * doc/debug_memleak_gc.patch,
4322         * include/ircd_ircd_alloc.h,
4323         * include/memdebug.h,
4324         * configure.in,
4325         * ircd/Makefile.in,
4326         * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
4327         and notify the operators.
4328         
4329 2002-06-29  Andrew Miller <a1kmm@mware.virtualave.net>
4330
4331         * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
4332         the dbufs.
4333         
4334 2002-06-18  Andrew Miller <a1kmm@mware.virtualave.net>
4335
4336         * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
4337         the server.
4338         
4339 2002-06-18  Alex Badea  <vampire@p16.pub.ro>
4340
4341         * ircd/m_burst.c (ms_burst): kick local members if the channel
4342         has a larger local TS and it's +i or +k remotely (anti net.ride)
4343
4344         * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
4345
4346         * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
4347
4348         * include/s_conf.h: externalized lookup_confhost
4349
4350         * adns/Makefile.in: compilation-outside-source-tree fix
4351
4352 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
4353
4354         * adns/*: added a slightly hacked copy of adns
4355
4356         * configure.in: added a --disable-adns switch if you want
4357         to use the old libresolv res.c
4358
4359         * configure: ran autoconf
4360
4361         * ircd/res_libresolv.c: renamed from res.c
4362
4363         * ircd/res_adns.c: added adns resolver
4364
4365 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
4366
4367         * ircd/ircd_parser.y: fixed 'Connect' block processing so now
4368         you can actually connect to other servers
4369
4370 2002-06-04  Alex Badea  <vampire@p16.pub.ro>
4371
4372         * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
4373         it displays all servers, not just local connects
4374
4375 2002-05-30  Jean-Edouard Babin  <Jeb@jeb.com.fr>
4376
4377         * ircd/m_server.c (mr_server): fixed core bug on insufficient
4378         arguments
4379
4380 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
4381         
4382         * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
4383
4384 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
4385  
4386         * ircd/m_join.c (m_join,HasControlChars): check if a channel
4387         name has any control chars (<=32) in it before allowing a
4388         local user to join.
4389  
4390 2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
4391         * ircd/ircd_relay.c: stop an information leak about the
4392         the network topography from relayed messages.
4393
4394 2002-04-19  Alex Badea  <vampire@p16.pub.ro>
4395
4396         * ircd/m_who.c (m_who): disallow non-opers to /who server.name
4397
4398 2002-04-18  Alex Badea  <vampire@p16.pub.ro>
4399
4400         * ircd/s_err.c (RPL_STATSILINE): connection classes are now
4401         strings
4402
4403 2002-04-17  beware <steendijk@tomaatnet.nl>
4404
4405         * m_whois.c (m_whois): disallow remote queries for non-existent
4406         local users when originated by a non-oper
4407
4408 2002-04-16  Alex Badea  <vampire@p16.pub.ro>
4409
4410         * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
4411         reply if the servername contains a '*' and it doesn't exist
4412
4413         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
4414
4415 2002-04-16  beware <steendijk@tomaatnet.nl>
4416
4417         * ircd/m_whois.c: the previous patch broke whois, fixed it
4418         another way
4419
4420         * ircd/m_admin.c: cleaned up m_admin too while we're here,
4421         hunt_server_cmd can do all the work for us
4422
4423 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
4424
4425         * ircd/m_stats.c: added verbose server reporting (/stats v
4426         or /stats V for machine-readable format) (bugzilla bug 52)
4427
4428         * include/numeric.h: added RPL_STATSVERBOSE 236
4429
4430         * ircd/s_err.c: added RPL_STATSVERBOSE
4431
4432         * ircd/s_stats.c: added help for stats 'v'
4433
4434 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
4435
4436         * ircd/class.c (get_client_class): fixed typo which caused
4437         /trace (and perhaps motd) to core
4438
4439 2002-04-15  beware <steendijk@tomaatnet.nl>
4440
4441         * ircd/m_whois.c: Fixed /whois servermask nomatch bug
4442         where normal users could use the function to discover servers,
4443         also the NOSUCHSERVER check code was missing.
4444
4445 2002-04-14  Alex Badea  <vampire@p16.pub.ro>
4446
4447         * ircd/ircd_parser.y: fixed cli_info(&me) not being set
4448         from 'description' conf
4449
4450 2002-04-13  Stephane Thiell <mbuna@undernet.org>
4451
4452         * ircd/m_whois.c: removed FindUser() in ms_whois to fix
4453         remote whois relaying.
4454
4455         * ircd/class.c: removed unused (and duplicated) code
4456         get_client_ping().
4457         
4458         * include/class.h: removed unused function prototype.
4459         
4460         * config.guess: upgraded with latest
4461         
4462         * config.sub: upgraded with latest
4463
4464 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
4465
4466         * ircd-patch: report which files failed the dry run (so the
4467         user may force the patch if the rejects are in less-than-vital
4468         files, such as ChangeLog or documentation)
4469
4470 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
4471
4472         * ircd/m_invite.c: don't propagate invites for local channels
4473
4474         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
4475
4476 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
4477
4478         * ircd/ircd.c: The last fix broke autoconnects completely.
4479         Fixed it another way.
4480         
4481 2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
4482
4483         * ircd/ircd.c (try_connections): To avoid problems with infinite event
4484         loops, don't try connecting to servers whose connect frequency is 0.
4485         
4486 2002-04-10  Alex Badea  <vampire@p16.pub.ro>
4487
4488         * ircd/ircd_parser.y: fixed a "features" block parse bug
4489
4490         * tools/convert-conf.py: added a configuration file converter
4491         from 2.10.11 to 2.10.12 format
4492
4493         * ircd-patch: added GPL information to top of file
4494
4495 2002-04-09  Alex Badea  <vampire@p16.pub.ro>
4496
4497         * configure.in: added a human-readable report of configured
4498         options at the end of the configure process
4499
4500         * configure: regenerated with autoconf
4501
4502 2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
4503
4504         * include/supported.h: change CHARSET to CASEMAPPING after
4505         discussions as to what would be the preferred name.
4506
4507 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
4508         * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
4509         specification.
4510         * Fix a minor parser bug that meant rehash didn't always
4511         work correctly.
4512
4513 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
4514
4515         * include/channel.h: fix compiler warnings (paratheses around &&)
4516
4517         * ircd/channel.c (modebuf_extract): fix compiler warnings
4518         (uninitialized variables)
4519
4520         * ircd/Makefile.in: make ircd properly compile outside the
4521         source tree
4522
4523 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
4524
4525         * include/s_user.h: added a sptr parameter to InfoFormatter
4526         function type
4527
4528         * ircd/m_who.c: don't match IPs for clients which have a hidden host,
4529         except when the inquiring user is an oper
4530
4531         * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
4532         target has a hidden host, but show real IP to opers
4533
4534         * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
4535         fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
4536         show real IP to opers
4537
4538         * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
4539
4540         * ircd/s_user.c (send_user_info): pass sptr to the formatting function
4541
4542         * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
4543         fake IP to show for clients with a hidden host)
4544
4545         * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
4546
4547         * doc/example.conf: default value for FEAT_HIDDEN_IP
4548
4549         * doc/readme.features: documented FEAT_HIDDEN_IP
4550
4551 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
4552         * doc/example.conf: Cleaned up some comments that ended up in
4553           strange places due to problems in the merge process.
4554         * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
4555           probably dates back to Jarkko code.
4556
4557 2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
4558
4559         * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
4560         from the path before calling do_kill(); add a msg argument to
4561         do_kill() and use it in preference to comment; remove all that old
4562         code that fiddled with the buf and the comment
4563
4564         * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
4565
4566         * include/ircd_log.h: add a seperate msg argument to
4567         log_write_kill()
4568
4569         * ircd/ircd.c: display event engine and MAXCONNECTIONS information
4570  
4571 2002-04-02  Alex Badea <vampire@p16.pub.ro>
4572
4573         * ircd-patch: Automatically generate a version string from patches
4574
4575 2002-04-02  Alex Badea <vampire@p16.pub.ro>
4576         
4577         * ircd-patch: Test before doing anything dangerous, provide -f to
4578                 to it anyway.  exit levels for easy scripting.
4579
4580 2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
4581
4582         * ircd/channel.c (joinbuf_join): don't add a channel to the list
4583         in the joinbuf unless when we flush it, we empty the list
4584
4585 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
4586         * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
4587           old configuration file format.
4588         * ircd/ircd_lexer.l
4589         * ircd/s_conf.c
4590         * doc/example.conf
4591
4592 2002-03-23 Bert Faes <bert.faes@pandora.be>
4593
4594         * s_misc.c made /trace reply always show the username
4595         
4596 2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
4597
4598         * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
4599         for setrlimit, getrusage, and times
4600
4601         * configure: rerun auto-conf
4602
4603         * config.h.in: rerun autoheader
4604
4605 2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
4606
4607         * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
4608         sending of the key to the channel
4609
4610         * ircd/channel.c (modebuf_flush_int): when processing keys, only
4611         include the actual key in the mode sent to the channel if
4612         MODEBUF_DEST_NOKEY is not set
4613
4614         * include/channel.h: needed more bits for MODEBUF_DEST_*,
4615         especially when adding MODEBUF_DEST_NOKEY to force keys in the
4616         BURST to be reported as "*" to the channel
4617
4618         * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
4619         inherited from the class associated with the O-line
4620
4621 2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
4622
4623         * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
4624         when a user changes his nickname so we can catch if he now matches
4625         a ban
4626
4627 2002-03-20 Reed Loden <reed@redmagnet.com>
4628         * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
4629
4630         * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
4631
4632 2002-03-20 LordLuke <lordluke@undernet.org>
4633         * ircd/client.c: Add LOCOP_LIST_CHAN feature.
4634
4635         * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
4636
4637 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
4638
4639         * ircd/m_links.c: Make /links behave like /map for head_in_sand.
4640         cleaned up excess code.
4641
4642         * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
4643         map_add() and map_update() for links changes.
4644
4645         * include/map.h: Added info and prot to struct Map
4646
4647         * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
4648         servers are cached in MapList
4649
4650         * ircd/s_misc.c: changed #ifdef for map_update()
4651
4652         * ircd/m_server.c: changed #ifdef for map_update()
4653
4654         * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
4655         hiding features.
4656
4657         * configure.in: add --disable-headinsand
4658
4659         * configure: Ran autoconf
4660
4661         * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
4662         connect limits
4663
4664         * ircd/s_stats.c: Made /stats i report connect limits
4665
4666         * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
4667         "*" for the password field.
4668         
4669 2002-03-19 LordLuke <lordluke@undernet.org>
4670
4671         * include/channel.h: Allow opers to view +s channels in /list
4672
4673         * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
4674
4675         * include/ircd_features.h: added "LIST_CHAN" feature
4676
4677         * ircd/channel.c: Allow opers to view +s channels in /list
4678
4679         * ircd/client.c: Add "PRIV_LIST_CHAN"
4680
4681         * ircd/ircd_features.c: Add "LIST_CHAN" feature
4682
4683 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
4684
4685         * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
4686         Must be more careful when forward porting by hand...
4687         
4688 2002-03-13  Carlo Wood  <run@alinoe.com>
4689
4690         * include/channel.h: CHFL_CHANNEL_MANAGER, new local
4691         channel flag set when someone creates a channel or joins
4692         using the Apass.  IsChannelManager(), SetChannelManager():
4693         macros to manipulate new channel flag.
4694         channel_modes: Added new argument to avoid calling
4695         find_member_link more often than needed.
4696
4697         * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
4698         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
4699         ERR_UPASSNOTSET: new numeric replies.
4700
4701         * ircd/channel.c: is_level0_op: removed.
4702         member_can_send_to_channel: disallow channel manager
4703         to talk.  channel_modes: show upass to level0 ops.
4704         mode_parse_upass: Only the channel manager is allowed
4705         to change the upass.  Only allow to set upass when apass
4706         is also set.  mode_parse_apass: Don't allow to change the
4707         Apass if the channel is older than 48 hours.  Only allow
4708         to remove the apass when upass is not set.  Send clear
4709         warnings regarding the importance of apass.
4710         mode_process_clients: Don't change the oplevel of an opped
4711         member in a channel where upass is not set.
4712
4713         * ircd/destruct_event.c: exec_expired_destruct_events:
4714         Bug fix: send DESTRUCT message when destructing a channel.
4715
4716         * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
4717         prefix for DESTRUCT message.
4718
4719         * ircd/m_join.c: m_join: Handle apass and upass.
4720
4721         * ircd/m_kick.c: m_kick: Don't allow to kick member with
4722         a higher or equal op-level.
4723
4724         * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
4725         ms_mode: Allow server to do modes on channels with apass
4726         set.
4727
4728         * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
4729         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
4730         ERR_UPASSNOTSET: new numeric replies.
4731
4732
4733 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
4734
4735         * ircd/m_kill.c: Last of the bug fixes for do_kill()
4736
4737         * ircd/list.c: Don't remove clients from the linked list
4738         that aren't actually in the list.
4739         
4740 2002-03-08  Carlo Wood  <run@alinoe.com>
4741         * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
4742         and CHFL_BURST_ALREADY_VOICED.
4743
4744         * ircd/m_burst.c: Allow BURST outside net-burst
4745         and take into account that users are already joined
4746         to the channel in that case.
4747
4748         * ircd/m_destruct.c: Implementation of DESTRUCT
4749         handling code.
4750
4751         * ircd/m_join.c: Set the channel creationtime to
4752         the timestamp of a message when that timestamp is
4753         smaller.
4754 2002-02-27 Reed Loden <reed@redmagnet.com>
4755        * tools/crypter: Updated some variables, added another notice,
4756        added CVS Id tag, and updated Perl location.
4757
4758        * tools/ringlog.c: Added IRC - Internet Relay Chat, 
4759        tools/ringlog.c
4760
4761        * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
4762        tools/ringlog.pl
4763
4764        * tools/wrapper.c: Added IRC - Internet Relay Chat, 
4765        tools/wrapper.c
4766
4767        * tools/mkpasswd.c: Added CVS Id tag
4768
4769        * tools/sums: Updated to comply with sums being moved to tools/
4770        and added CVS Id tag
4771
4772        * tools/README: Updated location of file and partly rewrote to fit 
4773        u2.10.11's Features
4774
4775        * tools/Makefile.crypt: Updated location of file and added CVS Id 
4776        tag
4777
4778        * acconfig.h: Updated location of file
4779
4780        * config.h.in: Updated location of file
4781
4782        * tools/Bounce/bounce.conf: Added CVS Id tag
4783
4784        * tools/Bounce/Bounce.cpp: Updated location of file
4785
4786        * tools/Bounce/Bounce.h: Updated location of file
4787
4788        * tools/hashtoy: Added CVS Id Tag
4789
4790 2002-02-27  Carlo Wood  <run@alinoe.com>
4791
4792         * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
4793
4794 2002-03-01  Carlo Wood  <run@alinoe.com>
4795
4796         * include/channel.h: struct Channel: new attribute destruct_event.
4797         Prototype for destruct_channel().
4798
4799         * include/destruct_event.h: new header file for destruct_event.c.
4800
4801         * ircd/Makefile.in: New source file: destruct_event.c.
4802
4803         * ircd/channel.c: sub1_from_channel: Don't destruct channel
4804         immedeately but instead schedule it for destruction after
4805         some time when a channel becomes empty (and clear invite
4806         only and limit in that case).
4807         destruct_channel: new function, was previously the destructing
4808         part of sub1_from_channel.
4809         add_user_to_channel: remove destruction request if any.
4810
4811         * ircd/destruct_event.c: New file.  Implementation of functions
4812         schedule_destruct_event_1m, schedule_destruct_event_48h,
4813         remove_destruct_event and exec_expired_destruct_events.
4814
4815         * ircd/ircd.c: destruct_event_timer: new timer.
4816         main: use destruct_event_timer to call exec_expired_destruct_events
4817         once per minute.
4818
4819         * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
4820         channels.  Schedule new empty channels for destruction.
4821
4822         * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
4823
4824 2002-03-01  Carlo Wood  <run@alinoe.com>
4825         * ircd/s_misc.c: exit_client: Only call map_update()
4826         for servers.
4827
4828 2002-02-28  Carlo Wood  <run@alinoe.com>
4829         * include/channel.h: New attribute 'oplevel' in struct Membership.
4830         Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
4831         New macros:  OpLevel(member): returns op-level of member and
4832         SetOpLevel(member, value): sets op-level of member.
4833         Prototype of add_user_to_channel: add oplevel to parameters.
4834         Prototype of mode_parse: add member to to parameters.
4835
4836         * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
4837
4838         * ircd/s_err.c: idem.
4839
4840         * ircd/channel.c: Removed unmatched '{' braces from comments
4841         (confuses vi).  add_user_to_channel: oplevel is passed to function
4842         and added in the created MemberShip structure.  send_channel_modes:
4843         Generate the nick:mode list of the BURST msg in the new style (with
4844         op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
4845         ParseState: New attribute: member.  mode_process_clients: Disallow
4846         deopping someone with an equal or higher op-level, take care of
4847         inheritance of op-level.  mode_parse: member is passed to function      
4848         and added in the created ParseState structure.  joinbuf_join: pass 0
4849         as oplevel to add_user_to_channel as needed initialization of oplevel
4850         in struct MemberShip.
4851
4852         * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
4853         decoding of a BURST message and passing on a BURST message.
4854         Renamed default_mode to current_mode.
4855
4856         * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
4857
4858         * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
4859         to mode_parse (causes opped member to get op-level 0).                  
4860
4861 2002-02-25  Carlo Wood  <run@alinoe.com>
4862         * include/channel.h: Added two new strings to struct Mode,
4863         upass and apass, both with maximum length PASSLEN (a new
4864         define in this file).  Two new mode defines MODE_UPASS and
4865         MODE_APASS.
4866
4867         * ircd/channel.c: is_level0_op: Added as dummy function.
4868         channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
4869         Added support for MODE_APASS (+A) and MODE_UPASS (+u).
4870         mode_parse_upass: New function to parse mode +u.
4871         mode_parse_apass: New function to parse mode +A.
4872
4873         * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
4874
4875 2002-02-25  Carlo Wood  <carlo@alinoe.com>
4876
4877         * ircd/m_server.c: remove unused variables
4878
4879 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
4880
4881         * ircd/m_map.c: Modified to show a useful output to non-opered
4882           clients when HEAD_IN_SAND_MAP is defined. Servers are added to
4883           the list when first seen (after receiving SERVER) and that list
4884           is sent to clients. Servers are excluded from the list if they are
4885           hubs, services, or have been missing for more than 1 week.
4886         
4887         * ircd/map.c: Created file for map_* functions
4888
4889         * include/map.h: Created file for map_* functions
4890
4891         * ircd/m_server.c: Added calls to map_update()
4892
4893         * ircd/s_misc.c: Added call to map_update()
4894
4895         * ircd/parse.c: Changed to use m_map() and mo_map()
4896         
4897 2002-02-22 Reed Loden <reed@redmagnet.com>
4898
4899        * ircd/m_connect.c: Removed an extra : in remote connect message.
4900
4901 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
4902
4903         * ircd/whocmds.c: Local opers should also be able to
4904         see servernames in /who
4905
4906         * ircd/gline.c: Fix core bug in gline_find()
4907
4908         * ircd/m_kill.c: Bug fix for HIS_KILLWHO
4909
4910 2002-02-19 John Buttery <john@io.com>
4911
4912         * ircd/ircd.c: Updated "No such file" error message.
4913         
4914 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
4915
4916         * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
4917         a message handler, and some general cleanups and bug fixes. 
4918
4919         * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
4920         kill source.
4921         
4922 2002-02-16  Tim Vogelsang <net@astrolink.org>
4923
4924         * ircd/m_kill.c: added a new static function, m_kill, which
4925         performs the actual kill.
4926         
4927 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
4928
4929         * Added support for LIST STOP
4930         
4931 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
4932
4933         * Merged changes from u2_10_11 to main branch.
4934         
4935 2002-02-08  Tim Vogelsang  <net@astrolink.org>
4936
4937        * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
4938        reason is supplied.
4939
4940 2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
4941
4942         * ircd/s_auth.c (read_auth_reply): left out an = in an
4943         assertion--shouldn't have had any impact, though
4944
4945         * ircd/Makefile.in: add a hook for using ringlog; run make depend
4946
4947         * tools/ringlog.c: for the heck of it, add a comment including
4948         rules for /etc/magic
4949
4950 2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
4951
4952         * tools/ringlog.pl: perl script to take output from ringlog and
4953         pass it to addr2line to get function, file, and line number
4954         information
4955
4956         * tools/ringlog.c: program/object to help in building function
4957         trace information
4958
4959 2002-02-04  Alex Badea  <vampire@p16.pub.ro>
4960
4961         * include/ircd_features.h: added new feature MOTD_BANNER
4962
4963         * ircd/ircd_features.c: added new feature MOTD_BANNER
4964
4965         * ircd/motd.c (motd_signon): send a one-line banner from
4966         FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
4967         is set
4968
4969         * doc/example.conf: default value for MOTD_BANNER feature
4970
4971         * doc/readme.features: documented the MOTD_BANNER feature
4972
4973 2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
4974
4975         * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
4976         check; added character 'A' to the server options string to
4977         indicate when assertion checking is enabled
4978
4979 2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
4980
4981         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
4982
4983         * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
4984         event if the errno is EBADF, since the caller probably already
4985         knows about it and just hasn't gotten around to processing it yet
4986
4987         * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
4988         is generated; don't process socket_events() or socket_state() if
4989         an error occurred; add GEN_ERROR to list of flags in gen_flags()
4990
4991         * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
4992         clear it
4993
4994 2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
4995
4996         * ircd/channel.c: change make_nick_user_{ip,host} to not use a
4997         static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
4998         NUI_BUFSIZE--I confess they're not well-named) is allocated by the
4999         caller
5000
5001 2002-02-02  Alex Badea  <vampire@p16.pub.ro>
5002
5003         * include/client.h: added user flag FLAGS_HIDDENHOST
5004
5005         * include/ircd_features.h: added FEAT_HOST_HIDING and
5006         FEAT_HIDDEN_HOST
5007
5008         * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
5009         to report real hostnames and IPs to opers
5010
5011         * include/s_user.h: exported hide_hostmask()
5012
5013         * include/send.h: changed sendcmdto_channel_butserv to
5014         sendcmdto_channel_butserv_butone; ditto for
5015         sendcmdto_common_channels
5016
5017         * include/struct.h: added realhost to struct User
5018
5019         * include/whowas.h: added realhost to struct Whowas
5020
5021         * ircd/channel.c: match bans against both real and hidden
5022         hostmasks; moved some calls to use sendcmdto_*_butone
5023
5024         * ircd/gline.c: match glines agains real host
5025
5026         * ircd/ircd_features.c: added FEAT_HOST_HIDING and
5027         FEAT_HIDDEN_HOST
5028
5029         * ircd/m_account.c: call hide_hostmask() for possibly
5030         hiding the user's host
5031
5032         * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
5033
5034         * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
5035
5036         * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
5037         host
5038
5039         * ircd/m_who.c: match real hosts, if the query comes from an oper
5040
5041         * ircd/m_whois.c: report real hostname and IP to opers
5042
5043         * ircd/m_whowas.c: report real hostname to opers
5044
5045         * ircd/s_err.c: added user mode 'x' to the list of supported user
5046         modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
5047         real hostnames to opers
5048
5049         * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
5050
5051         * ircd/s_serv.c: send real hostname to servers
5052
5053         * ircd/s_user.c: send real hostname to servers; added processing
5054         of usermode 'x'; added hide_hostmask() which actually does the work
5055         of hiding a user's host; moved some calls to use sendcmdto_*_butone
5056
5057         * ircd/send.c: changed sendcmdto_channel_butserv to
5058         sendcmdto_channel_butserv_butone; ditto for
5059         sendcmdto_common_channels
5060
5061         * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
5062         it's host hidden
5063
5064         * ircd/whowas.c: if needed, store a user's real host so we can
5065         report it to opers later
5066
5067         * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
5068         features
5069
5070         * doc/example.conf: default values for HOST_HIDING and
5071         HIDDEN_HOST features
5072
5073 2002-02-01  Tim Vogelsang  <net@astrolink.org>
5074
5075         * ircd/send.c (sendwallto_group_butone): don't sent wallops to
5076         ordinary users
5077
5078 2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
5079
5080         * ircd/jupe.c (jupe_activate): remove a bogus assertion
5081
5082         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5083
5084         * ircd/s_err.c: added new channel mode 'r' to list of supported
5085         channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
5086         numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
5087         informing users why they can't join a +r channel
5088
5089         * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
5090         (+r) to do_clearmode(); note that it is *not* being added to the
5091         default clearmode mask!
5092
5093         * ircd/channel.c: don't allow non-+r users to send messages to +r
5094         channels from off the channel; add support for MODE_REGONLY (+r)
5095         to channel_modes(); don't allow non-+r users to join +r channels
5096         without an invite; add support for MODE_REGONLY to the modebuf_*()
5097         family of functions (changes in modebuf_flush_int(),
5098         modebuf_mode(), and modebuf_extract()); add support for
5099         MODE_REGONLY to mode_parse()
5100
5101         * include/supported.h (FEATURESVALUES2): added the new channel
5102         mode 'r' to the list of supported channel modes
5103
5104         * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
5105         conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
5106
5107         * include/channel.h: remove unused MODE_SENDTS; add new
5108         MODE_REGONLY
5109
5110         * ircd/s_bsd.c (read_packet): remove call to timer_verify()
5111
5112         * ircd/list.c: remove calls to timer_verify() from
5113         alloc_connection() and dealloc_connection()
5114
5115         * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
5116         from timer_run()
5117
5118 2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
5119
5120         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5121
5122         * ircd/ircd_events.c (timer_run): why did I ever use a next
5123         pointer when the algorithm guarantees that the head pointer will
5124         always be the next pointer?
5125
5126 2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
5127
5128         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5129
5130         * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
5131         client process timer to catch any list corruption
5132
5133         * ircd/list.c: surround alloc_connection() and
5134         dealloc_connection() with calls to timer_verify()
5135
5136         * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
5137         verify the timer list's structure; call it around timer_run()
5138
5139 2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
5140
5141         * ircd/send.c (sendcmdto_common_channels): don't send message to a
5142         channel that the source is a zombie on
5143
5144 2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
5145
5146         * ircd/ircd_events.c (timer_enqueue): one more assertion--make
5147         sure a timer has the ACTIVE flag set before enqueueing the timer
5148
5149         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5150
5151         * ircd/list.c (dealloc_connection): assert that the process timer
5152         has been removed from the timer queue before dealloc_connection()
5153         is called
5154
5155 2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
5156
5157         * ircd/res.c: don't accept T_A when we're looking for T_PTR
5158
5159         * ircd/channel.c (modebuf_flush_int): nuke the code that would
5160         send a HACK DESYNCH notice on a HACK(2)--it would be far too
5161         chatty
5162
5163         * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
5164
5165         * include/supported.h: add AWAYLEN to the list of supported
5166         features
5167
5168         * include/ircd_defs.h: add AWAYLEN to specify the maximum length
5169         of an away message
5170
5171         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5172
5173         * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
5174
5175         * ircd/channel.c: pass a buflen parameter to channel_modes() for
5176         pbuf--we were using sizeof(pbuf), which would always be
5177         sizeof(char*) before; change send_channel_modes() to pass extra
5178         parameter to channel_modes()
5179
5180         * include/channel.h: pass a buflen parameter to channel_modes()
5181         for pbuf
5182
5183         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5184
5185         * ircd/uping.c (uping_start): initialize some timers
5186
5187         * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
5188         out when we need to re-add the process timer
5189
5190         * ircd/s_auth.c (make_auth_request): initialize a timer
5191
5192         * ircd/res.c (init_resolver): initialize some timers
5193
5194         * ircd/list.c (alloc_connection): initialize the client process
5195         timer
5196
5197         * ircd/ircd_events.c: add a function, timer_init(), to initialize
5198         a struct Timer; recast timer_add() to catch when adding a marked
5199         timer and not re-enqueue it--but mark it for re-enqueuing; update
5200         timer_del() to turn off the GEN_READD flag and to ignore reference
5201         counts when destroying the timer--we're using GEN_MARKED as an
5202         ersatz referance count; changed timer_run() to work with the new
5203         way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
5204         map[]
5205
5206         * ircd/ircd.c: initialize some timers
5207
5208         * ircd/engine_select.c (engine_loop): initialize a timer
5209
5210         * ircd/engine_poll.c (engine_loop): initialize a timer
5211
5212         * ircd/engine_kqueue.c (engine_loop): initialize a timer
5213
5214         * ircd/engine_devpoll.c (engine_loop): initialize a timer
5215
5216         * ircd/IPcheck.c (IPcheck_init): initialize a timer
5217
5218         * include/ircd_events.h: add GEN_READD flag for timers to indicate
5219         that a timer must be readded; add t_onqueue() macro to check to
5220         see if a timer is on the queue (this is a hack, though); added
5221         timer_init() to initialize a struct Timer--we're no longer doing
5222         the initialization in timer_add()
5223
5224 2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
5225
5226         * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
5227         prevent a core bug *in* the assertion
5228
5229         * doc/readme.features: document new POLLS_PER_LOOP feature; change
5230         documentation to reflect that OPER_SET now defaults to FALSE
5231
5232         * doc/p10.html: documented the new ACCOUNT stuff
5233
5234         * doc/example.conf: document new POLLS_PER_LOOP default; change
5235         default for OPER_SET
5236
5237         * RELEASE.NOTES: changed documentation to reflect the fact that
5238         assertions are now enabled by default and do not cause memory
5239         leaks
5240
5241         * ircd/res.c (make_cache): removed a bogus assertion we probably
5242         never caught because assertions haven't been enabled on production
5243         servers for any length of time before
5244
5245         * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
5246
5247         * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
5248         instance of POLLS_PER_KQUEUE
5249
5250         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5251
5252         * ircd/s_bsd.c (client_timer_callback): only clear the
5253         FREEFLAG_TIMER flag when the timer is being destroyed
5254
5255         * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
5256         default it to 200; turn OPER_SET off by default
5257
5258         * ircd/engine_kqueue.c: dynamically allocate and reallocate the
5259         array of events to obtain from the kernel
5260
5261         * ircd/engine_devpoll.c: dynamically allocate and reallocate the
5262         array of events to obtain from the kernel
5263
5264         * include/ircd_features.h: add a new feature for tuning how many
5265         events to get from the kernel, for engines that support that
5266
5267         * ircd/Makefile.in: re-run make depend to correct dependancies
5268
5269         * ircd/m_who.c: remove unneeded inclusion of list.h
5270
5271         * ircd/ircd_events.c: remove unneeded inclusion of list.h
5272
5273         * ircd/whocmds.c (do_who): hide server name in /who unless
5274         requester is an operator; simplify hop count insertion
5275
5276         * ircd/s_misc.c (exit_one_client): make sure client's snomask is
5277         cleared
5278
5279         * ircd/parse.c: use mo_version and mo_admin when opers do /version
5280         or /admin
5281
5282         * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
5283         of the static string "*.undernet.org"
5284
5285         * ircd/m_version.c: only let ordinary users get version
5286         information for the server they are on
5287
5288         * ircd/m_admin.c: only let ordinary users get admin information
5289         for the server they are on
5290
5291         * ircd/channel.c (client_can_send_to_channel): check is_banned()
5292         before letting the client speak on a channel s/he is not on
5293
5294         * include/supported.h: add NETWORK to feature list
5295
5296         * include/handlers.h: declare mo_admin() and mo_version()
5297
5298 2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
5299
5300         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5301
5302         * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
5303         of !NDEBUG
5304
5305         * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
5306         !NDEBUG
5307
5308         * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
5309         !NDEBUG
5310
5311         * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
5312
5313         * ircd/Makefile.in: run make depend on chkconf.c as well
5314
5315         * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
5316         conditionalize on MDEBUG
5317
5318         * include/fda.h: instead of conditionalizing on !NDEBUG,
5319         conditionalize on MDEBUG
5320
5321         * configure: rebuild configure script
5322
5323         * configure.in: enable assertion checking by default, since we
5324         have now decoupled memory debugging from the NDEBUG macro
5325
5326         * ircd/s_user.c (set_nick_name): remove calls to
5327         verify_client_list()
5328
5329         * ircd/s_misc.c (exit_one_client): remove calls to
5330         verify_client_list()
5331
5332         * ircd/s_conf.c (rehash): remove calls to verify_client_list()
5333
5334         * ircd/m_who.c (m_who): remove calls to verify_client_list()
5335
5336         * ircd/list.c: remove calls to verify_client_list(); keep
5337         verify_client_list() around just in case we ever need it again,
5338         but never compile it in
5339
5340         * ircd/ircd_events.c (event_execute): remove calls to
5341         verify_client_list()
5342
5343         * ircd/client.c (client_get_ping): remove calls to
5344         verify_client_list()
5345
5346         * include/list.h (send_listinfo): remove temporary debugging
5347         function verify_client_list()
5348
5349         * ircd/uping.c: don't die if the event type is ET_ERROR in socket
5350         callback functions
5351
5352         * ircd/res.c (res_callback): don't die if the event type is
5353         ET_ERROR
5354
5355         * ircd/listener.c (accept_connection): don't die if the event type
5356         is ET_ERROR
5357
5358 2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
5359
5360         * ircd/s_user.c (set_nick_name): bracket call to
5361         add_client_to_list() with calls to verify_client_list()
5362
5363         * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
5364
5365         * ircd/list.c (verify_client_list): add a probabilistic loop
5366         detector: for every client added, there is a 2% probability that
5367         it will be used to replace the value of sentinel; if at any time,
5368         sentinel is found again, we know we're in a loop
5369
5370         * ircd/ircd_events.c (event_execute): add verify_client_list()
5371         calls wrapping event_execute; at the very least, I'll figure out
5372         what event the corruption occurred in
5373
5374         * ircd/list.c: moved verify_client_list() to try to keep it from
5375         being inlined
5376
5377         * ircd/Makefile.in (version.c): version.c wasn't dependant on
5378         version.h and patchlevel.h, like it was supposed to be
5379
5380         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5381
5382         * ircd/s_auth.c (destroy_auth_request): overload send_reports
5383         argument to also indicate whether or not to call
5384         release_auth_client() and thereby enter the client into the linked
5385         list
5386
5387         * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
5388
5389         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
5390
5391         * ircd/list.c (free_client): verify that destroy_auth_request()
5392         didn't automagically re-add us to the list; we might have to think
5393         about this interaction more carefully, actually
5394
5395         * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
5396         calling free_client(); otherwise, free_client() will try to free
5397         the auth by calling destroy_auth_request(), which will call
5398         add_client_to_list()
5399
5400         * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
5401         verify_client_list() around to catch any corruption that might
5402         occur here
5403
5404         * ircd/s_conf.c (rehash): liberally sprinkle calls to
5405         verify_client_list() here, since this is about the only routine I
5406         can think of that could cause the "core on kill -HUP" bug
5407
5408         * ircd/m_who.c: sprinkle calls to verify_client_list() around
5409         liberally, since we've seen crashes here; temporarily include the
5410         otherwise unneeded list.h header
5411
5412         * ircd/list.c: sprinkle calls to verify_client_list() around quite
5413         liberally; add debugging asserts to list manipulation functions to
5414         catch strange settings for next and prev pointers; define
5415         verify_client_list(), which walks the client list and verifies
5416         that everything is as it's supposed to be
5417
5418         * ircd/client.c: wrap client_get_ping with calls to
5419         verify_client_list() to see if that's where we're dying
5420
5421         * include/patchlevel.h (PATCHLEVEL): bump to 03
5422
5423         * include/list.h: declare verify_client_list() if DEBUGMODE
5424         enabled; otherwise, define it to be empty
5425
5426 2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
5427
5428         * ircd/m_quit.c (m_quit): remove an unused variable
5429
5430         * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
5431
5432         * ircd/s_user.c: when building the user mode to send to the user,
5433         don't include +r; add an extra set of parens to squelch a warning
5434
5435         * ircd/m_quit.c (m_quit): use exit_client_msg()
5436
5437         * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
5438         keep track of who's running what version
5439
5440         * ircd/m_squit.c (ms_squit): remove debugging calls to
5441         protocol_violation()
5442
5443         * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
5444         new gmake "feature" (pull-up from trunk)
5445
5446         * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
5447         from trunk)
5448
5449 2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
5450
5451         * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
5452         list of user modes; process account name as part of user mode in
5453         NICK decoding (set_nick_name()); add account name to usermode when
5454         building the usermode to incorporate in outgoing NICK messages
5455
5456         * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
5457         user is logged in to
5458
5459         * ircd/parse.c: define the new ACCOUNT command, usable only by
5460         servers and ignored by everything else
5461
5462         * ircd/m_whois.c: report what account name is associated with a
5463         user, if any
5464
5465         * ircd/m_account.c: implement the ACCOUNT command
5466
5467         * ircd/Makefile.in: add m_account.c to the list of sources; ran
5468         make depend
5469
5470         * include/struct.h: add an account field to struct User
5471
5472         * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
5473         what username a user is logged in under
5474
5475         * include/msg.h: add ACCOUNT command and token (AC)
5476
5477         * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
5478         the maximum length of a username for X
5479
5480         * include/handlers.h: add declaration for ms_account()
5481
5482         * include/client.h: add FLAGS_ACCOUNT to flag when a user account
5483         name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
5484         IsAccount() and SetAccount() to manipulate the flag
5485
5486         * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
5487         name like "Amsterdam2.NL.EU.undernet.org", we get the struct
5488         Client for the server with numeric "Am", which happens to be
5489         stockholm!  To fix this, we look up the full name *first*; if that
5490         doesn't get it, *then* we look up by numeric.
5491
5492 2001-12-24  Perry Lorier <isomer@coders.net>
5493         * ircd/m_server.c: cleanups, maybe this will make the bug easier
5494         to find.
5495
5496         * ircd/m_stats.c: display maximum number of connects in an I:
5497
5498 2001-11-22  Perry Lorier  <isomer@coders.net>
5499         * ircd/m_squit.c: Bug fix in squit
5500
5501 2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
5502         * ircd/parse.c, include/handlers.h: Give remote whois the correct
5503         handler.
5504         
5505 2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
5506
5507         * ircd/send.c: some minor white-space fiddling; recast selector
5508         test in sendwallto_group_butone() to remove a warning regarding
5509         putting & within parentheses
5510
5511         * ircd/m_create.c (ms_create): use time_t instead of int as a
5512         declaration for rate
5513
5514         * ircd/ircd_reply.c (protocol_violation): it's supposed to be
5515         WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
5516         wonder we weren't seeing any protocol violations!
5517
5518         * include/send.h: include time.h for time_t; move WALL_* closer to
5519         the function they're used in; some white-space fiddling; add
5520         declaration of sendto_opmask_butone_ratelimited()
5521
5522         * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
5523         cases where we ignore a squit, so we aren't taken by surprise, at
5524         least...
5525
5526         * ircd/m_create.c (ms_create): Display origin server, not origin
5527         user
5528
5529         * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
5530
5531 2001-10-31  Perry Lorier  <isomer@coders.net>
5532         * include/m_ping.c: Forward port ping bug
5533
5534 2001-10-31  Perry Lorier  <isomer@coders.net>
5535         * include/patchlevel.h: We're beta now
5536
5537 2001-10-31  Perry Lorier  <isomer@coders.net>
5538         * ircd/s_user.c: fixed hunt_server
5539
5540 2001-09-21  Perry Lorier  <isomer@coders.net>
5541         * ircd/send.c and various: replace sendcmdto_flag_butone with
5542         sendwallto_group_butone
5543
5544 2001-09-21  Vampire-  <unknown>
5545         * ircd/ircd_string.c: unique_name_vector round II.
5546
5547 2001-09-21  mbuna  <mbuna@undernet.org>
5548         * configure.in: Add support for darwin
5549
5550 2001-09-21  Perry Lorier  <isomer@coders.net>
5551         * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
5552
5553 2001-09-20  Perry Lorier  <isomer@coders.net>
5554
5555         * Pullups from 2.10.10.pl16
5556         * Added some warnings, and the concept of rate limited snotices
5557
5558 2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
5559
5560         * ircd/channel.c: use "%u" to format limit arguments; use
5561         strtoul() to process limit arguments in a /mode command--note:
5562         most clients seem to truncate the integer, probably because
5563         they're using atoi, and perhaps signed ints
5564
5565 2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
5566
5567         * ircd/numnicks.c: include stdlib.h for exit()
5568
5569         * ircd/ircd_log.c: include stdlib.h for exit()
5570
5571         * ircd/ircd_events.c: include stdlib.h for exit()
5572
5573         * ircd/s_stats.c: remove description of /stats v, since it's gone
5574
5575         * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
5576         /wallops to distinguish wallops from wallusers
5577
5578         * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
5579         in the "handshake" or "connecting" states--I think the latter will
5580         never happen, but...
5581
5582         * doc/Authors: apply delete's Authors patch
5583
5584         * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
5585         Braden's version
5586
5587         * README: rewrite README
5588
5589 2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
5590
5591         * ircd/s_serv.c (server_estab): remove unused variable split
5592
5593         * ircd/parse.c: add mr_error to the parse table
5594
5595         * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
5596         unregistered connections--if IsUserPort() is true, the ERROR is
5597         ignored, otherwise, the message is saved
5598
5599 2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
5600
5601         * ircd/m_kill.c (ms_kill): another minor typo *sigh*
5602
5603         * ircd/s_user.c (send_supported): oops, minor typo...
5604
5605         * ircd/s_user.c: implement send_supported() to send two ISUPPORT
5606         messages containing our feature buffers; make register_user() use
5607         send_supported()
5608
5609         * ircd/s_misc.c (exit_client): make sure not to give away a remote
5610         server in the ERROR message sent to the client; if the killer is a
5611         server, we substitute our name in its place
5612
5613         * ircd/m_version.c (m_version): use send_supported() to send the
5614         ISUPPORT values to the user
5615
5616         * ircd/m_nick.c: shave nick collision kills here a bit, too, for
5617         the same reasons as for m_kill.c
5618
5619         * ircd/m_kill.c: shave kills a bit so that the results look
5620         exactly the same no matter where you are; if we didn't do this, it
5621         would be possible to map the network by looking at the differences
5622         between kills originating under various circumstances
5623
5624         * include/supported.h: split the features into two, so as to not
5625         bust the parameter count when sending the features list
5626
5627         * include/s_user.h: declare new send_supported() function to send
5628         the ISUPPORT information
5629
5630 2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
5631
5632         * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
5633         source-routed spoofing attacks; this is only available under
5634         u2.10.11, so don't even bother, since no one but testers are using
5635         the source base
5636
5637 2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
5638
5639         * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
5640
5641         * ircd/s_err.c: put in a . for reporting link version on /trace,
5642         to match what /version does
5643
5644 2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
5645
5646         * ircd/s_misc.c (exit_client): servers don't understand what the
5647         numeric nick ERROR is supposed to mean, so they ignore error
5648         messages, resulting in not knowing why we were rejected; use
5649         sendcmdto_one for servers and sendrawto_one for clients
5650
5651 2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
5652
5653         * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
5654         a nick collide, a bare BURST may be propagated; adjust the
5655         enforced parameter count to accept the bare BURST
5656
5657 2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
5658
5659         * ircd/s_bsd.c: mark a client as having been IP checked
5660
5661         * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
5662         second call to SetIPChecked()
5663
5664 2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
5665
5666         * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
5667
5668         * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
5669
5670 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
5671
5672         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
5673         sections so that if neither is used, the declaration of buf will
5674         not elicit an "unused variable" warning under NetBSD
5675
5676         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
5677         on alpha)
5678
5679         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
5680         warnings on alpha)
5681
5682         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
5683         warnings on alpha)
5684
5685         * ircd/client.c: include string.h to declare memset (fix warnings
5686         on alpha)
5687
5688         * ircd/channel.c: remove unused functions next_overlapped_ban,
5689         del_banid, and is_deopped (fix warnings under -O1)
5690
5691         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
5692         warnings on alpha)
5693
5694 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
5695
5696         * ircd/s_user.c (set_user_mode): clear the snomask if the user
5697         isn't supposed to receive server notices anymore
5698
5699         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
5700
5701         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
5702         installation prefix; default devpoll and kqueue to on (they get
5703         turned off if the required headers aren't present)
5704
5705         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
5706         sprintf_irc(); it's a bit hackish, but it'll do for now
5707
5708         * ircd/support.c: remove unused #include
5709
5710         * ircd/send.c: remove unused #include
5711
5712         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
5713
5714         * ircd/s_serv.c: remove unused #include
5715
5716         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
5717         sprintf_irc() and friends
5718
5719         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
5720         ircd/s_err.c, which is the only other file to refer to it
5721
5722         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
5723         sprintf_irc()
5724
5725         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
5726         sprintf_irc()
5727
5728         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
5729
5730         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
5731
5732         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
5733
5734         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
5735
5736         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
5737
5738         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
5739
5740         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
5741         instead of sprintf_irc()
5742
5743         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
5744         make depend
5745
5746         * include/ircd_string.h: remove declaration of sprintf_irc() (what
5747         was it doing here anyway?)
5748
5749         * include/sprintf_irc.h: removed unneeded source file
5750
5751         * ircd/sprintf_irc.c: removed unneeded source file
5752
5753         * ircd/s_debug.c (count_memory): remove some dead code
5754
5755         * ircd/s_auth.c: remove some dead code
5756
5757         * ircd/res.c (update_list): remove some dead code
5758
5759         * ircd/m_whowas.c: remove some dead code
5760
5761         * ircd/m_whois.c: remove some dead code
5762
5763         * ircd/m_who.c: remove some dead code
5764
5765         * ircd/m_wallusers.c: remove some dead code
5766
5767         * ircd/m_wallops.c: remove some dead code
5768
5769         * ircd/m_wallchops.c: remove some dead code
5770
5771         * ircd/m_version.c: remove some dead code
5772
5773         * ircd/m_userip.c: remove some dead code
5774
5775         * ircd/m_userhost.c: remove some dead code
5776
5777         * ircd/m_uping.c: remove some dead code
5778
5779         * ircd/m_trace.c: remove some dead code
5780
5781         * ircd/m_topic.c: remove some dead code
5782
5783         * ircd/m_tmpl.c: remove some dead code
5784
5785         * ircd/m_time.c: remove some dead code
5786
5787         * ircd/m_squit.c: remove some dead code
5788
5789         * ircd/m_silence.c: remove some dead code
5790
5791         * ircd/m_settime.c: remove some dead code
5792
5793         * ircd/m_set.c: remove some dead code
5794
5795         * ircd/m_server.c: remove some dead code
5796
5797         * ircd/m_rpong.c: remove some dead code
5798
5799         * ircd/m_rping.c: remove some dead code
5800
5801         * ircd/m_restart.c: remove some dead code
5802
5803         * ircd/m_reset.c: remove some dead code
5804
5805         * ircd/m_rehash.c: remove some dead code
5806
5807         * ircd/m_quit.c: remove some dead code
5808
5809         * ircd/m_proto.c: remove some dead code
5810
5811         * ircd/m_privs.c: remove some dead code
5812
5813         * ircd/m_privmsg.c: remove some dead code
5814
5815         * ircd/m_pong.c: remove some dead code
5816
5817         * ircd/m_ping.c: remove some dead code
5818
5819         * ircd/m_pass.c: remove some dead code
5820
5821         * ircd/m_part.c: remove some dead code
5822
5823         * ircd/m_opmode.c: remove some dead code
5824
5825         * ircd/m_oper.c: remove some dead code
5826
5827         * ircd/m_notice.c: remove some dead code
5828
5829         * ircd/m_nick.c: remove some dead code
5830
5831         * ircd/m_map.c: remove some dead code
5832
5833         * ircd/m_lusers.c: remove some dead code
5834
5835         * ircd/m_list.c: remove some dead code
5836
5837         * ircd/m_links.c: remove some dead code
5838
5839         * ircd/m_kill.c: remove some dead code
5840
5841         * ircd/m_kick.c: remove some dead code
5842
5843         * ircd/m_jupe.c: remove some dead code
5844
5845         * ircd/m_join.c: remove some dead code
5846
5847         * ircd/m_ison.c: remove some dead code
5848
5849         * ircd/m_invite.c: remove some dead code
5850
5851         * ircd/m_info.c: remove some dead code
5852
5853         * ircd/m_help.c: remove some dead code
5854
5855         * ircd/m_gline.c: remove some dead code
5856
5857         * ircd/m_get.c: remove some dead code
5858
5859         * ircd/m_error.c: remove some dead code
5860
5861         * ircd/m_endburst.c: remove some dead code
5862
5863         * ircd/m_die.c: remove some dead code
5864
5865         * ircd/m_desynch.c: remove some dead code
5866
5867         * ircd/m_destruct.c: remove some dead code
5868
5869         * ircd/m_defaults.c: remove some dead code
5870
5871         * ircd/m_create.c: remove some dead code, along with an #if 1
5872
5873         * ircd/m_cprivmsg.c: remove some dead code
5874
5875         * ircd/m_connect.c: remove some dead code
5876
5877         * ircd/m_close.c: remove some dead code
5878
5879         * ircd/m_clearmode.c: remove some dead code
5880
5881         * ircd/m_burst.c: remove some dead code
5882
5883         * ircd/m_away.c: remove some dead code
5884
5885         * ircd/m_admin.c: remove some dead code
5886
5887         * ircd/listener.c (accept_connection): remove some dead code
5888
5889         * ircd/ircd_reply.c (need_more_params): remove some dead code
5890
5891         * ircd/channel.c (add_banid): remove some dead code
5892
5893         * include/support.h: remove some dead code
5894
5895         * include/querycmds.h: remove some dead code
5896
5897         * doc/readme.chroot: document how to do chroot operation
5898
5899 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
5900
5901         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
5902         force bin directory to be created if necessary prior to
5903         installation; run make depend
5904
5905         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
5906         the ${srcdir}
5907
5908         * Makefile.in: tune to detect Makefile.in changes in
5909         subdirectories and to create installation directory indicated by
5910         ${prefix}
5911
5912         * ircd/whocmds.c (count_users): routine to count the number of
5913         users matching a given user@host mask
5914
5915         * ircd/s_err.c: add error messages for ERR_LONGMASK,
5916         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
5917
5918         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
5919         from operators; only set GLINE_OPERFORCE flag if oper has the
5920         PRIV_WIDE_GLINE privilege
5921
5922         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
5923         maximum number of users a G-line can impact before it has to be
5924         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
5925         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
5926         operators to use ! to force a wide G-line to be set
5927
5928         * ircd/gline.c: make make_gline() be called with separate user and
5929         host arguments, and not call canon_userhost() directly; implement
5930         gline_checkmask() to verify that a host mask is acceptable; move
5931         BADCHAN check up in gline_add(), and check passed-in mask under
5932         certain circumstances for acceptability; fix call to
5933         sendto_opmask_butone() to handle separation of userhost into user
5934         and host in gline_add(); update call to make_gline()
5935
5936         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
5937         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
5938         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
5939
5940         * include/whocmds.h (count_users): declare routine to count users
5941         matching a given user@host mask
5942
5943         * include/numeric.h: added three new error returns: ERR_LONGMASK
5944         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
5945         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
5946         contains wildcards in the wrong places
5947
5948         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
5949         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
5950
5951         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
5952         to signal to gline_add() that the operator attempted to force the
5953         G-line to be set
5954
5955         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
5956
5957         * doc/readme.gline: update to document new "!" prefix to a G-line
5958         user@host mask
5959
5960         * doc/readme.features: document GLINEMAXUSERCOUNT,
5961         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
5962
5963         * doc/example.conf: update to mention new features along with
5964         their defaults
5965
5966 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
5967
5968         * doc/example.conf: updated example.conf from Braden
5969         <dbtem@yahoo.com>
5970
5971         * include/supported.h: forward-port from pl15
5972
5973 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
5974
5975         * ircd/whocmds.c: include ircd_policy.h and implement
5976         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
5977
5978         * ircd/m_whois.c: forward-port of the idle-time hiding code from
5979         pl15; this also required passing parc into do_whois(), which also
5980         meant passing parc into do_wilds()--*sigh*
5981
5982         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
5983         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
5984
5985 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
5986
5987         * tools/wrapper.c: add a wrapper program that can be used to
5988         adjust file descriptor limits and root directories; program must
5989         be run as root--NOT SETUID!--and given appropriate -u arguments
5990
5991         * doc/readme.log: documentation of how to configure logging
5992
5993         * doc/readme.features: documentation of each feature (except for
5994         logging)
5995
5996 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
5997
5998         * Makefile.in (config): add a deprecation notice with a pointer to
5999         tools/transition
6000
6001         * tools/transition: shell script to convert old compile-time
6002         options into new compile-time options and appropriate F-lines
6003
6004         * tools/mkchroot: shell-script to prepare the chroot area by
6005         copying over all the necessary libraries so they can be found
6006
6007 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
6008
6009         * INSTALL: partial update of INSTALL for u2.10.11 release...
6010
6011 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
6012
6013         * ircd/table_gen.c (makeTables): finally got tired of the
6014         "overflow in implicit conversion" warning, so just got rid of it
6015         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
6016         differences in the tables generated
6017
6018 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
6019
6020         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
6021         if a client is in the STAT_CONNECTING status
6022
6023 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
6024
6025         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
6026         into sendcmdto_one(); define new sendcmdto_prio_one(), which
6027         places the message into the priority queue
6028
6029         * ircd/s_user.c (hunt_server_prio_cmd): definition of
6030         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
6031         instead of sendcmdto_one()
6032
6033         * ircd/m_settime.c: use sendcmdto_prio_one() and
6034         hunt_server_prio_cmd() to send SETTIME
6035
6036         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
6037
6038         * include/send.h: removed declaration for unused vsendcmdto_one();
6039         added a declaration for sendcmdto_prio_one()
6040
6041         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
6042         sendcmdto_prio_one()
6043
6044         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
6045         put in the server's priority queue, too...
6046
6047         * ircd/ircd.c: don't check LPATH for accessibility at all
6048
6049 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
6050
6051         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
6052         command if we're configured as a hub; send individual server flags
6053         in SERVER commands
6054
6055         * ircd/s_bsd.c (completed_connection): send a +h flag in our
6056         SERVER command if we're configured as a hub
6057
6058         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
6059         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
6060         flag for a server; +hs sets both flags; also modify CMD_SERVER
6061         format string to send the flags
6062
6063         * include/client.h: define two new flags, FLAGS_HUB and
6064         FLAGS_SERVICE to mark services and hubs as such; define testing
6065         macros, setting macros
6066
6067         * ircd/s_user.c: remove deprecated struct Gline* argument to
6068         register_user(); remove GLINE rebroadcast; do not send GLINE
6069         acknowledgement parameter to NICK; do not look for GLINE
6070         acknowledgement parameter to NICK while parsing
6071
6072         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
6073         argument to server_estab(); do not send JUPE/GLINE acknowledgement
6074         parameters for SERVER or NICK
6075
6076         * ircd/m_user.c (m_user): remove deprecated argument to
6077         register_user()
6078
6079         * ircd/m_server.c: remove deprecated argument to server_estab();
6080         remove documentation comment regarding JUPE acknowledgement
6081         parameter to SERVER; remove JUPE rebroadcast
6082
6083         * ircd/m_pong.c (mr_pong): remove deprecated argument to
6084         register_user()
6085
6086         * ircd/m_nick.c: remove documentation comment regarding GLINE
6087         acknowledgement parameter to NICK
6088
6089         * ircd/jupe.c: use user's real name in JUPE server notices if
6090         HEAD_IN_SAND_SNOTICES is defined
6091
6092         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
6093         setuid code; correct ancient DEBUG vs DEBUGMODE typo
6094
6095         * ircd/gline.c: use user's real name in GLINE server notices if
6096         HEAD_IN_SAND_SNOTICES is defined
6097
6098         * ircd/channel.c (modebuf_flush_int): make apparent source be
6099         local server, not oper's server; use user's real name in hack
6100         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
6101
6102         * include/s_user.h: remove struct Gline pre-declaration; remove
6103         deprecated struct Gline argument from register_user()
6104
6105         * include/s_serv.h: remove struct Jupe pre-declaration; remove
6106         deprecated struct Jupe argument from server_estab()
6107
6108 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
6109
6110         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
6111         changes required to control remote stats
6112
6113         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
6114         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
6115         [forward-port from pl15]
6116
6117         * ircd/m_whowas.c (m_whowas): report server name only if requester
6118         is an operator [forward-port from pl15]
6119
6120         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
6121         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
6122         and obtain the report from the user's server [forward-port from
6123         pl15]
6124
6125         * ircd/m_who.c: add missing include for ircd_policy.h
6126         [forward-port from pl15]
6127
6128         * ircd/m_version.c (m_version): require oper access for remote
6129         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
6130
6131         * ircd/m_time.c (m_time): require oper access for remote /time if
6132         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
6133
6134         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
6135         missing semicolon [forward-port from pl15]
6136
6137         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
6138         kills [forward-port from pl15]
6139
6140         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
6141         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
6142
6143         * ircd/m_lusers.c (m_lusers): require oper access for remote
6144         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
6145
6146         * ircd/m_burst.c (ms_burst): server-added bans are stored using
6147         local server name, to hide remote server names; modes also are to
6148         originate from the local server [forward-port from pl15]
6149
6150         * ircd/m_admin.c (m_admin): require oper access for remote /admin
6151         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
6152
6153         * ircd/channel.c (add_banid): if a server is adding a ban, use my
6154         server name to hide the remote server's name [forward-port from
6155         pl15]
6156
6157         * ircd/Makefile.in: ran make depend
6158
6159         * include/s_stats.h: hunt_stats() has to have an extra argument to
6160         support the forward-port from pl15
6161
6162         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
6163         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
6164
6165         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
6166         forgot to check in the events branch
6167
6168 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
6169
6170         * ircd/res.c (init_resolver): don't start DNS expires with a 0
6171         relative timeout--if the server starts slow, timeouts could be
6172         messy...there's probably a better solution, but this'll do for now
6173
6174         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
6175         headers very well; include stropts.h; define an os_set_tos()
6176
6177         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
6178         os_generic.c
6179
6180         * ircd/ircd.c: if there are no C-lines, we don't want to have a
6181         timer that expires at the absolute time of 0--it kinda blocks all
6182         the other timers!
6183
6184         * ircd/engine_devpoll.c: some includes for open(); declare errcode
6185         and codesize in engine_loop()
6186
6187         * ircd/list.c (free_client): remove bogus check on timer active
6188         flag
6189
6190         * ircd/s_auth.c: pull out destruction code in
6191         auth_timeout_request() into an externally-visible
6192         destroy_auth_request(); manage cli_auth pointer in client
6193         structure; use it for an extra assertion check
6194
6195         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
6196         debugging notices to show flow when deallocating
6197         connections/clients; call destroy_auth_request() when free'ing a
6198         client that has an auth outstanding; don't free the connection if
6199         the process timer is unmarked but still active
6200
6201         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
6202         and reset it before calling the event handler for an ET_DESTROY
6203         event
6204
6205         * include/s_auth.h (destroy_auth_request): declare
6206         destroy_auth_request(), which can be used to destroy an
6207         outstanding auth request if a client socket goes away before the
6208         auth exchange is completed
6209
6210         * include/ircd_events.h: add an active flag to keep track of
6211         whether or not particular generators are active, for the
6212         convenience of functions using the API
6213
6214         * include/client.h: add a pointer for auth requests to struct
6215         Connection so we can kill outstanding auth requests if a client
6216         socket closes unexpectedly
6217
6218         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
6219         the sock or timer callback; take that into account in the assert
6220
6221         * ircd/list.c: add magic number checking and setting--magic
6222         numbers are zero'd on frees to detect double-frees; add back
6223         setting of cli_from() to 0 to break the back-link from the struct
6224         Connection (duh)
6225
6226         * ircd/ircd.c: set me's magic number correctly
6227
6228         * include/client.h: define magic numbers and accessor/verifier
6229         macros
6230
6231         * ircd/list.c: assert that dealloc_client() is called with
6232         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
6233         dealloc_client(); don't mess with cli_from(cptr)
6234
6235         * ircd/s_bsd.c: only attempt to dealloc a connection if the
6236         associated client has already been destroyed, or at least delinked
6237
6238 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
6239
6240         * ircd/list.c (free_client): only try to delete the socket when
6241         the fd hasn't already been closed, avoiding a double-free
6242
6243         * ircd/list.c (free_connection): make sure the client is really
6244         gone before doing away with the connection
6245
6246         * ircd/s_bsd.c: record that socket has been added in con_freeflag
6247         field; queue a socket_del() as soon as the socket is close()'d;
6248         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
6249         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
6250         then dealloc the connection if safe; mark socket as dead when
6251         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
6252         to client_timer_callback(); dealloc connection if safe upon
6253         ET_DESTROY event in client_timer_callback()
6254
6255         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
6256         the connection if both socket and timer have been destroyed;
6257         destroy both socket and timer explicitly and carefully
6258
6259         * include/client.h: replace the con_timer field with a
6260         con_freeflag field, to indicate what still needs freeing; define
6261         the freeflags
6262
6263         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
6264         become 0
6265
6266         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
6267         become 0
6268
6269         * ircd/s_bsd.c: add some extra assertions to try to track down a
6270         corruption problem
6271
6272         * ircd/engine_select.c (engine_loop): add an extra assert to try
6273         to track down a corruption problem
6274
6275         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
6276         track down a corruption problem
6277
6278         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
6279         to track down a corruption problem
6280
6281         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
6282         empty during processing; add an extra assert to try to track down
6283         a corruption problem
6284
6285         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
6286         entries
6287
6288 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
6289
6290         * ircd/s_bsd.c (client_sock_callback): client is no longer
6291         blocked, so we must mark it as unblocked
6292
6293         * ircd/engine_select.c: add Debug() calls galore; add handling for
6294         SS_NOTSOCK; use a dummy sock variable to keep things from
6295         disappearing on us; correct timeout calculation; update nfds for
6296         efficiency
6297
6298         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
6299         remove a spurious "if (sock)" which will always be true; update
6300         nfds for efficiency
6301
6302         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
6303         SS_NOTSOCK (just in case); correct timeout calculation
6304
6305         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
6306         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
6307
6308         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
6309         pretty-indent numbers
6310
6311         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
6312         case--it's not a socket; the check for writability is most likely
6313         not needed, but present for completeness
6314
6315 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
6316
6317         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
6318         no newline flag is set; call read_packet() when the timer expires,
6319         regardless of what's in the buffer--read_packet() should be able
6320         to deal properly
6321
6322         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
6323         sent to clients to include the client nickname (duh)
6324
6325         * ircd/ircd_events.c: don't destroy a timer if it's already marked
6326         for destruction; replace a missing ! in socket_del()
6327
6328         * ircd/engine_poll.c (engine_loop): reference a temporary variable
6329         so we don't have to worry about sockList[i] going away
6330
6331         * ircd/s_bsd.c (client_sock_callback): add Debug messages
6332
6333         * ircd/s_auth.c: add Debug messages all over the place
6334
6335         * ircd/ircd_events.c: add and edit some Debug messages; add a list
6336         of routines to convert some of the enums and flags from numbers
6337         into human-readable strings for the Debug messages
6338
6339         * ircd/engine_poll.c: hack some Debug messages to use the new name
6340         conversion routines in ircd_events.c; add an extra assert for a
6341         condition that shouldn't ever happen; apparently recv() can return
6342         EAGAIN when poll() returns readable--I wonder why...
6343
6344         * include/ircd_events.h: declare some helper routines under
6345         DEBUGMODE
6346
6347 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
6348
6349         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
6350         check
6351
6352         * ircd/s_auth.c: add more Debug messages
6353
6354         * ircd/list.c (make_client): add an extra assertion check
6355
6356         * ircd/ircd_events.c (socket_events): don't call the engine events
6357         changer if we haven't actually made any changes to the event mask
6358
6359         * ircd/uping.c: add some Debug messages
6360
6361         * ircd/s_stats.c: document new /STATS e
6362
6363         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
6364
6365         * ircd/s_bsd.c: remove static client_timer variable; in
6366         read_packet(), if there's still data in the client's recvQ after
6367         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
6368         of client_sock_callback to handle destroying the timer properly;
6369         rewrote client_timer_callback from scratch to be called on an
6370         individual client
6371
6372         * ircd/m_stats.c: add /STATS e to report the engine name
6373
6374         * ircd/list.c: deal with con_timer field in struct Connection
6375         properly; correct a core-level bug in remove_client_from_list--if
6376         the client is the only one in the list, we try to update
6377         GlobalClientList's cli_prev pointer--not good
6378
6379         * ircd/ircd.c: remove call to init_client_timer()
6380
6381         * ircd/engine_poll.c: made Debug messages more uniform by
6382         prepending "poll:" to them all; corrected an off-by-one error that
6383         caused poll_count to be 1 less than the actual count and removed
6384         my work-around; added Debug messages to indicate which socket is
6385         being checked and what the results are
6386
6387         * ircd/Makefile.in: ran a make depend
6388
6389         * include/s_bsd.h: remove init_client_timer(), since we're doing
6390         it differently now
6391
6392         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
6393         engine name
6394
6395         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
6396         reports for non-opers
6397
6398         * include/client.h: add con_timer and con_proc fields to struct
6399         Connection and define accessor macros--con_timer marks that
6400         con_proc contains a valid timer, and con_proc is used to pace user
6401         data
6402
6403         * ircd/s_bsd.c (close_connection): let free_client() destroy the
6404         socket
6405
6406         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
6407         auth has begun on a client
6408
6409         * ircd/ircd_events.c: ensure that event_execute() is called with a
6410         non-NULL event; modify event_add() macro to properly zero list
6411         bits; modify gen_dequeue() to not try to clip it out of a list
6412         it's already been clipped out of; change signal socket
6413         initialization to use state SS_NOTSOCK; permit timeout values of
6414         0 in add_timer(); add many Debug calls; change socket_del() and
6415         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
6416         timer_run() instead of GEN_DESTROY so that event_generate() will
6417         pass on the events; remove the switch and replace with a simpler
6418         if-then-else tree in timer_run(); don't allow destroyed sockets to
6419         be destroyed again, nor their states or event masks to be changed
6420
6421         * ircd/ircd.c: initialize "running" to 1
6422
6423         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
6424         messages all over the place; fix a counting problem in
6425         engine_add(); turn wait into a signed integer and set it to -1
6426         only if timer_next() returns 0; adjust wait time to be relative;
6427         don't call gen_ref_dec() if socket disappeared while we were
6428         processing it
6429
6430         * include/ircd_events.h: the pipe for signals is not a socket, so
6431         we must mark it as such--added SS_NOTSOCK for that special socket;
6432         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
6433         for the benefit of timer_run()
6434
6435         * configure.in: add --enable-pedantic and --enable-warnings to
6436         turn on (and off) -Wall -pedantic in CFLAGS
6437
6438 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
6439
6440         * ircd/s_conf.c: change "s_addr" element accesses to "address"
6441         element accesses
6442
6443         * include/s_conf.h: on some systems, "s_addr" is a macro; use
6444         "address" instead
6445
6446 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
6447
6448         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
6449         void in this file; add a missing semi-colon; declare errcode,
6450         codesize
6451
6452         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
6453
6454         * ircd/s_user.c (register_user): comment out spurious reference to
6455         nextping
6456
6457         * ircd/s_serv.c (server_estab): comment out spurious reference to
6458         nextping
6459
6460         * ircd/s_conf.c (read_configuration_file): comment out spurious
6461         reference to nextping and nextconnect
6462
6463         * ircd/s_bsd.c: comment out some spurious references to formerly
6464         global (now non-existant) variables; correct a couple of typos
6465
6466         * ircd/s_auth.c: pre-declare some functions referenced in the
6467         callback; correct a typo
6468
6469         * ircd/res.c (start_resolver): pass errno value of ENFILE
6470
6471         * ircd/listener.c (accept_connection): you know your API is messed
6472         up when...variables that shouldn't have been global crop up in
6473         other files
6474
6475         * ircd/list.c (free_client): substitution of == for =
6476
6477         * ircd/ircd_signal.c: include assert.h for assertion checking;
6478         check ev_data() to find out what signal generated event
6479
6480         * ircd/ircd_events.c: some references to the variable "timer"
6481         should have been references to the variable "ptr"
6482
6483         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
6484         ev_timer(ev) is already a timer pointer; declare codesize as a
6485         size_t to correct signedness issue; use timer_next(), not
6486         time_next()
6487
6488         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
6489         select fd out of struct pollfd in assertion checking; declare
6490         errcode and codesize; use timer_next(), not time_next()
6491
6492         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
6493         use function timer_next(), not time_next()
6494
6495         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
6496         use function timer_next(), not time_next()
6497
6498         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
6499         compiled sources; do make depend
6500
6501         * include/list.h: pre-declare struct Connection
6502
6503         * include/ircd_events.h (gen_ref_inc): cast to the right structure
6504         name
6505
6506         * include/s_auth.h: duh; missing */
6507
6508 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
6509
6510         * ircd/send.c: update write events status after sending data or
6511         accumulating data to be sent
6512
6513         * ircd/m_list.c (m_list): update write events status after
6514         canceling a running /list
6515
6516         * ircd/channel.c (list_next_channels): update write events status
6517         after listing a few channels
6518
6519         * ircd/s_bsd.c: extensive changes to update to new events model;
6520         remove on_write_unblocked() and the two implementations of
6521         read_message(), which have been deprecated by this change
6522
6523         * ircd/s_auth.c: set the socket events we're interested in for
6524         clients; simplify some logic that does the connect_nonb followed
6525         by the socket_add
6526
6527         * ircd/list.c: define free_connection() to free a connection
6528         that's become freeable once the struct Socket has been
6529         deallocated; fix up free_client() to take this new behavior into
6530         account
6531
6532         * ircd/ircd.c: call init_client_timer()
6533
6534         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
6535         to register connect-in-progress with events system; declare
6536         init_client_timer() (HACK!) to preserve rate-limiting behavior
6537
6538         * include/list.h: declare new free_connection()
6539
6540         * include/client.h: add a struct Socket to struct Connection
6541
6542 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
6543
6544         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
6545         SIGTERM into event callbacks; perform the actions in the
6546         callbacks, since they're not called in the context of the signal;
6547         set up the signal callbacks in the event engine
6548
6549         * ircd/ircd_events.c (signal_callback): we're supposed to look for
6550         a specific signal; don't generate an event if there is no signal
6551         structure for it
6552
6553         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
6554         connect_timer and ping_timer; massage try_connections() and
6555         check_pings() into timer callbacks that re-add themselves at the
6556         right time; remove ircd.c's "event_loop()"; initialize the event
6557         system and the connect_timer and ping_timer
6558
6559         * ircd/uping.c: correct a couple more typos
6560
6561         * ircd/s_auth.c: rework to use new events system
6562
6563         * ircd/os_solaris.c (os_connect_nonb): update to new interface
6564
6565         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
6566
6567         * ircd/os_linux.c (os_connect_nonb): update to new interface
6568
6569         * ircd/os_generic.c (os_connect_nonb): update to new interface
6570
6571         * ircd/os_bsd.c (os_connect_nonb): update to new interface
6572
6573         * include/s_auth.h: remove deprecated members of struct
6574         AuthRequest, replacing them with struct Socket and struct Timer
6575         structures; add flags to indicate when these structures have been
6576         released by the event system; remove the deprecated
6577         timeout_auth_queries()
6578
6579         * include/ircd_osdep.h (os_connect_nonb): connect could complete
6580         immediately, so change the interface to handle that possibility
6581
6582         * ircd/uping.c (uping_server): noticed and corrected a typo
6583
6584         * ircd/listener.c: set up to use ircd_event's struct Socket by
6585         adding an socket_add() call to inetport(), replacing
6586         free_listener() with socket_del() in close_listener(), and
6587         reworking accept_connection to be called as the callback
6588
6589         * ircd/ircd.c: add a call to IPcheck_init()
6590
6591         * ircd/IPcheck.c: remove IPcheck_expire(); rework
6592         ip_registry_expire() to be called from a timer; write
6593         IPcheck_init() to set up the expiration timer (hard-coded for a
6594         60-second expiration time)
6595
6596         * include/listener.h: add a struct Socket to the struct Listener;
6597         remove accept_connection()
6598
6599         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
6600
6601 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
6602
6603         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
6604         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
6605
6606         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
6607         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
6608
6609         * ircd/engine_poll.c: include config.h
6610
6611         * ircd/engine_kqueue.c: include config.h
6612
6613         * ircd/engine_devpoll.c: include config.h
6614
6615         * ircd/Makefile.in: include engine sources in compilation and make
6616         depend steps
6617
6618         * configure.in: add checks for enabling the /dev/poll- and
6619         kqueue-based engines
6620
6621         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
6622
6623         * ircd/Makefile.in: work in the engine sources
6624
6625 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
6626
6627         * ircd/m_settime.c: include ircd_snprintf.h
6628
6629         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
6630         parens around a construct that had both || and &&
6631
6632         * ircd/chkconf.c: #include "config.h" to get some important
6633         definitions
6634
6635         * ircd/Makefile.in: revamp ircd makefile for new build system
6636
6637         * doc/Makefile.in: revamp doc makefile for new build system
6638
6639         * config/*: Removed old build system files
6640
6641         * stamp-h.in: a stamp file
6642
6643         * install-sh: install-sh for new build system
6644
6645         * configure.in: configure.in for new build system
6646
6647         * configure: configure script for new build system (built by
6648         autoconf)
6649
6650         * config.sub: config.sub for new build system
6651
6652         * config.h.in: config.h.in for new build system (built by
6653         autoheader)
6654
6655         * config.guess: config.guess for new build system
6656
6657         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
6658         1.4)
6659
6660         * acinclude.m4: aclocal.m4 macros for new build system
6661
6662         * acconfig.h: config.h skeleton for new build system
6663
6664         * Makefile.in: modify for new build system
6665
6666 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
6667
6668         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
6669
6670         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
6671
6672         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
6673
6674 2001-05-01  Perry Lorier       <Isomer@coders.net>
6675         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
6676         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
6677                 when you have far far too many sockets in use.
6678         * {include,ircd}/iauth.c: A start on iauth support.
6679
6680 2001-05-01  Perry Lorier       <Isomer@coders.net>
6681         * ircd/s_err.c: Suggested wording change.
6682         * ircd/s_user.c: Users aren't target limited against +k users.
6683         * ircd/chkconf.c: Made it compile again, who knows if it works, but
6684                 now I can at least make install
6685         * various: Cleanups on m_*.c files.
6686
6687
6688 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
6689
6690         * ircd/s_misc.c (exit_client): make netsplit server notice say the
6691         right thing
6692
6693         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
6694         change to make Khaled happy...
6695
6696         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
6697         (do_whois): duh...
6698
6699 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
6700
6701         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
6702         turned up no more bugs
6703
6704         * ircd/ircd.c: use /* */ comments instead of // comments--all the
6705         world's not gcc :(
6706
6707         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
6708         // comments--all the world's not gcc :(
6709
6710         * ircd/runmalloc.c: finally garbage-collect unused file
6711
6712         * include/runmalloc.h: finally garbage-collect unused file
6713
6714         * ircd/<multiple files>: addition of '#include "config.h"' before
6715         all other includes in most .c files
6716
6717         * include/<multiple files>: remove includes of config.h, which are
6718         now going into the raw .c files
6719
6720 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
6721
6722         * ircd/m_whois.c (do_whois): display proper server name if the
6723         user is looking up himself
6724
6725         * ircd/m_who.c (m_who): disable match by servername or display of
6726         server names by non-opers
6727
6728         * include/ircd_policy.h: add define for
6729         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
6730         of CFV 165
6731
6732 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
6733
6734         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
6735         when we do a /stats k
6736
6737         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
6738         users from turning on +s and +g
6739
6740         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
6741         net.split notice
6742
6743         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
6744         /map for users
6745
6746         * ircd/m_whois.c (do_whois): pull-up of server name masking for
6747         /whois
6748
6749         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
6750         functions, pull-up
6751
6752         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
6753
6754         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
6755
6756         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
6757
6758         * ircd/channel.c (channel_modes): pull-up of channel key display
6759         as *
6760
6761         * include/ircd_policy.h: pull-up of ircd_policy.h
6762
6763         * include/client.h: pull-up of Set/ClearServNotice()
6764
6765         * ircd/gline.c (do_gline): report client name in G-line message
6766         (pull-up)
6767
6768         * ircd/s_user.c (register_user): pull-up--show IP address in some
6769         server notices dealing only with users; report which connection
6770         class has filled up
6771
6772         * ircd/s_stats.c (report_deny_list): use conf->flags &
6773         DENY_FLAGS_IP insteaf of conf->ip_kill
6774
6775         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
6776         insteaf of conf->ip_kill
6777
6778         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
6779         K-line by real name
6780
6781         * include/s_conf.h: use a flags field in struct DenyConf; define
6782         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
6783         pull-up of K-line by real name
6784
6785         * ircd/m_trace.c: pull-up of IP show for user connections
6786
6787         * doc/example.conf: pull-up of the realname K-line documentation
6788
6789         * ircd/ircd.c: forward port of pid file advisory locking mechanism
6790
6791 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
6792
6793         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
6794         all servers, rather than to only servers that have +w/+g/whatever
6795         users on them; among other things, this removes that atrocity
6796         known as sentalong[] from this function
6797
6798         * ircd/m_admin.c: must include ircd.h to declare "me"; must
6799         include hash.h to declare FindUser()
6800
6801         * ircd/m_wallusers.c: implementation of WALLUSERS
6802
6803         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
6804
6805         * ircd/m_wallops.c: only send WALLOPS to opers
6806
6807         * ircd/parse.c: add WALLUSERS command to parser table
6808
6809         * include/handlers.h: declare wallusers handlers
6810
6811         * include/msg.h: add WALLUSERS command
6812
6813         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
6814         flag, send only to appropriate opers
6815
6816 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
6817
6818         * ircd/uping.c: refit to use the new events interface
6819
6820         * ircd/res.c: refit to use the new events interface
6821
6822         * ircd/ircd_events.c: create timer_chg(), which permits a
6823         (non-periodic) timer's expire time to be modified; change the
6824         logic in timer_run() so that timers that were re-added while the
6825         event was being processed will not be destroyed prematurely
6826
6827         * include/uping.h: include the events header, declare some extra
6828         fields in struct UPing, remove timeout value, and define some
6829         flags for marking which cleanup items have yet to be done
6830
6831         * include/ircd_events.h: add a prototype for timer_chg() to change
6832         the expire time of a running timer
6833
6834 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
6835         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
6836         
6837 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
6838
6839         * config/configure.in: Add check for OpenBSD
6840
6841         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
6842         differs from generic BSD, particularly in its handling of
6843         _XOPEN_SOURCE.
6844         
6845 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
6846
6847         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
6848         have been added by a U-lined server, rather than going through the
6849         activate/deactivate logic; propagate G-line removals by U-lined
6850         servers as well
6851
6852         * ircd/gline.c: rename propagate_gline() to gline_propagate();
6853         make gline_propagate() return an int 0 (convenience return); only
6854         update lastmod in gline_activate() and gline_deactivate() if the
6855         current lastmod is non-zero, since 0 lastmod is our flag of a
6856         U-lined server having added a G-line
6857
6858         * include/gline.h (gline_propagate): exporting the G-line
6859         propagation function
6860
6861         * ircd/m_list.c (m_list): duh; permit explicit channel name
6862         specification only when /list gets two arguments ("Kev
6863         #wasteland") rather than when /list gets more than two
6864         arguments--nice braino
6865
6866 2001-01-29  Thomas Helvey <twhelvey1@home.com>
6867
6868         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
6869         unregistered clients to spam opers with protocol violation
6870         messages. Note: the bugfix may have eliminated some useful
6871         protocol violation messages.
6872         Please send protocol violation messages explicitly from the
6873         functions they are discovered in, you have much better context
6874         for the error there and it helps to document the behavior of the
6875         server. This was also a design bug in that it violated the
6876         "A function should do one thing" heuristic. Patching this one
6877         would have resulted in a continuous spawning of other bugs over
6878         the next 3 years, so I killed it. Check around for stuff this
6879         broke and readd the calls to protocol_violation in the functions
6880         that need to send the message.
6881
6882 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
6883
6884         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
6885         already existed, then the logic would (attempt to) skip it, but
6886         would not free the ban string; now the ban string is free'd and
6887         the ban count is decremented, releasing the ban for use
6888
6889         * ircd/s_user.c: make send_umode_out() take a prop argument
6890         instead of testing for the PRIV_PROPAGATE privilege itself; fix
6891         set_umode() to use this new argument, calculating it before
6892         calculating the new privileges for a -o'd user
6893
6894         * ircd/m_oper.c (m_oper): pass the new prop argument to
6895         send_umode_out()
6896
6897         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
6898         that we're not actually going to add because they already exist;
6899         test that particular bit before adding to the linked list
6900
6901         * include/s_user.h: add a prop argument to send_umode_out() to
6902         indicate whether or not to propagate the user mode
6903
6904 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
6905
6906         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
6907         it would have written; upper-bound the number to prevent overflows
6908         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
6909         into account the fact that ircd_vsnprintf() already takes the
6910         terminal \0 into account
6911
6912 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
6913
6914         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
6915         down an apparent buffer overflow; remove msgq_map(), since it's no
6916         longer used anywhere; slight tweaks to prevent off-by-one errors,
6917         but these can't explain the problems we've seen
6918
6919         * include/msgq.h: remove msgq_map(), since it's no longer used
6920         anywhere
6921
6922 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
6923
6924         * ircd/s_user.c (set_nick_name): call client_set_privs() after
6925         parsing user modes
6926
6927 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
6928
6929         * ircd/s_bsd.c (read_message): fix a typo in the select version of
6930         read_message()
6931
6932         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
6933         its argument to be an lvalue, which means we can't use
6934         whowas_clean()'s handy-dandy "return ww" feature
6935
6936         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
6937
6938 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
6939
6940         * ircd/ircd_events.c (timer_run): it's possible that the timer got
6941         deleted during the callback processing, so don't go to the bother
6942         of requeuing it if the destroy flag is set
6943
6944         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
6945         out of config.h if this is a *BSD; include errno.h (oops);
6946         decrement error count after an hour using a timer; use FD_SETSIZE
6947         constant instead of IRCD_FD_SETSIZE constant; fill in event
6948         processing code
6949
6950         * ircd/engine_poll.c: include errno.h (oops); decrement error
6951         count after an hour using a timer; fill in event processing code
6952
6953         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
6954         count after an hour using a timer; assert events filter is either
6955         EVFILT_READ or EVFILT_WRITE; fill in event processing code
6956
6957         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
6958         count after an hour using a timer; fill in event processing code
6959
6960 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
6961
6962         * ircd/client.c: fixed feattab; basically, when I changed features
6963         to use small integers specifying bit positions, instead of the
6964         bits themselves, I forgot to update feattab to not | these
6965         privileges together; also fixed a bug in the antiprivs masking
6966         loop in client_set_privs()--last index wouldn't get parsed
6967
6968 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
6969
6970         * ircd/ircd_events.c: call event_generate() with new data
6971         argument; make it set that field in struct Event; make
6972         socket_add() return the value of the eng_add callback
6973
6974         * ircd/engine_select.c: make engine_add() return a
6975         successful/unsuccessful status; add bounds-checking outside of an
6976         assert; use accessor macros; use log_write(), not the deprecated
6977         ircd_log(); add an assert to engine_loop() to double-check for
6978         data structure corruption
6979
6980         * ircd/engine_poll.c: make engine_add() return a
6981         successful/unsuccessful status; add bounds-checking outside of an
6982         assert; use accessor macros; use log_write(), not the deprecated
6983         ircd_log(); add an assert to engine_loop() to double-check for
6984         data structure corruption
6985
6986         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
6987
6988         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
6989
6990         * include/ircd_events.h: define some accessor macros; add ev_data
6991         to struct Event for certain important data--errno values, for
6992         instance; make EngineAdd callback tell us if it was successful or
6993         not; add extra argument to event_generate(); make socket_add()
6994         return the status from EngineAdd
6995
6996 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
6997
6998         * ircd/ircd_events.c: pass initializer information about how many
6999         total _filedescriptors_ may be opened at once
7000
7001         * ircd/ircd.c: use exported "running" instead of unexported
7002         thisServer.running
7003
7004         * ircd/engine_select.c: implementation of an event engine based on
7005         select()
7006
7007         * ircd/engine_poll.c: implementation of an event engine based on
7008         poll()
7009
7010         * include/ircd_events.h: pass the engine initializer an integer
7011         specifing how many _filedescriptors_ may be opened at once
7012
7013         * include/ircd.h: running has to be exported for the engine_*
7014         event loops
7015
7016 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
7017
7018         * ircd/ircd_events.c: include some needed headers; add some
7019         comments; make evEngines[] const; bundle sig_sock and sig_fd into
7020         a struct named sigInfo; rework struct evInfo to have a queue of
7021         _generators_, and only when threaded; added a gen_init() function
7022         to centralize generator initialization; fix various compile-time
7023         errors; rework event_add() for new queueing scheme and checked for
7024         compile-time errors; add casts where needed; spell evEngines[]
7025         correctly; make engine_name() return const char*
7026
7027         * include/ircd_events.h: type EventCallBack depends on struct
7028         Event, so pre-declare it; put _event_ queue into generators, and
7029         only when threaded; give engine data a union to store both ints
7030         and pointers; make engine name a const; fix gen_ref_dec() macro;
7031         make engine_name() return a const char*
7032
7033         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
7034         down with the non-static functions; modify event_execute() to use
7035         the new gen_ref_dec() to simplify code; make sure event_generate()
7036         does not generate new events for generators marked for destruction
7037
7038         * include/ircd_events.h: the engines, at least, may need to modify
7039         reference counts to keep generators from going away while
7040         something still points at them, so add reference counter
7041         manipulators and export gen_dequeue() for them
7042
7043         * ircd/ircd_events.c: set up the list of engines to try; set up
7044         the signal struct Socket; rename netInfo to evInfo; move static
7045         functions near the beginning of the file; do away with
7046         signal_signal() (since we no longer keep a signal count ourselves)
7047         and call event_generate() directly from signal_callback--also
7048         renamed some functions; allow signal_callback() to read up to
7049         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
7050         initialize the entire event system; add event_loop() to call the
7051         engine's event loop; initialize new struct GenHeader member,
7052         gh_engdata; remove timer_next(); add socket_add() function to add
7053         a socket; add socket_del() to mark a socket for deletion; add
7054         socket_state() to transition a socket between states; add
7055         socket_events() to set what events we're interested in on the
7056         socket; add engine_name() to retrieve event engine's name
7057
7058         * include/ircd_events.h: add engine data field to struct
7059         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
7060         note about states vs s_events; remove signal count; fold union
7061         Generator back into struct Event; remove count members from struct
7062         Generators; redefine engine callbacks to not take a struct
7063         Engine*; add explanatory comments to callback definitions; add
7064         some engine callbacks to handle operations; remove struct Engine
7065         flag member--can detect single flag from eng_signal member; add
7066         event_init(), event_loop(), engine_name(), and the socket_*()
7067         functions; make timer_next() a macro to avoid a function call
7068
7069 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
7070
7071         * include/ircd_events.h: rename to ircd_events.h, since it handles
7072         events, not just networking stuff; add signal support; more
7073         structural rearrangement
7074
7075         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
7076         events, not just networking stuff; add signal support; more
7077         structural rearrangement
7078
7079 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
7080
7081         * ircd/ircd_network.c: implement timer API; add reference counts
7082         appropriately
7083
7084         * include/ircd_network.h: firm up some pieces of the interface;
7085         split out members everything has into a separate structure; add
7086         reference counts; add timer API
7087
7088 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
7089
7090         * ircd/ircd_network.c: static data and event manipulation
7091         functions for new event processing system
7092
7093         * include/ircd_network.h: data structures for new event processing
7094         system
7095
7096 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
7097
7098         * ircd/whowas.c: Completely re-did the old allocation scheme by
7099         turning it into a linked list, permitting the
7100         NICKNAMEHISTORYLENGTH feature to be changed on the fly
7101
7102         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
7103         feature instead of old #define
7104
7105         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
7106         integer feature with a notify callback (whowas_realloc)
7107
7108         * ircd/client.c (client_set_privs): second memset was supposed to
7109         be over antiprivs, not privs; thanks, Chris Behrens
7110         <cbehrens@xo.com> for pointing that out...
7111
7112         * include/whowas.h: new elements for an extra linked list in
7113         struct Whowas; a notify function for feature value changes
7114
7115         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
7116
7117         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
7118
7119 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
7120
7121         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
7122         compile-time option--now in features subsystem
7123
7124         * ircd/motd.c (motd_init): rework motd_init() to be called as the
7125         notify function for MPATH and RPATH features (should probably
7126         split it up a bit, though...)
7127
7128         * ircd/m_privs.c (mo_privs): if called with no parameters, return
7129         privs of the caller, rather than an error
7130
7131         * ircd/m_list.c: pull usage message into its own function; pull
7132         list parameter processing into its own function that does not
7133         modify the contents of the parameter; add list_set_default() to
7134         set the default list parameter (uses the notify hook); rework
7135         m_list() to make use of these functions; removed dead code
7136
7137         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
7138         we have no notify handler
7139
7140         * ircd/ircd_features.c: add notify callback for notification of
7141         value changes; give mark callback an int return value to indicate
7142         whether or not to call the notify callback; fix up feature macros
7143         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
7144         string handling in feature_set() to deal with def_str being a null
7145         pointer; wrote feature_init() to set up all defaults appropriately
7146
7147         * ircd/ircd.c (main): call feature_init() instead of
7148         feature_mark(), to avoid calling notify functions while setting up
7149         defaults
7150
7151         * ircd/client.c: updated to deal with new privileges structure
7152
7153         * ircd/class.c: updated so init_class() can be called should one
7154         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
7155         DEFAULTMAXSENDQLENGTH be changed
7156
7157         * include/ircd_log.h: log_feature_mark() updated to fit with new
7158         API changes
7159
7160         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
7161         feature_init() function (found necessary since adding the notify
7162         stuff and notifying motd.c during start-up...before we defined
7163         RPATH!)
7164
7165         * include/client.h: move privs around to enable addition of more
7166         bits if necessary; based on the FD_* macros
7167
7168         * include/channel.h: declare list_set_default (actually located in
7169         m_list.c *blanche*)
7170
7171         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
7172         AVBANLEN*MAXSILES) from features subsystem
7173
7174         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
7175         anything anymore
7176
7177         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
7178         the features subsystem
7179
7180         * ircd/s_auth.c (start_auth): NODNS migrated to the features
7181         subsystem
7182
7183         * ircd/random.c: created random_seed_set() function to set seed
7184         value, along with some stuff to make ircrandom() a little more
7185         random--state preserving, xor of time instead of direct usage,
7186         etc.; it's still a pseudo-random number generator, though, and
7187         hopefully I haven't broken the randomness
7188
7189         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
7190
7191         * ircd/m_join.c: use features interface to retrieve
7192         MAXCHANNELSPERUSER
7193
7194         * ircd/ircd_features.c: add NODISP flag for super-secret features;
7195         add a whole bunch of new features migrated over from make config
7196
7197         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
7198         CONNECTTIMEOUT, and TIMESEC
7199
7200         * ircd/client.c (client_get_ping): use features interface to
7201         retrieve PINGFREQUENCY
7202
7203         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
7204         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
7205
7206         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
7207         features subsystem, we have to add something explicit
7208
7209         * ircd/channel.c: use features interface to retrieve
7210         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
7211         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
7212         and AVBANLEN
7213
7214         * ircd/Makefile.in: run make depend
7215
7216         * include/supported.h (FEATURESVALUES): update to reference
7217         feature settings
7218
7219         * include/random.h: add prototype for random_seed_set
7220
7221         * include/ircd_features.h: add several more features
7222
7223         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
7224         subsystem
7225
7226         * config/config-sh.in: feature-ized some more stuff
7227
7228         * include/motd.h: some new elements in motd.h for motd.c changes
7229
7230         * ircd/motd.c: motd_cache() now searches a list of already cached
7231         MOTD files; saves us from having duplicate caches in memory if
7232         there are two identical T-lines for two different sites...
7233
7234 2001-01-02  Perry Lorier <isomer@coders.net>
7235         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
7236         Amarande.
7237
7238 2001-01-02  Perry Lorier <isomer@coders.net>
7239         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
7240         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
7241                 to guppy for noticing, and hektik for providing the fix.
7242         * misc others: Minor cleanups, added more protocol_violations, ripped
7243                 out more P09 stuffs, bit more protocol neg stuff.
7244
7245 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
7246
7247         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
7248         space (*sigh* stupid clients...)
7249
7250         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
7251         ircd_features.[ch]
7252
7253         * ircd/s_err.c: get rid of GODMODE conditionals
7254
7255         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
7256         calls into the features subsystem for various serveropts
7257         characters
7258
7259         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
7260
7261         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
7262         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
7263         NOFLOWCONTROL conditional
7264
7265         * ircd/s_auth.c: use features subsystem to determine value of
7266         KILL_IPMISMATCH
7267
7268         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
7269         features subsystem to determine the setting of IDLE_FROM_MSG
7270
7271         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
7272
7273         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
7274         use features subsystem to get motd file names
7275
7276         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
7277         subsystem
7278
7279         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
7280         us no good; use features subsystem to figure out if we need to do
7281         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
7282         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
7283         features subsystem
7284
7285         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
7286
7287         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
7288         subsystem
7289
7290         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
7291
7292         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
7293         from getting marked if they were already set to something...
7294
7295         * ircd/ircd_features.c: add a flag to indicates read-only access;
7296         add several new features that used to be compile-time selected
7297
7298         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
7299         access to motd files (what the heck?); make sure to initialize the
7300         feature subsystem before trying to write the config file
7301
7302         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
7303         use feature_bool() to figure out if we're using the FERGUSON
7304         flusher
7305
7306         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
7307         remove the clause that creates empty files of that name; also ran
7308         make depend
7309
7310         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
7311         there is no easy way to bounds-check it at present
7312
7313         * include/querycmds.h: make sure ircd_features.h is included; use
7314         feature_str(FEAT_DOMAINNAME) in calls to match()
7315
7316         * include/ircd_features.h: many new features that used to be
7317         compile-time selected
7318
7319         * config/config-sh.in: add * to DOMAINNAME; try also using first
7320         argument to search in /etc/resolv.conf; removed many compile-time
7321         options that now can be configured through the features system
7322
7323 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
7324
7325         * doc/api/log.txt: how to use the logging API
7326
7327         * doc/api/features.txt: how to use the features API
7328
7329         * doc/api/api.txt: how to write API documentation
7330
7331         * include/ircd_features.h: rearranged a couple of features for
7332         neatness purposes
7333
7334         * ircd/ircd_features.c: cleaned up the macros some; rearranged
7335         some code to all go into the switch; rearranged a couple of
7336         features for neatness purposes
7337
7338 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7339         * ircd/os_bsd.c: Added os_set_tos for BSD users.
7340
7341 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
7342
7343         * ircd/ircd_features.c: Isomer almost got it right; you need to
7344         use F_I(), since it's an integer value, not a boolean value.  The
7345         asserts in feature_int would catch you out...  Also made the F_*
7346         macros take flags
7347
7348         * ircd/s_err.c: define RPL_PRIVS reply
7349
7350         * ircd/parse.c: put new PRIVS command into command table
7351
7352         * ircd/m_privs.c (mo_privs): message handler to report operator
7353         privileges
7354
7355         * ircd/ircd_features.c: declare new features OPER_SET and
7356         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
7357         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
7358
7359         * ircd/client.c: simplify client_set_privs() with a table that
7360         defines what features to test for; add new client_report_privs()
7361
7362         * ircd/Makefile.in: compile new m_privs.c; run make depend
7363
7364         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
7365         an operator's privileges
7366
7367         * include/msg.h: define new command: PRIVS
7368
7369         * include/ircd_features.h: create new features OPER_SET and
7370         LOCOP_SET for controlling access to /set
7371
7372         * include/handlers.h (mo_privs): declare message handler for
7373         reporting oper privileges
7374
7375         * include/client.h (client_report_privs): declare function to
7376         report what privileges an oper has
7377
7378         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
7379         report that a user is an oper if the oper doing the /whois had
7380         PRIV_SEE_OPERS
7381
7382 2000-12-17  Isomer <Isomer@coders.net>
7383         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
7384
7385 2000-12-17  Isomer <Isomer@coders.net>
7386         * ircd/os_linux.c: add TOS stuffs
7387
7388         * ircd/listener.c: add TOS stuffs
7389
7390 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
7391
7392         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
7393         to indicate a user is an oper
7394
7395         * ircd/s_user.c: clear privileges setting when deopping; don't
7396         propagate +o unless user has PRIV_PROPAGATE privilege
7397
7398         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
7399         function and replaced how the server option string is generated
7400
7401         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
7402
7403         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
7404         not to indicate the user is an operator
7405
7406         * ircd/m_who.c: use HasPriv to determine whether or not a user
7407         should be displayed in the list of opers
7408
7409         * ircd/m_version.c: call debug_serveropts() to get server option
7410         string
7411
7412         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
7413         whether or not to show oper status
7414
7415         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
7416         whether or not to show oper status
7417
7418         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
7419         checks with HasPriv check; remove dead code
7420
7421         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
7422         checks with HasPriv check
7423
7424         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
7425         use feature_bool to check if disabled
7426
7427         * ircd/m_oper.c (m_oper): set oper priviliges
7428
7429         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
7430         check
7431
7432         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
7433         can kill
7434
7435         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
7436         check
7437
7438         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
7439         use feature_bool to check if disabled
7440
7441         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
7442         #ifdef conditional with a HasPriv check
7443
7444         * ircd/m_gline.c (mo_gline): rework permissions checking
7445         structure; use feature_bool to check if any part is disabled
7446
7447         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
7448         check; remove dead code
7449
7450         * ircd/m_clearmode.c: use feature_bool() to detect if we're
7451         disabled; use HasPriv to figure out what we're permitted to do;
7452         only allow clearmode on moded channels
7453
7454         * ircd/ircd_features.c: define various features; use HasPriv to
7455         verify permissions to set/reset
7456
7457         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
7458         conditionals
7459
7460         * ircd/client.c (client_set_privs): function to set an oper's
7461         privileges
7462
7463         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
7464
7465         * include/whocmds.h: deconditionalize several macros and
7466         substitute appropriate calls to HasPriv()
7467
7468         * include/s_debug.h: get rid of global serveropts[]; define new
7469         function debug_serveropts() to build that string on the fly
7470
7471         * include/ircd_features.h: define some features
7472
7473         * include/client.h: add privs member to struct Connection; define
7474         various priviledges
7475
7476         * include/channel.h: no longer using IsOperOnLocalChannel; remove
7477         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
7478
7479         * doc/Configure.help: remove help information for deprecated
7480         options
7481
7482         * config/config-sh.in: remove certain deprecated options having to
7483         do with what opers can and cannot do--first stage in moving
7484         compile-time constants into the .conf
7485
7486 2000-12-16  Isomer <Isomer@coders.net>
7487         * ircd/parse.c: detect if the prefix is missing and try and recover
7488         instead of coring.
7489
7490 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
7491
7492         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
7493         code that would sometimes result in the log file not being
7494         reopened--which meant that a user could connect and get the
7495         logging output--oops
7496
7497         * ircd/Makefile.in: run make depend...
7498
7499         * ircd/s_stats.c: get rid of report_feature_list()
7500
7501         * ircd/s_err.c: add the 'bad value' error message, shift error
7502         messages over somewhat
7503
7504         * ircd/s_debug.c (debug_init): call log_debug_init with the
7505         use_tty flag
7506
7507         * ircd/s_conf.c (read_configuration_file): unmark features before
7508         reading the config file, then reset unmarked features after
7509         reading the config file
7510
7511         * ircd/m_stats.c: use feature_report() instead of
7512         report_feature_list()
7513
7514         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
7515         special 'mark' flags and use them; add the stuff needed by the
7516         features API
7517
7518         * ircd/ircd_features.c: rework the features API and add gobs of
7519         comments to try to explain what some of these complex functions
7520         are actually doing
7521
7522         * include/s_stats.h: get rid of report_feature_list(); use
7523         feature_report() instead
7524
7525         * include/numeric.h: added a new error message and shifted old
7526         values over some--this is, after all, an alpha
7527
7528         * include/ircd_log.h: log_debug_init now takes an integer to tell
7529         it if it should be using the tty; added a couple of functions
7530         required by the features API
7531
7532         * include/ircd_features.h: add an enum and some more functions to
7533         flesh out the feature API--it should now be possible to put all
7534         those compile-time constants in the config file!
7535
7536         * ircd/send.c: got the direction of the assert incorrect...
7537
7538         * ircd/send.c: implement the efficiency of flush_connections by
7539         creating a linked list of struct Connection's with queued data;
7540         also get rid of flush_sendq_except and make sure to yank
7541         connections out of the list when their sendQs become empty (notice
7542         the assertion in flush_connections!)
7543
7544         * ircd/s_bsd.c (close_connection): must yank the Connection out of
7545         the sendq list
7546
7547         * ircd/list.c (dealloc_connection): must yank the Connection out
7548         of the sendq list
7549
7550         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
7551         deprecated flush_sendq_except
7552
7553         * ircd/client.c: define a couple new helper functions for sendq
7554         threading--this will make the flush_connections function in send.c
7555         considerably more efficient by creating a linked list of
7556         Connections that have queued data to send
7557
7558         * include/send.h: remove flush_sendq_except, as it's not used
7559         anymore
7560
7561         * include/client.h: declare a couple new helper functions for the
7562         sendq threading system
7563
7564 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
7565
7566         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
7567         parse all arguments
7568
7569         * ircd/s_debug.c (count_memory): modify to report for clients and
7570         connections, not local clients and remote clients
7571
7572         * ircd/list.c: fiddle with the client-fiddling functions to take
7573         into account the divorce of struct Connection from struct Client
7574
7575         * ircd/ircd.c: define a struct Connection for me, initialize it,
7576         and link it into the right place (ewww, globals!)
7577
7578         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
7579         struct Client into struct Client and struct Connection; redefine
7580         local-portion accessor macros to go through struct Client to the
7581         struct Connection; define struct Connection accessor macros
7582
7583 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
7584
7585         * ircd/whowas.c: missed a couple of accesses to a struct Client
7586
7587         * ircd/uping.c: missed a couple of accesses to a struct Client
7588
7589         * ircd/send.c: missed a couple of accesses to a struct Client
7590
7591         * ircd/s_user.c: missed a couple of accesses to a struct Client
7592
7593         * ircd/s_misc.c: missed a couple of accesses to a struct Client
7594
7595         * ircd/s_conf.c: missed a couple of accesses to a struct Client
7596
7597         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
7598
7599         * ircd/s_auth.c: missed a couple of accesses to a struct Client
7600
7601         * ircd/res.c: missed a couple of accesses to a struct Client
7602
7603         * ircd/parse.c: missed a couple of accesses to a struct Client
7604
7605         * ircd/m_whois.c: use new accessor macros for struct Client
7606
7607         * ircd/m_who.c: use new accessor macros for struct Client
7608
7609         * ircd/m_wallchops.c: use new accessor macros for struct Client
7610
7611         * ircd/m_version.c: use new accessor macros for struct Client
7612
7613         * ircd/m_userip.c: use new accessor macros for struct Client
7614
7615         * ircd/m_userhost.c: use new accessor macros for struct Client
7616
7617         * ircd/m_user.c: use new accessor macros for struct Client
7618
7619         * ircd/m_uping.c: use new accessor macros for struct Client
7620
7621         * ircd/m_trace.c: use new accessor macros for struct Client
7622
7623         * ircd/m_topic.c: use new accessor macros for struct Client
7624
7625         * ircd/m_time.c: use new accessor macros for struct Client
7626
7627         * ircd/m_stats.c: use new accessor macros for struct Client
7628
7629         * ircd/m_squit.c: use new accessor macros for struct Client
7630
7631         * ircd/m_silence.c: use new accessor macros for struct Client
7632
7633         * ircd/m_server.c: use new accessor macros for struct Client;
7634         remove dead code
7635
7636         * ircd/m_rpong.c: use new accessor macros for struct Client
7637
7638         * ircd/m_rping.c: use new accessor macros for struct Client
7639
7640         * ircd/m_quit.c: use new accessor macros for struct Client
7641
7642         * ircd/m_privmsg.c: use new accessor macros for struct Client
7643
7644         * ircd/m_pong.c: use new accessor macros for struct Client; remove
7645         dead code
7646
7647         * ircd/m_ping.c: use new accessor macros for struct Client
7648
7649         * ircd/m_pass.c: use new accessor macros for struct Client
7650
7651         * ircd/m_part.c: use new accessor macros for struct Client
7652
7653         * ircd/m_oper.c: use new accessor macros for struct Client
7654
7655         * ircd/m_notice.c: use new accessor macros for struct Client
7656
7657         * ircd/m_nick.c: use new accessor macros for struct Client
7658
7659         * ircd/m_names.c: use new accessor macros for struct Client
7660
7661         * ircd/m_mode.c: use new accessor macros for struct Client
7662
7663         * ircd/m_map.c: use new accessor macros for struct Client
7664
7665         * ircd/m_list.c: use new accessor macros for struct Client
7666
7667         * ircd/m_links.c: use new accessor macros for struct Client;
7668         remove some dead code
7669
7670         * ircd/m_kill.c: use new accessor macros for struct Client; remove
7671         some dead code
7672
7673         * ircd/m_kick.c: use new accessor macros for struct Client
7674
7675         * ircd/m_join.c: use new accessor macros for struct Client; remove
7676         some dead code
7677
7678         * ircd/m_ison.c: use new accessor macros for struct Client
7679
7680         * ircd/m_invite.c: use new accessor macros for struct Client
7681
7682         * ircd/m_info.c: use new accessor macros for struct Client
7683
7684         * ircd/m_gline.c: use new accessor macros for struct Client
7685
7686         * ircd/m_error.c: use new accessor macros for struct Client
7687
7688         * ircd/m_create.c: use new accessor macros for struct Client
7689
7690         * ircd/m_connect.c: use new accessor macros for struct Client;
7691         removed some dead code
7692
7693         * ircd/m_burst.c: use new accessor macros for struct Client
7694
7695         * ircd/m_away.c: use new accessor macros for struct Client
7696
7697         * ircd/m_admin.c: use new accessor macros for struct Client
7698
7699         * ircd/hash.c: missed a couple of accesses to a struct Client
7700
7701         * ircd/gline.c: missed a couple of accesses to a struct Client
7702
7703         * ircd/crule.c: missed a couple of accesses to a struct Client
7704
7705         * ircd/class.c: missed an access to a struct Client
7706
7707         * ircd/channel.c: missed a couple of accesses to a struct Client
7708
7709         * ircd/IPcheck.c: missed an access to a struct Client
7710
7711         * include/querycmds.h: fix a couple of stats macros to use
7712         structure accessor macros
7713
7714         * include/client.h: change structure member names to highlight any
7715         places in the code I've missed
7716
7717 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
7718
7719         * ircd/whowas.c: use new struct Client accessor macros
7720
7721         * ircd/whocmds.c: use new struct Client accessor macros
7722
7723         * ircd/send.c: use new struct Client accessor macros
7724
7725         * ircd/s_user.c: use new struct Client accessor macros; removed
7726         some dead code
7727
7728         * ircd/s_serv.c: use new struct Client accessor macros; removed
7729         some dead code
7730
7731         * ircd/s_numeric.c: use new struct Client accessor macros
7732
7733         * ircd/s_misc.c: use new struct Client accessor macros
7734
7735         * ircd/s_debug.c: use new struct Client accessor macros
7736
7737         * ircd/s_conf.c: use new struct Client accessor macros
7738
7739         * ircd/s_bsd.c: use new struct Client accessor macros
7740
7741         * ircd/s_auth.c: use new struct Client accessor macros
7742
7743         * ircd/parse.c: use new struct Client accessor macros
7744
7745         * ircd/packet.c: use new struct Client accessor macros
7746
7747         * ircd/numnicks.c: use new struct Client accessor macros
7748
7749         * ircd/motd.c: use new struct Client accessor macros
7750
7751         * ircd/listener.c: use new struct Client accessor macros
7752
7753         * ircd/list.c: use new struct Client accessor macros
7754
7755         * ircd/jupe.c: use new struct Client accessor macros
7756
7757         * ircd/ircd_snprintf.c: use new struct Client accessor macros
7758
7759         * ircd/ircd_reply.c: use new struct Client accessor macros
7760
7761         * ircd/ircd_relay.c: use new struct Client accessor macros
7762
7763         * ircd/ircd.c: use new struct Client accessor macros
7764
7765         * ircd/gline.c: catch some instances of me.<stuff> I missed
7766         previously
7767
7768         * ircd/client.c: use cli_ instead of con_
7769
7770         * ircd/class.c: use cli_ instead of con_
7771
7772         * ircd/channel.c: use cli_ instead of con_
7773
7774         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
7775         of me.<stuff> I missed previously
7776
7777         * include/client.h: use cli_ instead of con_...seemed like a good
7778         idea at the time *shrug*
7779
7780 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
7781
7782         * ircd/hash.c: use struct Client accessor macros
7783
7784         * ircd/gline.c: use struct Client accessor macros
7785
7786         * ircd/crule.c: use struct Client accessor macros
7787
7788         * ircd/client.c: use struct Client accessor macros; remove some
7789         dead code
7790
7791         * ircd/class.c: use struct Client accessor macros
7792
7793         * ircd/channel.c: use struct Client accessor macros; remove some
7794         dead code
7795
7796         * ircd/IPcheck.c: use struct Client accessor macros
7797
7798         * include/numnicks.h: use struct Client accessor macros
7799
7800         * include/client.h: first step to divorcing struct Client and
7801         struct Connection--define accessor macros and use them
7802
7803         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
7804         uplink would remove them.  This is because the removal protocol
7805         message wasn't being sent to the uplinks.  This is fixed by fixing
7806         propagate_gline() to send the proper number of arguments depending
7807         on whether or not we're adding or deleting the Uworld gline, and
7808         by having gline_deactivate() make sure to turn off the active bit
7809         and call propagate_gline() if it's a Uworld gline
7810
7811 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
7812
7813         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
7814
7815         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
7816         anywhere intelligent...
7817
7818 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
7819
7820         * ircd/send.c (send_queued): call deliver_it with appropriate
7821         arguments
7822
7823         * ircd/s_serv.c: reorder a couple of headers--cosmetic
7824
7825         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
7826         MsgQ
7827
7828         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
7829         with appropriate iovec
7830
7831         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
7832         with appropriate iovec
7833
7834         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
7835         with appropriate iovec
7836
7837         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
7838         appropriate iovec
7839
7840         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
7841         exactly how much we're trying to write out to the fd
7842
7843         * include/s_bsd.h: make deliver_it take a struct MsgQ
7844
7845         * include/msgq.h: add a len_p argument to msgq_mapiov to help
7846         detect short writes that indicate possible socket blocking
7847
7848         * include/ircd_osdep.h: declare os_sendv_nonb()
7849
7850         * ircd/channel.c (modebuf_mode): don't add empty modes...
7851
7852 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
7853
7854         * include/send.h: add prio argument to send_buffer to select
7855         between normal and priority queues
7856
7857         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
7858         call
7859
7860         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
7861
7862         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
7863         call
7864
7865         * ircd/channel.c (send_channel_modes): add prio argument to
7866         send_buffer call
7867
7868         * ircd/send.c (send_buffer): add a prio argument to select the
7869         priority queue; update send.c functions to use it
7870
7871         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
7872         msgq_add; add a prio argument to msgq_add to select the priority
7873         queue
7874
7875         * include/msgq.h: remove msgq_prio; add a prio argument to
7876         msgq_add
7877
7878         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
7879         using msgq functions instead of dbuf functions; remove old, dead
7880         sendto_* functions; redo send_buffer to take a struct MsgBuf;
7881         rework sendcmdto_* functions to make use of the new struct MsgBuf
7882
7883         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
7884         make appropriate use of struct MsgBuf
7885
7886         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
7887         system and report it
7888
7889         * ircd/s_conf.c (read_configuration_file): use
7890         sendto_opmask_butone instead of the now dead sendto_op_mask
7891
7892         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
7893         calls on sendQ
7894
7895         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
7896
7897         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
7898         msgq_clean
7899
7900         * ircd/m_version.c: fix spelling in comments marking dead code
7901
7902         * ircd/m_userip.c (userip_formatter): restructure to make use of
7903         struct MsgBuf
7904
7905         * ircd/m_userhost.c (userhost_formatter): restructure to make use
7906         of struct MsgBuf
7907
7908         * ircd/m_stats.c: use MsgQLength on a sendQ
7909
7910         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
7911         sendQ; mark a piece of dead code
7912
7913         * ircd/m_names.c: use send_reply instead of sendto_one
7914
7915         * ircd/m_mode.c: use new mode; remove old dead code
7916
7917         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
7918
7919         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
7920         dead code
7921
7922         * ircd/listener.c (accept_connection): use sendto_opmask_butone
7923         instead of sendto_op_mask
7924
7925         * ircd/list.c (free_client): use MsgQClear to clear sendQ
7926
7927         * ircd/ircd_reply.c: remove send_error_to_client; restructure
7928         send_reply to make use of struct MsgBuf
7929
7930         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
7931         since its no longer used (at least currently)
7932
7933         * ircd/channel.c: restructure send_channel_modes to make use of
7934         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
7935         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
7936
7937         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
7938
7939         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
7940
7941         * include/send.h: send_buffer now takes a struct MsgBuf * instead
7942         of a char *; flush_sendq_except now takes no arguments, as sendq
7943         flushing currently only happens in dbuf.h and sendQ is a struct
7944         MsgQ; remove prototypes for a lot of old sendto_* functions that
7945         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
7946         no longer needed, and the latter is identical to BUFSIZE in
7947         ircd_defs.h
7948
7949         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
7950         instead of a char *; also make it return void, instead of char *
7951
7952         * include/msgq.h: add msgq_append and msgq_bufleft functions
7953
7954         * include/client.h: use a struct MsgQ instead of a struct DBuf for
7955         sendq
7956
7957         * doc/Configure.help: Remove help for compile-time options that
7958         have gone away
7959
7960         * config/config-sh.in: remove CONFIG_NEWMODE
7961
7962         * ircd/m_server.c (mr_server): don't send server IPs in any server
7963         notices
7964
7965         * ircd/msgq.c (msgq_vmake): add \r\n to messages
7966
7967 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
7968
7969         * include/msgq.h: declare the MsgQ API
7970
7971         * ircd/msgq.c: implementation of new MsgQ system
7972
7973 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
7974
7975         * ircd/ircd_features.c: #include was supposed to be for
7976           ircd_features.h, not features.h--missed when I had to do a
7977           rename because of namespace collision
7978
7979 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7980         * ircd/m_topic.c: Added missing braces that caused all remote
7981           topics to be ignored.
7982
7983 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
7984
7985         * ircd/m_create.c: I'm tired of the exit_client warning :)
7986         (ms_create): discovered that exit_client() was being called with
7987         too few arguments
7988
7989         * ircd/s_misc.c (exit_client): remove all dependance on
7990         FNAME_USERLOG, since that's now gone; log only to LS_USER
7991
7992         * ircd/s_debug.c: USE_SYSLOG no longer means anything
7993
7994         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
7995         log to LS_OPER
7996
7997         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
7998
7999         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
8000
8001         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
8002         the same purpose as LS_USER and LS_OPER
8003
8004         * config/config-sh.in: remove no longer relevant log config
8005         variables
8006
8007         * ircd/uping.c (uping_init): use log_write instead of ircd_log
8008
8009         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
8010
8011         * ircd/s_conf.c: use log_write instead of ircd_log
8012
8013         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
8014
8015         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
8016         ircd_log
8017
8018         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
8019
8020         * ircd/m_who.c: use log_write instead of write_log; no longer
8021         conditionalize on WPATH; mark dead ircd_log calls
8022
8023         * ircd/m_uping.c: mark dead ircd_log call
8024
8025         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
8026
8027         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
8028         ircd_log calls
8029
8030         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
8031
8032         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
8033         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
8034
8035         * ircd/m_kill.c: mark dead ircd_log calls
8036
8037         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
8038         ircd_log
8039
8040         * ircd/m_clearmode.c: use log_write instead of write_log; no
8041         longer conditionalize on OPATH
8042
8043         * ircd/jupe.c: use log_write instead of write_log; no longer
8044         conditionalize on JPATH
8045
8046         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
8047         function; fix a couple of bugs
8048
8049         * ircd/ircd_alloc.c: fixed a comment
8050
8051         * ircd/ircd.c: use log_write instead of ircd_log; fold server
8052         notice generation in a couple of cases
8053
8054         * ircd/gline.c: use log_write instead of write_log; no longer
8055         conditionalize on GPATH
8056
8057         * ircd/channel.c (modebuf_flush_int): use log_write instead of
8058         write_log; no longer conditionalize on OPATH
8059
8060         * ircd/Makefile.in: run make depend, since dependencies have
8061         changed
8062
8063         * doc/example.conf: add system USER to documentation
8064
8065         * include/ircd_log.h: add system USER; remove old ircd_log()
8066         declarations
8067
8068 2000-12-04  Isomer <isomer@coders.net>
8069         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
8070         'end_of_names' reply when done.
8071         * ircd/m_join.c: use NAMES_EON as mentioned above
8072
8073 2000-12-01  net  <simms@LUCIDA.QC.CA>
8074
8075         * ircd/motd.c: add a freelist for struct Motds
8076
8077 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
8078
8079         * ircd/s_stats.c (report_feature_list): report features--only
8080         local opers can see logging configuration, since it doesn't really
8081         mean anything to users
8082
8083         * ircd/s_err.c: add reply messages for new feature subsystem
8084
8085         * ircd/s_conf.c: add F lines to .conf
8086
8087         * ircd/parse.c: add the message descriptions for /set, /reset, and
8088         /get
8089
8090         * ircd/m_stats.c: add /stats f
8091
8092         * ircd/m_set.c (mo_set): implement /set
8093
8094         * ircd/m_reset.c (mo_reset): implement /reset
8095
8096         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
8097         reopens log files (for log file rotation)
8098
8099         * ircd/m_get.c (mo_get): implement /get
8100
8101         * ircd/ircd_log.c: use int instead of void return value; add
8102         log_report_features() and log_canon(); fix a function that
8103         disappears if DEBUGMODE not #define'd
8104
8105         * ircd/ircd_features.c: functions to manipulate feature settings
8106         either from the config file or with the new /set, /reset, and /get
8107         commands
8108
8109         * ircd/Makefile.in: add new .c files, run make depend
8110
8111         * include/s_stats.h: declare report_feature_list() (/stats f
8112         handler)
8113
8114         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
8115         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
8116         reply numerics
8117
8118         * include/msg.h: add defines for SET, RESET, and GET
8119
8120         * include/ircd_log.h: add a function to canonicalize subsystem
8121         names; change some void return values to int
8122
8123         * include/ircd_features.h: new features subsystem handles all the
8124         manipulation of special features, like log files
8125
8126         * include/handlers.h: declare new mo_{s,res,g}et message handlers
8127         for fiddling with features run-time
8128
8129         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
8130         seemed like a good idea at the time...
8131
8132         * doc/example.conf: document new F lines
8133
8134 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
8135
8136         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
8137         new logging functions, which have special support for the debug
8138         log; added loop detection to vdebug(), so that I can
8139         sendto_opmask_butone() from log_vwrite() without incurring another
8140         call to vdebug()
8141
8142         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
8143         this allows log file rotations
8144
8145         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
8146
8147         * ircd/ircd_log.c: much more work fleshing out the interface;
8148         removed old interface; included backwards-compat ircd_log()
8149         function that logs to subsystem LS_OLDLOG
8150
8151         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
8152         functions
8153
8154         * include/ircd_log.h: include stdarg.h for va_list; move ordering
8155         warning to top of file; fill out LogSys enum; declare new
8156         log_debug_init(), log_vwrite(), log_write_kill(), and
8157         log_[sg]et_*() functions; add flags argument to log_write();
8158         defined flags to inhibit various logging actions
8159
8160         * include/client.h: added support for new SNO_DEBUG, enabled only
8161         if DEBUGMODE is defined
8162
8163 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
8164
8165         * ircd/ircd_log.c: make sure the various LOG_* constants are
8166         defined (probably not needed, since #include <syslog.h> isn't
8167         conditional); various static data needed for the new logging
8168         functions; definitions of new logging functions
8169
8170         * include/ircd_log.h: new LogSys enum, declarations for part of
8171         new logging API
8172
8173         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
8174         which was of course stupid; switched to using switch/case in
8175         initialization in motd_create(); zero the MotdList.other pointer
8176         from motd_clear()
8177
8178         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
8179         or we overwrite init_conf()'s hard work with respect to T-lines
8180
8181 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
8182
8183         * ircd/s_stats.c: comment out report_motd_list and include a
8184         reference to motd_report()
8185
8186         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
8187         motd_add() from the conf parser; call motd_clear() from the rehash
8188         routine; remove the no longer needed memory clearing and reloading
8189         stuff from the rehash service routine
8190
8191         * ircd/motd.c: loads new API, including static internal functions
8192         to do allocation/deallocation, etc.
8193
8194         * ircd/m_stats.c: use new motd_report() instead of
8195         report_motd_list()
8196
8197         * ircd/m_motd.c: use new syntax for motd_send()
8198
8199         * ircd/ircd.c: use new motd_init() function
8200
8201         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
8202         Makefile.(in); also ran make depend
8203
8204         * include/motd.h: don't need config.h, but now do need time.h;
8205         define new structures and constants; redefine old API and define
8206         new functions
8207
8208 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
8209
8210         * ircd/s_user.c (register_user): use motd_signon() instead of
8211         calling m_motd; much cleaner this way
8212
8213         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
8214         less of a crock
8215
8216         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
8217         functions
8218
8219         * include/motd.h: define new MOTD API stuff
8220
8221 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
8222
8223         * ircd/ircd_reply.c (protocol_violation): rewrite
8224         protocol_violation so it'll actually work
8225
8226         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
8227         the client's real name in there.
8228
8229         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
8230         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
8231         gets called from register_user with a NULL sptr.  This is probably
8232         a design problem, but this bandaid will do for now...
8233
8234 2000-11-19  Isomer <isomer@coders.net>
8235         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
8236         to problems in the server<->server protocol.
8237
8238         * ircd/m_connect.c: allow remote connects with a port of '0'
8239         meaning to use the port in the config file.
8240
8241         * ircd/m_create.c: Enable hacking protection, lets see how far we
8242         get.
8243
8244         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
8245         clients, so we don't any more.
8246
8247         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
8248         and the user@host is displayed of the victim.
8249
8250         * ircd/m_map.c: reloaded 'dump_map'.
8251
8252         * ircd/m_trace.c: allow per class T:
8253
8254         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
8255
8256 2000-11-17  Isomer <isomer@coders.net>
8257
8258         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
8259         that were the *same* instead of different.  Oh the embarrasment!
8260
8261         * ircd/IPcheck.c: Merged net's fix.
8262
8263 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
8264
8265         * ircd/m_whois.c: remove compiler warning by adding a newline to
8266         end of file
8267
8268         * ircd/m_names.c: moved the flags up to s_user.h
8269
8270         * ircd/m_join.c: call do_names instead of m_names; restructure
8271         ms_join to never transmute a JOIN into a CREATE, but use the TS in
8272         the JOIN (if present) to timestamp the channel
8273
8274         * ircd/channel.c: send JOINs individually, instead of grouping
8275         them, so that we can send the channel's creation time
8276
8277         * include/s_user.h: declare do_names()
8278
8279 2000-10-30  Isomer <isomer@coders.net>
8280         * ircd/m_oper.c: Fixed warning
8281
8282 2000-10-30  Isomer <isomer@coders.net>
8283         * ircd/m_oper.c: Fixed over agressive cut and no paste
8284
8285 2000-10-30  Isomer <isomer@coders.net>
8286
8287         * ircd/m_topic.c: Restructured, fixed bug where topics on local
8288         channels are propergated (I forget who pointed this out to me, but
8289         thanks anyway).  Also to save bandwidth don't send the topic to
8290         users if the topic is already the same on the server (but still
8291         propergate to other servers).  X/W's "autotopic" feature must
8292         chew a lot of bandwidth, hopefully this will help reduce this.
8293
8294         * doc/rfc1459.rfc: Updated documentation on /topic.
8295
8296         * ircd/listener.c: snotice warnings about failed accept()'s
8297         potentially warning admins that they're running out of fd's.
8298
8299         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
8300         people in a class in /stats y
8301
8302         * ircd/m_create.c: Checks for timewarp hacking and squit's
8303         evil servers. (currently disabled)
8304         
8305
8306 2000-10-30  net <simms@lucida.qc.ca>
8307         
8308         * ircd/gline.c: Fixed various bugs Isomer left behind.
8309
8310 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
8311
8312         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
8313         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
8314
8315 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
8316
8317         * ircd/channel.c: ok, now last mode rules; mode +ps will always
8318         result in +s (and won't send a mode if the channel is already +s);
8319         mode +sp will always result in +p; -n+n on a +n channel results in
8320         no mode change; -n+n on a -n channel results in a +n mode change;
8321         etc.
8322
8323 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
8324
8325         * ircd/channel.c: add "add" and "del" elements to ParseState to
8326         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
8327         mode_parse_limit that caused it to clear all channel modes
8328         prematurely; restructure mode_parse_mode to avoid calling
8329         modebuf_mode too early (ties in with first mentioned change);
8330         better logic for +p/+s mutual exclusivity; initialize "add" and
8331         "del" elements in mode_parse; send simple modes down to
8332         modebuf_mode after the loop in mode_parse
8333
8334 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
8335         * ircd/m_names.c: Fixed a non-lethal logic error that 
8336         triggers an assert() in find_member_link while debugging.
8337         (Spotted by Maniac-).
8338 2000-09-19  Thomas Helvey <helveytw@home.com>
8339         * ircd/s_conf.c: move K:lines to their own list and data
8340         structures, add supporting code.
8341         * ircd/m_stats.c: cleanup stats processing a bit move
8342         kline listing code to a new function, haven't figured
8343         out where it goes yet tho'
8344         * ircd/s_stats.c: added K:line bulk lister
8345         * include/s_conf.h: added new DenyConf struct
8346         * *[ch]: fixeup code that depended on changes
8347
8348 2000-09-17  Thomas Helvey <helveytw@home.com>
8349         * ircd/class.c: encapsulate class list
8350         * include/class.h: clean up classes
8351         * * fixup code that depended on changes
8352
8353 2000-09-17  Thomas Helvey <helveytw@home.com>
8354         * ircd/s_conf.c: add me to local conf
8355         * include/s_conf.h: move CONF_ME macro to chkconf.c
8356         * ircd/s_bsd.c: cleanup initialization, allow virtual host
8357         to be changed by rehash
8358
8359 2000-09-17  Thomas Helvey <helveytw@home.com>
8360         * include/class.h: add missing prototype
8361         * ircd/class.c: make argument to get_conf_class const
8362
8363 2000-09-17  Thomas Helvey <helveytw@home.com>
8364         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
8365         merge conflicts.
8366         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
8367         merge conflicts
8368
8369 2000-09-16  Thomas Helvey <helveytw@home.com>
8370         * ircd/s_conf.c: add code for server struct
8371         * ircd/client.c: copy of class.c sort of, new file for client
8372         specific operations, will move things here as appropriate,
8373         currently only one function is exported from here.
8374         * ircd/*.c: general logic cleanups, convert negatives to
8375         positives in places.
8376
8377 2000-09-16  Thomas Helvey <helveytw@home.com>
8378         * ircd/s_conf.c: add code for new crule data structs, strip quotes
8379         * ircd/crule.c: clean up scary casting a bit, type safety stuff
8380         * include/s_conf.h: add CRuleConf struct and support, remove
8381         unused constants
8382         * include/crule.h: type safety cleanups
8383         * ircd/*.c: fixup code that depended on stuff I changed
8384
8385 2000-09-15  Thomas Helvey <helveytw@home.com>
8386         * ircd/s_conf.c: start adding code for new conf data structs, changed
8387         listeners, admin line, motd lines, class lines. Move validate_hostent
8388         to resolver. General mayhem.
8389         * include/s_conf.h: new data structs and accessors
8390         * ircd/res.c: move validate_hostent here, rewrite, use regular
8391         expression for validation.
8392         * doc/example.conf: update docs for port
8393
8394 2000-09-14  Thomas Helvey <helveytw@home.com>
8395         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
8396         up conf_init into managable chunks.
8397         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
8398         * include/s_conf.h: add new data struct for local info (unwinding the mess).
8399
8400 2000-09-13  Thomas Helvey <helveytw@home.com>
8401         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
8402         local clients.
8403         * ircd/list.c: put SLinks in free lists
8404         * ircd/channel.c: put Memberships in free lists
8405         * ircd/ircd.c: rearrange initializations a bit in main
8406         Note: With these changes, ircd NEVER frees Clients, SLinks or
8407         Memberships. It will also rarely need to allocate new
8408         ones during net bursts and other disruptions. This should
8409         cut down on memory fragmentation a bit as well.
8410
8411 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
8412
8413         * ircd/m_names.c (do_names): pull-up from do_names fix in
8414         u2.10.10.pl11
8415
8416 2000-07-15  Perry Lorier       <Isomer@coders.net>
8417         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
8418                  match()'s.  Major Major cpu savings.  Also speed up the
8419                  other case slightly.  As a side effect you can now
8420                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
8421                  3am.
8422
8423 2000-07-15  Perry Lorier       <Isomer@coders.net>
8424         * various: Fixed warnings after compiling on an alpha.
8425 2000-07-09  Perry Lorier       <Isomer@coders.net>
8426         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
8427                       changes suggested by various other people.
8428         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
8429                         that it gets a corrupt entry somehow.
8430 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
8431         * ircd/m_oper.c: Clean up compiler warning.
8432
8433 2000-07-08  Perry Lorier       <Isomer@coders.net>
8434         * doc/ircd.8: Updated the documentation, it was slightly out of date
8435                       being updated around 1989.
8436         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
8437                           fixed a few minor glitches.
8438         * doc/rfc1459.unet: Updated.
8439         * ircd/IPcheck.c: Fixed more bugs.
8440         * ircd/s_bsd.c: We now keep track of servers we've conected.
8441
8442 2000-07-02  Perry Lorier       <Isomer@coders.net>
8443         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
8444                         me.  Thanks to Hektik, thanks thanks thanks thanks
8445                         thanks thanks thanks thanks thank thanks thank thanks
8446
8447 2000-07-01  Perry Lorier       <Isomer@coders.net>
8448         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
8449         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
8450
8451 2000-06-22  Perry Lorier       <Isomer@coders.net>
8452         * ircd/IPcheck.c: Large chunks redone.
8453         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
8454                         single AND double digit limits are allowed now.
8455         * misc other: Changes to IPcheck.
8456
8457 2000-06-30  Perry Lorier       <Isomer@coders.net>
8458         * ircd/ircd.c: Fix command line parameter bugs.
8459
8460 2000-06-30  Perry Lorier       <Isomer@coders.net>
8461         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
8462         * ircd/m_nick.c: Tidied things up.
8463
8464 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
8465         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
8466         
8467 2000-05-29  Perry Lorier       <Isomer@coders.net>
8468         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
8469         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
8470                         you think it'll get bored and fix itself?
8471
8472 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
8473
8474         * ircd/m_names.c: Clean up compiler warnings.
8475
8476 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
8477
8478         * ircd/channel.c (mode_parse_client): don't send warning if
8479         there's not enough arguments for a +/-o/v; means the habit of
8480         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
8481         error messages
8482
8483 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
8484
8485         * ircd/m_names.c: Re-factor code to remove unneccessary
8486         GlobalChannelList iteration every time someone joins a channel.
8487
8488 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
8489
8490         * ircd/s_user.c: add struct Gline * argument to register_user;
8491         look up global glines and repropagate them if necessary; send
8492         acknowledgement of gline to remote servers when registering users
8493
8494         * ircd/s_serv.c (server_estab): don't send acknowledgement of
8495         local glines to remote servers; do send gline acknowledgement of
8496         bursted users
8497
8498         * ircd/m_user.c (m_user): pass new struct Gline * argument to
8499         register_user
8500
8501         * ircd/m_pong.c: pass new struct Gline * argument to register_user
8502
8503         * ircd/m_nick.c (ms_nick): document protocol change
8504
8505         * ircd/gline.c: support GLINE_LASTMOD
8506
8507         * include/s_user.h: add struct Gline * argument to register_user
8508
8509         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
8510
8511         * ircd/s_conf.c (find_kill): add unsigned int argument to
8512         gline_lookup()
8513
8514         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
8515         glines; add unsigned int argument to gline_lookup()
8516
8517         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
8518         argument to gline_lookup()
8519
8520         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
8521         parameter, or when it falls out of bounds: see comments prior to
8522         call to jupe_resend(); call server_estab with struct Jupe
8523         parameter, so that we place the appropriate %<lastmod> in the
8524         appropriate place.
8525
8526         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
8527         server, as well as for servers when we're sending the BURST
8528
8529         * include/s_serv.h: add a struct Jupe * to the arguments for
8530         server_estab() so that we can send the appropriate lastmod
8531         parameter
8532
8533         * ircd/m_gline.c (ms_gline): actually, this should be the
8534         slightest bit more efficient...
8535
8536         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
8537         bit more efficient...
8538
8539         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
8540         during netburst
8541
8542         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
8543         netburst
8544
8545         * ircd/channel.c (joinbuf_join): really remove user from local
8546         channels
8547
8548 2000-05-29  Perry Lorier       <Isomer@coders.net>
8549         * ircd/m_names.c: Removed redundant space. 
8550         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
8551
8552 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
8553
8554         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
8555         a " "
8556
8557 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
8558
8559         * ircd/channel.c: replace bogus assertions with returns, which is
8560         logically correct; only wipe out limit/key if they were originally
8561         set in the first place; remove user from channel when doing a
8562         PARTALL; only send MODE +o for user CREATEing channel if user is
8563         not MyUser--CREATE will only be used if the channel did not
8564         originally exist, therefore we can assume no one local is on the
8565         channel anyway, and we don't exactly need for the user to see an
8566         explicit +o for themselves
8567
8568         * doc/readme.gline: describe the syntax of the GLINE command
8569
8570         * doc/readme.jupe: update to reflect a couple of changes to JUPE
8571
8572         * ircd/gline.c: don't propagate local changes
8573
8574         * ircd/jupe.c: don't propagate local changes
8575
8576         * ircd/m_gline.c (mo_gline): force local flag when deactivating
8577         glines with 0 lastmod
8578
8579         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
8580         are now removed instead of being deactivated
8581
8582         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
8583         -<mask>" be accepted
8584
8585         * ircd/channel.c (send_channel_modes): deal with one of the last
8586         vestiges of sendbuf
8587
8588         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
8589         debugging hooks
8590
8591         * ircd/channel.c (modebuf_extract): remove debugging
8592         sendto_opmask_butone calls
8593
8594 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
8595
8596         * ircd/channel.c: support a couple of new flags to support using
8597         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
8598         of modebuf_extract to extract added flags for use by ms_burst
8599
8600         * include/channel.h: a couple of new flags to support using
8601         mode_parse inside ms_burst
8602
8603         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
8604
8605         * ircd/m_endburst.c: add loop to processing of end_of_burst to
8606         free empty channels after the BURST is over.
8607
8608         * ircd/m_server.c: convert to use new send.c functions--I wanted
8609         to rewrite it from scratch, but the logic's pretty complex; I may
8610         still rewrite it, though...
8611
8612 2000-05-02  Thomas Helvey <tomh@inxpress.net>
8613
8614         * ircd/ircd.c: fix broken header include ordering
8615
8616 2000-05-02  Thomas Helvey <tomh@inxpress.net>
8617         
8618         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
8619         review emailed privately
8620
8621         * include/IPcheck.h: removed unneeded include
8622
8623 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
8624
8625         * ircd/s_user.c (hunt_server): throw in a comment so I know what
8626         the sendto_one is for
8627
8628         * include/querycmds.h (Count_unknownbecomesclient): convert to
8629         sendto_opmask_butone
8630
8631         * ircd/send.c: start removing dead code
8632
8633         * include/send.h: start removing dead code
8634
8635         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
8636         hunt_server_cmd
8637
8638         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
8639
8640 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
8641
8642         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
8643
8644         * ircd/m_kick.c: Completely reimplement m_kick
8645
8646         * ircd/channel.c: send_user_joins removed; it was dead code,
8647         anyway...
8648
8649 2000-05-01  Perry Lorier <isomer@coders.net>
8650         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
8651         * ircd/channels.c: My fix for the part problem.  Untested, probably
8652                 won't work.  Can't be much worse than the current problem.
8653                 it'll either work or core, take your pick.
8654
8655
8656 2000-04-30  Perry Lorier <isomer@coders.net>
8657         * config/config-sh.in: Fix for CONNEXIT
8658         * ircd/s_{user,misc}.c: Fix for CONNEXIT
8659         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
8660                         (Kev: Want to come talk to me about this?)
8661
8662 2000-04-30  Steven M. Doyle <steven@doyle.net>
8663         * ircd/ircd.c
8664           - general cleanups and readability enhancements
8665           - rewrite of setuid/chroot code.
8666           - server will no longer run as root
8667           - -DPROFIL compile option removed
8668           - Fixed IPcheck API calls
8669  
8670         * config/config-sh.in
8671           - Fixed up chroot compile options
8672           - Added options for debug and profile compiles
8673  
8674         * config/gen.ircd.Makefile
8675           - Support for new debug/profile options
8676  
8677         * ircd/Makefile.in
8678           - Support for new debug/profile options
8679  
8680         * ircd/ircd_signal.c
8681           - Removed -DPROFIL
8682
8683         * include/IPcheck.h
8684           - Removed old API prototypes, added new ones
8685         
8686         * ircd/IPcheck.c
8687           - Readability cleanups (well, I -think-...)
8688           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
8689             used unsigned short was probably causing interesting things after
8690             a client had been connected longer than about 65,535 seconds...
8691           - Removed old API functions.
8692
8693         * ircd/whocmds.c
8694           - Removed IPcheck.h include
8695         
8696         * Additionally modified IPcheck API calls in:
8697           - ircd/m_nick.c
8698           - ircd/m_auth.c
8699           - ircd/s_bsd.c
8700           - ircd/s_conf.c
8701           - ircd/s_misc.c
8702           - ircd/s_serv.c
8703           - ircd/s_user.c
8704         
8705         
8706 2000-04-30  Perry Lorier <isomer@coders.net>
8707         * ircd/s_bsd.c: Sigh. :)
8708         * ircd/m_mode.c: fix for modeless channels by poptix.
8709
8710 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
8711
8712         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
8713
8714         * ircd/channel.c (clean_channelname): make clean_channelname also
8715         truncate long channel names
8716
8717 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
8718
8719         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
8720
8721         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
8722         joinbuf_flush
8723
8724         * include/channel.h: definitions and declarations for the struct
8725         JoinBuf abstraction
8726
8727 2000-04-29  Perry Lorier <isomer@coders.net>
8728         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
8729
8730 2000-04-29  Perry Lorier <isomer@coders.net>
8731         * ircd/s_bsd.c: Add debugging code to IPcheck
8732
8733 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
8734
8735         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
8736
8737         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
8738         RPL_EXPLICIT
8739
8740         * ircd/m_userhost.c (m_userhost): add a dead code comment
8741
8742         * ircd/m_desynch.c: forgot one...
8743
8744         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
8745
8746         * ircd/m_proto.c (proto_send_supported): just change a comment so
8747         it doesn't show up in my scans
8748
8749         * ircd/ircd_reply.c (send_reply): fix a slight bug...
8750
8751         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
8752         kinda hackish...
8753
8754         * ircd/parse.c (parse_server): argument wrangling to make
8755         processing in do_numeric a little easier to deal with
8756
8757         * ircd/s_serv.c (server_estab): SERVER should come from
8758         acptr->serv->up, not &me
8759
8760         * ircd/m_lusers.c: accidentally left out sptr for a %C
8761
8762         * ircd/send.c: hack to support doing wallchops...
8763
8764         * ircd/m_whowas.c: convert to new send functions
8765
8766         * ircd/m_whois.c: convert to new send functions
8767
8768         * ircd/m_who.c: convert to new send functions
8769
8770         * ircd/m_wallops.c: convert to new send functions
8771
8772         * ircd/m_wallchops.c: convert to new send functions
8773
8774         * ircd/m_version.c: convert to new send functions
8775
8776         * ircd/m_userip.c: convert to new send functions
8777
8778         * ircd/m_userhost.c: convert to new send functions
8779
8780         * ircd/m_uping.c: convert to new send functions
8781
8782         * ircd/m_trace.c: convert to new send functions
8783
8784         * ircd/m_topic.c: convert to new send functions
8785
8786         * ircd/m_time.c: convert to new send functions
8787
8788         * ircd/m_squit.c: convert to new send functions
8789
8790         * ircd/m_silence.c: convert to new send functions
8791
8792         * ircd/m_settime.c: convert to new send functions
8793
8794         * ircd/m_restart.c: convert to new send functions
8795
8796         * ircd/m_rehash.c: convert to new send functions
8797
8798         * ircd/m_privmsg.c: convert to new send functions
8799
8800         * ircd/m_pong.c: convert to new send functions
8801
8802         * ircd/m_ping.c: convert to new send functions
8803
8804         * ircd/m_pass.c: convert to new send functions
8805
8806         * ircd/m_opmode.c: convert to new send functions
8807
8808         * ircd/m_oper.c: convert to new send functions
8809
8810         * ircd/m_notice.c: convert to new send functions
8811
8812         * ircd/m_nick.c: convert to new send functions
8813
8814         * ircd/m_names.c: convert to new send functions
8815
8816         * ircd/m_motd.c: convert to new send functions
8817
8818         * ircd/m_mode.c: convert to new send functions
8819
8820         * ircd/m_map.c: convert to new send functions
8821
8822         * ircd/m_lusers.c: convert to new send functions
8823
8824         * ircd/m_list.c: convert to new send functions
8825
8826         * ircd/m_links.c: convert to new send functions
8827
8828         * ircd/m_kill.c: convert to new send functions
8829
8830         * ircd/m_jupe.c: convert to new send functions
8831
8832         * ircd/m_invite.c: convert to new send functions
8833
8834         * ircd/m_info.c: convert to new send functions
8835
8836         * ircd/m_help.c: convert to new send functions
8837
8838         * ircd/m_gline.c: convert to new send functions
8839
8840         * ircd/m_error.c: convert to new send functions
8841
8842         * ircd/m_endburst.c: convert to new send functions
8843
8844         * ircd/m_die.c: convert to new send functions
8845
8846         * ircd/m_destruct.c: convert to new send functions
8847
8848         * ircd/m_defaults.c: convert to new send functions
8849
8850         * ircd/m_connect.c: convert to new send functions
8851
8852 2000-04-28  Perry Lorier <isomer@coders.net>
8853         * RELEASE.NOTES: Describe a few more undocumented features.
8854         * config/config-sh.in: change the default paths for logging
8855         and the recommended number of channels.
8856         * include/supported.h: Rearrange slightly, added CHANTYPE's
8857
8858 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
8859
8860         * ircd/m_close.c: convert to send_reply
8861
8862         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
8863
8864         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
8865
8866         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
8867
8868         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
8869         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
8870         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
8871         carefully rethought...
8872
8873         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
8874
8875         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
8876
8877         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
8878         numeric nick; therefore, we have to use the server name
8879
8880         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
8881
8882         * ircd/send.c: fix minor bugs
8883
8884         * ircd/s_user.c (check_target_limit): mark dead code so I filter
8885         it when I grep
8886
8887         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
8888         when I grep
8889
8890         * ircd/parse.c: mark dead code so I filter it when I grep
8891
8892         * ircd/map.c: mark dead code so I filter it when I grep
8893
8894         * ircd/ircd.c: mark dead code so I filter it when I grep
8895
8896         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
8897         functions
8898
8899         * ircd/channel.c: mark dead code so I filter it when I grep
8900
8901         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
8902         hope I'm not stepping on toes...
8903
8904         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
8905         conversions; use ircd_snprintf in a couple of cases to negate the
8906         possibility of buffer overflow
8907
8908 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
8909
8910         * ircd/channel.c: convert as much as possible to new send
8911         semantics
8912
8913         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
8914         test member->user->from->fd, not from->fd
8915
8916         * ircd/gline.c (gline_add): go ahead and add badchans; we just
8917         won't look for them in m_gline; this way, they always work...
8918
8919         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
8920
8921         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
8922         ircd_vsnprintf conversion specifiers
8923
8924         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
8925         I have my conversion specifiers
8926
8927         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
8928
8929         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
8930         local users
8931
8932         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
8933         little less brain-dead
8934
8935         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
8936
8937         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
8938         RPL_STATSDEBUG
8939
8940         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
8941         RPL_STATSDEBUG
8942
8943         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
8944         for RPL_STATSDEBUG
8945
8946         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
8947
8948         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
8949
8950         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
8951         ERR_INVALIDUSERNAME
8952
8953         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
8954
8955         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
8956         a numeric as needing to use an explicit pattern, which will be the
8957         first argument in the variable argument list
8958
8959         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
8960         non-prefixed nospoof PING
8961
8962         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
8963         non-prefixed SERVER login
8964
8965         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
8966         a numeric usage further up)
8967
8968         * include/send.h: declare sendrawto_one
8969
8970         * ircd/send.c (sendrawto_one): new function to use ONLY for
8971         non-prefixed commands, like PING to client, or PASS/SERVER on
8972         server registration
8973
8974 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
8975
8976         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
8977         future expansion (channel numerics?)
8978
8979         * include/ircd_snprintf.h: added documentation to # to explain use
8980         with %C; added documentation for : to explain use with %C; added
8981         documentation for %H for channels
8982
8983         * ircd/whocmds.c: use send_reply
8984
8985         * ircd/userload.c: use sendcmdto_one
8986
8987         * ircd/uping.c: use sendcmdto_one
8988
8989         * ircd/send.c: use new flags to %C format string; ':' prefixes
8990         client name with a colon for local connects, '#' uses
8991         nick!user@host form for local connects
8992
8993         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
8994         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
8995
8996         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
8997
8998         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
8999         sendcmdto_one
9000
9001         * ircd/s_auth.c: use sendto_opmask_butone
9002
9003         * ircd/res.c: use sendcmdto_one
9004
9005         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
9006         debugging assertions
9007
9008 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
9009
9010         * ircd/support.c: dumpcore is no longer used, so get rid of it
9011
9012         * ircd/parse.c: use send_reply, sendcmdto_one
9013
9014         * ircd/map.c: use send_reply
9015
9016         * ircd/listener.c: use send_reply
9017
9018         * ircd/jupe.c: use sendto_opmask_butone, send_reply
9019
9020         * ircd/ircd_reply.c: use send_reply
9021
9022         * ircd/ircd.c: use sendto_opmask_butone
9023
9024         * ircd/gline.c: use sendto_opmask_butone, send_reply
9025
9026         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
9027         registered clients; make FLAG_ALT print nick!user@host; make
9028         FLAG_COLON print :blah
9029
9030         * ircd/class.c (report_classes): use send_reply instead of
9031         sendto_one
9032
9033         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
9034
9035         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
9036         sendto_one with sendcmdto_one
9037
9038 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
9039
9040         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
9041         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
9042         sendcmdto_match_butone
9043
9044         * include/send.h: declare sendcmdto_match_butone
9045
9046 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
9047
9048         * ircd/jupe.c: update to use send_reply()
9049
9050         * ircd/gline.c: update to use send_reply()
9051
9052         * include/ircd_reply.h: declare send_reply
9053
9054         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
9055         replies; uses ircd_snprintf
9056
9057         * ircd/send.c: added comments to redirect searchers to appropriate
9058         sendcmdto_* function; moved new functions to end of file; added
9059         explanatory comments; reordered arguments; defined new functions
9060         mentioned below
9061
9062         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
9063
9064         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
9065
9066         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
9067
9068         * ircd/gline.c: reorder arguments to sendcmdto_* functions
9069
9070         * include/send.h: reorder arguments, add explanatory comments,
9071         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
9072         and vsendto_opmask_butone
9073
9074 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
9075
9076         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
9077         vsendto_op_mask that uses '*' instead of the receiving client
9078         nickname
9079
9080         * include/send.h: declare sendcmdto_channel_butone; takes a skip
9081         argument that allows you to skip (or not to skip) deaf users,
9082         users behind bursting servers, and non channel operators
9083
9084 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
9085
9086         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
9087         sendto_channel_butserv has a subtle bug; also wrote
9088         sendcmdto_common_channels.
9089
9090         * include/send.h: declare new sendcmdto_* functions
9091
9092         * ircd/jupe.c: support local deactivations of jupes
9093
9094         * ircd/gline.c: support local deactivations of glines
9095
9096         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
9097         deactivated; if they aren't locally deactivated, then it slaves to
9098         the net-wide activation status; JupeIsRemActive() tests only
9099         whether the jupe is active everywhere else
9100
9101         * include/gline.h: GLINE_LDEACT allows glines to be locally
9102         deactivated; if they aren't locally deactivated, then it slaves to
9103         the net-wide activation status; GlineIsRemActive() tests only
9104         whether the gline is active everywhere else
9105
9106         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
9107         gline expires after the new one will, we drop the new one,
9108         otherwise we add the G-line after that one (so the wide one will
9109         apply first); if the new one contains an existing G-line and if it
9110         will expire after the existing one, we drop the existing one to
9111         save memory
9112
9113         * ircd/m_gline.c (mo_gline): opers could issue remote local
9114         glines when CONFIG_OPERCMDS was off; fixed
9115
9116 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
9117
9118         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
9119         this is a local JUPE
9120
9121         * ircd/gline.c: add flags argument to gline_activate and
9122         gline_deactivate for future expansion
9123
9124         * ircd/m_gline.c: pass flags to gline_activate and
9125         gline_deactivate
9126
9127         * include/gline.h: add flags argument to gline_activate and
9128         gline_deactivate
9129
9130         * ircd/jupe.c: add flags argument to jupe_activate and
9131         jupe_deactivate for future expansion
9132
9133         * include/jupe.h: add flags argument to jupe_activate and
9134         jupe_deactivate
9135
9136         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
9137         local, active; pass flags to jupe_activate and jupe_deactivate
9138
9139         * include/gline.h: remove dead code
9140
9141         * ircd/gline.c: make gline expire times relative to CurrentTime,
9142         since that should be monotonically increasing, instead of
9143         TStime(), which can be set backwards, and which can therefore
9144         cause an expire time to increase; make local glines be removed
9145         instead of just deactivated; don't let gline_find() look for
9146         user@host glines if the mask being looked up is a channel mask
9147
9148         * ircd/send.c (vsendcmdto_one): forgot to account for the case
9149         where origin is a server and destination is a user
9150
9151         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
9152         since that should be monotonically increasing, instead of
9153         TStime(), which can be set backwards, and which can therefore
9154         cause an expire time to increase; make local jupes be removed
9155         instead of just deactivated
9156
9157         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
9158         limit is fine.  any other warnings I should know about?
9159
9160 2000-04-15  Thomas Helvey <tomh@inxpress.net>
9161
9162         * ircd/*.c: const correctness and type safety cleanups to
9163         get code to compile with C++ compiler. Still has
9164         signed/unsigned comparison warnings.
9165
9166 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9167
9168         * ircd/userload.c: change <sys/time.h> include to <time.h> for
9169           portability.
9170
9171 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
9172
9173         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
9174         and convert acptr...
9175
9176         * ircd/s_user.c: move gline_lookup function call into
9177         register_user, where it'll have a username to lookup!
9178
9179         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
9180         functions; also stuff send_error_to_client into return clauses
9181
9182         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
9183         functions; also use send_error_to_client where that makes sense
9184
9185         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
9186         functions; also use send_error_to_client where that makes sense
9187
9188         * ircd/gline.c: modify to utilize new sendcmdto_* series of
9189         functions; also fix gline_lookup() to deal properly with remote
9190         clients--boy, do struct Client and struct User need to be cleaned
9191         up!
9192
9193         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
9194         too...
9195
9196         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
9197         sendcmdto_serv_butone(), all utilizing the %v conversion of
9198         ircd_snprintf()
9199
9200         * include/send.h: define IRC_BUFSIZE, max size of a message;
9201         declare sendcmdto_one(), vsendcmdto_one(), and
9202         sendcmdto_serv_butone()
9203
9204         * include/msg.h: define all the CMD_* constants needed to utilize
9205         the new sendcmdto_* series of functions
9206
9207         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
9208
9209         * ircd/gline.c: remove old, dead code.
9210
9211         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
9212         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
9213         (don't advertise proxies); remove dead code
9214
9215         * ircd/parse.c: oper handler for JUPE only lists jupes unless
9216         CONFIG_OPERCMDS is enabled
9217
9218         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
9219         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
9220
9221         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
9222         always return ERR_DISABLED
9223
9224         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
9225         enabled, always return ERR_DISABLED
9226
9227         * ircd/s_err.c: add error message to indicate disabled commands
9228
9229         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
9230
9231         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
9232
9233         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
9234         CONFIG_NEW_MODE to 'y' for now
9235
9236         * ircd/gline.c (gline_list): fix a minor formatting bogon
9237
9238         * BUGS: since I fixed that bug, might as well mark it fixed.
9239
9240         * ircd/m_join.c: look up badchans with GLINE_EXACT
9241
9242         * ircd/m_gline.c: fix parc count problems; look up existing
9243         G-lines with GLINE_EXACT; only set new lastmod when
9244         activating/deactivating existing glines if old lastmod was not 0
9245
9246         * ircd/gline.c: forgot to copy the gline reason over; don't
9247         propagate a gline with 0 lastmod if origin is user; add
9248         GLINE_EXACT to force exact matching of gline mask
9249
9250         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
9251         flag properly
9252
9253         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
9254         but gline_lookup() actually takes a client--d'oh.
9255
9256 2000-04-13  Thomas Helvey <tomh@inxpress.net>
9257         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
9258
9259 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9260
9261         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
9262           "/who * x"
9263           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
9264           (Found by Plexus).
9265
9266         * ircd/whocmds.c: Change idle time calc from socket idle to user
9267           idle.
9268
9269 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
9270
9271         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
9272         too, for ircd_snprintf.c
9273
9274         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
9275         comments; mostly descended from the Linux manpage for printf, but
9276         also documenting the extensions.
9277
9278         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
9279         client; make 'q' be the same as 'L'; remove __inline__; only
9280         define EXTENSION if HAVE_LONG_LONG is defined
9281
9282         * include/handlers.h: declare m_gline()
9283
9284         * ircd/parse.c: gline can be called by users, but it only lists
9285         the glines.
9286
9287         * ircd/s_user.c (set_nick_name): resend gline if a remote server
9288         introduces a glined client
9289
9290         * ircd/s_serv.c (server_estab): burst glines, too
9291
9292         * ircd/gline.c: fix up all the expire times to be offsets;
9293         simplify gline_resend()
9294
9295         * ircd/m_gline.c: begin coding replacements for ms_gline(),
9296         mo_gline(), and m_gline()
9297
9298         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
9299         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
9300
9301 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9302
9303         * tools/Bouncer/*: Add comments/documentation/tags.
9304         * tools/Bouncer/*: Add debug defines, make task fork().
9305
9306 2000-04-12  Thomas Helvey <tomh@inxpress.net>
9307         * ircd/s_err.c: Cleanup s_err.c make one table so we
9308         don't have to do anything tricky to get an error string.
9309
9310 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9311         * Add port bouncer for http (x/w)
9312
9313 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
9314
9315         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
9316         call to gline_find(); also used GlineReason() instead of direct
9317         reference to structure member
9318
9319         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
9320         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
9321         is active
9322
9323         * ircd/channel.c: nothing seems to be called anywhere...
9324
9325         * ircd/s_err.c: update a couple of replies to dovetail with new
9326         semantics
9327
9328         * ircd/gline.c: begin complete re-implementation of gline.c along
9329         the lines of the final design of jupe.c
9330
9331         * include/gline.h: begin complete re-implementation of gline.c
9332         along the lines of the final design of jupe.c
9333
9334         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
9335         %s by %s" message...
9336
9337         * ircd/ircd_snprintf.c: my new snprintf()-like functions
9338
9339         * include/ircd_snprintf.h: my new snprintf()-like functions
9340
9341 2000-04-11  Thomas Helvey <tomh@inxpress.net>
9342         * ircd/IPcheck.c: removed old dead code
9343         * ircd/s_user.c (send_user_info): removed non-standard
9344           user not found message for userhost/userip
9345
9346 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9347
9348         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
9349         * doc/p10.html: Work on chapter 4.
9350
9351 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
9352
9353         * ircd/channel.c (mode_parse_client): fix coredump on /mode
9354         #foobar +o nosuchnick
9355
9356 2000-04-10  Perry Lorier  <Isomer@coders.net>
9357         * BUGS: Added bug.
9358
9359 2000-04-09  Thomas Helvey <tomh@inxpress.net>
9360         * include/IPcheck.h: fix prototype
9361         * ircd/s_user.c: fix usage of IPcheck_remote_connect
9362         * ircd/IPcheck.c: removed unused args
9363
9364 2000-04-09  Thomas Helvey <tomh@inxpress.net>
9365         * include/IPcheck.h: add proto for IPcheck_expire
9366
9367         * ircd/IPcheck.c: Rewrote
9368
9369         * ircd/ircd.c: Add IPcheck_expire to main message loop
9370
9371         * ircd/s_user.c: Redo target hashing, refactor target code
9372
9373         * include/numeric.h: Cleaned up numerics, added which ones are
9374         in use by other networks and what they are in use for.
9375
9376         * ircd/channel.c: cleaned can_join(), allow anyone through anything
9377         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
9378         will get a message explaining to them not to cheat.
9379
9380         * ircd/m_join.c: cleaned up the various join functions, should be
9381         a lot more efficient.  Still needs work.  Now assumes that s<->s
9382         won't send it a JOIN 0.  Service coders - note this and tread with
9383         care.
9384
9385         * ircd/m_stats.c: added Gte-'s stats doc patch.
9386
9387         * ircd/m_version.c: /version now returns the 005 numeric as well.
9388         as requested by Liandrin.
9389
9390
9391 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
9392
9393         * ircd/m_clearmode.c: add include for support.h for write_log()
9394
9395         * configure: move ircd/crypt/* to tools/*
9396
9397 2000-04-06  Thomas Helvey <tomh@inxpress.net>
9398         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
9399           set client host to server alias if connection from localhost
9400
9401 2000-04-06  Perry Lorier <isomer@coders.net>
9402         * ircd/ircd.c: Fix core during pinging (oops)
9403         
9404 2000-04-06  Perry Lorier <isomer@coders.net>
9405         * ircd/send.c: fixed wrong ident being sent to channels bug.
9406         * include/numerics.h: Updated some of the numerics from other
9407         networks.  Flagged some as 'unused' by undernet.
9408
9409 2000-03-30  Perry Lorier <isomer@coders.net>
9410         * ircd/ircd.c: Lets see if this helps the ping problem at all.
9411         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
9412         time for local clients. (as requested), extended who now returns all
9413         the flags (@+!) so you can tell the complete state of a client.
9414
9415 2000-03-30  Thomas Helvey <tomh@inxpress.net>
9416         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
9417
9418 2000-03-30  Perry Lorier <isomer@coders.net>
9419         * ircd/parse.c: oops, missed opers.
9420
9421 2000-03-30  Perry Lorier <isomer@coders.net>
9422         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
9423         for so long.  Remember: m_ping MUST be in the parse array. :)
9424
9425 2000-03-30  Perry Lorier <isomer@coders.net>
9426         * ircd/ircd.c: test in check_pings was wrong.  I move that we
9427         disallow cvs commit after 10pm localtime....
9428
9429 2000-03-30  Perry Lorier <isomer@coders.net>
9430         * ircd/m_pong.c: Fix it for servers too.
9431
9432 2000-03-30  Perry Lorier <isomer@coders.net>
9433         * ircd/m_pong.c: Fix ping timeout bugs
9434
9435 2000-03-30  Perry Lorier <isomer@coders.net>
9436         * ircd/channel.c: Bans had CurrentTime in their when field instead
9437         of TStime()
9438
9439 2000-03-31  Thomas Helvey <tomh@ixpress.net>
9440         * ircd/numnicks.c (SetXYYCapacity): fix for extended
9441         numerics.
9442
9443 2000-03-30  Perry Lorier <isomer@coders.net>
9444         * ircd/m_nick.c: send kills both ways so when we add nick change
9445         on collision we don't desync the network.
9446
9447         * ircd/map.c: Fixup the map a bit more.
9448
9449 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
9450
9451         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
9452
9453         * ircd/m_opmode.c: Log the mode changes to OPATH
9454
9455         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
9456         OPATH
9457
9458         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
9459         OPATH
9460
9461         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
9462
9463         * config/config-sh.in: added OPATH for opmode log file
9464
9465         * ircd/m_clearmode.c (do_clearmode): updated uses of
9466         modebuf_mode_string() for the new usage
9467
9468         * ircd/channel.c: added flag MODE_FREE and an int argument to
9469         modebuf_mode_string() to indicate that the string must be free'd;
9470         updated calls to modebuf_mode_string() for the new usage; called
9471         collapse(pretty_mask()) on the ban string and use allocated memory
9472         for it; added ban list length accounting; fixed a number of small
9473         bugs in ban processing
9474
9475         * include/channel.h: added flag MODE_FREE and an int argument to
9476         modebuf_mode_string() to indicate that the string must be free'd
9477
9478         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
9479         keys and limits that are set
9480
9481 2000-03-30  Perry Lorier <isomer@coders.net>
9482         * ircd/ircd.c: rewrote check_pings() for maintainability
9483         and speed.  Also changed quit msg's so they don't have
9484         redundant nick[host] info in them.
9485
9486         * ircd/send.c: Changed write errors to report what error
9487         occured (if possible).
9488
9489         * ircd/gline.c: added gline comment to the quit.
9490
9491         * ircd/m_server.c: Added suggestions to server quits mentioning
9492         what went wrong so the admin can fix it earlier instead of asking
9493         questions...
9494
9495         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
9496         servers that aren't fully burst yet.  And show '(--s)' for servers
9497         where its not sure.
9498
9499         * doc/example.conf: Fixed wrapped U:
9500
9501 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
9502
9503         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
9504         mode_parse() (version selectable at compile time)
9505
9506         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
9507
9508         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
9509
9510         * config/config-sh.in: add new config option to enable new m_mode
9511         implementation
9512
9513         * doc/Configure.help: add documentation for new config option
9514         CONFIG_NEW_MODE
9515
9516         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
9517         MODE -v : Not enough parameters
9518
9519         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
9520         +k and +l even if they weren't set...
9521
9522         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
9523
9524         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
9525         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
9526         for; test the 0-th member, not the i-th member, of the client
9527         change state stuff
9528
9529         * ircd/m_clearmode.c (do_clearmode): use the new
9530         mode_invite_clear() function
9531
9532         * ircd/channel.c: cleared up all the compile-time warnings and
9533         errors
9534
9535         * include/channel.h: added declarations for mode_ban_invalidate()
9536         and mode_invite_clear()
9537
9538         * ircd/channel.c: finished mode_parse(), then broke it up into a
9539         dozen or so helper functions to make the code easier to read
9540
9541 2000-03-29  Thomas Helvey <tomh@inxpress.net>
9542         * ircd/ircd.c: refactor server initialization a bit, use
9543         getopt for parsing command line, refactor init_sys, main,
9544         and other bits.
9545
9546         * ircd/s_bsd.c: add functions for initialization to clean
9547         up logic a bit and remove duplicated code.
9548
9549         * include/ircd.h: add struct for server process related
9550         variables.
9551
9552 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
9553
9554         * ircd/channel.c: initial definition of mode_parse(); flags to
9555         prevent doing the same thing multiple times; helper method
9556         send_notoper() to send a "Not oper"/"Not on channel" notice
9557
9558         * include/channel.h: declare mode_parse() and helper flags
9559
9560         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
9561         sending to match the current action of set_mode() closely enough
9562         that hopefully there won't be major conflicts
9563
9564         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
9565         building logic, reversed the order of the arguments to mode
9566         commands to have '-' preceed '+'
9567
9568 2000-03-29  Thomas Helvey <tomh@inxpress.net>
9569         * ircd/s_bsd.c (add_connection): don't disable socket options
9570         let OS tune itself and allow important performance tweaks to 
9571         work.
9572
9573 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
9574
9575         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
9576         confused by set_mode, which is doing some really weird logic;
9577         guess what I'm going to rewrite next?  ;)
9578
9579 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
9580
9581         * include/channel.h: added MODE_SAVE for the bounds checking stuff
9582         in modebuf_flush
9583
9584         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
9585         make it do bounds checking on the buffer; all modes are sent only
9586         if the all parameter is 1; modebuf_flush is the exported wrapper
9587
9588         * include/channel.h: add BOUNCE, renumber flags to get a little
9589         more space
9590
9591         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
9592         BOUNCE; send DESYNCH message
9593
9594 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
9595
9596         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
9597         channel actually has in effect for deletion
9598
9599         * ircd/channel.c: added explanatory comments to all added
9600         functions; made flushing take place at the correct place even if
9601         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
9602         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
9603         is empty, fixed the apparent source, removed some bogus string
9604         termination code, properly terminate the mode strings, add support
9605         for HACK2 and HACK3, made limit strings not be sent if the limit
9606         is being removed, changed where '+' and '-' come from in sent
9607         strings, added support for DEOP flag, set up bouncing code for
9608         HACK2
9609
9610         * ircd/Makefile.in: ran make depend
9611
9612         * include/channel.h: added new defines for future functionality,
9613         made modebuf_flush() return int so I can use tail recursion
9614
9615         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
9616         to make it all compile
9617
9618         * ircd/m_opmode.c: add msg.h to includes...
9619
9620         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
9621
9622         * ircd/channel.c (modebuf_flush): realized I forgot to
9623         nul-terminate addbuf/rembuf properly...
9624
9625         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
9626
9627         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
9628         sendto_serv_butone--blah^2
9629
9630         * ircd/send.c (sendto_serv_butone): stupid comments confused me
9631
9632         * ircd/channel.c (modebuf_flush): if there are no mode changes to
9633         propagate, we're done...
9634
9635         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
9636         not sendto_all_butone
9637
9638         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
9639
9640         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
9641
9642         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
9643         the list
9644
9645         * ircd/parse.c: added messages for opmode and clearmode
9646
9647         * include/handlers.h: added declarations for mo_opmode(),
9648         ms_opmode(), mo_clearmode(), and ms_clearmode()
9649
9650         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
9651         TOK_CLEARMODE
9652
9653         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
9654         MODEBUF_DEST_OPMODE flag
9655
9656         * ircd/channel.c (modebuf_flush): added new flag,
9657         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
9658         to originate from source's server (or source itself, if
9659         IsServer(source)); also causes a server-level MODE to be sent as
9660         OPMODE instead
9661
9662         * include/channel.h: defined MODEBUF_DEST_SERVER,
9663         MODEBUF_DEST_HACK4
9664
9665         * ircd/channel.c: Add another argument to build_string() to handle
9666         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
9667         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
9668         to be sent out
9669
9670 2000-03-27  Perry Lorier <isomer@coders.net>
9671
9672         * ircd/s_bsd.c: fixed missing 'u' typo.
9673
9674 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
9675
9676         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
9677         _mode_string(), _mode_client(), _flush(); also implemented a
9678         simple build_string()
9679
9680         * include/channel.h: added definition of ModeBuf, modebuf_*
9681         manipulation functions, and a couple of helper macros
9682