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