Fix SourceForge bug #2816618 (default user modes in connection class do not work).
[ircu2.10.12-pk.git] / ChangeLog
1 2009-07-05  Michael Poole <mdpoole@troilus.org>
2
3         * ircd/s_user.c (register_user): Use correct parc for
4         set_user_mode().  Do not increment UserStats fields here, because
5         set_user_mode() handles that.
6
7 2009-07-05  Michael Poole <mdpoole@troilus.org>
8
9         * ircd/m_gline.c (ms_gline): Fix the sense of the test for
10         strtoul() when parsing G-line lifetimes -- zero indicates failure.
11
12 2009-07-05  Michael Poole <mdpoole@troilus.org>
13
14         * ircd/channel.c (mode_parse_client): Ignore anything after a
15         colon when the mode is CHFL_VOICE or the mode is being removed.
16
17 2009-07-04  Michael Poole <mdpoole@troilus.org>
18
19         * ircd/s_auth.c (find_conf_client): New function.
20         (preregister_user): Use it to avoid assigning a second conf class
21         on client connection.
22         (auth_ping_timeout): Send the "T" message only if we do not kill
23         the client (and thus send a "D" message).
24         (auth_find_classs_conf): Do not allow IAuth to select a disabled
25         class.  Unlink new conf items from GlobalConfList.
26         (iauth_cmd_done_client): Handle failures from attach_conf().
27         (iauth_parse): Behave decently when a client is killed by the
28         message handler.
29
30         * tools/iauth-test (%handlers): Add entries to help test this.
31
32 2009-07-04  Michael Poole <mdpoole@troilus.org>
33
34         * include/channel.h (RevealDelayedJoinIfNeeded): Declare.
35
36         * ircd/channel.c (RevealDelayedJoinIfNeeded): Implement.
37
38         * ircd/ircd_relay.c (relay_channel_message): Only reveal the user
39         if he passes the check_target_limit() test.
40         (relay_channel_notice): Likewise.
41
42         * ircd/m_wallchops.c (m_wallchops): Likewise.
43
44         * ircd/m_wallvoices.c (m_wallvoices): Likewise.
45
46         * ircd/s_user.c (check_target_limit): Micro-optimize to only check
47         the user's channel list for invites if we are about to deny it.
48
49 2009-03-25  Michael Poole <mdpoole@troilus.org>
50
51         * ircd/ircd.c (main): Unconditionally set +6 flag on self.
52
53 2009-03-25  Michael Poole <mdpoole@troilus.org>
54
55         * ircd/s_auth.c (iauth_cmd_hostname): Properly assign the spoofed
56         hostname (yea, even as the "real" host) in the hurry state.
57
58         * tools/iauth-test: Add reminder about perl's RTMIN signal and a
59         new handler to exercise the N command in the hurry state.
60
61 2009-03-25  Michael Poole <mdpoole@troilus.org>
62
63         * ircd/channel.c (mode_parse): Add Doxygen comment.  When bouncing
64         a mode from a desynced U-lined server, do not set the modes or
65         send the change as a HACK(4) message.
66
67 2009-03-17  Michael Poole <mdpoole@troilus.org>
68
69         * ircd/send.c (sendcmdto_match_butone): Move match_it() to the end
70         of the if() to minimize the number of expensive function calls.
71
72 2009-03-17  Michael Poole <mdpoole@troilus.org>
73
74         * patches/diffs/antispambot.diff: Forward port a patch by Dianora
75         to add rudimentary spam bot detection to ircu.
76
77 2009-02-08  Michael Poole <mdpoole@troilus.org>
78
79         * include/client.h (ClearHub): New macro.
80
81         * ircd/ircd.c (main): Set IPv6 flag on &me if appropriate.
82
83         * ircd/ircd_features.c (feature_notify_hub): New function.
84         (features[]): Register it for FEAT_HUB.
85
86         * ircd/ircd_parser.y (connectblock): Do not default maxlinks to
87         65535 unless "hub" is specified.
88         (clientblock): Reset maxlinks on cleanup.
89
90 2009-02-08  Michael Poole <mdpoole@troilus.org>
91
92         * ircd/channel.c (clean_channelname): Delete this function; it is
93         no longer used, and had the same length-off-by-one bug.
94
95         * ircd/m_join.c (m_join): Use > instead of >= with CHANNELLEN.
96
97         * tests/ircd.conf: Set CHANNELLEN to make it easier to test this.
98
99         * tests/bug-2328334.cmd: New file for regression testing.
100
101 2009-02-08  Michael Poole <mdpoole@troilus.org>
102
103         * include/numeric.h (ERR_INVALIDKEY): Define new numeric.
104
105         * ircd/s_err.c (ERR_INVALIDKEY): Give it a text string.
106
107         * ircd/channel.c (is_clean_key): Rename from clean_key(), and make
108         this function responsible for sending error messages to the client
109         when necessary.
110         (mode_parse_key): Update to match the new is_clean_key() behavior.
111         (mode_parse_upass): Likewise.
112         (mode_parse_apass): Likewise.
113
114         * tests/channel-keys.cmd: New file for regression testing.
115
116 2009-02-08  Michael Poole <mdpoole@troilus.org>
117
118         * include/gline.h (gline_forward_deactivation): Undeclare.
119
120         * ircd/m_gline.c (mo_gline): Remove the special case to call
121         gline_forward_deactivation().
122
123         * ircd/gline.c (gline_add): Mention if the new G-line is already
124         deactivated.
125         (gline_forward_deactivation): Delete implementation.
126
127         * tests/glines.cmd: Update the expected output to match.
128
129 2009-01-12  Michael Poole <mdpoole@troilus.org>
130
131         * ircd/m_topic.c (do_settopic): Just before sending the topic out,
132         check to see if the user is join-delayed and should be shown.
133
134         * ircd/m_wallchops.c (m_wallchops): Allow this command to expose
135         join-delayed users.
136         (ms_wallchops): Likewise.
137
138         * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose
139         join-delayed users.
140         (ms_wallvoices): Likewise.
141
142 2009-01-12  Michael Poole <mdpoole@troilus.org>
143
144         * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
145
146 2009-01-12  Michael Poole <mdpoole@troilus.org>
147
148         * ircd/gline.c (count_users): Accept "flags" mask to limit count
149         to local users.
150         (gline_add): Pass the flags to count_users().
151
152 2009-01-12  Michael Poole <mdpoole@troilus.org>
153
154         * include/gline.h (gline_forward_deactivation): Declare.
155
156         * ircd/gline.c (count_users): Use ipmask-based checks too.
157         (gline_add): Require flags to have exactly one of the GLINE_GLOBAL
158         and GLINE_LOCAL bits set.
159         (gline_forward_deactivation): Implement new function.
160         (gline_find): Only require the GLINE_LOCAL flag to be set in the
161         gline structure; infer GLINE_GLOBAL when it is cleared.  (This
162         matches the value and usage of GLINE_MASK.)
163
164         * ircd/m_gline.c (ms_gline): Default lastmod to the known lastmod
165         time for GLINE_LOCAL_{DE,}ACTIVATE.
166         (mo_gline): Check that expiration times parse as expected.  Reject
167         "*" as a target for GLINE_LOCAL_{DE,}ACTIVATE.  Require reason and
168         expiration time for new G-lines.  Allow deactivation of an unknown
169         G-line without creating it ("so-and-so ... creating new G-line" is
170         a confusing message for a deactivation).
171
172         * tests/glines.cmd: New test script for G-line parsing tests.
173
174         * tests/ircd.conf: Enable CONFIG_OPERCMDS for glines.cmd.
175
176         * tests/ircd-2.conf: Likewise.
177
178         * tests/readme.txt: Add section on command syntax.
179
180         * tests/test-driver.pl: Report line numbers more clearly.
181         Fix (somewhat kludgily) the brokenness of consecutive "expect"
182         lines, as demonstrated by the numeric 219 and 281 expects in
183         glines.cmd.
184
185 2008-11-17  Michael Poole <mdpoole@troilus.org>
186
187         * ircd/m_kick.c (ms_kick): Properly handle crossing net rider and
188         normal KICKs (in the case where we get the normal kick first).
189
190 2008-11-17  Michael Poole <mdpoole@troilus.org>
191
192         * ircd/match.c (match): Fix an error in backtracking (apparently
193         exacerbated by escapes).
194
195         * ircd/test/ircd_match_t.c: Update headers and make sure we have a
196         mmap() anonymous request flag.
197         (test_match): New function.
198         (do_match_test): Use it instead of calling match() directly.
199
200 2008-09-07  Perry Lorier <isomer@undernet.org>
201         
202         * ircd/m_kill.c: Remove the . from the end of the nickname in kill
203         messages to make cut and pasting easier.
204
205 2008-03-20  Michael Poole <mdpoole@troilus.org>
206
207         * ircd/ircd_string.c (ircd_aton_ip4): Reject strings with more
208         than 3 dots in them.
209
210         * ircd/test/ircd_in_addr_t.c (test_addrs): Update the expected
211         parsing for a bare IPv4 address to a IPv4-mapped address.
212         (test_masks): Add a test for the ircd_string.c change.
213
214 2008-03-20  Kevin L. Mitchell  <klmitch@mit.edu>
215
216         * include/client.h: IsLocOp() now checks to see if its MyUser() as
217         well; IsAnOper() uses IsOper() and IsLocOp() instead of directly
218         testing the flags
219
220 2008-03-15  Michael Poole <mdpoole@troilus.org>
221
222         * ircd/s_bsd.c (init_connection_limits): Remove errant apostrophe.
223         Print text error message when unable to set max FDs.
224
225 2008-03-15  Michael Poole <mdpoole@troilus.org>
226
227         * ircd/s_user.c (set_user_mode): Check for end of argument list
228         when processing 'r' modes.
229
230 2008-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
231
232         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
233
234 2008-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
235
236         * ircd/m_burst.c (ms_burst): surround protocol_violation() and
237         break in braces to do what Jan Krueger was trying to do...
238
239 2008-01-03  Jan Krueger  <jast@heapsort.de>
240
241        * ircd/m_burst.c: prevent leaking the next nick into the current one's
242        oplevel. Add protocol_violation when an invalid nick flag appears.
243
244 2007-12-28  Kevin L. Mitchell  <klmitch@mit.edu>
245
246         * ircd/channel.c: add MODE_REGISTERED, mapped to +R; arrange to
247         only have it settable or clearable by remote users or /opmode
248
249         * include/supported.h (FEATURESVALUES2): update to include 'R'
250         channel mode
251
252         * include/channel.h: add MODE_REGISTERED, update infochanmodes to
253         include 'R' channel mode
254
255 2007-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
256
257         * ircd/m_gline.c (ms_gline): if we got an activate or deactivate
258         for a global G-line we never heard of, and we cannot create it
259         because no expire time was sent, manually propagate the G-line
260         instead of trying to call gline_add()
261
262         * ircd/gline.c (make_gline): never allow a G-line to be created
263         with a 0 expire time
264
265 2007-12-03  Michael Poole <mdpoole@troilus.org>
266
267         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.12 release.
268
269 2007-12-03  Michael Poole <mdpoole@troilus.org>
270
271         * doc/Makefile.in (DATAROOTDIR): Define.
272         (DATADIR): Likewise.
273         
274 2007-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
275
276         * ircd/version.c.SH: correct invalid syntax in shell case/esac
277
278         * ircd/ircd_lexer.l: provide an implementation of yywrap() so we
279         no longer have to link against -lfl
280
281         * configure.in: drop tests on LEXLIB and don't add it to the list
282         of libs
283
284         * ircd/gline.c (gline_add): apply too-many-users test to realname
285         G-lines *only* when the origin is my user (or a user, for
286         remote-local G-lines)
287
288 2007-11-28  Michael Poole <mdpoole@troilus.org>
289
290         * include/patchlevel.h (PATCHLEVEL): Bump for pre12 development.
291
292 2007-11-28  Michael Poole <mdpoole@troilus.org>
293
294         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.11 release.
295
296 2007-11-28  Michael Poole <mdpoole@troilus.org>
297
298         * tests/test-driver.pl (drv_default): Fix expect for numeric
299         responses that have non-trivial parameters.
300         (check_expect): Simplify (and fix) sender name check.
301
302         * tests/bug-1640796.cmd: Update expect NNN for new POE behavior
303         and part to not try to part the channel named "leaving".
304
305         * tests/bug-1674539.cmd: Update expect NNN for new POE behavior.
306
307         * tests/bug-1840011.cmd: New test script.
308         
309 2007-11-28  Michael Poole <mdpoole@troilus.org>
310
311         * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
312         (apply_ban): Only block narrower bans if the wider ban is active.
313
314 2007-11-24  Michael Poole <mdpoole@troilus.org>
315
316         * ircd/m_names.c (do_names): Don't try to re-initialize the start
317         of buf[] for each line.  It's done the first time around and that
318         can be reused safely.
319
320 2007-11-17  Michael Poole <mdpoole@troilus.org>
321
322         * ircd/m_stats.c (m_stats): Properly assign param before it is
323         used in the hunt_server_cmd() call.
324         
325 2007-11-17  Michael Poole <mdpoole@troilus.org>
326
327         * ircd/s_auth.c (iauth_disconnect): Avoid destroying invalid
328         sockets.
329         (iauth_stderr_callback): Disconnect iauth child if stderr has
330         EOF (in case stdin notification is delayed somehow).
331         
332 2007-11-04  Michael Poole <mdpoole@troilus.org>
333
334         * ircd/umkpasswd.c (sum): Typecast buffer to avoid a warning about
335         the parameter type being passed to strlen().
336         
337 2007-11-04  Michael Poole <mdpoole@troilus.org>
338
339         * doc/example.conf: Document /LIST M as controlled by list_chan.
340
341         * include/channel.h (LISTARG_SHOWMODES): Define.
342
343         * ircd/hash.c (list_next_channels): Handle it.
344
345         * ircd/m_list.c (show_usage): Document 'M' flag.
346         (param_parse): Recognize 'M' as LISTARGS_SHOWMODES.
347
348 2007-11-04  Michael Poole <mdpoole@troilus.org>
349
350         * ircd/m_list.c (param_parse): Reverse comparison direction when
351         converting from minutes to time_t, and which bound is set (so that
352         T<time_t works correctly).  Also switch is_time cases so that 'T'
353         and 'C' work as documented.  Remove a "break" after a "return".
354
355         (m_list): Remove a "break" after a "return".
356
357 2007-10-29  Michael Poole <mdpoole@troilus.org>
358
359         * ircd/ircd_lexer.l (YY_INPUT): Redefine to use fbgets().
360         (init_lexer): Return a value to indicate failure.  Use fbopen().
361         (deinit_lexer): New function.
362
363         * ircd/s_conf.c (read_configuration_file): Update extern
364         declarations.  Bail if init_lexer() fails.  Call deinit_lexer()
365         rather than directly munging yyin.
366
367 2007-10-29  Michael Poole <mdpoole@troilus.org>
368
369         * include/gline.h: Delete declaration of gline_propagate().
370
371         * include/whocmds.h: Delete declaration of count_users().
372
373         * ircd/whocmds.c (count_users): Move to gline.c as a static.
374
375         * ircd/gline.c (whocmds.h): Remove #include.
376         (gliter): Document boolean trickiness.  Add missing trickiness
377         when gl_flags has bits set besides GLINE_ACTIVE.
378         (make_gline): Get rid of now-unused "after" variable and the
379         comments related to overlapping G-lines.
380         (gline_propagate): Make static.
381         (count_users): Move from whocmds.c as a static function.
382         (count_realnames): New function.
383         (gline_add): Require a force to hit lots of users with a realname
384         G-line.
385
386 2007-09-05  Michael Poole <mdpoole@troilus.org>
387
388         * ircd/m_gline.c (ms_gline): Remove dead branch when 4 < parc < 5.
389         (mo_gline): Consistently use the last argument as the reason.
390
391 2007-09-05  Michael Poole <mdpoole@troilus.org>
392
393         * ircd/Makefile.in: Fix dependencies for version.h generation.
394
395 2007-08-20  Michael Poole <mdpoole@troilus.org>
396
397         * ircd/send.c (sendwallto_group_butone): Move a feature_bool()
398         call out of a loop.  Convert HasFlag() uses to appropriate macros
399         from client.h.
400
401 2007-08-20  Michael Poole <mdpoole@troilus.org>
402
403         * ircd/ircd_string.c (ircd_aton_ip4): Allow a sequence of *.* at
404         the end of an IPv4 mask.
405         (ipmask_parse): Likewise for *:* at the end of IPv6 masks.
406
407         * ircd/test/ircd_in_addr_t.c (test_masks): Add tests for this.
408
409 2007-08-20  Michael Poole <mdpoole@troilus.org>
410
411         * ircd/s_user.c (register_user): Update inv_clients and opers
412         counts.  Call client_set_privs() for local users.
413         (set_nick_name): Do not call client_set_privs() for remote users.
414         (set_user_mode): Move oper and invisible client checks inside the
415         IsRegistered() section.
416
417 2007-08-14  Michael Poole <mdpoole@troilus.org>
418
419         * ircd/channel.c (DONE_*): Split key changes into _ADD and _DEL.
420         (mode_parse_key): Check both, to properly handle -k+k changes.
421         (mode_parse_upass): Likewise, for -U+U.
422         (mode_parse_apass): Liekwise, for -A+A (in case that ever happens).
423         (mode_parse): Update which "done" flag is checked during a wipeout.
424
425 2007-08-13  Michael Poole <mdpoole@troilus.org>
426
427         * ircd/s_user.c (whipser): CNOTICEs should not trigger away
428         messages, only CPRIVMSGs.
429
430 2007-08-13  Michael Poole <mdpoole@troilus.org>
431
432         * ircd/m_who.c (m_who): Reorder responses and change the
433         ERR_QUERYTOOLONG parameter to be consistent with m_whois().
434         
435 2007-08-13  Michael Poole <mdpoole@troilus.org>
436
437         * ircd/s_user.c (register_user): Initialize umodev[] in a
438         C89-compatible way.  (gcc 4.1.2 warned about it.)
439
440 2007-08-13  Michael Poole <mdpoole@troilus.org>
441
442         * ircd/m_names.c (do_names): Add NAMES_DEL to comment.  Avoid use
443         of strcat().  Get rid of ms_names(), which was basically a copy of
444         m_names(), and merge the "showingdelayed" changes into m_names().
445         Replace the recursion with iteration.
446
447         * ircd/parse.c (msgtab): Use m_names(), not ms_names().
448
449 2007-08-08  Michael Poole <mdpoole@troilus.org>
450
451         * ircd/s_auth.c (report_iauth_conf): Remove end-of-stats message;
452         m_stats() already does that.
453
454         (report_iauth_stats): Likewise.
455
456 2007-08-08  Michael Poole <mdpoole@troilus.org>
457
458         * include/res.h (irc_in_addr_is_ipv4): Fix classification of
459         addresses like 0.0.0.0.
460
461 2007-07-21  Perry Lorier <isomer@undernet.org>
462
463         * ircd/s_user.c: Move set_nick_name() to use set_user_mode(),
464         set_user_mode() now interprets +r usermodes properly (and ignores
465         them from non servers).  This fixes a problem where remote users
466         weren't being counted properly anymore.
467
468 2007-07-20  Kevin L. Mitchell  <klmitch@mit.edu>
469
470         * ircd/m_gline.c: create abs_expire() macro to convert an expire
471         timestamp from the network into an absolute time, if needed;
472         rename expire_off to expire globally, since it now represents an
473         absolute expiration time; use expire - CurrentTime in gline
474         forwarding statements; in ms_gline(), use abs_expire() to convert
475         network expiration timestamp into absolute timestamp; in
476         mo_gline(), add CurrentTime to oper-provided expiration offset to
477         convert to absolute timestamp
478
479         * ircd/gline.c: assume expire and lifetime arguments to
480         gline_add() and gline_modify() are already absolute timestamps;
481         send lifetime parameter as an absolute timestamp, but leave expire
482         timestamp as relative as first part of a 2-phase update
483
484 2007-07-12  Perry Lorier <isomer@undernet.org>
485         Reconsider how we manage modes before registration, to avoid stats
486         getting out of sync.
487
488         * ircd/s_user.c (set_user_mode): Add new parameter to set_user_mode to
489         ignore some modes.
490         (register_user): Use set_user_mode to parse default usermode for
491         users.
492
493         * ircd/m_user.c: Add extra parameter to set_user_mode call
494
495         * ircd/s_auth.c: Add extra parameter to set_user_mode call
496
497         * ircd/m_mode.c: Add extra parameter to set_user_mode call
498
499         * ircd/s_misc.c: Verify stats are consistant.
500
501         * include/s_user.h: Change prototype, add flag definitions.
502
503         * ircd/m_lusers.c (m_users): Assert that we're generating sane stats,
504         include "unknowns" in the total user connections to avoid negative
505         wrap arounds.
506
507 2007-07-12  Perry Lorier <isomer@undernet.org>
508         
509         * ircd/m_user.c (m_luser): Fix broken RFC 2812 on connect user mode 
510         setting
511
512 2007-05-28  Michael Poole <mdpoole@troilus.org>
513
514         * include/numeric.h (ERR_INPUTTOOLONG): New numeric.
515
516         * ircd/s_bsd.c (read_packet): Use it.
517
518         * ircd/s_err.c (replyTable): Give it a format string.
519
520 2007-05-20  Michael Poole <mdpoole@troilus.org>
521
522         * ircd/m_burst.c (ms_burst): Do not let bursting servers join a
523         user to a channel more than once.
524
525 2007-05-20  Michael Poole <mdpoole@troilus.org>
526
527         * ircd/ircd_features.c (feature_set): Report new value of feature
528         for /set.
529         (feature_reset): Likewise, for /reset.
530
531 2007-05-20  Michael Poole <mdpoole@troilus.org>
532
533         * ircd/m_burst.c (netride_modes): Return -1 if someone tries to
534         remove modes in the burst.
535         (ms_burst): Check for, and handle, that protocol violation.
536
537 2007-05-20  Michael Poole <mdpoole@troilus.org>
538
539         * ircd/m_privs.c (mo_privs): Report "no such nickname" for unknown
540         nicks in the list.  (Unfortunately, the nick is lost before ms_privs.)
541
542 2007-05-20  Michael Poole <mdpoole@troilus.org>
543
544         * ircd/listener.c (show_ports): Actually hide hidden ports from
545         clients that should not see them.
546
547 2007-05-20  Michael Poole <mdpoole@troilus.org>
548
549         * ircd/s_err.c (ERR_DONTCHEAT): Add apparently missing %s.
550         
551 2007-05-20  Michael Poole <mdpoole@troilus.org>
552
553         * ircd/m_connect.c (mo_connect): Return an error to a locop who
554         tries to do a remote connect.
555
556 2007-05-20  Michael Poole <mdpoole@troilus.org>
557
558         * ircd/parse.c (msgtab): Make SETTIME consistent with other
559         oper commands, in using m_not_oper for non-opered clients.
560
561 2007-05-20  Michael Poole <mdpoole@troilus.org>
562
563         * ircd/ircd_parser.y (pseudoblock): Forbid pseudo commands that
564         are not all alphabetic characters.
565
566 2007-05-20  Michael Poole <mdpoole@troilus.org>
567
568         * configure.in (maxcon): Check that maximum connections is
569         sufficiently large to avoid underflow in MAXCLIENTS.
570         
571 2007-05-20  Michael Poole <mdpoole@troilus.org>
572
573         * include/supported.h (FEATURES2): Remove extra space.
574
575         * ircd/m_admin.c (m_admin): Only check server mask against our
576         name, so that it cannot leak information about other linked
577         servers.
578
579         * ircd/m_version.c (m_version): Likewise.
580         
581 2007-04-15  Kevin L. Mitchell  <klmitch@mit.edu>
582
583         * ircd/m_gline.c: fix minor typo in code that forwards remote
584         local activations/deactivations: %c takes characters, not
585         pointers!
586         (mo_gline): fix similar typo in code forwarding remote local
587         G-lines by opers
588
589 2007-04-10  Michael Poole <mdpoole@troilus.org>
590
591         * ircd/ircd_parser.y (iauth): Avoid problems related to MyFree's
592         multiple evaluation of its argument.
593
594 2007-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
595
596         * ircd/m_gline.c (ms_gline): lastmod must be non-zero
597
598 2007-04-04  Michael Poole <mdpoole@troilus.org>
599
600         * ircd/s_conf.c (rehash): Restart resolver after reading the
601         config file; this un-breaks the resolver after /rehash if the
602         ircd.conf contains no "dns server = <ipstring>;" lines.
603
604 2007-04-01  J. R. Lenz <ralf@starshadow.com>
605
606         * ircd/s_user.c (register_user): Check for host-hiding when fully
607         registering a user.  [Comment added by Entrope.]
608
609 2007-03-31  Michael Poole <mdpoole@troilus.org>
610
611         * doc/readme.iauth (IAuth M): Document new command.
612
613         * ircd/m_user.c (m_user): Recognize RFC 2812 mode request and a
614         saner usermode request.
615
616         * ircd/s_auth.c (iauth_cmd_usermode): New command.
617         (iauth_parse): Dispatch to it.
618
619         * ircd/s_user.c (set_user_mode): Only broadcast usermode changes
620         for registered clients.
621
622         * tools/iauth-test (127.0.1.3): Test the new M command.
623
624 2007-03-31  Michael Poole <mdpoole@troilus.org>
625
626         * ircd/m_mode.c (m_mode): Check and report target/source
627         violations before calling set_user_mode().
628         (ms_mode): Likewise.
629
630         * ircd/s_user.c (set_user_mode): Remove those checks from here.
631
632 2007-03-31  Michael Poole <mdpoole@troilus.org>
633
634         * include/ircd_events.h (struct Generators): Convert elements to
635         be struct GenHeader*.
636         (timer_next): Update to match.
637
638         * ircd/ircd_events.c (timer_enqueue): Update to match.
639         (signal_callback): Likewise.
640         (timer_init): Remove a typecast with something slightly safer.
641         (timer_run): Update to deal with new type of Generator.g_timer.
642         (signal_add): Likewise.
643         (socket_add): Likewise.
644         
645 2007-03-28  Michael Poole <mdpoole@troilus.org>
646
647         * ircd/m_asll.c (ms_asll): Count hits and report at the end, so
648         that a client is told whether any match (and has a hint that only
649         directly linked servers are checked).
650         (mo_asll): Likewise.
651
652 2007-03-26  Michael Poole <mdpoole@troilus.org>
653
654         * ircd/s_stats.c (m_stats): Move check for STAT_FLAG_LOCONLY (and
655         the assignment to "param") to the hunted server.
656
657 2007-03-26  Michael Poole <mdpoole@troilus.org>
658
659         * ircd/s_auth.c (iauth_parse): Check for missing arguments when
660         parsing the iauth message.
661
662         * tests/bug-1685648.cmd: New file to test this.
663
664         * tests/iauth-test: New file to exercise the code path.
665
666         * tests/ircd.conf: Use the iauth-test helper program.
667
668 2007-03-26  Michael Poole <mdpoole@troilus.org>
669
670         * ircd/m_silence.c (forward_silences): Do not try twice to process
671         silences that were both added and deleted.
672
673 2007-03-26  Michael Poole <mdpoole@troilus.org>
674
675         * ircd/ircd_parser.y (portblock): Restore old behavior for Port
676         blocks with no host listed.
677
678 2007-03-26  Michael Poole <mdpoole@troilus.org>
679
680         * doc/readme.iauth (iauth I): Fix example and syntax.
681
682 2007-03-18  Michael Poole <mdpoole@troilus.org>
683
684         * acinclude.m4 (unet_NONBLOCKING): Properly quote function name.
685         (unet_SIGNALS): Likewise.
686         (unet_CHECK_TYPE_SIZES): Likewise.
687         (AC_LIBRARY_NET): Likewise.
688
689 2007-03-18  Kevin L. Mitchell  <klmitch@mit.edu>
690
691         * ircd/m_gline.c (mo_gline): add permissions checks I kept
692         forgetting to add--remote local modifications require
693         FEAT_CONFIG_OPERCMDS and PRIV_GLINE, local G-lines require
694         PRIV_LOCAL_GLINE, and global G-line changes (excluding local
695         activation/deactivation) require FEAT_CONFIG_OPERCMDS and
696         PRIV_GLINE
697
698 2007-03-17  Michael Poole <mdpoole@troilus.org>
699
700         * doc/example.conf (CRule): Document the support for multiple
701         server masks in a single CRule block.
702         (Port): Document the optional additional field for vhost entries.
703         Document the support for multiple vhost entries in a single Port
704         block.
705
706         * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
707         (USE_IPV6): Likewise.
708         (portblock): Iterate over hosts rather than using the single host.
709         (portitem): Add portvhostnumber alternative production.
710         (portnumber): Check port number here.  If valid, combine address
711         family and port number in "port" variable.  If a port-less item
712         exists in "hosts", set its port number.
713         (portvhost): Prepend mask to "hosts" list.
714         (portvhostnumber): New production.
715         (cruleblock): Iterate over hosts rather than using the single
716         host.
717         (cruleserver): Prepend server mask to "hosts" list.
718
719 2007-03-17  Michael Poole <mdpoole@troilus.org>
720
721         * ircd/listener.c (add_listener): Only try to create IPv6 sockets
722         for IPv6-compatible addresses; likewise for IPv4.
723
724 2007-03-17  Michael Poole <mdpoole@troilus.org>
725
726         * doc/example.conf (Operator): Update documentation to mention
727         more than one host entry is allowed.
728         (Motd): Likewise.
729
730         * ircd/ircd_parser.y (hosts): New file-scope variable.
731         (free_slist): New helper function.
732         (operblock): Iterate over hosts instead of using the single host.
733         (operhost): Prepend the mask to hosts.
734         (motdblock): Iterate over hosts instead of using the single host.
735         (motdhost): Prepend the mask to hosts.
736         (motdfile): Fix possible leak of "pass" string (the filename).
737
738         * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
739         string; operblock (the only caller) frees it now.
740
741 2007-03-17  Michael Poole <mdpoole@troilus.org>
742
743         * ircd/list.c (free_link): Only decrement the in-use count of
744         links if we free a link.
745
746 2007-03-17  Kevin L. Mitchell  <klmitch@mit.edu>
747
748         * ircd/s_err.c: update replies to handle new fields in
749         RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
750         G-line lifetime, and local activation status
751
752         * ircd/m_gline.c: update function documentation for ms_gline();
753         move test for server to before mask processing; don't look up
754         remote server too early; add code to process local activations and
755         deactivations early in ms_gline(); implement adding and destroying
756         local G-lines; don't try to locally activate or deactivate G-lines
757         that don't exist; add code to keep track of which fields were
758         available to ms_gline(); implement G-line modification and
759         creation; remove old ms_gline() code; convert
760         sendwallto_group_butone() calls to Debug() calls; reimplement
761         mo_gline() to take into account new syntax
762
763         * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
764         its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
765         G-line expires; add lifetime parameter to make_gline(); disable
766         overlapping G-line check; initialize gl_lifetime from lifetime
767         parameter; initialize gl_state to GLOCAL_GLOBAL; update
768         gline_propagate() to send lifetime parameter; add lifetime
769         parameter to gline_add(); remove some old code in gline_add();
770         figure out lifetime to set on new G-line; remove test for
771         make_gline() returning NULL, since it should never do so now; add
772         modify_gline() for modifying global G-lines; add gline_destroy()
773         for destroying local G-lines; update gline_burst() to send
774         lifetime parameter; update gline_resend() to send lifetime
775         parameter; update gline_list() to add lastmod, lifetime, and local
776         status indicators; update gline_stats() to send lastmod, lifetime,
777         and local status indicators; count BADCHANs in
778         gline_memory_count()
779
780         * include/gline.h: add enum GlineLocalState for keeping track of
781         local state changes to global G-lines; store state in struct
782         Gline; document enum GlineAction; add GLINE_EXPIRE,
783         GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
784         those fields to gline_modify(); add GLINE_UPDATE mask for checking
785         for the above flags; update GlineIsActive() to take into account
786         new gl_state field in struct Gline; add lifetime to gline_add();
787         add gline_modify() for modifying existing global G-lines, and
788         gline_destroy() for destroying local G-lines
789
790         * doc/readme.gline: update documentation to reflect changes made
791         to G-line command syntax
792
793 2007-03-17  Michael Poole <mdpoole@troilus.org>
794
795         * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
796         aborting on unrecognized arguments.  It isn't nice to core on
797         "umkpasswd --help"..
798
799 2007-03-16  Michael Poole <mdpoole@troilus.org>
800
801         * doc/example.conf (Class): Move the "Recommended client classes"
802         comment to a better place (and stop recommending them).  Clarify
803         what maxlinks does.  Make it clear that Operator password entries
804         only support umkpasswd formats.
805         
806 2007-03-16  Michael Poole <mdpoole@troilus.org>
807
808         * ircd/ircd.c (parse_command_line): Emit a warning if using -x
809         when DEBUGMODE is disabled.
810
811 2007-03-16  Michael Poole <mdpoole@troilus.org>
812
813         * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
814         unlimited here, to match attach_conf()'s behavior.
815
816 2007-03-16  Kevin L. Mitchell  <klmitch@mit.edu>
817
818         * ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to
819         checking for a G-line matching a new user
820
821         * ircd/m_gline.c (ms_gline): rework ms_gline() to handle new
822         command syntax--although it can parse the new syntax, it doesn't
823         yet perform the actions demanded by that syntax
824
825         * ircd/ircd_features.c: trap-door feature FEAT_DISABLE_GLINES to
826         disable G-lines
827
828         * ircd/gline.c: create gliter() macro which performs an iteration
829         over all G-lines in a specified G-line list; initialize record
830         expire in make_gline() (to be redone); check FEAT_DISABLE_GLINES
831         in do_gline(); add and document what happens if GLINE_LOCAL is
832         passed to gline_find()
833
834         * include/ircd_features.h: trap-door feature FEAT_DISABLE_GLINES
835         to disable G-lines; intended use: accidental G-line of *@*
836
837         * include/gline.h: add rexpire (record expiration time) field to
838         gline description structure; add GlineAction enumeration (still
839         undocumented) to describe actions that may be performed on G-lines
840
841 2007-03-09  Michael Poole <mdpoole@troilus.org>
842
843         * include/patchlevel.h (PATCHLEVEL): Bump for .pre11 development.
844
845 2007-03-09  Michael Poole <mdpoole@troilus.org>
846
847         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release.
848
849 2007-03-05  Michael Poole <mdpoole@troilus.org>
850
851         * ircd/m_privs.c (ms_privs): Use the correct source when
852         forwarding the PRIVS request.
853
854         * tests/bug-1674539.cmd: New file to test for this.
855
856         * tests/test-driver.pl: Recognize "oper" command from scripts.
857
858 2007-03-05  Michael Poole <mdpoole@troilus.org>
859
860         * tests/ircd.conf: Make into a hub.
861
862         * tests/ircd-2.conf: New file, for a second server.
863
864         * tests/ircd-3.conf: Configuration for a third server.
865
866 2007-03-04  Michael Poole <mdpoole@troilus.org>
867
868         * ircd/whocmds.c (count_users): Fix length of ipbuf.  (Spotted by
869         paulr.)
870
871 2007-02-28  Michael Poole <mdpoole@troilus.org>
872
873         * ircd/os_generic.c (sockaddr_from_irc): Zero out socket address
874         before setting family, and regardless of whether we have an
875         irc_sockaddr template.
876
877 2007-02-25  Michael Poole <mdpoole@troilus.org>
878
879         * doc/example.conf: Document new options for General block.
880         
881         * include/res.h (clear_nameservers): Declare new function.
882         (add_nameserver): Declare previously static function.
883
884         * include/s_bsd.h (VirtualHost_dns_v4): Declare.
885         (VirtualHost_dns_v6): Likewise.
886
887         * ircd/ircd_lexer.l (DNS): Recognize new token.
888
889         * ircd/ircd_parser.y (DNS): Declare new token.
890         (generalitem): Allow new items for dns vhost(s) and dns servers.
891         (generaldnsvhost): New production.
892         (generaldnsserver): New production.
893
894         * ircd/ircd_res.c (VirtualHost_dns_v4): New variable.
895         (VirtualHost_dns_v6): Likewise.
896         (clear_nameservers): New function.
897         (restart_resolver): Scan specified servers so we only try to open
898         DNS client sockets that we need.
899
900         * ircd/ircd_reslib.c (irc_nscount): Remove redundant initializer.
901         (irc_res_init): Only read the resolver config file if there are no
902         nameservers provided.
903         (add_nameserver): Make non-static.  Remove off-by-one check
904         against IRCD_MAXNS.
905
906         * ircd/s_conf.c (read_configuration_file): Clear nameserver list
907         before reading the config file.
908
909 2007-01-27  Jeannot Langlois <jeannot12@linuxmail.org>
910
911         * doc/example.conf (Features): Illustrate URLREG feature.
912
913         * doc/readme.features (URLREG): Define new feature.
914
915         * include/ircd_features.h (Feature): Add FEAT_URLREG.
916
917         * ircd/ircd_features.c (features): Set the default value.
918
919         * ircd/m_join.c (m_join): For ERR_NEEDREGGEDNICK, include the
920         URLREG value as a format argument.
921
922         * ircd/s_err.c (replyTable): Update ERR_NEEDREGGEDNICK
923         appropriately.
924
925 2007-02-03  Michael Poole <mdpoole@troilus.org>
926
927         * ircd/ircd_reply.c (protocol_violation): Avoid reusing the
928         va_list in vd.
929
930         * ircd/send.c (sendcmdto_channel_butone): Warn against using %v in
931         the pattern -- that will cause incorrect behavior.
932         (sendwallto_group_butone): Likewise.
933         (sendcmdto_match_butone): Likewise.
934
935 2007-01-22  Michael Poole <mdpoole@troilus.org>
936
937         * ircd/channel.c (find_delayed_joins): New function.
938         (modebuf_flush): Handle +D-D and related cases.
939         (mode_parse_mode): It is too early to handle +D here, so don't.
940         (CheckDelayedJoins): Use find_delayed_joins().
941
942 2007-01-22  Michael Poole <mdpoole@troilus.org>
943
944         * tests: New subdirectory for test framework.
945
946         * tests/ircd.conf: Helper file for testing.
947
948         * tests/readme.txt: Simple documentation of test framework.
949
950         * tests/test-driver.pl: Testing script interpreter.
951
952 2007-01-22  Michael Poole <mdpoole@troilus.org>
953
954         * doc/example.conf: Fix potentially confusing comment about ip
955         mask syntax.
956
957 2007-01-22  Michael Poole <mdpoole@troilus.org>
958
959         * INSTALL: Mention source directory naming; update the reference
960         to the config file converter (hah); update CVS directions.
961
962 2007-01-22  Michael Poole <mdpoole@troilus.org>
963
964         * include/supported.h: Move parameters from FEATURES1 to FEATURES2
965         so that neither ISUPPORT line has more than 15 parameters.  (Some
966         clients are picky about this.)
967
968 2007-01-21  Michael Poole <mdpoole@troilus.org>
969
970         * include/patchlevel.h (PATCHLEVEL): Bump for pre10 development.
971
972 2007-01-20  Michael Poole <mdpoole@troilus.org>
973
974         * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.09 release.
975
976 2007-01-15  Michael Poole <mdpoole@troilus.org>
977
978         * doc/readme.iauth (U): Document extended fields.
979
980         * include/s_auth.h (auth_set_user): Declare new parameters.
981
982         * ircd/m_user.c (m_user): Pass new parameters.
983
984         * ircd/s_auth.c (auth_set_user): Accept new parameters.  When
985         using Undernet extensions, forward them to the iauth process.
986
987 2007-01-14  Michael Poole <mdpoole@troilus.org>
988
989         * ircd/os_generic.c (os_recv_nonb): Set errno to zero when
990         returning IO_FAILURE due to a closed connection.
991
992 2006-12-31  Michael Poole <mdpoole@troilus.org>
993
994         * ircd/m_mode.c (ms_mode): Bounce modes from deopped members.
995
996 2006-12-30  Michael Poole <mdpoole@troilus.org>
997
998         * ircd/ircd_string.c (ircd_strncpy): Make sure the output buffer
999         is terminated.  We don't rely on the arguable strncpy semantics.
1000
1001 2006-12-30  Michael Poole <mdpoole@troilus.org>
1002
1003         * include/struct.h (struct Server): Add asll_last field.
1004
1005         * ircd/ircd.c (check_pings): Add check for asll_last.  When a
1006         server doesn't ping, use an old-style ping rather than AsLL ping.
1007
1008         * ircd/m_pong.c (ms_pong): Use ClearPingSent() rather than
1009         ClrFlag().  Set asll_last to current time.
1010         (mr_pong): Use ClearPingSent() rather than ClrFlag().
1011         (m_pong): Likewise.
1012
1013         * ircd/s_bsd.c (completed_connection): Likewise.
1014         (read_packet): Likewise.  Update cli_lasttime for servers in
1015         addition to clients.
1016
1017 2006-01-13  Michael Poole <mdpoole@troilus.org>
1018
1019         * ircd/m_burst.c (ms_burst): Properly handle member mode :ov.
1020
1021 2006-01-13  Michael Poole <mdpoole@troilus.org>
1022
1023         * ircd/m_create.c (ms_create): Add channel name to the protocol
1024         violation notice for a redundant CREATE.
1025
1026 2006-01-13  Michael Poole <mdpoole@troilus.org>
1027
1028         * ircd/s_user.c (set_nick_name): Use user's account name rather
1029         than the account parameter, in case the parameter contains a colon
1030         (i.e. "account:1234" format).
1031
1032 2006-01-13  Michael Poole <mdpoole@troilus.org>
1033
1034         * doc/readme.who: Document 'd' user-matching flag.
1035
1036 2006-12-18  Michael Poole <mdpoole@troilus.org>
1037
1038         * ircd/m_jupe.c (mo_jupe): Fix which privilege is tested.
1039
1040 2006-12-07  Michael Poole <mdpoole@troilus.org>
1041
1042         * ircd/listener.c (show_ports): Update to show '4' and/or '6' as
1043         flags in response, with a '-' suffix if either one fails to open.
1044
1045 2006-12-07  Michael Poole <mdpoole@troilus.org>
1046
1047         * doc/example.conf (Port): Document the method to select IPv4 or
1048         IPv6 restriction for a port.
1049
1050         * include/listener.h (LISTEN_IPV4): New listener flag.
1051         (LISTEN_IPV6): New listener flag.
1052         (struct Listener): Split 'fd' and 'socket' fields into two each.
1053
1054         * ircd/ircd_lexer.l (gb): Move to be alphabetical.
1055         (gigabytes): Likewise.
1056         (ipv4): New token.
1057         (ipv6): Likewise.
1058         Adapted word matcher to handle digits in the non-leading character.
1059
1060         * ircd/ircd_parser.y (USE_IPV4): New macro.
1061         (USE_IPV6): Likewise.
1062         (TOK_IPV4): New token.
1063         (TOK_IPV6): Likewise.
1064         (address_family): New non-terminal rule.
1065         (portblock): Default to listening on both IPv4 and IPv6.
1066         (portnumber): Add address_family element and use it.
1067         (portvhost): Likewise.
1068
1069         * ircd/listener.c (make_listener): Adjust for newly split fields
1070         in struct Listener.
1071         (inetport): Likewise.  Adjust return value as well.
1072         (add_listener): Update to handle both IPv4 and IPV6 support.
1073         (close_listener): Likewise.
1074         (accept_connection): Because each listener has two sockets, it is
1075         no longer safe to free the listener when one is destroyed -- so
1076         don't.  Also accept() on the file descriptor from the incoming
1077         event rather than on a fixed fd.
1078
1079         * ircd/os_generic.c (os_socket): For platforms with IPV6_V6ONLY,
1080         enable it for AF_INET6 sockets rather than disabling it for
1081         unspecified sockets.
1082
1083 2006-12-06  Michael Poole <mdpoole@troilus.org>
1084
1085         * include/listener.h (enum ListenerFlag): New enum.
1086         (struct Listener): Convert "active", "hidden" and "server" to a
1087         flagset.
1088         (add_listener): Convert "is_server" and "is_hidden" arguments to
1089         use the same flagset structure.
1090
1091         * ircd/ircd_parser.y (listen_flags): New variable.
1092         (general_vhost): Consolidate references to $3 to use a variable.
1093         (portblock): Use listen_flags instead of tconn and tping.
1094         (portserver): Likewise.
1095         (porthidden): Likewise.
1096
1097         * ircd/listener.c (show_ports): Use new field in Listener.
1098         (set_listener_options): New function.
1099         (inetport): Use it.
1100         (add_listener): Use new field in Listener.  When reusing an extant
1101         listener, call set_listener_options() so the options are updated.
1102         (mark_listeners_closing): Use new field in Listener.
1103         (close_listeners): Use new helper macro to check activeness.
1104         (release_listener): Likewise.
1105         (accept_connection): Likewise.
1106
1107         * ircd/s_bsd.c (report_error): Use the standard snotice rate
1108         limiting here.
1109         (add_connection): Use new helper macro to check serverness.
1110
1111 2006-11-04  Michael Poole <mdpoole@troilus.org>
1112
1113         * ircd/m_nick.c (m_nick): If we get NICK on a server port, tell
1114         the client to go away.
1115
1116 2006-11-04  Michael Poole <mdpoole@troilus.org>
1117
1118         * ircd/version.c.SH: Skip version.c.
1119
1120 2006-11-04  Michael Poole <mdpoole@troilus.org>
1121
1122         * doc/readme.who: Document new 'o' field flag.
1123
1124         * include/whocmds.h (WHO_FIELD_OPL): New flag.
1125
1126         * ircd/channel.c (send_channel_modes): Rename feat_oplevels to
1127         send_oplevels and determine it automatically.
1128         (modebuf_flush_int): Pass along oplevel if it's less than
1129         MAXOPLEVEL.
1130         (mode_process_clients): Allow oplevels to be inherited for -A
1131         channels.  Inherit the opper's oplevel if >= MAXOPLEVEL.
1132
1133         * ircd/m_who.c (m_who): Recognize 'o' flag as WHO_FIELD_OPL.
1134
1135         * ircd/whocmds.c (do_who): Send oplevel for WHO_FIELD_OPL, but
1136         only show up to the requester's own oplevel.
1137
1138 2006-10-21  Michael Poole <mdpoole@troilus.org>
1139
1140         * ircd/convert-conf.c (finish_connects): Fix error display for
1141         missing C: lines when an H: line is present.
1142
1143 2006-08-02  Michael Poole <mdpoole@troilus.org>
1144
1145         * ircd/ircd_parser.y (connectblock): Check for too-long password.
1146         (operblock): Comment why we don't check password length.  Move
1147         PRIV_PROPAGATE test earlier (so a buggy edit, rehash, /oper will
1148         not crash).
1149         (clientblock): Check for too-long password.
1150
1151 2006-08-02  Michael Poole <mdpoole@troilus.org>
1152
1153         * include/channel.h (struct Ban): Fix typo in doxygen comment.
1154
1155 2006-07-09  Michael Poole <mdpoole@troilus.org>
1156
1157         * include/patchlevel.h (PATCHLEVEL): Bump for pre09.
1158
1159 2006-07-09  Michael Poole <mdpoole@troilus.org>
1160
1161         * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.08 release.
1162
1163 2006-07-05  Michael Poole <mdpoole@troilus.org>
1164
1165         * ircd/s_auth.c (auth_freelist): New static variable.
1166         (check_auth_finished): Move call to destroy_auth_request().
1167         (destroy_auth_request): Prepend auth request to freelist.
1168         (start_auth): Use struct from auth freelist if possible.
1169
1170 2006-06-30  Michael Poole <mdpoole@troilus.org>
1171
1172         * ircd/ircd_parser.y (iauth*): Avoid leaking program name string.
1173
1174 2006-06-30  Michael Poole <mdpoole@troilus.org>
1175
1176         * ircd/s_auth.c (check_auth_finished): Free auth structure when
1177         done with it.
1178         (sendto_iauth): Free message buffer when done with it.
1179
1180 2006-06-26  Michael Poole <mdpoole@troilus.org>
1181
1182         * include/patchlevel.h (PATCHLEVEL): Bump for pre08.
1183
1184 2006-06-26  Michael Poole <mdpoole@troilus.org>
1185
1186         * include/patchlevel.h (PATCHEVEL): Bump for release.
1187
1188 2006-06-17  Michael Poole <mdpoole@troilus.org>
1189
1190         * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe.
1191
1192 2006-06-08  Michael Poole <mdpoole@troilus.org>
1193
1194         * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local)
1195         channels for locops as well as global opers.
1196
1197 2006-06-08  Michael Poole <mdpoole@troilus.org>
1198
1199         * ircd/m_gline.c (ms_gline): Use final argument as G-line reason.
1200
1201 2006-06-08  Michael Poole <mdpoole@troilus.org>
1202
1203         * ircd/gline.c (gline_stats): Show activation state in /stats g.
1204
1205         * ircd/s_err.c (RPL_STATSGLINE): Update format string to match.
1206
1207 2006-06-07  Michael Poole <mdpoole@troilus.org>
1208
1209         * doc/example.conf: Document the list_chan privilege.
1210
1211         * ircd/ircd_lexer.l: Recognize the token.
1212
1213         * ircd/ircd_parser.y: Treat it appropriately.
1214
1215 2006-06-07  Michael Poole <mdpoole@troilus.org>
1216
1217         * ircd/s_auth.c (auth_ping_timeout): If the client never had an
1218         auth request, kill them on ping timeout.
1219
1220 2006-06-05  Michael Poole <mdpoole@troilus.org>
1221
1222         * ircd/s_auth.c (auth_timeout_callback): Clear AR_DNS_PENDING when
1223         destroying the lookup and reporting DNS failure.
1224
1225 2006-05-28  Michael Poole <mdpoole@troilus.org>
1226
1227         * doc/readme.features (MAXBANS): Update default value.
1228         (NICKLEN): Likewise.
1229         (HIS_STATS_*): Sort alphabetically.
1230
1231         * ircd/m_stats.c (m_stats): Describe the intention so that there
1232         are not further questions about local opers and remote /stats.
1233         Fix places that use cptr instead of sptr.
1234
1235 2006-05-24  Michael Poole <mdpoole@troilus.org>
1236
1237         * ircd/s_auth.c (auth_dns_callback): Be more careful about
1238         handling failed DNS lookups.  Use a more standard function to
1239         disconnect clients for IP mismatches.
1240         (start_auth): Use a more standard function to disconnect clients
1241         for peer or local socket address lookup failures.
1242
1243 2006-05-17  Michael Poole <mdpoole@troilus.org>
1244
1245         * ircd/s_auth.c (auth_ping_timeout): Fix off-by-one error.
1246
1247 2006-05-17  Michael Poole <mdpoole@troilus.org>
1248
1249         * ircd/Makefile.in (install-*): Install convert-conf.  Install
1250         umkpasswd when ${BINDIR}/ircd is not a symlink.
1251
1252 2006-05-15  Michael Poole <mdpoole@troilus.org>
1253
1254         * ircd/s_auth.c (check_auth_finished): Only check passwords on
1255         user ports.
1256
1257 2006-05-14  Michael Poole <mdpoole@troilus.org>
1258
1259         * doc/example.conf (Connect): Mention the vhost option.
1260
1261 2006-05-08  Michael Poole <mdpoole@troilus.org>
1262
1263         * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here...
1264
1265         * ircd/s_auth.c (auth_set_pong): ... to here.
1266
1267 2006-05-07  Michael Poole <mdpoole@troilus.org>
1268
1269         * include/s_auth.h (auth_ping_timeout): Declare new function.
1270
1271         * ircd/ircd.c (check_pings): Move auth timeout logic into that new
1272         function.
1273
1274         * ircd/s_auth.c (HeaderMessages): Insert new message.
1275         (auth_ping_timeout): Define new function.
1276         (auth_timeout_callback): Remove "hurry" notification from here.
1277
1278 2006-05-07  Michael Poole <mdpoole@troilus.org>
1279
1280         * include/s_auth.h (destroy_auth_request): Remove second argument.
1281
1282         * ircd/list.c (free_client): Update to match.
1283
1284         * ircd/s_auth.c (check_auth_finished): Remove second argument and
1285         update call to destroy_auth_request().
1286         (send_auth_query): Update call to destroy_auth_request().
1287         (destroy_auth_request): Remove second argument.
1288         (auth_timeout_callback): Send timeout failure messages here
1289         instead.  Update call to check_auth_finished().
1290         (auth_dns_callback): Update call to check_auth_finished().
1291         (start_auth): Likewise.
1292         (auth_set_pong): Likewise.
1293         (auth_set_user): Likewise.
1294         (auth_set_nick): Likewise.
1295         (auth_cap_done): Likewise.
1296         (iauth_parse): Likewise.
1297
1298 2006-05-06  Michael Poole <mdpoole@troilus.org>
1299
1300         * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED.
1301         (check_auth_finished): Move password check out of iauth-only part
1302         and use AR_PASSWORD_CHECKED to make sure we only check it once.
1303
1304 2006-04-28  Michael Poole <mdpoole@troilus.org>
1305
1306         * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field.
1307         (check_auth_finished): Fix timeout update.
1308         (destroy_auth_request): Only delete timer if it is active.
1309         (auth_timeout_callback): Do not disconnect client on timeout, so
1310         that the user can finish sending NICK/USER or doing iauth.
1311
1312 2006-04-28  Michael Poole <mdpoole@troilus.org>
1313
1314         * doc/example.conf (Admin): Fix documentation of which line can be
1315         listed twice.
1316
1317         * ircd/ircd_parser.y (adminblock): Allow admin information to be
1318         changed via /rehash.
1319
1320 2006-04-06  Michael Poole <mdpoole@troilus.org>
1321
1322         * ircd/s_auth.c (start_auth): Add client to list after getting
1323         endpoint names (which can apparently fail for some reason).
1324
1325 2006-04-06  Michael Poole <mdpoole@troilus.org>
1326
1327         * ircd/ircd_snprintf.c: Use SIZEOF_LONG_LONG (which is 0 for
1328         unknown types) instead of the never-defined HAVE_LONG_LONG.
1329
1330 2006-04-06  Michael Poole <mdpoole@troilus.org>
1331
1332         * doc/example.conf (IAuth): Update to reflect new syntax.
1333
1334         * doc/readme.who: Fix typo in metasyntactic variable name.
1335
1336 2006-04-04  Michael Poole <mdpoole@troilus.org>
1337
1338         * include/patchlevel.h: Update for pre07.
1339
1340 2006-04-04  Michael Poole <mdpoole@troilus.org>
1341
1342         * include/patchlevel.h: Update for u2.10.12.06 release.
1343
1344 2006-04-03  Michael Poole <mdpoole@troilus.org>
1345
1346         * ircd/channel.c (bmatch): If ipmask_check() indicates old_ban is
1347         a CIDR-wise superset of new_ban, check whether new_ban is a
1348         text-wise superset of old_ban.
1349
1350 2006-03-31  Michael Poole <mdpoole@troilus.org>
1351
1352         * tools/iauth-test (send_server_notice): Use a colon prefix before
1353         the message.
1354         (%handlers): Likewise.
1355
1356 2006-03-24  Michael Poole <mdpoole@troilus.org>
1357
1358         * ircd/ircd_signal.c (alloc_crec): Zero-fill returned
1359         ChildRecord structs.
1360
1361         * ircd/jupe.c (make_jupe): Zero-fill newly allocated jupes.
1362
1363         * ircd/list.c (make_link): Zero-fill returned SLink structs.
1364
1365         * ircd/whowas.c (whowas_init): Delete function.
1366         (whowas_alloc): Rewrite to follow the more common pattern and to
1367         zero-fill returned Whowas structs.
1368
1369 2006-03-23  Kevin L. Mitchell  <klmitch@mit.edu>
1370
1371         * ircd/s_auth.c: rewrite iauth_read(), spliting out the parsing
1372         into iauth_parse(); change parsing to separate parameters and deal
1373         with the ':' sentinel; send sentinel in multi-word parameters; fix
1374         iauth_cmd_config() and iauth_cmd_stats() to clear the 'next'
1375         pointer in the SLink structure; fix buffering in
1376         iauth_read_stderr(); remove carriage returns from STDERR contents
1377         as well
1378
1379         * doc/readme.iauth: fix a minor typo in comments for 'd' and 'N'
1380         server messages
1381
1382 2006-03-18  Michael Poole <mdpoole@troilus.org>
1383
1384         * ircd/convert-conf.c (finish_features): Do not emit a feature
1385         setting that has no values.
1386
1387 2006-03-18  Michael Poole <mdpoole@troilus.org>
1388
1389         * ircd/channel.c (mode_parse_key): Outside of burst, allow
1390         overwriting of keys by a service when a key is already set.
1391         (mode_parse_upass): Likewise.  Instead, ignore new Upass during
1392         burst if it is lexicographically greater than the current one.
1393         (mode_parse_apas): Likewise for Apass, but only allow overwiting
1394         an existing Apass in a BURST.
1395
1396 2006-03-18  Michael Poole <mdpoole@troilus.org>
1397
1398         * ircd/channel.c (modebuf_flush_int): Fix typo about changing
1399         oplevels.  Send correct channel TS for modes to other servers.
1400         (mode_parse): Accept timestamps on modes from users on other
1401         servers.  If the received timestamp is too large, handle that.
1402
1403         * ircd/m_create.c (ms_create): Mention the CREATE-during-burst
1404         case and handle it.
1405
1406         * ircd/m_mode.c (ms_mode): Put back HACK(3) when oplevels are off.
1407
1408 2006-03-14  Wouter Coekarts <wouter@coekaerts.be>
1409
1410         * ircd/s_err.c (RPL_STATSILINE): Add two %s to the first field.
1411
1412         * ircd/s_stats.c (stats_configured_links): Use the new %s's to
1413         show username masks for I: lines that have them.
1414         (stats_access): Likewise.
1415
1416 2006-03-13  Michael Poole <mdpoole@troilus.org>
1417
1418         * ircd/msgq.c (msgq_vmake): Try to clear msgbuf freelist after
1419         killing clients, so that that case does not lead immediately to a
1420         server panic.
1421         (msgq_count_memory): Report total buffer text used as a way to
1422         determine whether the BUFFERPOOL value is marginal.
1423
1424 2006-03-02  Michael Poole <mdpoole@troilus.org>
1425
1426         * include/ircd_osdep.h (os_socket): New parameter.
1427
1428         * include/res.h (irc_in_addr_unspec): New macro.
1429
1430         * ircd/ircd_res.c (restart_resolver): Set family appropriately.
1431
1432         * ircd/listener.c (inetport): Let os_ library pick socket family.
1433
1434         * ircd/os_generic.c: Do not #define _XOPEN_SOURCE on FreeBSD 5+.
1435         (sockaddr_from_irc): New parameter.
1436         (os_sendto_nonb): Use new parameter to sockaddr_from_irc().
1437         (os_socket): New parameter.  Try to turn off IPV6_V6ONLY on
1438         sockets that listen on unspecified addresses.
1439         (os_connect_nonb): Use new parameter to sockaddr_from_irc().
1440
1441         * ircd/s_auth.c (start_auth_query): Let os_ library pick socket
1442         family.
1443
1444         * ircd/s_bsd.c (connect_inet): If we pick the IPv4 vhost, specify
1445         family for os_socket() as AF_INET.
1446
1447         * ircd/uping.c (uping_init): Set socket family appropriately.
1448         (uping_server): Likewise.
1449         (uping_end): Fix format strings (the ms_* fields are int, not
1450         long, and this causes bad results on LP64 machines).
1451
1452 2006-02-22  Michael Poole <mdpoole@troilus.org>
1453
1454         * ircd/m_silence.c (apply_silence): Refuse to apply silences for
1455         local users that are broader than an IPv4 /16 or an IPv6 /32,
1456         unless they match every host indiscriminately.
1457
1458 2006-02-22  Michael Poole <mdpoole@troilus.org>
1459
1460         * ircd/s_auth.c (check_auth_finished): Give non-iauth clients
1461         connection classes, too.
1462         (auth_close_unused): Remove redundant check for iauth != NULL.
1463         (report_iauth_conf): Check iauth != NULL before deref'ing it.
1464         (report_iauth_stats): Likewise.
1465
1466 2006-02-22  Kevin L. Mitchell  <klmitch@mit.edu>
1467
1468         * ircd/s_auth.c: fix macros to not dereference a NULL pointer when
1469         iauth is not connected
1470
1471 2006-02-17  Alex Badea <vamposdecampos@gmail.com>
1472
1473         * ircd/s_auth.c (auth_set_username): Check if the last
1474         character of the username is alphanumeric, instead of the
1475         '\0' terminator.
1476         
1477         * ircd/m_pong.c (mr_pong): Parse cookie with strtoul(),
1478         since atol() causes signedness problems.
1479
1480 2006-02-15  Michael Poole <mdpoole@troilus.org>
1481
1482         * include/res.h (NXDOMAIN): Define.
1483
1484         * ircd/ircd_res.c (res_readreply): Treat NXDOMAIN just like
1485         SERVFAIL.  Patch courtesy of Dianora.
1486
1487         * tools/iauth-test (Carp): This doesn't actually use Carp.
1488
1489 2006-02-15  Michael Poole <mdpoole@troilus.org>
1490
1491         * doc/example.conf: Include new HIS_STATS_IAUTH feature.
1492
1493         * doc/readme.features: Document the feature.
1494
1495         * doc/readme.iauth: Rewrite to reflect the new progressive iauth
1496         protocol, based on IRCnet's iauth.
1497
1498         * doc/snomask.html: Document SNO_AUTH server notice flag.
1499
1500         * include/client.h (FLAG_IAUTHED): Delete.
1501         (con_cookie): Delete.
1502         (con_unreg): Delete.
1503         (con_auth): Make comment capitalization consistent.
1504         (con_iauth): Delete.
1505         (CLIREG_*): Delete.
1506         (cli_unreg): Delete.
1507         (cli_cookie): Delete.
1508         (cli_iauth): Delete.
1509         (con_unreg): Delete.
1510         (con_iauth): Delete.
1511         (IsIAuthed): Delete.
1512         (SetIAuthed): Delete.
1513         (SNO_AUTH): New server notice flag.
1514         (SNO_ALL): Update to include SNO_AUTH.
1515         (SNO_OPER): Update to include SNO_AUTH.
1516
1517         * include/ircd_auth.h: Delete file.
1518
1519         * include/ircd_features.h (HIS_STATS_IAUTH): New feature.
1520
1521         * include/s_auth.h: Rewrite almost everything for new auth system.
1522
1523         * include/s_user.h (COOKIE_VERIFIED): Delete.
1524         (register_user): Remove redundant nick and username arguments.
1525
1526         * ircd/ircd_auth.c: Delete file.
1527
1528         * ircd/ircd_features.c (HIS_STATS_IAUTH): New feature.
1529
1530         * ircd/ircd_lexer.l (PROGRAM): New token in grammar.
1531
1532         * ircd/ircd_log.c (masks): Add SNO_AUTH flag.
1533
1534         * ircd/ircd_parser.y (stringlist): Simplify production.
1535         (iauthblock): Revise to only include a PROGRAM production.
1536
1537         * ircd/list.c (make_client): Do not assign to deleted field.
1538
1539         * ircd/m_cap.c (cap_ls): Use auth_cap_start() instead of
1540         cli_unreg().
1541         (cap_req): Likewise.
1542         (cap_end): Use auth_cap_done() instead of cli_unreg().
1543
1544         * ircd/m_pass.c (mr_pass): Merge arguments to PASS.  Use
1545         auth_set_password() to notify iauth of password.
1546
1547         * ircd/m_pong.c (mr_pong): Use auth_set_pong() instead of
1548         cli_cookie() and cli_unreg().
1549
1550         * ircd/m_user.c (m_user): Use auth_set_user() instead of
1551         cli_unreg(), etc.
1552
1553         * ircd/s_auth.c: Rewrite most of the infrastructure for the new
1554         auth system.
1555
1556         * ircd/s_conf.c (rehash): Call auth_*() instead of iauth_*().
1557
1558         * ircd/s_misc.c (exit_one_client): Do not use iauth_exit_client().
1559         (exit_client): Use auth_send_exit() instead.
1560
1561         * ircd/s_stats.c (statsinfo): Include iauth and iauthconf.
1562
1563         * ircd/s_user.c (clean_user_id): Delete (moved into s_auth.c).
1564         (register_user): Remove nick and username parameters; move conf
1565         interactions and username validation to s_auth.c.
1566         (set_nick_name): Use auth_set_nick() instead of cli_cookie(),
1567         cli_unreg(), etc.
1568
1569         * tools/iauth-test: Implementation of iauth for testing purposes.
1570
1571 2006-02-15  Michael Poole <mdpoole@troilus.org>
1572
1573         * ircd/ircd_snprintf.c (doprintf): Fix typecast for %hu.
1574
1575 2006-02-15  Michael Poole <mdpoole@troilus.org>
1576
1577         * include/ircd_signal.h (SigChldCallBack): New typedef.
1578         (register_child): Declare.
1579         (unregister_child): Declare.
1580         (reap_children): Declare.
1581
1582         * ircd/ircd_signal.c (alloc_crec): New function.
1583         (release_crec): New function.
1584         (register_child): New function.
1585         (do_unregister_child): New function.
1586         (unregister_child): New function.
1587         (sigchld_callback): New function.
1588         (setup_signals): Hook SIGCHLD.
1589         (reap_children): New function.
1590
1591         * ircd/ircd.c (server_restart): Call reap_children() on exit.
1592
1593 2006-02-15  Michael Poole <mdpoole@troilus.org>
1594
1595         * include/ircd_osdep.h (os_socketpair): Declare.
1596
1597         * ircd/os_generic.c (is_blocked): New local function.
1598         (os_*): Use is_blocked() instead of cut-and-pasted code.
1599         (os_socketpair): New function.
1600
1601 2006-02-15  Michael Poole <mdpoole@troilus.org>
1602
1603         * ircd/match.c (match): Fix backtracking bug after an escape
1604         (reported by Michael, I think).
1605
1606 2006-02-04  Michael Poole <mdpoole@troilus.org>
1607
1608         * ircd/ircd.c (try_connections): Scan all Connect blocks for the
1609         earliest hold time (suggested by Michael).
1610
1611 2006-02-04  Michael Poole <mdpoole@troilus.org>
1612
1613         * ircd/m_join.c (m_join): Remove #if 0 code and update comment.
1614
1615         * ircd/m_mode.c (ms_mode): Remove self-op support.
1616
1617 2006-01-12  Michael Poole <mdpoole@troilus.org>
1618
1619         * include/patchlevel.h (PATCHLEVEL): Update for 2.10.12.pre06.
1620
1621 2006-01-12  Michael Poole <mdpoole@troilus.org>
1622
1623         * include/patchlevel.h (PATCHLEVEL): Update for release.
1624
1625 2006-01-11  Michael Poole <mdpoole@troilus.org>
1626
1627         * doc/Makefile.in: Make install target VPATH-safe.
1628
1629         * doc/example.conf: Comment out example IAuth block.
1630
1631         * ircd/m_burst.c (ms_burst): Change isdigit() to IsDigit(),
1632         silencing a warning on Solaris.
1633
1634 2006-01-09  Michael Poole <mdpoole@troilus.org>
1635
1636         * ircd/s_user.c (register_user): Do not send +r flag to user when
1637         they first connect.
1638
1639 2006-01-09  Michael Poole <mdpoole@troilus.org>
1640
1641         * include/ircd_features.h (FEAT_ZANNELS): Actually, put it back.
1642
1643         * ircd/ircd_features.c (FEAT_ZANNELS): Likewise.
1644
1645 2006-01-06  Michael Poole <mdpoole@troilus.org>
1646
1647         * ircd/channel.c (mode_process_clients): Do not reveal zombies who
1648         are being opped (MODE and KICK crossed).  Reported by coekie.
1649
1650 2006-01-06  Michael Poole <mdpoole@troilus.org>
1651
1652         * ircd/m_join.c (ms_join): Wipe out all modes (not just chanops)
1653         when replacing a resurrected channel.
1654
1655         * ircd/convert-conf.c (dupstring): Fix probable off-by-one size
1656         passed to memcpy().
1657
1658 2006-01-03  Michael Poole <mdpoole@troilus.org>
1659
1660         * ircd/channel.c (modebuf_flush_int): Also send timestamp when &me
1661         originates the MODE going to other servers (currently just when a
1662         client joins a zannel or uses an A/U password).
1663
1664 2006-01-02  Michael Poole <mdpoole@troilus.org>
1665
1666         * include/ircd_features.h (FEAT_ZANNELS): Remove.
1667
1668         * ircd/channel.c (sub1_from_channel): Remove reference to
1669         FEAT_ZANNELS.
1670
1671         * ircd/ircd_features.c (FEAT_ZANNELS): Remove.
1672
1673         * ircd/m_destruct.c (ms_destruct): Do not try to remove a destruct
1674         event for channels that do not have them (created by BURSTing a
1675         zannel but not yet destroyed by EOB).
1676
1677 2005-12-31  Michael Poole <mdpoole@troilus.org>
1678
1679         * ircd/m_whowas.c (m_whowas): Mention that IP is untracked in WHOWAS.
1680         Spotted by Progs.
1681
1682 2005-12-30  Michael Poole <mdpoole@troilus.org>
1683
1684         * ircd/m_topic.c: Remove block comment about sptr, cptr, etc.
1685         (do_settopic): Add doxygen comment. Move permissions checks..
1686         (m_topic): .. to here.  Update doxygen comment.
1687         (ms_topic): Update doxygen comment here too.
1688
1689 2005-12-30  Michael Poole <mdpoole@troilus.org>
1690
1691         * ircd/s_conf.c (conf_debug_iline): Fix display of null passwords.
1692
1693 2005-12-30  Michael Poole <mdpoole@troilus.org>
1694
1695         * RELEASE.NOTES: Mention removal of HIS_STATS_h.
1696
1697         * ircd/convert-conf.c (removed_features): Add AUTOHIDE,
1698         HIS_DESYNCS and TIMESEC.
1699         (get_connect): Do not downcase connection name on insert.
1700         (do_feature): Do not upcase feature name (cf HIS_STATS_k).
1701
1702 2005-12-30  Michael Poole <mdpoole@troilus.org>
1703
1704         * ircd/engine_devpoll.c (engine_loop): Remove bogus assert.
1705
1706 2005-12-31  Perry Lorier <isomer@undernet.org>
1707
1708         * convert-conf.c: Skip with a warning, H:'s that are missing a
1709         corresponding C:
1710
1711 2005-12-28  Michael Poole <mdpoole@troilus.org>
1712
1713         * ircd-patch: Do not use [ for test, and do not use $[] for expr.
1714         (Solaris /bin/sh, among others, have problems with those.)
1715
1716 2005-12-23  Michael Poole <mdpoole@troilus.org>
1717
1718         * config.guess: Update to current version.
1719
1720         * config.sub: Likewise.
1721
1722 2005-12-23  Kevin L. Mitchell  <klmitch@mit.edu>
1723
1724         * ircd/m_join.c: get rid of MAGIC_REMOTE_JOIN_TS; perform the
1725         deop-other-users loop only when creation < channel timestamp or
1726         when the channel in question happens to be a zannel; actually deop
1727         users, don't just say we are and not do it
1728
1729         * ircd/m_create.c (ms_create): get rid of MAGIC_REMOTE_JOIN_TS
1730
1731         * include/channel.h: get rid of MAGIC_REMOTE_JOIN_TS
1732
1733 2005-12-13  Michael Poole <mdpoole@troilus.org>
1734
1735         * configure.in: Define a macro when compiling on Solaris.
1736
1737         * ircd/ircd_crypt_native.c (_XOPEN_SOURCE): Turn down to 500 so
1738         that Solaris doesn't complain that SUSv3 requires C99.
1739
1740         * ircd/os_generic.c (_XOPEN_SOURCE): Likewise, but leave it at 600
1741         on non-Solaris platforms so that IPv6 stays supported.
1742
1743 2005-12-13  Michael Poole <mdpoole@troilus.org>
1744
1745         * ircd/m_join.c (ms_join): Prevent net rides allowed by moving the
1746         channel timestamp backwards in time without deopping current ops.
1747         (Reported by Wouter Coekaerts.)
1748
1749 2005-12-13  Michael Poole <mdpoole@troilus.org>
1750
1751         * doc/example.conf: Remove extraneous "Other" Client block.
1752
1753         * ircd/convert-conf.c (finish_operators): Fix operator precedence
1754         bug.
1755
1756         * ircd/ircd_parser.y (clientclass): Fix typo in error message.
1757
1758 2005-11-27  Michael Poole <mdpoole@troilus.org>
1759
1760         * ircd/Makefile.in (version.c): version.c also depends on
1761         version.h, patchlevel.h and source files.
1762
1763 2005-11-27  Michael Poole <mdpoole@troilus.org>
1764
1765         * ircd/m_join.c (m_join): Count a join to a new channel as a
1766         target change.
1767
1768 2005-11-19  Michael Poole <mdpoole@troilus.org>
1769
1770         * ircd/s_stats.c (stats_servers_verbose): Display IPv6 support
1771         flag with the other per-server flags.
1772
1773 2005-11-19  Michael Poole <mdpoole@troilus.org>
1774
1775         * ircd/convert-conf.c (finish_features): Only emit "Features {"
1776         once in the converted configuration file.  Display the original
1777         input line for each feature line in the output.
1778
1779 2005-11-18  Michael Poole <mdpoole@troilus.org>
1780
1781         * include/patchlevel.h (PATCHLEVEL): Update for pre05.
1782
1783 2005-11-18  Michael Poole <mdpoole@troilus.org>
1784
1785         * include/patchlevel.h (PATCHLEVEL): Update for release.
1786
1787 2005-11-15  Brian Cline <brian.cline@gmail.com>
1788
1789         * doc/example.conf: Add new line for HIS_MODEWHO feature.
1790
1791         * doc/readme.features: Document new HIS_MODEWHO feature.
1792
1793         * include/ircd_features.h: Declare new HIS_MODEWHO feature.
1794
1795         * ircd/channel.c (modebuf_flush_int): Use new HIS_MODEWHO feature
1796         to show or hide the server name that performed a channel mode change.
1797
1798         * ircd/ircd_features.c: Place new HIS_MODEWHO setting in the feature
1799         table and give it a default value of true, which will hide the
1800         originating server name.
1801
1802 2005-11-16  Michael Poole <mdpoole@troilus.org>
1803
1804         * doc/example.conf (Features): Mention ZANNELS default.
1805
1806         * doc/readme.features: Document OPLEVELS and ZANNELS.
1807
1808 2005-11-17  Carlo Wood <run@alinoe.com>
1809
1810         * include/ircd_features.h (Feature): Add ZANNELS.
1811         * ircd/ircd_features.c (FeatureDesc): idem.
1812         * ircd/channel.c (sub1_from_channel): Don't keep zannels
1813         around when ZANNELS and OPLEVELS are FALSE.
1814         * ircd/m_destruct.c (ms_destruct): Use JOIN instead of
1815         CREATE to recreate a non-empty channel after DESTRUCT.
1816
1817 2005-11-16  Michael Poole <mdpoole@troilus.org>
1818
1819         * tools/convert-conf.py: Delete obsolete code.
1820
1821 2005-11-16  Michael Poole <mdpoole@troilus.org>
1822
1823         * ircd/m_names.c (m_names): Fix handling of NAMES #a,#b.
1824         (ms_names): Likewise.
1825
1826 2005-11-15  Michael Poole <mdpoole@troilus.org>
1827
1828         * ircd/m_nick.c (ms_nick): Clarify message when an older nick
1829         overrules a newer nick.  When killing a client for a nick
1830         collision, make sure to use the numnick as the first argument.
1831
1832 2005-11-14  Michael Poole <mdpoole@troilus.org>
1833
1834         * ircd/channel.c (member_can_send_to_channel): After prodding from
1835         reed, always allow remote users to send to a channel.  He also
1836         pointed out a bug in the first version of this change.
1837
1838 2005-11-14  Carlo Wood <run@alinoe.com>
1839
1840         * ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
1841         (modebuf_mode_uint): Make sure the limit is included as an
1842         argument when necessary (and only when necessary) in a bounce.
1843
1844         * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead
1845         of burst to resynchronize a non-empty destructed channel.
1846
1847 2005-11-14  Michael Poole <mdpoole@troilus.org>
1848
1849         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
1850         changes by voiceless no-account users on a +r channel.
1851
1852 2005-11-14  Michael Poole <mdpoole@troilus.org>
1853
1854         * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
1855         server is kicking him.
1856
1857 2005-11-13  Michael Poole <mdpoole@troilus.org>
1858
1859         * include/patchlevel.h (PATCHLEVEL): Bump for pre04.
1860
1861 2005-11-13  Michael Poole <mdpoole@troilus.org>
1862
1863         * include/patchlevel.h (PATCHLEVEL): Update for release.
1864
1865 2005-11-13  Carlo Wood <run@alinoe.com>
1866
1867         * ircd/m_create (ms_create): Accept CREATE for zannels.
1868
1869         * ircd/m_join.c (m_join): MODE +o for a zannel must come from the
1870         server for compatibility with older versions.
1871
1872 2005-11-12  Michael Poole <mdpoole@troilus.org>
1873
1874         * include/patchlevel.h (PATCHLEVEL): Bump for pre03.
1875
1876 2005-11-12  Michael Poole <mdpoole@troilus.org>
1877
1878         * include/patchlevel.h (PATCHLEVEL): Update for release.
1879
1880 2005-11-11  Michael Poole <mdpoole@troilus.org>
1881
1882         * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A
1883         and AAAA lookups as well as PTR.
1884
1885 2005-11-07  Michael Poole <mdpoole@troilus.org>
1886
1887         * ircd/channel.c (mode_parse_client): Allow clients to specify
1888         oplevel in MODE #channel +o.
1889         (mode_process_clients): Allow oplevel 999 to deop another 999.
1890
1891         * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999.
1892
1893 2005-10-31  Michael Poole <mdpoole@troilus.org>
1894         (Based on a patch by Romain Bignon <progs@ir3.org>)
1895
1896         * ircd/channel.c: Some modes (currently only WASDELJOINS) should
1897         not be propagated to remote servers.
1898
1899 2005-10-30  Michael Poole <mdpoole@troilus.org>
1900
1901         * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
1902         inside an if (MyUser(state->sptr)) test.
1903
1904         * ircd/m_join.c (m_join): Reorganize zannel join check to match
1905         surrounding code.
1906
1907 2005-10-30  Carlo Wood <run@alinoe.com>
1908
1909         * ircd/channel.c (sub1_from_channel): Delay destruction for -A
1910         channels.  They become zombie channels (zannels).
1911         (mode_parse_upass): Add duration to ERR_NOMANAGER message.
1912         (mode_parse_apass): Likewise.  Unconditionally set the member who
1913         sets Apass as oplevel 0.  Clear Upass when clearing Apass.
1914         (joinbuf_join): Remove code to pass oplevel in JOIN.
1915
1916         * ircd/m_burst.c (ms_burst): Handle zannels.
1917
1918         * ircd/m_join.c (m_join): Handle a join to a zannel.  If the user
1919         is joining with ops and/or an oplevel, send those.
1920         (ms_join): Stop trying to parse oplevels in JOIN.  Copy join
1921         timestamp when a user joins a zannel.
1922
1923         * ircd/m_mode.c (ms_mode): Never generate HACK3.  Silently allow a
1924         user to op himself if he is the only one in a channel.
1925
1926         * ircd/s_err.c (ERR_UPASSSET): Remove extra space.
1927         (ERR_UPASSNOTSET): Likewise.
1928         (ERR_NOMANAGER): Add field for channel lifetime.
1929
1930 2005-10-30  Michael Poole <mdpoole@troilus.org>
1931
1932         * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real
1933         channel key is OVERRIDE.  (Reworked patch from a1kmm.)
1934
1935 2005-10-30  Michael Poole <mdpoole@troilus.org>
1936
1937         * .cvsignore: Add autom4te.cache.
1938
1939         * ircd/.cvsignore: Add convert-conf.
1940
1941         * ircd/test/.cvsignore: Add ircd_match_t.
1942
1943         * patches/.cvsignore: Add marks.
1944
1945 2005-10-28  Alex Badea  <vamposdecampos@gmail.com>
1946
1947         * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538)
1948
1949 2005-10-17  Diane Bruce  <db@db.net>
1950
1951         * ircd/ircd_res.c: Don't send retries if the client did
1952         not resolve (SERVFAIL); this fixes a bug causing a flurry
1953         of retries in this case
1954
1955 2005-10-14  Michael Poole <mdpoole@troilus.org>
1956
1957         * include/patchlevel.h (PATCHLEVEL): Update to pre02.
1958
1959 2005-10-14  Michael Poole <mdpoole@troilus.org>
1960
1961         * doc/readme.cvs: Document tag name consistently with the release
1962         name.
1963
1964         * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release
1965         of 2.10.12.01.
1966
1967 2005-10-12  Michael Poole <mdpoole@troilus.org>
1968
1969         * doc/example.conf: Update documentation to match this change.
1970
1971         * ircd/client.c (client_set_privs): Make default global oper
1972         privileges match what was in 2.10.11.
1973
1974 2005-10-11  Michael Poole <mdpoole@troilus.org>
1975
1976         * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE
1977         to mitigate bug #1313429.
1978
1979 2005-10-12  Perry Lorier <isomer@undernet.org>
1980
1981         * include/s_stats.h: Add new "Local" only flag to /stats.
1982
1983         * ircd/m_stats.c: Consult it.
1984
1985         * ircd/s_stats.c: Use the flag.
1986
1987 2004-01-04  Kevin L Mitchell  <klmitch@mit.edu>
1988
1989         * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is
1990         sent to a channel...
1991
1992 2005-10-06  Michael Poole <mdpoole@troilus.org>
1993
1994         * ircd/m_join.c (m_join): Report too-long channel names as
1995         non-existent.
1996
1997 2005-10-05  Michael Poole <mdpoole@troilus.org>
1998
1999         * ircd/m_names.c (m_names): Fix format string when forwarding
2000         /names -D to other servers.
2001         (ms_names): Likewise.  Add support for remote /names -D.
2002
2003 2005-10-05  Michael Poole <mdpoole@troilus.org>
2004
2005         * ircd/class.c (do_find_class): Fix bug from previous commit.
2006
2007         * ircd/ircd_parser.y (clientblock): Allow setting Client port.
2008
2009         * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline.
2010         (attach_iline): Only set FLAG_DOID when we are sure we will attach
2011         this Client block to the client. [Credit: Jukka Ollila and others]
2012
2013 2005-10-04  Michael Poole <mdpoole@troilus.org>
2014         [Based on a patch by Jukka Ollila]
2015
2016         * include/class.h (find_class): Rename to do_find_class().
2017
2018         * ircd/class.c (class_delete_marked): Keep invalid classes in list
2019         until next rehash.
2020         (add_class): Use new parameter to do_find_class() to allow a class
2021         to be "resurrected".
2022         (find_class): Rename.
2023         (report_classes): Use 'y' instead of 'Y' when reporting invalid
2024         classes.
2025
2026 2005-10-01  Michael Poole <mdpoole@troilus.org>
2027
2028         * ircd/m_kick.c (ms_kick): If the kick target is join-delayed,
2029         only send the KICK to the kicker.  Spotted by Cesar_.
2030
2031 2005-10-01  Michael Poole <mdpoole@troilus.org>
2032
2033         * include/patchlevel.h (PATCHLEVEL): Update to pre1.
2034
2035         * ircd/class.c (init_class): Only set default class's ->next
2036         pointer when first allocating it.
2037
2038 2005-09-30  Michael Poole <mdpoole@troilus.org>
2039
2040         * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when
2041         matching users.
2042
2043 2005-09-30  Michael Poole <mdpoole@troilus.org>
2044
2045         * include/patchlevel.h: Update for release.
2046
2047 2005-09-28  Michael Poole <mdpoole@troilus.org>
2048
2049         * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a
2050         chanop being kicked.
2051
2052 2005-09-26  Michael Poole <mdpoole@troilus.org>
2053
2054         * ircd/whocmds.c (do_who): Fix uninitialized variable warning
2055         about 'chan'.
2056
2057 2005-09-26  Michael Poole <mdpoole@troilus.org>
2058
2059         * ircd/parse.c (del_msg_element): Only delete empty subtrees, and
2060         leave subtrees that may still contain data.
2061
2062 2005-09-26  Michael Poole <mdpoole@troilus.org>
2063
2064         * include/channel.h (struct ModeBuf): Add mbm_oplevel to args
2065         array.
2066         (MB_OPLEVEL): New corresponding macro.
2067         (modebuf_mode_client): Add corresponding argument.
2068
2069         * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer
2070         usage to include :999 suffix.  Change format for oplevel passing.
2071         (modebuf_mode_client): Set oplevel field in mbuf args array.
2072         (struct ParseState): Add oplevel field to cli_change array.
2073         (mode_parse_client): Accept and record oplevel suffix from
2074         servers; fix it up if we're bouncing a deop.
2075         (mode_process_clients): If a valid oplevel was parsed, use it.
2076
2077         * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client().
2078
2079         * ircd/m_clearmode.c (do_clearmode): Likewise.
2080
2081         * ircd/m_create.c (ms_create): Likewise.
2082
2083         * ircd/m_kick.c (ms_kick): Likewise.
2084
2085 2005-09-23  Michael Poole <mdpoole@troilus.org>
2086
2087         * include/whocmds.h (WHOSELECT_DELAY): Define new constant.
2088
2089         * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set
2090         WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER.  Do not skip
2091         join-delayed users if WHOSELECT_DELAY is set.
2092
2093         * ircd/whocmds.c (do_who): Remember membership for shared channel
2094         if one exists.  Use it when displaying flags, adding '<' for
2095         join-delayed users.
2096
2097 2005-09-22  Michael Poole <mdpoole@troilus.org>
2098
2099         * ircd/channel.c (mode_parse_key): Only accept the new key when
2100         the current one is empty or "greater" than the new one.
2101         (mode_parse_upass): Likewise, for upass.
2102         (mode_parse_apass): Likewise, for apass.
2103
2104 2005-09-22  Michael Poole <mdpoole@troilus.org>
2105
2106         * ircd/gline.c (gline_checkmask): Add missing digit in mask length
2107         check.
2108
2109 2005-09-21  Michael Poole <mdpoole@troilus.org>
2110
2111         * doc/example.conf: Remove confused and outdated references to
2112         Martians.
2113
2114 2005-09-20  Michael Poole <mdpoole@troilus.org>
2115
2116         * ircd/Makefile.in: Regenerate "make depend" dependencies.
2117
2118         * ircd/test/Makefile.in: Likewise.
2119
2120 2005-09-16  Kevin L. Mitchell  <klmitch@mit.edu>
2121
2122         * ircd/m_join.c (last0): fix problem leading to protocol
2123         violations on certain combinations of /join 0 from remote servers
2124         (probably from local users, too) [bug #1291029]; remove redundant
2125         !IsChannelChar() check
2126
2127 2005-09-14  Michael Poole <mdpoole@troilus.org>
2128
2129         * doc/readme.cvs: Document the branching scheme for 2.10.12.
2130
2131 2005-09-14  Michael Poole <mdpoole@troilus.org>
2132
2133         * include/patchlevel.h (PATCHLEVEL): Increment to reflect the
2134         pre-release code freeze.
2135
2136 2005-09-14  Michael Poole <mdpoole@troilus.org>
2137
2138         * ircd/channel.c (find_ban): Fix the sense of another check.
2139
2140 2005-09-13  Michael Poole <mdpoole@troilus.org>
2141
2142         * include/channel.h (clean_channelname): Remove prototype.
2143
2144         * ircd/m_invite.c (m_invite): Do not clean channel name; just
2145         reject invalid channel names.
2146
2147         * ircd/m_join.c (m_join): Likewise.
2148
2149         * ircd/m_mode.c (m_mode): Do not clean channel name.
2150
2151         * ircd/m_names.c (m_names): Likewise.
2152
2153         * ircd/m_opmode.c (mo_opmode): Likewise.
2154
2155 2005-09-13  Michael Poole <mdpoole@troilus.org>
2156
2157         * ircd/channel.c (find_ban): Revert to older style of comparison,
2158         fixing the sense of one check.  Spotted by Alex Badea.
2159
2160 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
2161
2162         * ircd/ircd.c (try_connections): modify autoreconnect logic to
2163         allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq
2164
2165 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
2166
2167         * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList,
2168         otherwise the linked list has an invalid ending sentinel on rehash
2169
2170 2005-09-12  Michael Poole <mdpoole@troilus.org>
2171
2172         * ircd/channel.c (find_ban): Compare ban mask against hostname
2173         even when it looks like an IP, to match things like *!*@1.* when
2174         users have a hostname like 1.2.3.example.com.
2175
2176 2005-09-12  Michael Poole <mdpoole@troilus.org>
2177
2178         * RELEASE.NOTES: Note the resolution of ambiguous ipmasks.
2179
2180         * ircd/ircd_string.c (ipmask_parse): Implement it.
2181
2182 2005-09-12  Michael Poole <mdpoole@troilus.org>
2183
2184         * ircd/m_join.c (m_join): If we find an empty key, null out the
2185         key pointer.
2186
2187 2005-09-11  Michael Poole <mdpoole@troilus.org>
2188
2189         * RELEASE.NOTES: Mention the side benefits of this change.
2190
2191         * include/ircd_string.h (ipmask_parse): Declare function here.
2192         (ircd_aton): Becomes a special case of ipmask_parse().
2193
2194         * include/match.h (check_if_ipmask): Undeclare function.
2195         (ipmask_parse): Remove function prototype from this file.
2196
2197         * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter
2198         to accept ipmask length.  Rework to fill that in.
2199         (ircd_aton): Rework into...
2200         (ipmask_parse): this function, which knows how to fill in its own
2201         pbits parameter.
2202
2203         * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban
2204         flags correctly, to avoid call to check_if_ipmask().
2205
2206         * ircd/match.c (ipmask_parse_ipv4): Delete function.
2207         (check_if_ipmask): Likewise.
2208         (ipmask_parse): Delete this version in favor of ircd_string.c's.
2209
2210         * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type.
2211         (test_masks): New array of ipmask_test.
2212         (test_ipmask): Function to run one of those tests.
2213         (main): Call test_ipmask().
2214
2215 2005-09-11  Alex Badea <vamposdecampos@gmail.com>
2216
2217         * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code
2218         (probably during the forward port) which broke AsLL; fixed.
2219
2220 2005-09-01  Michael Poole <mdpoole@troilus.org>
2221
2222         * ircd/gline.c (make_gline): Remove debug output from when IPv6
2223         support was being debugged.
2224         (do_gline): Likewise.
2225         (gline_lookup): Likewise, plus remove redundant code.
2226
2227 2005-09-01  Michael Poole <mdpoole@troilus.org>
2228
2229         * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining
2230         0, since no other call passes a null channel.
2231
2232         * ircd/m_join.c: Remove comment discussing argument meanings.
2233         (last0): Make this also handle the JOIN 0 logic, doxyfy.
2234         (join0): Merge into last0.
2235         (m_join): Doxygenate.  Remove check for join0.  Further
2236         reorganize, so new versus old channel handling are moved to just
2237         one place each within this function.
2238         (ms_join): Doxygenate.  Remove check for join0.
2239
2240 2005-09-01  Michael Poole <mdpoole@troilus.org>
2241
2242         * RELEASE.NOTES: Bump revision date and highlight this change.
2243
2244         * include/channel.h (MAGIC_OPER_OVERRIDE): Remove.
2245         (can_join): Remove declaration.
2246
2247         * ircd/channel.c (compall): Remove.
2248         (can_join): Remove.
2249
2250         * ircd/m_join.c (m_join): Remove redundant check for control
2251         characters (clean_channelname() will get them). Reorganize initial
2252         flags calculation.  Accept channel keys like RFC 1459 says; this
2253         requires the old compall()/can_join() logic to modify 'keys', so
2254         inline the code and reorganize it.
2255
2256 2005-08-30  Michael Poole <mdpoole@troilus.org>
2257
2258         * include/channel.h (PASSLEN): Remove; use KEYLEN instead.
2259
2260         * ircd/channel.c (mode_parse_upass): Likewise.
2261         (mode_parse_apass): Likewise.
2262         The inconsistency (in clean_key()) was reported by Reed.
2263
2264 2005-08-30  Michael Poole <mdpoole@troilus.org>
2265
2266         * RELEASE.NOTES: Document +D and +d channel modes.
2267
2268 2005-08-29  Michael Poole <mdpoole@troilus.org>
2269
2270         * include/numeric.h (ERR_NOMANAGER_LONG): Undefine.
2271         (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER.
2272
2273         * ircd/s_err.c (replyTable): Change to reflect that.
2274
2275         * ircd/channel.c (clean_key): New function.
2276         (mode_parse_key): Use it, and check that keys do not start with :.
2277         (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER.
2278         (mode_parse_apass): Likewise.
2279         The key and password changes fix bugs reported by coekie.
2280
2281 2005-08-27  Michael Poole <mdpoole@troilus.org>
2282
2283         * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
2284         of assigning directly to member->oplevel.
2285         (mode_parse_apass): Likewise.
2286         (mode_process_clients): Users opped by outsiders should get
2287         oplevel 1, since they are not channel managers.
2288
2289         * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
2290         directly to member->oplevel.
2291
2292 2005-08-25  Michael Poole <mdpoole@troilus.org>
2293
2294         * ircd/channel.c (member_can_send_to_channel): At coekie's
2295         suggestion, disallow channel manager talking after Apass is set,
2296         so they set and use Upass sooner.
2297
2298         * ircd/class.c (init_class): Default class should have 1 link.
2299         (report_classes): Return links count minus one to match old output.
2300
2301         * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by
2302         Reed).
2303
2304 2005-08-25  Michael Poole <mdpoole@troilus.org>
2305
2306         * ircd/channel.c (mode_parse): Accept +A/+U from servers
2307         regardless of FEAT_OPLEVELS.
2308
2309 2005-08-24  Michael Poole <mdpoole@troilus.org>
2310
2311         * ircd/ircd.c (parse_command_line): Mention epoll engine when run
2312         with -v.
2313
2314 2005-08-24  Michael Poole <mdpoole@troilus.org>
2315
2316         * include/patchlevel.h (PATCHLEVEL): Increment.
2317
2318         * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or
2319         1 when propagating JOIN <level>:#channel, to avoid PV on receiver.
2320
2321         * ircd/engine_epoll.c: Add system call numbers for more CPU types.
2322
2323         * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls;
2324         anyone who writes logs over NFS is mental.  (Thanks to D. Bruce.)
2325
2326 2005-08-21  Michael Poole <mdpoole@troilus.org>
2327
2328         * include/s_conf.h (free_mapping): Declare new function.
2329
2330         * ircd/ircd_parser.y (pseudoblock): Use it.
2331
2332         * ircd/s_conf.c (free_mapping): Define it.
2333         (close_mappings): New function.
2334         (rehash): Call close_mappings() before reading file.
2335
2336         * ircd/m_kill.c (do_kill): Revert 2005-08-18 change.
2337
2338 2005-08-19  Michael Poole <mdpoole@troilus.org>
2339
2340         * ircd/parse.c (tok_tree): Re-add token tree structure.
2341         (initmsgtree): Populate it.
2342         (parse_server): Prefer it to full message tree.
2343
2344 2005-08-18  Michael Poole <mdpoole@troilus.org>
2345
2346         * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent
2347         source of KILLs to &his instead of &me.
2348
2349 2005-08-16  Michael Poole <mdpoole@troilus.org>
2350
2351         * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
2352         newban->banstr[] when the source is a server.  (Spotted by jcq.)
2353
2354 2005-08-16  Michael Poole <mdpoole@troilus.org>
2355
2356         * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
2357         announcements to local users in a channel.
2358
2359         * ircd/m_burst.c (ms_burst): Likewise.
2360
2361         * ircd/m_invite.c (m_invite): Likewise.
2362         (ms_invite): Likewise.
2363
2364         * ircd/m_kick.c (ms_kick): Likewise.
2365
2366         * ircd/m_topic.c (do_settopic): Another &me -> &his change for
2367         HIS, and use that apparent source for the channel localcast.
2368
2369 2005-08-16  Jukka Ollila <jaollila@niksula.hut.fi>
2370
2371         * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the
2372         real thing for the post-mode-x rejoin.
2373
2374 2005-08-15  Michael Poole <mdpoole@troilus.org>
2375
2376         * include/supported.h (FEATURESVALUES2): Add +d channel mode.
2377
2378         * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not
2379         a varadic function.  (Suggested by Ian Kumlien.)
2380
2381         * ircd/convert-conf.c (finish_operators): Likewise.
2382
2383         * ircd/listener.c (close_listeners): Likewise.
2384
2385         * ircd/channel.c (CheckDelayedJoins): Use HIS server name to
2386         remove channel mode +d.
2387
2388 2005-08-12  Michael Poole <mdpoole@troilus.org>
2389
2390         * ircd/channel.c (pretty_mask): Recognize ':' as unique to the
2391         host part of a ban mask.
2392
2393 2005-08-03  Jan Krueger <jast@heapsort.de>
2394
2395         * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on
2396         invisible member.
2397
2398 2005-08-08  Michael Poole <mdpoole@troilus.org>
2399
2400         * ircd/channel.c (find_ban): For non-IPmask bans, match the ban
2401         string against the string form of the client's IP address.
2402
2403 2005-07-16  Michael Poole <mdpoole@troilus.org>
2404
2405         * configure.in: Apply a test for socklen_t that Reed found.
2406
2407         * configure: Regenerate.
2408
2409 2005-07-16  Michael Poole <mdpoole@troilus.org>
2410
2411         * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels.
2412
2413         * README.FreeBSD: Remove (merged into README).
2414
2415         * README.Solaris: Remove (merged into README).
2416
2417         * README: Merge in the above; also update for 2.10.12.
2418
2419         * doc/example.conf: Change mention of K-lines to say Kill blocks
2420         instead.
2421
2422         * doc/iauth.txt: Remove (out of date).
2423
2424         * doc/readme.features: Update to reflect that 2.10.11 is not the
2425         current release.  Change mention of various config lines to use
2426         the equivalent config entries or blocks instead.
2427
2428         * doc/readme.log: Likewise.
2429
2430         * doc/api/features.txt: Change F-line mentions to say Feature
2431         entry instead.
2432
2433         * doc/api/modebuf.txt: Change U-line mention to say Uworld entry.
2434
2435         * doc/api/motd.txt: Change T-line mentions to say Motd entry.
2436
2437 2005-07-15  Michael Poole <mdpoole@troilus.org>
2438
2439         * ircd/ircd_features.c (feature_init): Always call
2440         feature_notify_server*() so that 'his' is initialized.
2441
2442         * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose
2443         between user->server and &his.
2444
2445 2005-07-14  Michael Poole <mdpoole@troilus.org>
2446
2447         * ircd/channel.c (mode_parse_apass): Update oplevels when setting
2448         or removing the +A password.  Partial credit goes to Reed Loden.
2449
2450 2005-07-14  Michael Poole <mdpoole@troilus.org>
2451
2452         * include/ircd_features.h: Declare new "his" pseudo-server to hold
2453         FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place.
2454
2455         * ircd/ircd_features.c: Initialize and update it.
2456
2457         * ircd/channel.c (modebuf_flush_int): Use it as the apparent
2458         source for opmodes and server mode changes (also when the source
2459         is me).
2460
2461         * ircd/m_burst.c (ms_burst): Use it as the apparent source for net
2462         rider kicks.
2463
2464         * ircd/m_whois.c (do_whois): Use it to simplify code here.
2465
2466         * ircd/s_misc.c (exit_client): Use it as the apparent killer.
2467
2468 2005-07-14  Michael Poole <mdpoole@troilus.org>
2469
2470         * doc/example.conf (General): Update comment about vhost to match
2471         the code change below.
2472
2473         * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a
2474         synonym for the default behavior (for backwards compatibility).
2475         Spotted by Kev.
2476
2477         * ircd/channel.c (sub1_from_channel): Remove stale code and
2478         comment, replacing with an up-to-date comment.  Spotted by skx.
2479
2480 2005-07-11  Michael Poole <mdpoole@troilus.org>
2481
2482         * ircd/engine_select.c: Remove outdated comment about USE_POLL.
2483
2484         * ircd/parse.c (msgtab): #if out CAP handler until we have caps.
2485
2486         * RELEASE.NOTES: Remove mention of capabilities for now.
2487
2488 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
2489
2490         * ircd/gline.c (gline_add): It's only a protocol violation when a
2491         server issues a "whacky" gline.  If it's an oper, only tell opers
2492         with SNO_GLINE.
2493
2494         * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole
2495         network is not likely to care about IAuth PVs, so only tell opers
2496         with SNO_CONNEXIT.
2497
2498 2005-07-11  Michael Poole <mdpoole@troilus.org>
2499
2500         * doc/readme.features: Document FEAT_CHANNELLEN.
2501
2502         * doc/example.conf: Give an example of it.
2503
2504         * ircd/m_join.c (ms_join): Do not clean channel names from remote
2505         servers, to avoid desynchs.
2506
2507         * ircd/m_names.c (ms_names): Likewise.
2508
2509 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
2510
2511         * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
2512
2513         * include/supported.h: Add it to the ISUPPORT display.
2514
2515         * ircd/channel.c (clean_channelname): Impose the lower limit
2516         between FEAT_CHANNELLEN and CHANNELLEN.
2517
2518         * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
2519
2520 2005-07-11  Reed Loden <reed@reedloden.com>
2521
2522         * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
2523
2524         * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c
2525         Remove unused #include <sys/poll.h>.
2526
2527         * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity
2528         checks here, since they are not used elsewhere in the daemon.
2529         [Order slightly changed by Michael Poole to compile.]
2530
2531 2005-07-03  Michael Poole <mdpoole@troilus.org>
2532
2533         * ircd/convert-conf.c: New file.
2534
2535         * ircd/Makefile: Compile it.
2536
2537 2005-06-27  Michael Poole <mdpoole@troilus.org>
2538
2539         * ircd/s_bsd.c (add_connection): Split logic for server versus
2540         client listeners; only do IPcheck for client connections.
2541
2542         * ircd/s_serv.c (server_estab): There is no longer a need to
2543         remove IPcheck reference, so don't.
2544
2545 2005-06-27  Michael Poole <mdpoole@troilus.org>
2546
2547         * include/client.h (struct Connection): Remove con_dns_reply (and
2548         associated macros).
2549
2550         * include/res.h (gethost_byname): Change calling signature to
2551         clarify memory ownership.
2552         (gethost_byaddr): Likewise.
2553
2554         * include/s_bsd.h (release_dns_reply): Remove function.
2555
2556         * ircd/hash.c: #include "match.h" to quash warning.
2557
2558         * ircd/ircd_auth.c (struct IAuth): Remove i_query field.
2559         (iauth_dns_callback): Adjust for new gethost_byname signature.
2560         (iauth_reconnect): Likewise.
2561
2562         * ircd/ircd_res.c (struct reslist): Make elements of query field
2563         inline rather than in a contained structure.
2564         (make_request): Reflect removal of DNSQuery.
2565         (do_query_name): Likewise.
2566         (do_query_number): Likewise.
2567         (make_dnsreply): Remove now-unused function.
2568         (timeout_resolver): Adjust to new callback signature.
2569         (delete_resolver_queries): Reflect removal of DNSQuery.
2570         (gethost_byname): Update to new signature.
2571         (gethost_byaddr): Likewise.
2572         (res_readreply): Reflect removal of DNSReply.
2573
2574         * ircd/list.c (dealloc_connection): con_dns_reply no longer
2575         exists, so do not free it.
2576
2577         * ircd/s_auth.c (auth_verify_hostname): constify.
2578         (auth_dns_callback): Adjust to new callback signature.
2579         (start_auth): Adjust to new gethost_byaddr() signature.
2580
2581         * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback
2582         signature.
2583         (release_dns_reply): Remove unused function.
2584         (connect_server): Adjust to new gethost_byname() signature.
2585
2586         * ircd/s_conf.c (conf_dns_callback): Adjust to new callback
2587         signature.
2588         (conf_dns_lookup): Adjust to new gethost_byname() signature.
2589         (attach_iline): Use cli_sockhost() instead of DNS reply.
2590         (conf_check_server): Simplify use of DNS results.
2591
2592         * ircd/s_serv.c (server_estab): Remove call to removed function.
2593
2594         * ircd/s_user.c (register_user): Remove call to removed function.
2595
2596 2005-06-27  Michael Poole <mdpoole@troilus.org>
2597
2598         * include/s_misc.h (get_sockhost): Remove the unused (and
2599         deceptively named) get_sockhost().
2600
2601         * ircd/s_misc.c (get_sockhost): Likewise.
2602
2603 2005-06-25  Andrew Miller  <a1kmm@amxl.com>
2604
2605         * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to
2606         DupStr so memdebug works.
2607
2608         * doc/debug_memleak_gc.patch : Update to gc6.5
2609         
2610 2005-06-24  Andrew Miller  <a1kmm@amxl.com>
2611         * ircd/m_invite.c (m_invite): Don't propagate invites to local channels.
2612         
2613 2005-06-21  Andrew Miller  <a1kmm@amxl.com>
2614
2615         * ircd/m_list.c (param_parse): Add support for channel wildcards.
2616         * ircd/m_list.c (show_usage): Document the new format.
2617         * ircd/hash.c (list_next_channels): Check channel wildcard in list.
2618         * include/channel.h (ListingArgs): Add the wildcard member.
2619
2620 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
2621
2622         * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more
2623         gracefully.
2624
2625         * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking
2626         the pending request list, to make DoS attacks harder.
2627
2628         * ircd/m_invite.c (m_invite): Give no such channel rather than not on
2629         channel when the channel being invited to does not exist.
2630         
2631 2005-06-18  Michael Poole <mdpoole@troilus.org>
2632
2633         * ircd/s_debug.c (count_memory): Consolidate several lines; make
2634         initial letter capitalization consistent.
2635
2636 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
2637
2638         * ircd/s_stats.c: Remove the "debug only" label on memusage stats,
2639         since it no longer applies.
2640
2641 2005-05-16  Michael Poole <mdpoole@troilus.org>
2642
2643         * include/channel.h (struct Ban): Make 'who' and 'banstr' direct
2644         arrays, rather than pointers.
2645
2646         * ircd/channel.c (bans_alloc): New variable to count number of ban
2647         structures allocated.
2648         (bans_inuse): New variable to count number of ban structures
2649         currently in use.
2650         (set_banmask): Adapt to changes in struct Ban.
2651         (make_ban): Likewise, and update ban counts.
2652         (free_ban): Likewise.
2653         (bans_send_meminfo): New function.
2654         (apply_ban): Adapt to changes in struct Ban.
2655         (mode_parse_ban): Likewise.
2656         (mode_process_bans): Likewise.
2657         (mode_parse): Likewise.
2658         (RevealDelayedJoin): Fix brace placement.
2659         (CheckDelayedJoins): Fix brace placement and whitespace.
2660
2661         * ircd/list.c (struct liststats): Add new fields to eliminate the
2662         separate count variables.
2663         (init_list): Adapt to those changes.
2664         (alloc_client): Likewise.
2665         (dealloc_client): Likewise.
2666         (alloc_connection): Likewise.
2667         (dealloc_connection): Likewise.
2668         (make_server): Likewise.
2669         (remove_client_from_list): Likewise.
2670         (verify_client_list): Likewise.
2671         (make_link): Likewise.
2672         (free_link): Likewise.
2673         (send_liststats): New function.
2674         (send_listinfo): Rewrite to use new struct liststats layout.
2675
2676         * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban.
2677
2678         * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct
2679         Ban.
2680
2681         * ircd/s_stats.c (stats_meminfo): Define unconditionally and call
2682         bans_send_meminfo().
2683         (statsinfo): Always give access to stats_meminfo.
2684
2685 2005-06-16  Michael Poole <mdpoole@troilus.org>
2686
2687         * include/ircd_string.h: Include necessary <string.h> header.
2688
2689         * ircd/test/.cvsignore: Ignore log output files.
2690
2691         * ircd/test/Makefile.in: Remove log output files.
2692
2693         * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills.
2694
2695         * ircd/test/run-tests.sh: Switch sense of argument.  Send an IRC
2696         debug dump to log files.
2697
2698 2005-06-13  Michael Poole <mdpoole@troilus.org>
2699
2700         * ircd/s_user.c (make_user): Unconditionally increment userCount.
2701         (free_user): Unconditionally decrement it here.
2702
2703         * ircd/s_conf.c (make_conf): Unconditionally increment
2704         GlobalConfCount.
2705         (free_conf): Unconditionally decrement it here.
2706
2707         * ircd/s_debug.c (count_memory): Fix termination condition for
2708         ban-walking loop.  Add missing "e" to "members".
2709
2710
2711 2005-06-10  Michael Poole <mdpoole@troilus.org>
2712
2713         * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot
2714         be true IP masks.
2715
2716 2005-05-30  Michael Poole <mdpoole@troilus.org>
2717
2718         * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes.
2719
2720         * ircd/test/ircd_match_t.c: Test recovery from backtracking.
2721
2722         * ircd/test/channel-1.cmd: Modify to improve code coverage.
2723
2724         * ircd/test/client-1.cmd: Likewise.
2725
2726         * ircd/test/gline-1.cmd: Likewise.
2727
2728         * ircd/test/ircd-t1.conf: Likewise.
2729
2730         * ircd/test/stats-1.cmd: Likewise.
2731
2732         * ircd/test/run-tests.sh: Explicitly start ircds.  Add new test scripts.
2733
2734         * ircd/test/test-driver.pl: Silently handle more signals from IRC.
2735
2736         * ircd/test/commands-1.cmd: New test script.
2737
2738         * ircd/test/feature-1.cmd: New test script.
2739
2740         * ircd/test/jupe-1.cmd: New test script.
2741
2742         * ircd/test/kill-block-1.cmd: New test script.
2743
2744         * ircd/test/ircd-t1-2.conf: New configuration file for test scripts.
2745
2746         * ircd/test/ircd-t2.conf: Likewise.
2747
2748 2005-05-30  Michael Poole <mdpoole@troilus.org>
2749
2750         * ircd/s_debug.c (count_memory): Use count_listener_memory() to
2751         report memory used by listener structures.
2752
2753 2005-05-30  Michael Poole <mdpoole@troilus.org>
2754
2755         * include/class.h (get_con_freq): Remove unused function.
2756
2757         * include/list.h (find_user_link): Remove unused function.
2758
2759         * include/class.c (get_con_freq): Remove.
2760
2761         * ircd/list.c (find_user_link): Remove.
2762
2763         * include/string.h (string_is_hostname, string_is_address,
2764         strnChattr): Remove unused functions.
2765         (init_string): Remove function that becomes a noop.
2766
2767         * ircd/string.h (init_string): Remove.
2768         (string_is_hostname, string_is_address, strnChattr): Likewise.
2769
2770         * ircd/ircd.c (main): Remove call to init_string().
2771
2772 2005-05-30  Michael Poole <mdpoole@troilus.org>
2773
2774         * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS,
2775         RPL_NOTOPERANYMORE): Undefine unused numeric replies.
2776
2777         * ircd/s_err.c (replyTable): Fix format fields for certain numeric
2778         arguments.  Remove some unused entries.
2779
2780         * ircd/s_stats.c (stats_configured_links): Move invariant
2781         parameters to message format string.
2782
2783 2005-05-30  Michael Poole <mdpoole@troilus.org>
2784
2785         * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move
2786         WIDE_GLINE to reflect its enumerated value.
2787
2788         * ircd/s_debug.c (count_memory): Use user_count_memory() function
2789         to count User structs in-use.
2790
2791         * ircd/m_server.c (mr_server): Change "C:line" to "Connect block".
2792
2793         * ircd/s_bsd.c (connect_server): Likewise.
2794
2795         * ircd/s_conf.c (conf_check_server): Likewise.
2796
2797         * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block".
2798
2799 2005-05-30  Michael Poole <mdpoole@troilus.org>
2800
2801         * ircd/match.c (match): Rewrite to handle globs that end in an
2802         escaped wildcard (and hopefully clarify the code).
2803
2804         * ircd/test/Makefile.in: Add new ircd_match_t test program.
2805
2806         * ircd/test/ircd_match_t.c: New file.
2807
2808         * ircd/test/test_stub.c: Emite newlines after log and debug
2809         messages.
2810
2811 2005-05-25  Reed Loden <reed@reedloden.com>
2812
2813         * ircd/s_err.c (replyTable): Allow for the specification of 'O' or
2814         'o' in RPL_STATSOLINE.
2815
2816         * ircd/s_stats.c (stats_configured_links): In /stats o/O, display
2817         'O' if either the oper block or the connection class has
2818         PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE
2819         (local oper).
2820
2821 2005-05-30  Michael Poole <mdpoole@troilus.org>
2822
2823         * ircd/IPcheck.c: Add Debug()s to try to track why the connected
2824         count underflows.
2825
2826         * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan'
2827         after it may be freed (in sub1_from_channel).
2828
2829         * ircd/s_user.c (register_user): Rearrange code to reduce number
2830         of "if (MyConnect(sptr))" checks.
2831
2832 2005-05-12  Michael Poole <mdpoole@troilus.org>
2833
2834         * configure.in: Do not try to outsmart the default CFLAGS.
2835         Simply add parameters explicitly requested by the user.
2836
2837         * configure: Regenerate.
2838
2839         * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is
2840         used in os_generic.c) to get crypt() on NetBSD.
2841
2842 2005-05-11  Kevin L. Mitchell  <klmitch@mit.edu>
2843
2844         * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and
2845         -x given), reserve fd 2 for the use of the debugging log;
2846         otherwise, some engines may attempt to use fd 2, which would end
2847         up getting closed by debug_init() (actually, by
2848         log_debug_reopen(), called by log_debug_init(), called by
2849         debug_init())
2850
2851 2005-08-10  Michael Poole <mdpoole@troilus.org>
2852
2853         * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a
2854         local user creates a channel.
2855
2856         * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of
2857         memory for the tagged output string.
2858
2859         * ircd/test/test-driver.pl: Add -vhost=... option.
2860
2861         * ircd/test/ircd-t1.conf: Add new Operator blocks.
2862
2863         * ircd/test/*.cmd: Rearrange and add more coverage tests.
2864
2865 2005-08-09  Michael Poole <mdpoole@troilus.org>
2866
2867         * ircd/ircd_parser.y: Move error tokens to top level of parse, and
2868         make ';' a synchronizing token for them.  This avoids crashes in
2869         situations like missing ';' between two Kill blocks.  Move several
2870         ';'s earlier for earlier detection of syntax errors.
2871
2872         * ircd/motd.c (motd_memory_count): Use size_t for memory counts to
2873         match the format strings used for those variables.
2874
2875         * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of
2876         unsigned int, not unsigned long; use correct format string.
2877
2878         * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd'
2879         based on crule type, rather than query type.
2880         (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and
2881         "help" stats, which don't use the varparam.
2882
2883         * ircd/test/test-driver.pl: Interpreter for test scripts.b
2884
2885         * ircd/test/ircd-t1.conf: Configuration file for test scripts.
2886
2887         * ircd/test/*.cmd: New test scripts for test-driver.pl.
2888
2889 2005-05-08  Jukka Ollila <jaollila@niksula.hut.fi>
2890         (Adapted slightly by Michael Poole.)
2891
2892         * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
2893         addresses event when !defined(IPV6).
2894
2895 2005-05-07  Michael Poole <mdpoole@troilus.org>
2896
2897         * ircd/channel.c (joinbuf_join): Be smarter about what source to
2898         use when opping a user that joins a channel.
2899
2900 2005-05-04  Reed Loden <reed@reedloden.com>
2901
2902         * ircd/m_trace.c (do_trace): Show the real nickname instead of the
2903         numnick.
2904
2905 2005-05-02  Jan Krueger <jast@heapsort.de>
2906
2907         * ircd/channel.c (member_can_send_to_channel): if the channel can only
2908         be joined by users with accounts (+r), do not allow users without
2909         accounts to speak.
2910
2911 2005-05-07  Michael Poole <mdpoole@troilus.org>
2912
2913         * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
2914         addresses.
2915         * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry.
2916         (test_address): Test base64toip() as well.
2917
2918 2005-05-05  Michael Poole <mdpoole@troilus.org>
2919
2920         * ircd/s_user.c (umode_str): Only clear the operator flag when not
2921         propagating; never set it.
2922
2923 2005-05-04  Michael Poole <mdpoole@troilus.org>
2924
2925         * ircd/channel.c (joinbuf_join): Include channel manager flag in
2926         determination of oplevel.  If opping the user for a non-local
2927         non-create, include oplevel in message to other servers.  Send
2928         "MODE +o <client>" to local users whenever opping the client.
2929
2930         * ircd/m_join.c (m_join): Remove logic that moved into
2931         joinbuf_join().
2932         (ms_join): Look for level 0 and 1 joins from remote servers
2933         and adjust value of 'flags' appropriately.
2934
2935 2005-05-04  Michael Poole <mdpoole@troilus.org>
2936
2937         * include/numeric.h: Remap oplevel numerics to new range.
2938
2939         * ircd/s_err.c: Likewise.
2940
2941 2005-05-03  Michael Poole <mdpoole@troilus.org>
2942
2943         * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT
2944         fields, fixing crash found by nighty.
2945
2946 2005-05-02  Michael Poole <mdpoole@troilus.org>
2947
2948         * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when
2949         trying to set +U pass to the same as the +A pass.
2950
2951         * ircd/channel.c (mode_parse_upass): Use it.
2952
2953         * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if
2954         there is an active IAuth connection, fixing PR#1193808.
2955         (iauth_dispose_request): Only delete the timer if it is active.
2956
2957         * ircd/m_invite.c (m_invite): Always forward the invite in the
2958         correct direction, and then skip it as 'one' if announcing.
2959         (ms_invite): Likewise.
2960
2961         * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as
2962         ::ffff:0.0.0.0; keep it as ::.
2963
2964         * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS.
2965
2966 2005-05-01  Michael Poole <mdpoole@troilus.org>
2967
2968         * doc/readme.log: Document IAUTH log target, remove docs for
2969         OLDLOG log target.
2970
2971         * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG.
2972
2973         * ircd/ircd_log.c (logDesc): Likewise.
2974
2975         * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all
2976         sockets (e.g. when connecting) and do not generate read/write
2977         events in the same pass as error or EOF events.
2978
2979         * ircd/ircd_auth.c: Convert old sendto and debug messages to use
2980         the LS_IAUTH log target.  Consistently use IAUTH_CONNECTED flag
2981         instead of comparing fd to -1.
2982         (iauth_reconnect): If already connected, disconnect and schedule a
2983         reconnect later, since an immediate reconnect can cause assertion
2984         failure in the event engine.  Also schedule a reconnect when the
2985         connection attempt fails.
2986         (iauth_read): Reconnect on IO_FAILURE.
2987         (iauth_sock_callback): Disconnect and schedule a reconnect on both
2988         error (after reporting the error) and EOF.
2989         (iauth_start_client): Record the IAuth request in the client.
2990         (iauth_exit_client): Report the client exit.
2991
2992         * ircd/s_misc.c (exit_one_client): Fix formatting.
2993
2994 2005-04-30  Michael Poole <mdpoole@troilus.org>
2995
2996         * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add)
2997         timer here and set fd to -1.
2998         (iauth_schedule_reconnect): Rewrite to handle previously
2999         initialized timer.
3000         (iauth_reconnect): If server is connected, disconnect first.
3001         Update socket generator fd before calling socket_add().
3002         (iauth_read): When reading 0 bytes (EOF), reconnect.
3003
3004 2005-04-27  Michael Poole <mdpoole@troilus.org>
3005
3006         * ircd/ircd_parser.y: Report non-existent class names as errors
3007         earlier, and do not fall back to "default" for Client blocks.
3008
3009 2005-04-25  Reed Loden  <reed@reedloden.com>
3010
3011         * ircd/ircd_lexer.l: Add missing header to squash a warning.
3012
3013 2005-04-25  Michael Poole <mdpoole@troilus.org>
3014
3015         * ircd/s_user.c (register_user): Replace call with set_user_mode()
3016         with a direct parsing of user modes.  To match this, revert the
3017         initial display of usermode to how it was done before.
3018
3019 2005-04-24  Michael Poole <mdpoole@troilus.org>
3020
3021         * doc/example.conf: Document new autoconnect field of Connect.
3022
3023         * include/s_conf.h: Add CONF_AUTOCONNECT and field for it.
3024
3025         * ircd/ircd.c (try_connections): Skip non-autoconnect servers.
3026
3027         * ircd/ircd_lexer.l: Recognize autoconnect token.
3028
3029         * ircd/ircd_parser.y: Add autoconnect= option to Connect block.
3030
3031         * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to
3032         user being invited.
3033         (ms_invite): Likewise.
3034
3035         * ircd/s_user.c (register_user): Show class name rather than
3036         pointer-as-integer.
3037
3038 2005-04-24  Michael Poole <mdpoole@troilus.org>
3039
3040         * ircd/ircd_parser.y: Rewrite so each error condition gets its own
3041         error message, and so that invalid parameters are printed out.
3042
3043 2005-04-23  Michael Poole <mdpoole@troilus.org>
3044
3045         * ircd/channel.c (apply_ban): Consistently free newban->banstr
3046         when the function fails.
3047         (mode_process_bans): Free banstr for all BAN_DEL bans.
3048
3049         * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
3050
3051 2005-04-23  Michael Poole <mdpoole@troilus.org>
3052
3053         * include/patchlevel.h: Bump to being a beta.
3054
3055         * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that
3056         parser actions don't have to be immediately after a QSTRING.
3057
3058         * ircd/ircd_parser.y (FNAME): Remove unused token.
3059         (QSTRING): Adjust for QSTRING being an already-copied version.
3060
3061 2005-04-23  Michael Poole <mdpoole@troilus.org>
3062
3063         * doc/example.conf (UWorld): Illustrate new config extension.
3064
3065         * ircd/ircd_parser.y (uworldblock): Do the expected thing when
3066         multiple name= entries are present.
3067
3068 2005-04-22  Michael Poole <mdpoole@troilus.org>
3069
3070         * RELEASE.NOTES: Silence exceptions use ~, not -.  Oops!
3071
3072         * doc/example.conf: Fix typo in example Kill block.
3073
3074         * ircd/channel.c (mode_parse_ban): Use correct test for flag_p.
3075
3076         * ircd/m_silence.c (apply_silence): Make mask pretty so that later
3077         processing does not convert * to @ (and match no one).
3078
3079 2005-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
3080
3081         * ircd/m_userip.c (userip_formatter): /userip should *never*
3082         report the user's real IP unless its answering the user
3083         him/herself
3084
3085         * ircd/m_userhost.c (userhost_formatter): /userhost should *never*
3086         report the user's real host unless its answering the user
3087         him/herself
3088
3089 2005-04-20  Michael Poole <mdpoole@troilus.org>
3090
3091         * ircd/ircd.c (parse_command_line): Update usage text.
3092
3093         * ircd/numnicks.c (base64toip): Use v4mapped address range instead
3094         of v4compat address range, fixing IPv4-based /who.
3095
3096 2005-04-19  Michael Poole <mdpoole@troilus.org>
3097
3098         * configure.in: When --enable-profile, add -pg to LDFLAGS.
3099
3100         * configure: Regenerate.
3101
3102 2005-04-19  Michael Poole <mdpoole@troilus.org>
3103
3104         * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo.
3105
3106         * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks
3107         once a matching Client block is found.
3108
3109         * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp().
3110
3111 2005-04-18  Michael Poole <mdpoole@troilus.org>
3112
3113         * ircd/match.c (check_if_ipmask): Do not interpret masks that
3114         start with . or / as IP-based host masks.
3115
3116 2005-04-17  Michael Poole <mdpoole@troilus.org>
3117
3118         * ircd/channel.c (mode_process_clients): Only prohibit deops of
3119         users with the same or higher oplevel where apass is set.
3120         Likewise, when opping users, give them MAXOPLEVEL for non-apass
3121         channels.
3122         (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels.
3123
3124         * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the
3125         same or higher oplevel where apass is set.
3126
3127         * ircd/s_user.c (register_user): Fix order of server version vs
3128         various mode strings.
3129
3130         * tools/linesync/linesync.sh: Add revision id field.
3131
3132 2005-04-17  Michael Poole <mdpoole@troilus.org>
3133
3134         * tools/linesync/linesync.sh: Fix typo comment.  Check for
3135         multiple blocks per line in the linesync input.
3136
3137 2005-04-17  Dan <daniel@undernet.org>
3138
3139         * tools/linesync/linesync.sh: Update to support new syntax and to
3140         avoid rehashing the ircd when the config is the same.
3141
3142         * tools/linesync/linesync.conf: Update allowed conf items.
3143
3144 2005-04-16  Michael Poole <mdpoole@troilus.org>
3145
3146         * doc/example.conf (Kill): Document newly supported syntax.
3147
3148         * include/s_conf.h (DenyConf): Split realname mask into its own
3149         field.  Remove the unused DENY_FLAGS_{IP,REALNAME}.
3150
3151         * ircd/ircd_parser.y (Kill): Only require one of usermask,
3152         hostmask, realmask to be set for a valid block.
3153         (killitem): Add new production killusername.
3154
3155         * ircd/s_conf.c (conf_erase_deny_list): Free realmask field.
3156         (find_kill): Rearrange slightly to clarify control flow.
3157
3158         * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask,
3159         so the old usermask field can be adopted for realname mask.  Add
3160         double quotes around the realmask field.
3161
3162         * ircd/s_stats.c (report_deny_list): Do so.
3163         (stats_klines): Likewise.
3164
3165 2005-04-17  Perry Lorier <isomer@undernet.org>
3166         
3167         * tools/convert-conf.py: Fix lots of conversion problems with
3168         oper privielges (now they are converted), 
3169         features (deprecated features commented out, most converted to
3170         priviliges), 
3171         realname klines (also add host= lines)
3172         quarintines (generate blocks for them), 
3173         connect blocks (don't generate empty port config lines)
3174         etc...
3175
3176 2005-04-16  Michael Poole <mdpoole@troilus.org>
3177
3178         * ircd/gline.c (do_gline): Fix typo when activating IP-based
3179         G-lines.
3180
3181 2005-04-16  Michael Poole <mdpoole@troilus.org>
3182
3183         * ircd/class.c (free_class): Free default_umode field.
3184
3185         * ircd/ircd_parser.y (classblock): Free default_umode field before
3186         overwriting it.
3187
3188         * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit
3189         fields.
3190         (find_kill): Realname Kill blocks no longer have $R at the start,
3191         so do not skip over the first two characters of the mask.
3192
3193 2005-04-15  Michael Poole <mdpoole@troilus.org>
3194
3195         * doc/example.conf (Operator): Properly qualify plaintext password.
3196         (Quarantine): Document (new) syntax.
3197
3198         * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
3199         correctly on BSDs.
3200
3201         * ircd/ircd_parser.y (qconf): Remove global variable.
3202         (killuhost): Null terminate username when present.
3203         (quarantineblock): Replace with a syntax that works.
3204
3205         * ircd/s_stats.c: #include <querycmds.h> for UserStats.
3206         (stats_server_verbose): Reinstate check for UserStats.
3207
3208 2005-04-09  Kevin L. Mitchell  <klmitch@mit.edu>
3209
3210         * ircd/ircd.c: conditionally include sys/resource.h; otherwise,
3211         RLIMIT_CORE will not be defined and so set_core_limit() will never
3212         be defined, much less run.
3213
3214         * configure.in: add sys/resource.h to the list of headers to
3215         search for
3216
3217         * configure: regenerate configure
3218
3219         * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to
3220         config.h.in
3221
3222 2005-04-08  Michael Poole <mdpoole@troilus.org>
3223
3224         * include/s_conf.h (conf_debug_iline): Declare new function.
3225
3226         * ircd/ircd.c (dbg_client): New file-scoped variable.
3227         (parse_command_line): Set it from the new -c option.
3228         (main): If dbg_client is set during chkconf, use it.
3229
3230         * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses,
3231         not IPv4-compatible addresses, to match ipmask_parse().
3232
3233         * ircd/m_whowas.c (m_whowas): Split display of real host to a
3234         separate line, in hopes of not confusing opers in the future.
3235
3236         * ircd/s_conf.c (conf_debug_iline): Implement new function.
3237
3238 2005-04-06  Michael Poole <mdpoole@troilus.org>
3239
3240         * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping
3241         out locally opped and voiced channel members.
3242
3243 2005-04-06  Michael Poole <mdpoole@troilus.org>
3244
3245         * include/numeric.h (RPL_APASSWARN): Replace with three distinct
3246         values.
3247         (ERR_NOMANAGER_LONG): Assign new numeric.
3248         (ERR_NOMANAGER_SHORT): Assign new numeric.
3249
3250         * ircd/channel.c (parse_mode_upass): Adapt to new formats for
3251         ERR_NOTMANAGER separation.
3252         (parse_mode_apass): Likewise.  Also adapt to RPL_APASSWARN split.
3253
3254         * ircd/s_err.c (RPL_APASSWARN): Replace with three message
3255         strings, to avoid embedding long message strings in the logic
3256         implementation.
3257         (ERR_NOTMANAGER): Likewise (but not the same strings).
3258
3259 2005-04-06  Michael Poole <mdpoole@troilus.org>
3260
3261         * ircd/ircd_parser.y (clientblock): Use the password field.
3262
3263         * ircd/s_user.c (register_user): Allow aconf->password to be a
3264         single digit, since per-IP limit is now in a separate field.
3265
3266 2005-04-06  Michael Poole <mdpoole@troilus.org>
3267
3268         * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in
3269         current gcc releases and is slower than files for previous
3270         releases on most OSes.
3271
3272         * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING.
3273         (unet_PIPE_CFLAGS): Remove use of macro.
3274
3275         * aclocal.m4: Regenerate.
3276
3277         * configure: Likewise.
3278
3279 2005-04-04  Michael Poole <mdpoole@troilus.org>
3280
3281         * configure.in: For developers' ease, allow passing an option to
3282         configure to persistently set optimization CFLAGS.
3283
3284         * configure: Regenerate.
3285
3286 2005-04-04  Michael Poole <mdpoole@troilus.org>
3287
3288         * doc/example.conf (Jupe): Make the default Jupe block follow
3289         CFV-0255.  (Thanks to FrankP for pointing me at this and to DinTn
3290         for getting me a copy of the CFV.)
3291
3292 2005-04-04  Michael Poole <mdpoole@troilus.org>
3293
3294         * include/capab.h (CAPFL_STICKY): Define.
3295         (CAPLIST): Remove the entries used for testing.
3296
3297         * include/client.h (Connection): Clarify comment about the
3298         distinction between con_capab and con_active.
3299
3300         * ircd/m_cap.c: Add doxygen comments and replace the long
3301         discussion of m_handler functions with an xref to it.
3302         (send_caplist): Add new parameters and change the terminal vs
3303         non-terminal line distinction to make compliant with current draft
3304         specification.
3305         (cap_empty): Rename to cap_ls().
3306         (cap_req): Track modified capabilities bitwise, so that the
3307         responding ACK contains all the appropriate flags.
3308         (cap_ack): Add comment explaining why there is no response.
3309         (cap_clear): Build and send a list of cleared capabilities, as
3310         required by the current draft.
3311         (cap_list): Send capability list using LIST subcommand.
3312         (cmdlist): Add handler for LS subcommand.  Remove entries for the
3313         empty and LSL subcommands, which are no longer allowed.
3314         (m_cap): Require at least one argument from user.
3315
3316 2005-04-01  Michael Poole <mdpoole@troilus.org>
3317
3318         * include/s_conf.h (SMAP_FAST): Define.
3319         (s_map): Add 'flags' field.
3320
3321         * ircd/ircd_lexer.l: Recognize 'FAST' token.
3322
3323         * ircd/ircd_parser.y (FAST): New token.
3324         (pseudoitem): Add pseudoflags alternative.
3325         (pseudoflags): New production, recognizing FAST token.
3326
3327         * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally.
3328         Remove outdated comment.
3329
3330 2005-04-01  Michael Poole <mdpoole@troilus.org>
3331
3332         * include/handlers.h (ms_privs): Declare.
3333
3334         * include/msg.h (TOK_PRIVS): Assign token.
3335         (CMD_PRIVS): Define.
3336
3337         * ircd/m_privs.c: Add doxygen comments and replace the long
3338         discussion of m_handler functions with an xref to it.
3339         (mo_privs): Forward requests for non-local users
3340         to their own server.
3341         (ms_privs): Implement.
3342
3343         * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends
3344         the message.
3345
3346 2005-03-30  Michael Poole <mdpoole@troilus.org>
3347
3348         * include/client.h (struct Client): Explain where cli_username
3349         comes from.
3350
3351         * include/struct.h (struct User): Explain where this username
3352         comes from, too
3353
3354         * ircd/ircd_res.c (timeout_resolver): Update parameter name in
3355         Doxygen comment, too.
3356
3357         * ircd/s_misc.c (get_client_name): Reorganize to have less
3358         indentation and behave like 2.10.11 when client is not idented.
3359
3360 2005-03-29  Michael Poole <mdpoole@troilus.org>
3361
3362         * doc/example.conf: Remove no-longer-used HIS_STATS_h.
3363
3364         * doc/readme.features: Likewise.
3365
3366         * include/ircd_features.h: Likewise.
3367
3368         * ircd/ircd_features.c: Likewise.
3369
3370 2005-03-20  Reed Loden <reed@reedloden.com>
3371
3372         * include/ircd_features.h: Alphabetize HIS_STATS_? features.
3373
3374         * ircd/ircd_features.c: Likewise.
3375
3376 2005-03-29  Michael Poole <mdpoole@troilus.org>
3377         (The previously unapplied part of another patch (by Carlo Wood?).)
3378
3379         * ircd/m_part.c (ms_part): Remove a check that should already be
3380         done by the user's own server.
3381
3382 2005-03-29  Michael Poole <mdpoole@troilus.org>
3383
3384         * doc/example.conf: Add HIS_STATS_J entry.
3385
3386         * doc/readme.features: Likewise.
3387
3388 2005-03-25  Reed Loden <reed@reedloden.com>
3389
3390         * include/hash.h: Add needed prototypes for new
3391         stats_nickjupes() function.
3392
3393         * include/ircd_features.h: Add FEAT_HIS_STATS_J.
3394
3395         * include/numeric.h: Add RPL_STATSJLINE (222) for new nick
3396         jupes stats. Correct a typo in a comment.
3397
3398         * ircd/hash.c: Add stats_nickjupes() function to report all
3399         nick jupes to an oper. Because of the nature of hash tables,
3400         there is no way to sort this list so the results look weird.
3401
3402         * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE).
3403
3404         * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes
3405         stats.
3406
3407         * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes
3408         stats. Make 'j' case sensitive. Modify the comment for stats
3409         uworld.
3410
3411 2005-03-27  Michael Poole <mdpoole@troilus.org>
3412
3413         * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A
3414         channel when forwarding a channel burst line.
3415
3416 2005-03-25  Michael Poole <mdpoole@troilus.org>
3417
3418         * ircd/m_server.c (set_server_flags): New function.  Unlike the
3419         old code, this recognizes the IPv6 flag.  (Spotted by Reed.)
3420         (mr_server): Use the new function.
3421         (ms_server): Likewise.  Also don't show "Net junction:" message if
3422         any closer server is still bursting (also spotted by Reed).
3423         Finally, forward the +6 flag to other servers.
3424
3425         * ircd/s_serv.c (server_estab): Forward the +6 flag here, too.
3426
3427         * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it
3428         may be cleared by completed_connection().
3429
3430 2005-03-23  Michael Poole <mdpoole@troilus.org>
3431
3432         * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
3433         is wiped out during burst.
3434
3435 2005-03-22  Michael Poole <mdpoole@troilus.org>
3436
3437         * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
3438         kludgy earlier version of the timeout fix.
3439
3440 2005-03-22  Michael Poole <mdpoole@troilus.org>
3441
3442         * ircd/channel.c (send_channel_modes): Fix test for when to send
3443         membership mode suffix, to avoid sending it more than once.
3444
3445 2005-03-22  Michael Poole <mdpoole@troilus.org>
3446         (Many thanks to nex and Reed for helping hunt this down and
3447         doing the testing of various patches.)
3448
3449         * ircd/ircd_events.c (timer_chg): Properly change a timer that is
3450         in the middle of executing its expiration event.
3451
3452         * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for
3453         whether to use timer_chg() or timer_add().
3454         On second thought, use timer_add() unconditionally; the server
3455         connection loop does.
3456         (timeout_resolver): Do not try to re-schedule the DNS timeout
3457         unless it is the expiration event.
3458         (do_query_number): Properly initialize request->state.
3459         (res_readreply): Mention the response code that was bad.
3460
3461 2005-03-22  Michael Poole <mdpoole@troilus.org>
3462
3463         * ircd/engine_kqueue.c (engine_delete): The kernel removes
3464         close()'d FDs from the activity list, so don't try to remove the
3465         FD here (the caller may have already close()'d it).
3466
3467 2005-03-20  Michael Poole <mdpoole@troilus.org>
3468
3469         * ircd/IPcheck.c: Fix typos in comments and strings to reduce
3470         future slumming for credit.
3471
3472         * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise.
3473         * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise.
3474         * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise.
3475         * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise.
3476         * ircd/ircd_features.c, ircd/ircd_log.c: Likewise.
3477         * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise.
3478         * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise.
3479         * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise.
3480         * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise.
3481         * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise.
3482         * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise.
3483         * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise.
3484         * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise.
3485         * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise.
3486         * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise.
3487         * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise.
3488         * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise.
3489
3490         * ircd/test/test_stub.c: Make exit_client() argument list
3491         consistent with that in s_misc.c so doxygen is not confused.
3492
3493 2005-03-20  Michael Poole <mdpoole@troilus.org>
3494         (Thanks to Reed Loden for pointing these out.)
3495
3496         * ircd/channel.c: Fix typos in comments.
3497
3498         * ircd/m_create.c: Likewise.
3499
3500         * ircd/m_list.c: Likewise.
3501
3502         * ircd/m_names.c: Likewise.
3503
3504         * ircd/numnicks.c: Likewise.
3505
3506         * ircd/s_bsd.c: Likewise.
3507
3508 2005-03-20  Michael Poole <mdpoole@troilus.org>
3509         (Thanks to Reed Loden for pointing these out.)
3510
3511         * doc/Configure.help: Remove outdated file.
3512
3513         * doc/exaconf.2: Likewise.
3514
3515         * doc/snomask.html: Add missing <tr>, SNO_AUTO, SNO_DEBUG, and
3516         update SNO_OPERDEFAULT list.
3517
3518         * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd
3519         instead).
3520
3521         * tools/Makefile.crypt: Remove outdated file.
3522
3523         * tools/mkpasswd.c: Likewise.
3524
3525         * tools/transition: Likewise.
3526
3527 2005-03-19  Michael Poole <mdpoole@troilus.org>
3528
3529         * ircd/channel.c (sub1_from_channel): Check apass rather than mode
3530         to determine whether an apass is set (MODE_KEY/APASS/UPASS are not
3531         set in mode.mode).
3532         (send_channel_modes): Use the same change when determining how to
3533         send oplevels for channels.
3534
3535 2005-03-19  Michael Poole <mdpoole@troilus.org>
3536
3537         * include/IPcheck.h (IPcheck_connect_fail): Take a Client
3538         parameter instead of irc_in_addr.
3539
3540         * ircd/IPcheck.c (IPcheck_connect_fail): Likewise.  Assert that
3541         the client has been IP-checked.
3542         (IPcheck_remote_connect): Assert that the client has not yet been
3543         charged for connecting.
3544         (IPcheck_connect_succeeded): Assert that the client has been
3545         charged for connecting.
3546         (IPcheck_disconnect): Likewise.
3547
3548         * ircd/m_nick.c (m_nick): Pass rejected client to
3549         IPcheck_connect_fail() when somebody takes the nick first.
3550         (ms_nick): Likewise.
3551
3552         * ircd/s_serv.c (server_estab): Pass new server to
3553         IPcheck_connect_fail().
3554
3555         * ircd/s_user.c (register_user): When rejecting a user, pass
3556         the struct Client to IPcheck_connect_fail().
3557
3558 2005-03-19  Michael Poole <mdpoole@troilus.org>
3559
3560         * doc/example.conf (Connect): Remove a buggy comment about leaf
3561         directives; refer the reader to the Connect block instead.
3562
3563         * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;"
3564
3565 2005-03-19  Michael Poole <mdpoole@troilus.org>
3566
3567         * doc/example.conf (Operator): Correct the comment explaining
3568         hashed passwords.
3569
3570         * ircd/m_oper.c (oper_password_match): Check correct variable to
3571         determine whether the hashed password matched.
3572
3573 2005-03-08  Michael Poole <mdpoole@troilus.org>
3574
3575         * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask
3576         and bit count for "*".
3577         (ipmask_check): Make more robust to similar errors.
3578
3579 2005-03-07  Michael Poole <mdpoole@troilus.org>
3580
3581         * configure.in: Consistently use a constant in AC_DEFINE().
3582
3583         * configure: Regenerate.
3584
3585         * doc/example.conf (Port): Add comment about the mask option.
3586         (Port): Fix the vhosted Port example.
3587
3588         * ircd/ircd_parser.y (clientblock): Correctly initialize the IP
3589         address and addrbits for a Client block with no IP mask.
3590
3591         * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask.
3592
3593         * ircd/s_auth.c (start_auth_query): Count socket allocation
3594         failure as a failed auth check, as .11 does.
3595
3596         * ircd/s_debug.c (debug_serveropts): Add '6' to server options
3597         when compiled with IPv6 support.
3598
3599 2005-02-23  Michael Poole <mdpoole@troilus.org>
3600
3601         * doc/example.conf: Explain apass_opmode privilege, pointing out
3602         that, unlike previous privs, the default is OFF for global opers.
3603
3604         * include/client.h (PRIV_APASS_OPMODE): Define new privilege.
3605
3606         * ircd/channel.c (mode_parse_upass): Only prevent local opers
3607         without the apass_opmode privilege from forcing a +U change.
3608         (mode_parse_apass): Likewise, for +A.
3609
3610         * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in
3611         the default privileges for global opers.
3612
3613         * ircd/ircd_lexer.l (apass_opmode): Recognize keyword.
3614
3615         * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token.
3616         (privtype): Fix typo for local_badchan privilege value.
3617         Accept apass_opmode token.
3618
3619 2005-02-23  Michael Poole <mdpoole@troilus.org>
3620
3621         * doc/example.conf: Fix comment's description of "whox" privilege.
3622
3623 2005-02-21  Michael Poole <mdpoole@troilus.org>
3624
3625         * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check
3626         from here, so /whois does not show secret global channels.
3627
3628         * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use
3629         "/list s".
3630         (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels.
3631
3632 2005-02-21  Perry Lorier <isomer@undernet.org>
3633
3634         * ircd/s_stats.c: Hide the hub IP's.  They're kinda important.
3635
3636 2005-02-20  Perry Lorier <isomer@undernet.org>
3637
3638         * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to
3639         parse_error()'s so that ./ircd -k will display them.  Also clarified
3640         the warning about oper blocks.
3641
3642 2005-02-20  Perry Lorier <isomer@undernet.org>
3643
3644         * tools/convert-conf.py: A multitude of changes to deal with parsing
3645         mistakes, generate a newer config file, better error handling,
3646         being smarter about what config elements you generate etc.
3647         
3648 2005-02-20  Perry Lorier <isomer@undernet.org>
3649
3650         * ircd/engine_epoll.c: Change a size_t to socklen_t to match
3651         getsockopt prototype, so it compiles without warning on amd64
3652
3653 2005-02-19  Michael Poole <mdpoole@troilus.org>
3654
3655         * ircd/ircd_parser.y (clientblock): Parse IP address before
3656         allocating ConfItem; if the parse fails, generate an error.
3657
3658         * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6
3659         addresses starting with ':'.
3660         (RPL_STATSILINE): Likewise.
3661         (RPL_STATSOLINE): Add format field for username.
3662
3663         * ircd/s_stats.c (stats_configured_links): Pass the appropriate
3664         argument for the RPL_STATSxLINE changes.
3665         Change RPL_STATSILINE to use * instead of <NULL> when IP or host
3666         is null.
3667
3668 2005-02-18  Michael Poole <mdpoole@troilus.org>
3669
3670         * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP
3671         address to look up and compare against hash entries.
3672
3673         * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban.
3674
3675         * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name.
3676         (clienthost): Split hosts that contain '@' into username and host.
3677         (clientip): Split IPs that contain '@' into username and IP.
3678         (killreason): Add missing ~ to mask off DENY_FLAGS_FILE.
3679
3680         * ircd/m_silence.c (forward_silences): When we reject a silence,
3681         splice it out of the ban list.  Warn the user if he is local.
3682
3683         * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server
3684         connections.
3685
3686         * ircd/s_stats.c (stats_configured_links): Display correct field
3687         when listing CONF_UWORLD entries.
3688
3689 2005-02-09  Michael Poole <mdpoole@troilus.org>
3690
3691         * configure.in (YACC): Only warn if we cannot get a version number
3692         from $YACC.
3693
3694         * configure: Regenerate.
3695
3696         * ircd/ircd_res.c (check_resolver_timeout): Try another way to
3697         avoid timer_chg() on a non-queued/active timer.
3698
3699         * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
3700         strings like "::127.0.0.1".
3701
3702         * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
3703
3704 2005-02-02  Michael Poole <mdpoole@troilus.org>
3705
3706         * Makefile.in (install): Do not create ${prefix}/include since it
3707         is no longer used.
3708
3709         * ircd/Makefile.in (install-*): Remove commented-out code to touch
3710         and chown MPATH and RPATH.
3711
3712         * ircd/gline.c (gline_find): Allow searching for host-based
3713         G-lines by plain hostname (not *@host), thus preventing "GLINE
3714         test ..." from inserting duplicate G-lines.
3715
3716         * ircd/motd.c (motd_create): Null out new Motd's hostmask when
3717         appropriate, avoiding an uninitialized or stale pointer.
3718
3719 2005-01-26  Michael Poole <mdpoole@troilus.org>
3720
3721         * include/ircd_alloc.h (DoMallocZero): Parenthesize macro
3722         arguments, fixing operator precedence problems.
3723         (DoFree): Make debug version also overwrite p.
3724
3725         * include/memdebug.h (fda_get_byte_count, fda_get_block_count):
3726         Declare functions used outside memdebug.c.
3727
3728         * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c.
3729
3730         * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not
3731         use these if using the memdebug version.
3732
3733         * ircd/memdebug.c: #include "send.h" and <string.h> to get
3734         declarations for certain functions.
3735
3736         * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug.
3737         (sendto_opmask_butone): Likewise.
3738
3739 2005-01-25  Michael Poole <mdpoole@troilus.org>
3740
3741         * configure.in: Fix typos and thinkos in previous commut.
3742
3743         * configure: Regenerate.
3744
3745         * doc/example.conf: Change class name in Connect block to be
3746         consistent with earlier Class block.
3747
3748         * ircd/ircd.c (try_connections): Consider Connect blocks with hold
3749         time of 0.  Fix Links() vs MaxLinks() comparison to reflect ref
3750         count starting at 1.
3751
3752         * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused
3753         variables after use.
3754
3755 2005-01-24  Michael Poole <mdpoole@troilus.org>
3756
3757         * configure.in: Make sure that $LEX and $YACC are reasonable and
3758         actually run.
3759
3760         * configure: Regenerate.
3761
3762         * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to
3763         test whether the timer is already pending.
3764
3765 2005-01-23  Michael Poole <mdpoole@troilus.org>
3766
3767         * doc/example.conf (Kill): Fix typo in realname Kill block
3768
3769         * include/client.h (infousermodes): Fix typo in comment.
3770
3771         * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY.
3772         (main): Move daemon_init() before event_init() to work around BSD
3773         lameness.
3774
3775 2005-01-23  Michael Poole <mdpoole@troilus.org>
3776
3777         * ircd/test/Makefile.in: Add missing "install" target.  Make
3778         compatible with BSD make (which has no $^ and no $(CPPFLAGS) in
3779         its default .c.o rule).
3780
3781 2005-01-21  Michael Poole <mdpoole@troilus.org>
3782
3783         * ircd/engine_kqueue.c: Move <sys/types.h> earlier to fix build on
3784         FreeBSD 5.x (which needs it for <sys/event.h>).
3785
3786         * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with
3787         portable equivalents.
3788
3789         * ircd/ircd_log.c (log_open): Likewise.
3790
3791         * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so
3792         that IPv6 definitions become visible on FreeBSD 5.3.
3793
3794         * ircd/s_auth.c: Remove apparently unused <sys/file.h> because
3795         it fails to compile on FreeBSD 5.3.
3796
3797 2005-01-22  Perry Lorier <isomer@undernet.org>
3798
3799         * ircd/ircd_parser.y: Fix missing ;
3800
3801 2005-01-19  Michael Poole <mdpoole@troilus.org>
3802
3803         * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in
3804         outbound INVITE messages.  On incoming INVITEs, ignore if the
3805         timestamp is too recent or if the timestamp is missing and the
3806         peer server is in burst.
3807
3808 2005-01-15  Michael Poole <mdpoole@troilus.org>
3809
3810         * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans
3811         and silences.  Mention net.rider kick change.
3812
3813         * doc/example.conf (Class): Add documentation for restart and
3814         local_opmode privileges.  Fix name of local_jupe privilege.
3815
3816         * ircd/ircd_lexer.l: Recognize local_opmode privilege.
3817
3818 2005-01-14  Michael Poole <mdpoole@troilus.org>
3819
3820         * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify
3821         CAP comment, mention named /stats, list config heteromorphisms.
3822
3823         * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L,
3824         HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST.
3825
3826         * ircd/channel.c (mode_parse_apass): Change old mention of +u mode
3827         to say +U.
3828
3829 2005-01-13  Michael Poole <mdpoole@troilus.org>
3830
3831         * RELEASE.NOTES: Update for 2.10.12.
3832
3833 2005-01-08  Michael Poole <mdpoole@troilus.org>
3834
3835         * ircd/channel.c (@page zombie): Add synopsis to explain what
3836         zombies are supposed to do.
3837
3838         * doc/example.conf (Features): Transfer recommended LOG features
3839         from 2.10.11 example.conf.
3840
3841 2005-01-03  Michael Poole <mdpoole@troilus.org>
3842
3843         * ircd/ircd.c (try_connections): Test Connect hold time before
3844         updating it (spotted by Kev).
3845
3846 2005-01-03  Michael Poole <mdpoole@troilus.org>
3847
3848         * Makefile.in: Add ircd/test as a subdirectory.
3849
3850         * ircd/.cvsignore: Ignore umkpasswd binary.
3851
3852         * ircd/Makefile.in: Update dependencies.
3853
3854         * ircd/test/.cvsignore: New file.
3855
3856         * ircd/test/Makefile.in: Use ${} instead of $().  Add build,
3857         depend, distclean targets to integrate with rest of build system.
3858
3859 2005-01-03  Michael Poole <mdpoole@troilus.org>
3860
3861         * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
3862         that have an invalid IP address.
3863
3864         * ircd/ircd.c (try_connections): Update Connect hold time before
3865         skipping it, to prevent infinite loops.
3866
3867 2005-01-03  Kevin L Mitchell  <klmitch@mit.edu>
3868
3869         * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
3870         was a server; fixed to skip servers
3871
3872 2004-12-28  Michael Poole <mdpoole@troilus.org>
3873
3874         * include/s_bsd.h (VirtualHost): Replace with separate variables
3875         for IPv4 and IPv6 virtual hosts.
3876
3877         * include/uping.h (uping_echo): Remove declaration.
3878
3879         * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
3880         VirtualHost_v6 based on iauth server address family.
3881
3882         * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
3883
3884         * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
3885         (RESOLVER): Remove definition.
3886         (generalresolver): Remove.
3887         (generalvhost): Assign address to either VirtualHost_v4 or
3888         VirtualHost_v6, depending on format.
3889
3890         * ircd/ircd_res.c (res_socket): Replace with separate variables
3891         for IPv4 and IPv6 resolver sockets.
3892         (ResolverAddr): Remove definition.
3893         (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
3894         (send_res_msg): Select outbound FD based on resolver address type.
3895         (res_readreply): Recognize either inbound socket FD.
3896
3897         * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
3898         (os_socket): Require local != NULL.
3899
3900         * ircd/s_bsd.c (VirtualHost): Replace with separate variables
3901         for IPv4 and IPv6 virtual hosts.
3902         (connect_inet): Select virtual host based on destination address.
3903
3904         * ircd/uping.c (UPingFIleDescriptor): Remove.
3905         (upingSock): Split into separate IPv4 and IPv6 variables.
3906         (uping_echo_callback): Incorporate uping_echo() body here, so the
3907         proper socket FD can be used.
3908         (uping_init): Attempt to set up both v4 and v6 UPING sockets.
3909         (uping_server): Create uping socket with appropriate local address.
3910
3911         * doc/example.conf (General): Update example config file to
3912         reflect removal of Resolver setting and support for separate IPv4
3913         and IPv6 VHost settings.
3914
3915 2004-12-28  Michael Poole <mdpoole@troilus.org>
3916
3917         * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
3918         DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
3919         unused macros.
3920
3921         * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
3922         ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
3923         #include <arpa/inet.h>.
3924
3925 2004-12-28  Michael Poole <mdpoole@troilus.org>
3926
3927         * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
3928         (ipmask_parse_ipv4): We already parse the dotted quads from the
3929         input string, so use them instead of inet_addr() to populate
3930         out->s_addr.
3931
3932         * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
3933         (do_gline): Pass SHOW_IP instead of TRUE as argument to
3934         get_client_name().
3935
3936         * ircd/ircd.c (try_connections): Revise to use fewer temporary
3937         variables.
3938
3939 2004-12-28  Michael Poole <mdpoole@troilus.org>
3940
3941         * include/res.h: Implement irc_in_addr_* as macros.
3942
3943         * ircd/ircd_res.c: Remove the function bodies.
3944
3945         * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
3946         (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
3947         (ircd_aton): Accept IPv6 addresses with all eight segments
3948         specified (e.g. 0:0:0:0:0:0:0:0).  Correctly parse addresses
3949         with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
3950
3951         * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
3952
3953         * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
3954         support.  Add test_stub.c and ircd_in_addr_t.c references.
3955
3956         * configure.in: Generate ircd/test/Makefile as an output file.
3957
3958         * configure: Update.
3959
3960 2004-12-18  Michael Poole <mdpoole@troilus.org>
3961
3962         * include/client.h: Move unreg, privs, capab and active fields
3963         from struct Client to struct Connection since that is how they
3964         are really associated.  Adjust macros to match.
3965         (SetPriv, ClrPriv): New macros.
3966
3967         * ircd/client.c (client_set_privs): Exit earlier for remote
3968         clients.  Adjust macro use to correspond.
3969
3970         * ircd/m_server.c (mr_server): Grant all privileges except
3971         PRIV_SET to peer servers.
3972
3973 2004-12-18  Michael Poole <mdpoole@troilus.org>
3974
3975         * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
3976         #1087461.
3977
3978 2004-12-18  Michael Poole <mdpoole@troilus.org>
3979
3980         * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
3981         socket's FD is the same after processing as it was before; local
3982         clients apparently have s_fd() == -1 after close.
3983
3984 2004-12-18  Kevin L Mitchell  <klmitch@mit.edu>
3985
3986         * ircd/s_user.c: make absolutely certain register_user() is never
3987         called with cli_unreg non-zero; transition set_nick_name() over to
3988         the new way of determining whether client is ready for
3989         register_user()
3990
3991         * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
3992         understand a given CAP subcommand
3993
3994         * ircd/parse.c: add "CAP" command
3995
3996         * ircd/m_user.c (m_user): transition over to new way of
3997         determining whether client is ready for register_user()
3998
3999         * ircd/m_pong.c (mr_pong): transition over to new way of
4000         determining whether client is ready for register_user()
4001
4002         * ircd/m_cap.c: implementation of the IRC capabilities draft
4003
4004         * ircd/list.c (make_client): initialize cli_unreg element of
4005         client structure
4006
4007         * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
4008         functions that were never found because cross-case ordering has
4009         not been needed until now
4010
4011         * ircd/Makefile.in: add m_cap.c to list of .c files
4012
4013         * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
4014         indicate an unknown CAP subcommand
4015
4016         * include/msg.h: add "CAP" command
4017
4018         * include/handlers.h: add m_cap() to list of handlers
4019
4020         * include/client.h: add support for client capabilities; rototill
4021         the registration mechanism to dovetail well with the capability
4022         system--i.e., allow the capability system to suspend registration
4023         if the user issues one of the CAP commands
4024
4025         * include/capab.h: header file to define client capabilities
4026
4027 2004-12-17  Michael Poole <mdpoole@troilus.org>
4028
4029         * ircd/channel.h (apply_ban): Add new flag to indicate whether
4030         newban should be free()'d after it is used.
4031
4032         * ircd/channel.c (apply_ban): Likewise.  Also set BAN_DEL flag
4033         when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
4034         (mode_parse_ban): Delete buggy shortcut when channel banlist is
4035         empty.
4036         (mode_process_bans): Always give ownership of ban->banstr to the
4037         mode buffer, avoiding a memory leak.
4038
4039         * ircd/m_silence.c (apply_silence): Pass new parameter to
4040         apply_ban.
4041
4042 2004-12-17  Michael Poole <mdpoole@troilus.org>
4043
4044         * ircd/channel.c (sub1_from_channel): Immediately destroy
4045         non-Apass channels when oplevels are enabled; otherwise, they can
4046         stay opless for a considerable period.
4047         (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
4048         does not try to free() an invalid pointer.
4049
4050         * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
4051         aconf->host, not aconf->name.
4052
4053         * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
4054         by host here..
4055
4056         * ircd/s_conf.c (conf_check_server): .. rather than by name here.
4057         (attach_conf_uworld): New function to attach CONF_UWORLD items.
4058         (rehash): Use attach_conf_uworld() instead of attaching by name.
4059
4060 2004-12-15  Michael Poole <mdpoole@troilus.org>
4061
4062         * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
4063         channels they are not joined.
4064
4065 2004-12-15  Michael Poole <mdpoole@troilus.org>
4066
4067         * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
4068         warning.
4069         (ip_registry_canonicalize): New function to convert an IP address
4070         into a canonical form for clone checks.
4071         (ip_registry_hash): Update to reflect canonical form.
4072         (ip_registry_find): Use ip_registry_canonicalize().
4073         (ip_registry_check_local, ip_registry_check_remote): Likewise.
4074
4075         * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
4076         sending them to a non-IPv6 server.
4077
4078 2004-02-17  Michael Poole <mdpoole@troilus.org>
4079
4080         * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
4081         +D channel when they hide their hostmask.
4082
4083 2004-12-15  Michael Poole <dmpoole@troilus.org>
4084
4085         * doc/example.conf: Remove the example Server blocks since they
4086         are no longer used (were merged into Connect).
4087
4088         * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
4089
4090         * ircd/m_server.c (check_loop_and_lh): Use a different argument to
4091         test whether an introduced server is directly connected or not.
4092
4093 2004-12-14  Michael Poole <mdpoole@troilus.org>
4094
4095         * include/client.h (FLAG_IPV6): New value for enum Flag.
4096         (IsIPv6, SetIPv6): Accessor macros for it.
4097
4098         * include/numnicks.h (iptobase64): Add flag indicating whether to
4099         use full IPv6 addresses or fake them in an IPv4-compatible way.
4100
4101         * ircd/numnicks.c (iptobase64): Use the new flag.
4102
4103         * include/send.h (sendcmdto_flag_serv_butone): New function to
4104         send different lines to servers based on flags (like FLAG_IPV6).
4105
4106         * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
4107
4108         * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
4109         our server flags.
4110
4111         * ircd/s_serv.c (server_estab): Likewise.  Also make sure we send
4112         compatible IP addresses for the new server.
4113
4114         * ircd/s_user.c (register_user): Only send full IPv6 addresses to
4115         links that have FLAG_IPV6 set.
4116
4117 2004-12-13  Michael Poole <mdpoole@troilus.org>
4118
4119         * doc/example.conf: Update General block comment to mention
4120         new RESOLVER option and to explain IPv6 support.
4121
4122         * ircd/ircd_lexer.l: Recognize RESOLVER token.
4123
4124         * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
4125         alternative for generalitem.
4126
4127         * ircd/ircd_res.c: Define global ResolverAddr variable.  If it is
4128         valid, use it instead of VirtualHost in restart_resolver().
4129
4130 2004-12-13  Michael Poole <mdpoole@troilus.org>
4131
4132         * doc/example.conf: Update configuration to move Client block
4133         comment after sample Class blocks, and update entries in it.
4134
4135         * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
4136
4137         * ircd/ircd_parser.y: Add ip and username global variables and IP
4138         and USERNAME tokens.  Add clientip and clientusername alternatives
4139         for clientitem, and update clientblock to correspond.
4140
4141         * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
4142         the request_list before request_list is initialized.
4143         (cres_mem): Likewise.
4144
4145         * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
4146         proper address family.
4147
4148         * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
4149         means DNS reply is optional.  If aconf->addrbits >= 0, test it.
4150
4151         * tools/crypter: Delete.
4152
4153 2004-12-11  Kevin L Mitchell  <klmitch@mit.edu>
4154
4155         * ircd/*.c: use new assert() in ircd_log.h in preference to system
4156         assert()
4157
4158         * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
4159         glue so that umkpasswd will successfully compile and link
4160
4161         * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
4162         there are no calls to assert()
4163
4164         * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
4165         from looping should there be an assertion failure somewhere in the
4166         logging subsystem
4167
4168         * include/ircd_log.h: custom implementation of assert() that calls
4169         log_write()
4170
4171 2004-11-21  Michael Poole <mdpoole@troilus.org>
4172
4173         * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
4174         be done by non-channel-managers, fixing a crash from OPMODE.
4175         (mode_parse_apass): Likewise.
4176
4177 2004-11-20  Michael Poole <mdpoole@troilus.org>
4178
4179         * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
4180         a channel they are already in, but do not add them again.
4181
4182 2004-11-09  Michael Poole <mdpoole@troilus.org>
4183
4184         * include/res.h (init_resolver): Delete, and initialize lazily.
4185
4186         * ircd/ircd.c (main): Do not call init_resolver().
4187
4188         * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
4189         local resolver socket address.
4190         (init_resolver): Delete.
4191         (make_request): Call restart_resolver() if necessary.
4192         (query_name): Use ircrandom() instead of rand().
4193
4194         * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
4195         a file descriptor that indicates the socket family to use.
4196         (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
4197
4198 2004-11-09  Michael Poole <mdpoole@troilus.org>
4199
4200         * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
4201         socket from epoll on delete, since the kernel does that for us.
4202
4203 2004-11-07  Michael Poole <mdpoole@troilus.org>
4204
4205         * ircd/m_server.c (m_server, ms_server): Assign timestamp before
4206         it might be used in exit_new_server().
4207
4208 2004-11-07  Michael Poole <mdpoole@troilus.org>
4209
4210         * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
4211         to reflect the changes since these files' last rebuild.
4212
4213 2004-11-07  Michael Poole <mdpoole@troilus.org>
4214
4215         * include/ircd_crypt.h (ircd_crypt): This should return char*, not
4216         const char*, since it does not own the returned pointer.
4217
4218         * ircd/ircd_crypt.c (ircd_crypt): Change return type.
4219
4220         * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
4221         field since it is returned but this function must own the buffer.
4222
4223         * ircd/m_oper.c (oper_password_match): Free the string returned by
4224         ircd_crypt().
4225
4226         * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
4227
4228 2004-11-07  Michael Poole <mdpoole@troilus.org>
4229
4230         * acinclude.m4: Look for a 64-bit integer type.
4231
4232         * configure.in: Look for inttypes.h, since some systems have that
4233         but not stdint.h (and define 64-bit integers therein).
4234
4235         * include/client.h: Delete con_sendK, con_receiveK.  Make
4236         con_sendB and con_receiveB 64 bits wide.
4237
4238         * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
4239         Convert the other byte counters and the connected time counters to
4240         64 bits wide.
4241
4242         * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
4243         HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
4244
4245         * ircd/packet.c (update_bytes_received): Remove use of
4246         cli_receiveK().
4247
4248         * ircd/s_bsd.c (deliver_it): Likewise.
4249         (close_connection): Likewise.
4250
4251         * ircd/s_misc.c (tstats): Likewise.  Update format strings to use
4252         %Lu for 64-bit integer parameters.
4253
4254         * ircd/s_stats (stats_links): Convert cli_sendK() and
4255         cli_receiveK() use shifted versions of the byte counters, and
4256         update format strings to use %Lu for 64-bit integer parameters.
4257
4258 2004-11-07  Michael Poole <mdpoole@troilus.org>
4259
4260         * include/s_user.h (add_silence): Delete.
4261         (del_silence): Delete.
4262
4263         * include/struct.h (struct User): Convert silence list to struct Ban.
4264
4265         * ircd/m_silence.c (apply_silence, forward_silences): New functions.
4266         (m_silence): Use forward_silences() instead of add_silence().
4267         (ms_silence): Likewise.
4268
4269         * ircd/s_err.c (replyTable): Update RPL_SILELIST.
4270
4271         * ircd/s_misc.c (exit_one_client): Update to new silence list type.
4272
4273         * ircd/s_user.c (is_silenced): Use find_ban() to search for
4274         silences.  If one is found, send it plus any silence exceptions.
4275         (del_silence): Delete.
4276         (add_silence): Delete.
4277
4278 2004-11-07  Michael Poole <mdpoole@troilus.org>
4279
4280         * include/channel.h: Remove declarations for undefined functions
4281         cancel_mode(), add_token_to_sendbuf(), IsMember().  Delete
4282         add_banid(), next_removed_overlapped_ban().  Add BAN_EXCEPTION
4283         flag and new functions find_ban(), apply_ban().
4284
4285         * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
4286         LocalChanOperMode): Remove unused variable definitions.
4287         (make_nick_user_host): Delete.
4288         (add_banid): Delete.
4289         (next_removed_overlapped_ban): Delete.
4290         (find_ban): New function, which knows about exceptions.
4291         (is_banned): Use find_ban() and only work on a struct Membership.
4292         (bmatch): New function, which knows about CIDR bans.
4293         (apply_ban): New function to replace add_banid().
4294         (mode_parse_ban): Use apply_ban().
4295
4296 2004-10-28  Michael Poole <mdpoole@troilus.org>
4297
4298         * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
4299         new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
4300
4301 2004-10-22  Michael Poole <mdpoole@troilus.org>
4302
4303         * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
4304         with announcements enabled (do not "announce" to the recipient,
4305         and unconditionally send to the recipient).
4306
4307         * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
4308         the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
4309
4310 2004-10-21  Michael Poole <mdpoole@troilus.org>
4311
4312         * include/channel.h (Ban): Add fields address, nu_len, addrbits to
4313         support netmask-based bans.
4314
4315         * ircd/channel.c (set_ban_mask): New function to parse a ban as
4316         either netmask-based or not.
4317         (make_ban): Use set_ban_mask().
4318         (make_nick_user_ip): Becomes unused; remove it.
4319         (is_banned): Rewrite to match only once against the nick!user part
4320         of a ban, and compare addresses if BAN_IPMASK is set.
4321         (mode_parse_ban): Use set_ban_mask().
4322
4323 2004-10-21  Michael Poole <mdpoole@troilus.org>
4324
4325         * ircd/s_conf.c (attach_iline): Test resolved host names against
4326         aconf->host, not the (NULL) aconf->name.
4327
4328 2004-10-19  Michael Poole <mdpoole@troilus.org>
4329
4330         * include/channel.h: Move ban flags out of channel flags and
4331         rename to reflect this.
4332
4333         * ircd/channel.c: Update ban constant names.
4334
4335         * ircd/m_burst.c: Likewise.
4336
4337 2004-10-18  Michael Poole <mdpoole@troilus.org>
4338
4339         * include/list.h (SLink): Remove ban elements from here...
4340
4341         * include/channel.h (Ban): And move to the new struct Ban.
4342         (Channel): Update banlist field to match.
4343         (next_removed_overlapped_ban): Update return type to match.
4344         (make_ban, free_ban): New functions.
4345
4346         * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
4347         list types.
4348         (free_bans): New variable to hold unused Ban elements.
4349         (make_ban, free_ban): New functions.
4350         (destruct_channel, add_banid, next_removed_overlapped_ban): Update
4351         to use struct Ban.
4352         (is_banned, send_channel_modes, send_ban_list): Likewise.
4353         (ParseState, mode_parse_ban, mode_process_bans): Likewise.
4354         (mode_parse): Likewise.
4355
4356         * ircd/m_burst.c (ms_burst): Update to use struct Ban.
4357
4358         * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
4359
4360         * ircd/s_debug.c (count_memory): Update to use struct Ban.
4361
4362 2004-10-18  Kevin L Mitchell  <klmitch@mit.edu>
4363
4364         * ircd/gline.c (gline_find): unless we're looking for an exact
4365         match, we should call match() on hostnames, not ircd_strcmp()
4366
4367 2004-10-17  Michael Poole <mdpoole@troilus.org>
4368
4369         * include/s_conf.h (ConfItem): Add new field username.  Replace
4370         unused field bits with addrbits.
4371         (find_conf_exact): Replace user and host arguments with cptr.
4372         (find_conf_name, read_tlines, find_restrict): Remove declaration
4373         for undefined functions.
4374         (conf_parse_userhost): New function.
4375
4376         * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
4377         resolved hostname and IP are matched in one pass now.
4378
4379         * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
4380
4381         * ircd/s_conf.c (conf_parse_userhost): New function.
4382         (check_limit_and_attach): Use correct ConfItem field to determine
4383         maximum connections per IP.
4384         (attach_iline): Replace user@host matching with shorter, clearer
4385         matching against username and host/IP fields.
4386         (find_conf_exact): Likewise.
4387
4388         * ircd/ircd_parser.y: Replace assignment to aconf->host for
4389         CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
4390         conf_parse_userhost().  This means CONF_CLIENT ConfItems no longer
4391         use the name field or the IP token.  Remove the latter.
4392
4393         * ircd/ircd_lexer.l: Remove unused token IP.
4394
4395 2004-10-17  Michael Poole <mdpoole@troilus.org>
4396
4397         * ircd/crule.c (crule_via): Simplify the lookup for the directly
4398         connected server name.
4399
4400 2004-10-16  Michael Poole <mdpoole@troilus.org>
4401
4402         * ircd/class.c: Make find_class() return NULL for unknown classes,
4403         rather than returning the start of connClassList.
4404
4405         * ircd/match.c (parse_ipmask): Translate IPv4 masks as
4406         IPv4-compatible addresses.
4407         (check_ipmask): Fix comparison of IP masks.
4408
4409         * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
4410         uses CIDR style masks in the hostname field of a Motd block.
4411
4412 2004-10-16  Michael Poole <mdpoole@troilus.org>
4413
4414         * ircd/numeric.h: Remove the unused RPL_STATMEM and
4415         RPL_STATMEMTOT.  Move the RPL_BOUNCE comment to its current
4416         value (the former RPL_STATMEM).
4417
4418         * ircd/s_err.c: Remove format strings for RPL_STATMEM and
4419         RPL_STATMEMTOT.
4420
4421 2004-10-16  Michael Poole <mdpoole@troilus.org>
4422
4423         * ircd/m_server.c: Look up server configuration by name of our
4424         directly connected peer rather than the server being introduced.
4425
4426 2004-10-13  Michael Poole <mdpoole@troilus.org>
4427
4428         * include/channel.h: Delete MODE_LISTED and is_listed().  Replace
4429         ListingArgs.chptr with ListingArgs.bucket.  Move declaration of
4430         list_next_channels() to..
4431
4432         * include/hash.h: here, and drop the "nr" argument.
4433
4434         * ircd/channel.c: Remove redundant scan of local clients for
4435         channels being listed.  Delete list_next_channels() function.
4436
4437         * ircd/hash.c: Add list_next_channels() here, revising to not use
4438         MODE_LISTED and to use ListingArgs.bucket instead of chptr.  Also
4439         decide when to stop sending RPL_LISTs based on a half-full sendq.
4440
4441         * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
4442
4443         * ircd/m_list.c: Delete mention of MODE_LISTED.  Unconditionally
4444         call list_next_channels(sptr).
4445
4446         * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
4447
4448         * ircd/Makefile.in: Update dependencies (for hash.c).
4449
4450 2004-10-13  Michael Poole <mdpoole@troilus.org>
4451
4452         * ircd/ircd_parser.y: Consistently zero out global variables after
4453         they are used (prevents double frees and other problems).
4454
4455 2004-10-12  Michael Poole <mdpoole@troilus.org>
4456
4457         * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
4458         Set, Clr respectively.  Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
4459         Delete con_fd (get from con_socket) and con_port.  Move sentalong
4460         from send.c to struct Connection, and cli_lasttime and cli_since
4461         from struct Client to struct Connection.  Update cli_*() macros to
4462         use con_*(cli_connect(cli)).
4463
4464         * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
4465         FlagClr(), PrivHas() with FlagHas().
4466
4467         * ircd/ircd_parser.y: Likewise.
4468
4469         * ircd/list.c: Remove assignment to cli_local() since it is now a
4470         calculated value.
4471
4472         * ircd/s_bsd.c: Remove uses of cli_port().
4473
4474         * ircd/s_conf.c: Remove uses of ClearAccess().
4475
4476         * ircd/send.c: Delete sentalong array and replace with references
4477         to con_sentalong().
4478
4479 2004-10-12  Michael Poole <mdpoole@troilus.org>
4480
4481         * doc/example.conf: Update example config to reflect the changes
4482         made in the remainder of this patch.
4483
4484         * include/list.h: Make make_conf() take a type argument.
4485
4486         * include/s_conf.h: Delete CONF_LEAF and CONF_HUB.  Add "maximum"
4487         and "hub_limit" to ConfItem to compensate.
4488
4489         * ircd/ircd_lexer.l: Recognize MAXHOPS token.
4490
4491         * ircd/ircd_parser.y: Get rid of aconf global variable and add
4492         hub_limit global variable.  Add MAXHOPS token, and productions
4493         inside connectblock to recognize it and hub masks.  Allow maxlinks
4494         field in a Client block, rather than overloading password field.
4495         Convert serverblock to uworldblock and remove extraneous fields.
4496
4497         * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
4498         calculate LHcptr and active_lh_line.  Merge some duplicated code
4499         so handling active_lh_line cases is clearer.
4500
4501         * ircd/s_conf.c: Make make_conf() take a type argument.  Delete
4502         CONF_LEAF and CONF_HUB.  Do not overwrite server name with what
4503         is specified in the config file.
4504
4505         * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
4506         RPL_STATSHLINE.  Remove useless parameters and format fields from
4507         RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
4508         RPL_STATSULINE.
4509
4510         * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
4511
4512         * ircd/s_stats.c: Get rid of report_array and make
4513         stats_configured_links() directly use RPL_STATSxLINE (adding the
4514         new fields for Server and Client blocks).  Remove /stats h, since
4515         that has no meaning.
4516
4517 2004-10-12  Michael Poole <mdpoole@troilus.org>
4518
4519         * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
4520         default rather than by listing which should be wiped out.
4521
4522 2004-10-09  Michael Poole <mdpoole@troilus.org>
4523
4524         * ircd/m_server.c: Forward port checks for leaf and hub config
4525         rules, and reorganize mr_server() and ms_server() by moving out
4526         common code.  Add doxygen comments for the file.
4527
4528 2004-10-09  Michael Poole <mdpoole@troilus.org>
4529
4530         * ircd/hash.c: Fix thinko in hash function: It is not indexed
4531         simply by character value, so we cannot just remap the values
4532         by case.
4533
4534 2004-10-05  Michael Poole <mdpoole@troilus.org>
4535
4536         * ircd/hash.c: Replace the old hash function with one based on
4537         randomized CRC-32.  The new one avoids a big table from the old
4538         function.
4539
4540 2004-10-05  Michael Poole <mdpoole@troilus.org>
4541
4542         * ircd/random.c: Convert to use ircd_md5 interface and hopefully
4543         keep more internal random state.
4544
4545 2004-10-05  Michael Poole <mdpoole@troilus.org>
4546
4547         * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
4548         ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
4549         prefixes.
4550
4551 2004-10-05  Michael Poole <mdpoole@troilus.org>
4552
4553         * adns, lib/adns: Remove unused adns library.
4554
4555 2004-10-05  Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
4556
4557         * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
4558         format, and add new comments where needed.
4559
4560         * Doxyfile: New file to tell Doxygen how to run.
4561
4562 2004-09-21  Michael Poole <mdpoole@troilus.org>
4563
4564         * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
4565         programmer, generate magic numbers.
4566         (AuthIncompleteList): Remove.
4567         (AuthPollList): Remove.
4568
4569 2004-09-19  Michael Poole <mdpoole@troilus.org>
4570
4571         * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
4572         acconfig.h.
4573
4574         * acconfig.h: Remove since it is now redundant.
4575
4576         * aclocal.m4, config.h.in, configure: Regenerate.
4577
4578 2004-09-19  hikari <hikari@undernet.org>
4579
4580         * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison 
4581         aren't found as they're essential for compilation.  Regenerated files with 
4582         autreconf.
4583                 
4584 2004-09-18  Michael Poole <mdpoole@troilus.org>
4585
4586         * doc/example.conf: Add NETWORK feature example.  Fix typos in
4587         eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
4588
4589         * include.class.h: Make max_links and ref_count unsigned ints.
4590         Make ping_freq and conn_freq unsigned short. (No more negative
4591         numbers in /stats y.)
4592
4593         * ircd/ircd.c: Report configuration file name for "ircd -k".
4594
4595 2004-09-18  hikari <hikari@undernet.org>
4596
4597         * ircd/Makefile.in: Fixed a missing internal build dependency.
4598         
4599 2004-09-16  Michael Poole <mdpoole@troilus.org>
4600
4601         * INSTALL: Fix name of example.conf and mention its installed
4602         location.
4603
4604         * include/supported.h (FEATURESVALUES2): Fix a reference to
4605         channel mode +u that escaped earlier rename attempts.
4606
4607         * ircd/ircd_auth.c (iauth_connect): Assign port number after
4608         zeroing out the destination address.
4609         Add some additional debug statements to help follow operations.
4610
4611         * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
4612
4613 2004-09-11  Bas Steendijk <steendijk@xs4all.nl>
4614
4615         * include/channel.h, include/supported.h, ircd/channel.c,
4616         ircd/s_err.c: Use +U instead of +u for user keys.
4617
4618 2004-09-13  Michael Poole <mdpoole@troilus.org>
4619
4620         * doc/example.conf: Remove sample VIRTUAL_HOST setting.
4621
4622         * doc/readme.features: Remove VIRTUAL_HOST documentation, and
4623         update NODNS documentation to match current behavior.
4624
4625         * include/s_conf.h: Remove now-unused vhost_address field and
4626         set_virtual_host() function.
4627
4628         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
4629         Remove VIRTUAL_HOST.
4630
4631         * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
4632         if we do not have a more specific alternate.
4633
4634         * ircd/ircd_parser.y: Check for sanity in General blocks (from old
4635         conf_add_local()) and assign vhost directly to VirtualHost.
4636
4637         * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
4638         value will be either != 0 or != 0xffff.
4639
4640         * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
4641         local addresses are specified as IPv4 addresses.
4642
4643         * ircd/s_conf.c: Remove unused conf_add_local() and
4644         set_virtual_host().
4645
4646 2004-09-13  Michael Poole <mdpoole@troilus.org>
4647
4648         * ircd/listener.c (add_listener): Consolidate duplicated code, and
4649         make sure listener->server is set before calling inetport() on it.
4650
4651 2004-09-12  Michael Poole <mdpoole@troilus.org>
4652
4653         * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
4654         services (not normal opers) force a change of +A or +u.
4655
4656 2004-09-11  Michael Poole <mdpoole@troilus.org>
4657
4658         * include/s_stats.h: Add sd_name to struct StatDesc.  Stop
4659         publishing the statsinfo and statsmap arrays; replace them with
4660         stats_find().  Change argument list of StatFunc() to work with
4661         names.
4662
4663         * ircd/m_stats.c: Use stats_find() instead of statsmap[].  Use the
4664         full argument instead of just the first character in reports.
4665
4666         * ircd/s_stats.c: Adapt individual stats handler functions to new
4667         argument list.  Add long names to statsinfo[].  Add new functions
4668         stats_cmp(), stats_search(), stats_find().  Sort statsinfo[] in
4669         stats_init().
4670
4671         * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
4672         a single character.
4673
4674         * ircd/s_user.c: Send an error to the user when a message loses
4675         its target in transit.
4676
4677         * include/class.h include/gline.h include/ircd_features.h
4678         include/listener.h include/motd.h include/msgq.h include/res.h
4679         include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
4680         ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
4681         ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
4682         ircd/userload.c: Adjust stats handlers to new argument list.
4683
4684 2004-09-11  Michael Poole <mdpoole@troilus.org>
4685
4686         * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
4687         replace with RPL_TRACEEND.
4688
4689         * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
4690         do_trace().  Implement RPL_TRACEEND, per RFE#830291.
4691
4692 2003-06-20  Alexander Maassen <outsider@key2peace.org>
4693
4694         * ircd/m_topic.c : Don't allow banned users to set a topic in a
4695         channel.
4696
4697 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
4698
4699         * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
4700         comment in header.
4701
4702         * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
4703         header comment.
4704
4705         * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
4706         ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
4707         ircd/m_version.c: Remove "template" moniker from comments.
4708
4709         * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
4710         channel prefix list.
4711
4712 2004-09-11  Michael Poole <mdpoole@troilus.org>
4713
4714         * doc/example.conf: Add examples for FEAT_HIS_* features.
4715
4716 2003-06-08 Matthias Crauwels <ultimate_@wol.be>
4717         [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
4718
4719         * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
4720
4721         * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
4722
4723         * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
4724
4725         * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
4726
4727         * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
4728
4729 2004-09-11  Michael Poole <mdpoole@troilus.org>
4730
4731         * ircd/ircd_relay.c (server_relay_channel_message,
4732         server_relay_channel_notice): Do not allow other servers to send
4733         or relay to local channels.
4734
4735         * ircd/m_wallchops (ms_wallchops): Likewise.
4736
4737         * ircd/m_wallvoices (ms_wallvoices): Likewise.
4738
4739 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
4740
4741         * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
4742
4743         * ircd/channel.c: removing limits shouldn't gobble an argument;
4744         this was a subtle interaction issue with modebuf...fixed by adding
4745         MODE_LIMIT to modebuf_flush_int() and short-circuiting
4746         modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
4747         removal case.  Note that this is not proof against the sequence,
4748         "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
4749         modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
4750         (Bug #916138)
4751
4752 2004-09-11  Michael Poole <mdpoole@troilus.org>
4753
4754         * include/supported.h: Kev pointed out I misinterpreted the
4755         meaning of CHANMODES; fix this.  Also define CHANNELLEN and
4756         STATUSMSG from the ISUPPORT draft.
4757
4758 2004-09-10  Michael Poole <mdpoole@troilus.org>
4759
4760         * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
4761         when oplevels are enabled.
4762
4763 2004-09-10  Michael Poole <mdpoole@troilus.org>
4764
4765         * ircd/channel.c (send_channel_modes): Only send oplevels for
4766         channels that actually use them -- for -A channels, send chanops
4767         as :o even if OPLEVELS is enabled.
4768
4769         * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
4770
4771         * ircd/numnicks.c (base64toip): Fill in the right number of 0
4772         words when we see _ in a base64-encoded IPv6 address.
4773
4774 2004-09-10  Michael Poole <mdpoole@troilus.org>
4775
4776         * ircd/ircd.c: Add -k as a chkconf-like option to exit after
4777         reading the configuration file.
4778
4779         * ircd/chkconf.c: Remove as unused.
4780
4781         * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
4782
4783 2004-09-10  Michael Poole <mdpoole@troilus.org>
4784
4785         * doc/example.conf: Remove examples for unused features (TIMESEC,
4786         CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
4787
4788         * doc/readme.features: Remove documentation for unused features
4789         (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
4790         HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
4791         add documentation for ANNOUNCE_INVITES.
4792
4793         * include/ircd_features.h: Remove unused features (TIMESEC,
4794         CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
4795
4796         * include/ircd_features.c: Likewise.
4797
4798         * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
4799         FEAT_IRCD_RES_TIMEOUT where appropriate.
4800
4801         * ircd/s_debug.c: Do not display setting of unused (and now
4802         non-existent) FEAT_CRYPT_OPER_PASSWORD.
4803
4804 2004-09-10  Michael Poole <mdpoole@troilus.org>
4805
4806         * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
4807         to use the correct address family and IP offset.
4808
4809 2004-09-10  Michael Poole <mdpoole@troilus.org>
4810
4811         * include/s_conf.h (struct ConfItem): Add origin and origin_name
4812         fields.
4813
4814         * ircd/ircd_parser.y: Add new global variable "origin."  Add a new
4815         "connectionvhost" production that accepts vhost = "IP" inside a
4816         Connect block and assigns the IP to origin_name.
4817
4818         * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
4819         as the local address.  Otherwise, fall back to the old logic (if
4820         VIRTUAL_HOST="TRUE", use the virtual host setting).
4821
4822         * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
4823         origin_name, try to parse it as an IP address.
4824
4825 2004-04-17  Isomer <isomer@undernet.org>
4826         * ircd/parse.c: Don't rate limit /gline messages
4827
4828 2004-09-10  Michael Poole <mdpoole@troilus.org>
4829
4830         * ircd/ircd_parser.y: Replace references to yylval.whatever with
4831         references to the appropriate term.  This fixes bugs like
4832         "1 hour 30 minutes" being misrecognized as 30 seconds.
4833
4834 2004-09-10  Michael Poole <mdpoole@troilus.org>
4835
4836         * ircd/ircd_features.c (features): Change default values for
4837         SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
4838         need not specify them in ircd.conf.
4839
4840 2004-09-10  Michael Poole <mdpoole@troilus.org>
4841
4842         * ircd/ircd_parser.y (serverblock): Server blocks should default
4843         to CONF_LEAF status.
4844
4845         * doc/example.conf: Update example to reflect this.
4846
4847 2004-09-10  Michael Poole <mdpoole@troilus.org>
4848
4849         * ircd/parse.c (msg_tree_parse): Reject commands that contain
4850         non-alphabetic characters.
4851
4852 2004-09-09  Michael Poole <mdpoole@troilus.org>
4853
4854         * config.h.in: Remove duplicated and unused macro definitions.
4855
4856 2004-08-24  Michael Poole <mdpoole@troilus.org>
4857
4858         * ircd/client.h: Properly parenthesize "flag" argument to
4859         FLAGSET_INDEX() and FLAGSET_MASK() macros.
4860
4861 2004-08-22  Michael Poole <mdpoole@troilus.org>
4862
4863         * ircd/channel.c (send_channel_modes): If oplevels are disabled,
4864         send 'o' for chanops instead of the member's oplevel.
4865
4866 2004-08-22  Michael Poole <mdpoole@troilus.org>
4867
4868         * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
4869         instead of memcmp().  (Fixes IPv4 servers linking to an IPv6
4870         server.)
4871
4872 2004-08-22  Alex Badea  <decampos@users.sourceforge.net>
4873
4874         * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
4875
4876 2004-08-19  Michael Poole <mdpoole@troilus.org>
4877
4878         * include/res.h: Remove unused function gethost_byname_type().
4879
4880         * ircd/ircd_res.c: Likewise, and clean up some small functions
4881         only used once (remove_dlink(), timeout_resolver()).  Use rand()
4882         for random request IDs instead of the deprecated *rand48().  Make
4883         resolver timeout event fire only when needed instead of once a
4884         second.
4885
4886 2004-08-17  Michael Poole <mdpoole@troilus.org>
4887
4888         IPv6 support, with lots of code and design borrowed from a patch
4889         by Alex Badea.
4890
4891         * config.h.in: Add place to #define IPV6 support.
4892
4893         * configure.in: Check for struct sockaddr_in6, and use that as
4894         the default choice for IPv6 support.
4895
4896         * configure: Regenerate.
4897
4898         * include/IPcheck.h, include/client.h, include/gline.h,
4899         include/ircd_string.h, include/listener.h, include/match.h,
4900         include/res.h, include/s_bsd.h: Convert from struct in_addr (from
4901         <netinet/in.h>) to struct irc_in_addr (from "res.h").
4902
4903         * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
4904         from struct sockaddr_in (from <netinet/in.h>) to struct
4905         irc_sockaddr (from "res.h").  Add new functions os_socket(),
4906         os_accept(), os_sendto_nonb() to help abstract away actual
4907         sockaddr types.
4908
4909         * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
4910         characters valid in IPv6 addresses.
4911
4912         * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
4913         and base64toip() to convert from base64 to struct irc_in_addr.
4914
4915         * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
4916         ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
4917         ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
4918         irc_in_addr instead of unsigned int or struct in_addr.
4919
4920         * ircd/gline.c: Use new more-generic ipmask functions.
4921
4922         * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
4923         fields.
4924
4925         * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
4926         instead of irc_ssaddr and irc_getaddrinfo().
4927
4928         * ircd/ircd_string.c: Implement new functions: IPv6-capable
4929         ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
4930
4931         * ircd/match.c: Delete IPv4-only matchcompIP().  Replace with
4932         IPv6-capable ipmask_parse() and ipmask_check().
4933
4934         * ircd/numnicks.c: Implement new functions: iptobase64() and
4935         base64toip().
4936
4937         * ircd/os_generic: Convert external parameters to be struct
4938         irc_addrinfo.  When using IPv6 support, sockaddr_in6 is native.
4939         Implement new functions os_sendto_nonb(), os_socket() and
4940         os_accept().
4941
4942         * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
4943         ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
4944         ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
4945         irc_sockaddr instead of separate in_addr and port fields and new
4946         OS support functions.
4947
4948         * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
4949         ircd/ircd_getnameinfo.c: Remove, since these functions are no
4950         longer used.
4951
4952         * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
4953         ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
4954         since these are unused and not compatible with IPv6 support.
4955
4956         * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
4957         Regenerate dependencies.
4958
4959 2004-08-17  Michael Poole <mdpoole@troilus.org>
4960
4961         * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
4962         states and be case-insensitive again.
4963
4964 2004-08-15  Michael Poole <mdpoole@troilus.org>
4965
4966         * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
4967         former is from C99 (and the latter is absent on Solaris).
4968
4969         * configure.in: Remove check for inttypes.h (which is a C99 format
4970         string header); replace with check for stdint.h.  Add checks for
4971         sys/param.h and sys/socket.h.  Check for socklen_t being defined
4972         (OS X does not set it).  Run program tests for lex and yacc, and
4973         use them rather than assuming flex and bison.  Remove OSDEP_C and
4974         mention to adns.  Remove check for res_mkquery().
4975
4976         * config.h.in: Update u_intNN_t #undef lines.  Add #undef
4977         socklen_t so configure test can set it.
4978
4979         * configure: Regenerate.
4980
4981         * include/ircd_addrinfo.h: #include headers needed for netdb.h and
4982         to define struct addrinfo and uintNN_t.
4983
4984         * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
4985
4986         * include/res.h: #include "ircd_addrinfo.h" to get proper type
4987         definitions.  #define INADDR_NONE if it is not defined (as on
4988         Solaris).
4989
4990         * ircd/Makefile.in: Replace LEX and YACC definitions.  Remove
4991         OSDEP_C and OSDEP_SRC; always compile os_generic.c.  Remove adns
4992         directory from CPPFLAGS.  Regenerate dependencies.
4993
4994         * ircd/client.c: Return when no propagation set for oper, to
4995         squash warning about use of "defaults" before it is set.
4996
4997         * ircd/engine_epoll.c: #include correct C99 integer header.
4998
4999         * ircd/engine_poll.c: Last argument to getsockopt() should be of
5000         socklen_t, not size_t; fix.
5001
5002         * ircd/engine_select.c: Squash warning about bzero().
5003
5004         * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
5005         with uint32_t.  We need <stdint.h> for that, so include it.
5006
5007         * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
5008         uint32_t.
5009
5010         * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
5011         There is no portable way to do %option, so remove that.  lex on
5012         Solaris needs several of its internal tables to be bigger, so
5013         increase those sizes.
5014
5015         * ircd/ircd_parser.y: Remove the second declarations of two
5016         tokens, since standard yacc warns about changing precedence.
5017
5018         * ircd/os_generic.c: Make this compile on common OSes (Linux,
5019         Solaris, OS X, FreeBSD, OpenBSD).
5020
5021         * ircd/table_gen.c: Make arguments to isprint() all unsigned char
5022         to squash warnings on Solaris that array index is "char."
5023
5024         * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
5025         portable, and replace basename() with an equivalent.
5026
5027         * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
5028
5029 2004-07-27  Michael Poole <mdpoole@troilus.org>
5030
5031         * ircd/m_burst.c: Add new netride_modes() function to check
5032         which modes could be used in a net.ride.  Use this instead
5033         of the old check for just +i or +k.
5034         (Based on patches by beware and pomac.)
5035
5036 2004-07-25  Michael Poole <mdpoole@troilus.org>
5037
5038         * ircd/ircd_parser.y: Remove redundant semicolon; it causes
5039         errors on some versions of yacc.
5040
5041 2004-07-21  Michael Poole <mdpoole@troilus.org>
5042
5043         * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
5044         ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
5045
5046 2004-07-21  Michael Poole <mdpoole@troilus.org>
5047
5048         New DNS resolver code, courtesy of Dianora and the rest of the
5049         Hybrid team.  (Bugs are of course my fault.)
5050
5051         * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
5052         libresolv from the build process.  Update dependencies.
5053
5054         * configure: Regenerate.
5055
5056         * include/client.h: Change connection's DNS reply type.
5057
5058         * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
5059
5060         * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
5061         RPL_STATSALINE and /stats a to list DNS servers.
5062
5063         * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
5064         ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
5065         ircd/ircd_reslib.c: New resolver files.
5066
5067         * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
5068         Update to new resolver callback interface and to only deal with
5069         one IP and one name per DNS reply.
5070
5071         * ircd/parse.c: Remove /DNS command, since new resolver does not
5072         track those statistics.
5073
5074 2004-07-20  Michael Poole <mdpoole@troilus.org>
5075
5076         * doc/readme.features: Change references to O:, Y:, etc lines into
5077         references to the appropriate block types.
5078
5079 2004-07-01  Michael Poole <mdpoole@troilus.org>
5080
5081         * include/fileio.h: Elaborate on "works for any file descriptor."
5082
5083         * include/iauth.h: Remove unused file.
5084
5085 2004-07-01  Michael Poole <mdpoole@troilus.org>
5086
5087         * include/map.h, ircd/map.c: Remove unused code.
5088
5089         * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
5090         map.h and a call to map_update().
5091
5092         * ircd/Makefile.in: Remove map.c and regenerate dependencies.
5093
5094         * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
5095         for the new config parser.
5096
5097         * ircd/match.c: Remove pointless pointer dereference (Reed points
5098         out that this generates a warning with old gcc).
5099
5100         * ircd/s_user.c: Display connection class in CONNEXIT connection
5101         notice as a string rather than an integer.
5102
5103         * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
5104         lines (falsely) identifying ringlog as related to IRC; the files
5105         are general purpose.
5106
5107         * configure.in, include/ircd_snprintf.h: Add checks for
5108         va_copy()-like alternatives and use them if va_copy() is missing.
5109
5110         * configure, config.h.in: Regenerate.
5111
5112 2004-02-01  beware <steendijk@xs4all.nl>
5113
5114         * ircd/channel.c: Check bans that look like IP bans against user's
5115         hostname just in case they have a host like 1234.domain.tld.
5116
5117 2003-12-18  Timothy Grant Vogelsang <net@astrolink.org>
5118
5119         * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
5120
5121 2004-04-02  Gavin Grieve <hektik@dimebox.net>
5122
5123         * ircd/ircd_parser.y: Fix rehash warnings for servername and
5124         numeric so they only warn if changed in the config file.
5125
5126 2004-06-30  Michael Poole <mdpoole@troilus.org>
5127
5128         * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
5129         files.
5130
5131         * doc/example.conf: Illustrate IAUTH configuration.
5132
5133         * include/client.h: Add fields to record IAUTH status.
5134
5135         * ircd/Makefile.in: Add ircd_auth.c to Makefile.
5136
5137         * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
5138
5139         * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
5140         so that an obsolete connection can be abandoned.
5141
5142         * ircd/s_misc.c: Report client exits via IAUTH.
5143
5144         * ircd/s_user.c: If IAUTH is active and a connecting user has not
5145         been checked against it, interrogate the IAUTH server.
5146
5147 2004-06-25  Michael Poole <mdpoole@troilus.org>
5148
5149         * configure.in: Check for crypt.h as well.
5150
5151         * configure: Regenerate.
5152
5153         * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
5154         affect the first includes of system headers.  Include crypt.h if
5155         it is available.
5156
5157         * ircd/umkpasswd.c: Quash a gcc warning.
5158         
5159 2004-06-23  Michael Poole <mdpoole@troilus.org>
5160
5161         * doc/Authors: Add contributors to ircu2.10.11 and myself.
5162
5163         * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
5164
5165         * configure.in: Add missing check for inttypes.h; remove obsolete
5166         display of Head-in-sand, add display of epoll() engine.
5167
5168         * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
5169         to use SourceForge's CVS server, from the u2.10.11 branch.
5170
5171 2003-11-09 beware <steendijk@xs4all.nl>
5172
5173         * ircd/s_user.c: move assigning a numeric to a local client from
5174         when nick is set, to when connection becomes client, to not waste
5175         numerics.
5176
5177 2004-06-08  Kevin L Mitchell  <klmitch@mit.edu>
5178
5179         * ircd/parse.c: don't let rank-and-file users escape HIS
5180         limitations with /jupe...
5181
5182 2004-06-18  Alex Badea  <decampos@users.sourceforge.net>
5183
5184         * ircd/gline.c (gline_lookup): only return a gline if it's
5185         active
5186
5187         * ircd/s_conf.c (find_kill): don't check for active gline,
5188         since gline_lookup does now
5189
5190 2002-11-11  hikari <shadow@undernet.org>
5191         * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and 
5192         modularise :P
5193
5194         * ircd/ircd_xopen.c: removed, superseded by new crypto system.
5195
5196         * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
5197         wrote ircd_crypt_mech_register() function, various other bits 
5198         designed to create a near-pluggable crypto system for ircu.  currently
5199         this code also loads the various mechanisms i've written code for.
5200
5201         * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from 
5202         elsewhere, manipulated to suit ircu, returns a salted MD5 password.
5203
5204         * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
5205         generate a crypted password using the systems native crypt() function.
5206
5207         * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
5208         only be used for testing purposes.
5209
5210         * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
5211         elsewhere, ircuified.
5212
5213         * ircd/umkpasswd.c: mkpasswd program for ircu.
5214
5215         * include/ircd_xopen.h: removed, superseded by new crypto system.
5216
5217         * include/ircd_crypt.h: external definitions for the new ircd_crypt()
5218         function and definition of the ircd_crypt_mech structure for containing
5219         crypto mechanism data.
5220
5221         * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
5222         mechanism.
5223
5224         * include/ircd_crypt_native.h: sundary definitions for the native 
5225         crypt() mechanism.
5226
5227         * include/ircd_crypt_plain.h: sundary definitions for the plain text
5228         mechanism.
5229
5230         * include/umkpasswd.h: fluff for umkpasswd.
5231
5232 2003-03-11  Landon Fuller (landonf) <landonf@sf.net>
5233
5234         * configure.in: allow ircu to build on OS X.
5235
5236 2004-05-24  Michael Poole <mdpoole@troilus.org>
5237
5238         * ircd/m_invite.c (m_invite): Include channel name in invitation
5239         announcements.
5240         (ms_invite): Likewise, and also fix a use-before-assignment bug in
5241         them.
5242
5243 2004-05-18  Michael Poole <mdpoole@troilus.org>
5244
5245         Announce invitations to other channel operators.
5246
5247         * include/ircd_features.h, ircd/ircd_features.c
5248         (ANNOUNCE_INVITES): Add new boolean feature, default off.
5249
5250         * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
5251         reply.
5252
5253         * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
5254         Add 'skip' parameter that is needed elsewhere.
5255         (sendcmdto_channel_servers_butone): New function.
5256
5257         * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
5258         ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
5259
5260         * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
5261         the INVITE message to all interested servers, and send a numeric
5262         to all local chanops.
5263
5264 2004-05-18  Michael Poole <mdpoole@troilus.org>
5265
5266         * ircd/res_adns.c (res_ourserver): Remove unused function.
5267         (validate_name): Likewise.
5268
5269 2004-05-17  Michael Poole <mdpoole@troilus.org>
5270
5271         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
5272         Rip out feature settings related to oper privileges.
5273
5274         * include/client.h: Comment a few unexplained privileges.
5275
5276         * ircd/ircd_lexer.l: Rename privilege keywords to match their
5277         names in code and /PRIVS output.  Add support for two "new"
5278         privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
5279
5280         * include/class.h, ircd/client.c, ircd/ircd_parser.y,
5281         ircd/m_oper.c: Replace the removed feature settings with
5282         per-connection class operator privileges.
5283
5284         * doc/example.conf: Document the change.
5285
5286         * ircd/ircd_parser.y (portblock): Fix slight memory leak.
5287
5288 2004-05-16  Michael Poole <mdpoole@troilus.org>
5289
5290         * doc/example.conf: Make this show the new NICKLEN default.
5291
5292 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5293
5294         * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
5295         to 12
5296
5297 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5298
5299         * ircd/s_user.c: process account creation timestamp if present in
5300         user mode portion of a N protocol message; add account creation
5301         timestamp to outgoing N protocol messages if that timestamp is
5302         non-zero
5303
5304         * ircd/m_account.c: process account creation timestamp if present
5305         in AC protocol message
5306
5307         * include/struct.h: add account creation timestamp
5308
5309 2004-05-16  Michael Poole <mdpoole@troilus.org>
5310
5311         * doc/example.conf: Document operator privilege settings.
5312
5313 2004-05-16  Michael Poole <mdpoole@troilus.org>
5314
5315         Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
5316
5317         * ircd/ircd_parser.y (invert): New variable.
5318         (operlocal): Remove production.
5319         (operpriv): Use "invert" variable.
5320         (privtype): Add LOCAL alternative production.
5321
5322         * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
5323         with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
5324
5325         * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
5326         Likewise.
5327
5328         * ircd/s_stats.c (report_array, statsinfo): Likewise.
5329
5330         * ircd/s_user.c (set_user_mode): Likewise.
5331
5332 2004-05-15  Michael Poole <mdpoole@troilus.org>
5333
5334         * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
5335         patches obsoleted by F: lines.
5336
5337         * patches/diffs/topicburst.diff: Remove patch that was integrated
5338         into the main code.
5339
5340 2004-05-15  Isomer <isomer@undernet.org>
5341
5342         [Original ChangeLog date: 2003-11-05 -MDP]
5343
5344         * ircd/m_whois.c: On remote whois, show +s local channels with a *
5345         prefix to opers.
5346
5347 2004-05-15  Michael Poole <mdpoole@troilus.org>
5348
5349         * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
5350         of gline-related fixes from 2.10.11.  Things that work are due to
5351         Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
5352         to figure out who did what.  Any mistakes are mine.
5353
5354 2004-05-15  Isomer <isomer@undernet.org>
5355
5356         [Original ChangeLog date: 2003-11-05 -MDP]
5357
5358         * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
5359         messages (so you can match EXIT's to CONN's)
5360
5361 2004-05-15  Reed Loden <reed@reedloden.com>
5362
5363         [Original ChangeLog date: 2003-05-01 -MDP]
5364
5365         * ircd/s_err.c: Added network to text and edited 001 a bit.
5366
5367         * ircd/s_user.c: Send network with 001.
5368
5369 2004-05-15  Michael Poole <mdpoole@troilus.org>
5370
5371         * ircd/s_user.c (add_target): Move free target invite check...
5372
5373         * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
5374         behavior.
5375
5376 2004-05-15  Isomer <isomer@undernet.org>
5377
5378         [Original ChangeLog date: 2003-11-23 -MDP]
5379
5380         * ircd/s_user.c: Don't credit users with an extra attempt if they
5381         are klined/glined, throttle them!
5382
5383 2004-05-15  Jeekay <jeekay@netgamers.org>
5384
5385         [Original ChangeLog date: 2003-04-24 -MDP]
5386
5387         * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
5388
5389 2004-05-15  splidge <splidge@quakenet.org>
5390
5391         [Original ChangeLog date: 2003-09-03 -MDP]
5392
5393         * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
5394         channels where the user is a zombie.
5395
5396 2004-05-15  beware <steendijk@xs4all.nl>
5397
5398         [Original ChangeLog date: 2003-10-25 -MDP]
5399         
5400         * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
5401         cpu hog bug
5402
5403 2004-05-15  Michael Poole <mdpoole@troilus.org>
5404
5405         * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
5406         2.10.11 does.  Show ident and IP for clients being killed by new
5407         G-lines and K-lines.
5408
5409 2004-05-15  hikari <shadow@undernet.org>
5410
5411         [Original ChangeLog date: 2003-06-27 -MDP]
5412         
5413         * ircd/ircd.c: After thought, update the next check time based on
5414         when an unregistered client should expire.
5415
5416 2004-05-15   hikari <shadow@undernet.org>
5417
5418         [Original ChangeLog date: 2003-06-22 -MDP]
5419
5420         * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
5421         clients not being able to connect anymore.
5422
5423 2004-05-15  Michael Poole <mdpoole@troilus.org>
5424
5425         * ircd/channel.c (can_join): Revert to using IsInvited() rather
5426         than walking the list directly.
5427         (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
5428         use feature_bool(FEAT_HIS_SNOTICES) instead.
5429
5430 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5431
5432         [Original ChangeLog date: 2004-01-31 -MDP]
5433
5434         * ircd/channel.c (mode_parse_key): don't allow , in keys!
5435
5436 2003-04-12  David Mansell (splidge) <splidge@sf.net>
5437
5438         [Original ChangeLog date: 2003-04-14 -MDP]
5439
5440         * ircd/channel.c: When keys and limits conflict on burst, the key
5441         which is first alphabetically or the limit which is lower will be 
5442         used by both servers. This matches pre-2.10.11 behaviour.  
5443         Closes: (#713930)
5444
5445 2004-05-15  David Mansell <splidge@quakenet.org>
5446
5447         [Original ChangeLog date: 2002-12-28 -MDP]
5448
5449         * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
5450         set, don't allow -l with negative parameter (or unsigned >2^31).
5451  
5452 2004-05-15  David Mansell <splidge@quakenet.org>
5453
5454         [Original ChangeLog date: 2002-12-31 -MDP]
5455
5456         * ircd/m_burst.c (ms_burst): when kicking net riders, clear
5457         invites too.
5458
5459 2004-05-15  Isomer <isomer@undernet.org>
5460
5461         [Original ChangeLog date: 2003-11-04 -MDP]
5462
5463         * ircd/s_serv.c: Burst glines/jupes early
5464
5465 2004-05-15  volta <volta2@gmx.de>
5466
5467         [Original ChangeLog date: 2003-04-26 -MDP]
5468
5469          * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
5470          allows users to see their own ip & hostname. (Should solve
5471          all problems with dcc)
5472
5473 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5474
5475         [Original ChangeLog date: 2003-06-13 -MDP]
5476
5477         * ircd/m_settime.c: it's supposed to be %ld, not %l
5478
5479 2004-05-15  Isomer <isomer@undernet.org>
5480
5481         [Original ChangeLog date: 2004-03-20 -MDP]
5482
5483         * ircd/m_invite.c: Disallow invites to non existant channels
5484
5485 2004-05-15  David Mansell <splidge@quakenet.org>
5486
5487         [Original ChangeLog date: 2003-04-26 -MDP]
5488
5489         * ircd/m_invite.c: let +k users invite into channels they aren't on.
5490
5491 2004-05-15  hikari <shadow@undernet.org>
5492
5493         [Original ChangeLog date: 2003-07-13 -MDP]
5494         
5495         * ircd/IPcheck.c: Fixed (another) overflow problem in
5496         ip_registry_check_local()
5497
5498         [Original ChangeLog date: 2003-06-29 -MDP]
5499
5500         * ircd/IPcheck.c: Fixed overflow problem in
5501         ip_registry_connect_fail()
5502
5503 2004-05-15 Isomer <isomer@undernet.org>
5504
5505         [Original ChangeLog date: 2003-05-02 -MDP]
5506         
5507         * ircd/IPcheck.c: Added assert()'s to check for underflow
5508
5509 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5510
5511         [Original ChangeLog date: 2003-11-22 -MDP]
5512
5513         * tools/wrapper.c: commit uid on chroot fix from ubra
5514
5515         * ircd/version.c.SH: fix generation generation
5516
5517 2004-05-15  Isomer <isomer@undernet.org>
5518
5519         [Original ChangeLog date: 2003-11-23 -MDP]
5520         
5521         * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
5522         to off.  if an admin is smart enough to understand these features
5523         they can enable them manually.
5524
5525 2004-05-15  splidge  <splidge@quakenet.org>
5526
5527         [Original ChangeLog date: 2003-03-26 -MDP]
5528
5529         * ircd/include/ircd_features.h, include/ircd_osdep.h,
5530           ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, 
5531           ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
5532           ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be 
5533           altered via F: lines
5534
5535 2004-05-15  Isomer <isomer@undernet.org>
5536
5537         [Original ChangeLog date: 2003-11-18 -MDP]
5538
5539         * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
5540         the preregistration subsystem allowing customisation of timers,
5541         make the dns resolver stats oper only, and make it much more clear
5542         what all the numbers are.
5543
5544 2004-05-15  Spike <spike@undernet.org>
5545
5546         [Original ChangeLog date: 2003-11-23 -MDP]
5547
5548         * ircd/IPcheck.c: Make IPcheck constants configurable
5549
5550 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5551
5552         [Original ChangeLog date: 2003-11-22 -MDP]
5553
5554         * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
5555         the maximum allowed length (NICKLEN) or the allowed nickname
5556         length specified as the NICKLEN feature
5557
5558         * ircd/ircd_features.c: declare NICKLEN and set its default value
5559         to 9
5560
5561         * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
5562         rearranging...
5563
5564         * include/ircd_features.h: add NICKLEN feature
5565
5566         * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
5567
5568         * doc/readme.features: document new NICKLEN feature
5569
5570         * doc/example.conf: list new NICKLEN F-line
5571
5572 2004-05-14  Matthias Crauwels <ultimate_@wol.be>
5573
5574         [Original ChangeLog date: 2003-06-08 -MDP]
5575         
5576         * ircd/gline.c: fixed the counting bug in gline_memory_count
5577  
5578         * ircd/jupe.c: fixed the counting bug in jupe_memory_count
5579
5580 2004-05-14  Michael Poole <mdpoole@troilus.org>
5581
5582         * ircd/m_mode.c (ms_mode): Do not always try to call
5583         set_user_mode() when parv[1] is a channel name.
5584
5585 2004-05-10  Michael Poole <mdpoole@troilus.org>
5586
5587         Implement a per-connection-class default usermode option.
5588
5589         * doc/example.conf: Illustrate how to use the option.
5590
5591         * include/class.h (struct ConnectionClass): New "default_umode"
5592         field.
5593         (ConfUmode): New macro.
5594
5595         * include/client.h (client_get_default_umode): New function.
5596
5597         * ircd/client.c (client_get_default_umode): Implement it.
5598
5599         * ircd/ircd_lexer.l (usermode): New token.
5600
5601         * ircd/ircd_parser.y (classblock, etc): New syntax.
5602
5603         * ircd/s_user.c (register_user): Set default user modes for user.
5604         This sends the new mode to the user, so the explicit send later
5605         is no longer necessary.
5606
5607 2004-05-10  Michael Poole <mdpoole@troilus.org>
5608
5609         Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
5610         patch set.
5611
5612         * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
5613
5614         * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
5615         also send a TOPIC to the peer.
5616
5617         * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
5618         feature, defaulting to FALSE.
5619
5620         * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
5621         and allow F:HIS_BANWHO to hide the originator of the topic.
5622         (ms_topic): Parse optional timestamp arguments to TOPIC, and use
5623         them to decide whether to ignore the topic.
5624
5625 2004-05-10  Michael Poole <mdpoole@troilus.org>
5626
5627         Forward port of delayed-join.patch from Quakenet's "Asuka" patch
5628         set (which was a port of code I wrote for the other ircu).
5629
5630         * include/channel.h (CHFL_DELAYED): New membership flag.
5631         (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
5632         (infochanmodes): Add +D to list of supported channel modes.
5633         (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
5634         (member_can_send_to_channel, client_can_send_to_channel): Add
5635         "reveal" parameter to indicate whether a request should cause
5636         a join-delayed user to become visible.
5637         (RevealDelayedJoin, CheckDelayedJoins): New functions.
5638
5639         * include/numeric.h (RPL_DELNAMREPLY): New numeric.
5640         
5641         * include/s_user.h (NAMES_DEL): New flag for do_names().
5642
5643         * include/supported.h (FEATURESVALUES2): Add +D to list of
5644         supported channel modes.
5645
5646         * ircd/channel.c (remove_member_from_channel,
5647         member_can_send_to_channel, client_can_send_to_channel,
5648         joinbuf_join): Handle join-delayed users.
5649         (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
5650         modebuf_extract, mode_process_clients, mode_parse_mode,
5651         mode_parse): Handle delayed-join channels.
5652         (RevealDelayedJoin, CheckDelayedJoins): New functions.
5653
5654         * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
5655         server_relay_channel_message, server_relay_channel_notice): Add
5656         argument for "reveal" parameter to client_can_send_to_channel().
5657
5658         * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
5659
5660         * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
5661
5662         * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
5663         channel with JOIN 0.
5664
5665         * ircd/m_kick.c (m_kick): For join-delayed members, only send the
5666         KICK to the kicker and kickee.  Then check whether +d can be
5667         removed.
5668
5669         * ircd/m_names.c (do_names): Show join-delayed users if and only
5670         if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
5671         RPL_DELNAMREPLY instead of RPL_NAMREPLY.
5672         (m_names): If NAMES -D, pass NAMES_DEL to do_names().
5673
5674         * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
5675         member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
5676         the user is join-delayed.
5677
5678         * ircd/m_quit.c (m_quit): Handle join-delayed users and new
5679         argument for member_can_send_to_channel().
5680
5681         * ircd/m_topic.c (do_settopic): If a join-delayed channel member
5682         changes the topic, reveal the member.
5683
5684         * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
5685         "reveal" parameter to client_can_send_to_channel().
5686
5687         * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
5688
5689         * ircd/m_who.c (m_who): Skip join-delayed members where we skip
5690         zombies.
5691
5692         * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
5693         users.  Use slightly more efficient macros rather than function
5694         calls to test for ops and voice.
5695
5696         * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
5697
5698         * ircd/s_user.c (hide_hostmask): For users with no modes in a
5699         join-delayed channel, do not send JOIN to other members after the
5700         QUIT :Registered.
5701
5702         * ircd/send.c (sendcmdto_common_channels_butone): Skip
5703         join-delayed users where we skip zombies.
5704         
5705 2004-05-10  Michael Poole <mdpoole@troilus.org>
5706
5707         * ircd/ircd_events.c: Actually reference and try to use the epoll
5708         event engine.  Omitted from yesterday's commit.
5709
5710 2004-05-09  Michael Poole <mdpoole@troilus.org>
5711
5712         Forward port of Paul "Zoot" Chang's pseudo-command.patch and
5713         pseudo-support.patch.
5714
5715         * doc/example.conf: Illustrate how to use the feature.
5716
5717         * include/handlers.h (m_pseudo): Declare new handler function.
5718
5719         * include/ircd_features.h (HIS_STATS_R): Add a feature to control
5720         user visibility of the pseudo-commands.
5721
5722         * include/msg.h: Add flag and field for the extra information used
5723         to select a pseudo-command's target.
5724
5725         * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
5726         definitions.
5727
5728         * include/parse.h (register_mapping, unregister_mapping): Declare.
5729
5730         * include/s_conf.h (struct nick_host, struct s_map,
5731         GlobalServiceMapList): Define.
5732
5733         * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
5734         files to "make depend" dependency list.  Update dependencies.
5735
5736         * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
5737         default value.
5738
5739         * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
5740
5741         * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
5742
5743         * ircd/parse.c (msgtab): Add initializer for field "extra" to all
5744         commands.
5745         (msg_tree_insert, msg_tree_remove, register_mapping,
5746         unregister_mapping): New functions.
5747         (parse_client): Implement MFLG_EXTRA extra argument passing.
5748
5749         * ircd/s_conf.c (GlobalServiceMapList): New variable.
5750
5751         * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
5752         strings for new numeric responses.
5753
5754         * ircd/s_stats.c (stats_mapping): New function.
5755         (statsinfo): Add entry for /stats R and make old /stats r entry
5756         case-sensitive.
5757         
5758 2004-05-09  Michael Poole <mdpoole@troilus.org>
5759
5760         * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
5761         yyerror() so that configuration errors all go to the same place.
5762
5763         * ircd/s_conf.c: New variables conf_error and conf_already_read.
5764         conf_error is cleared by read_configuration_file() and set by
5765         yyerror(); conf_already_read is set by read_configuration_file()
5766         and never cleared.  Make yyerror() display error to stderr before
5767         conf_already_read is set.  Make configuration errors a fatal
5768         condition in init_conf().
5769
5770 2004-05-09  Michael Poole <mdpoole@troilus.org>
5771
5772         * ircd/Makefile.in: Pass the source directory as an argument to
5773         version.c.SH so it knows where to find the source files for an
5774         out-of-srcdir build.
5775
5776         * ircd/version.c.SH: Use that information.
5777
5778 2004-05-09  Michael Poole <mdpoole@troilus.org>
5779
5780         * Makefile.in: Ensure ${prefix}/include exists, since the adns
5781         install puts files in that directory.  (The adns Makefile does
5782         not use configure's ${includedir}.)
5783
5784 2004-05-09  Michael Poole <mdpoole@troilus.org>
5785
5786         * doc/readme.features: The logic for F:AUTOHIDE was removed, but
5787         not its documentation.  Fix that omission.
5788
5789         * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
5790         definitions for FEATURE_AUTOHIDE.
5791
5792 2004-05-09  Michael Poole <mdpoole@troilus.org>
5793
5794         * doc/readme.who: Document the support for account matching and
5795         display in the WHO command.
5796
5797 2004-05-09  Michael Poole <mdpoole@troilus.org>
5798
5799         * ircd/ircd.c (main): Move check_pid() call until after we read
5800         the configuration file so that F:PPATH works correctly.
5801
5802 2004-05-09  Michael Poole <mdpoole@troilus.org>
5803
5804         * ircd/match.c (match): Use ToLower() instead of tolower() for
5805         character comparisons.
5806
5807 2004-05-09  Michael Poole <mdpoole@troilus.org>
5808
5809         * ircd/s_user.c (register_user): Initialize "flag" (user's old
5810         modes) passed to send_umode() so that the real set of modes are
5811         sent to the user.
5812         
5813 2004-05-09  Michael Poole <mdpoole@troilus.org>
5814
5815         * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
5816         server, not to a hub between us and the new server.
5817
5818         * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
5819         on target server rather than FLAG_CHSERV (so that directed
5820         messages work at all).
5821
5822 2004-05-09  Michael Poole <mdpoole@troilus.org>
5823
5824         * configure.in: Add checks for epoll_* system call family.
5825
5826         * configure: Regenerate.
5827
5828         * ircd/engine_epoll.c: New file; forward ported from 2.10.11
5829         branch.
5830
5831 2004-05-09  Michael Poole <mdpoole@troilus.org>
5832
5833         * include/ircd_alloc.h: Add definitions for MyRealloc, since they
5834         are needed by kqueue and epoll event engines; kill #if 0'd block.
5835
5836         * include/memdebug.h: Declare dbg_realloc() helper function.
5837
5838         * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
5839
5840         * ircd/memdebug.c: Implement dbg_realloc() helper function.
5841
5842 2004-05-09  Michael Poole <mdpoole@troilus.org>
5843
5844         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
5845         changes on a moderated channel with neither ops nor voice.
5846
5847         * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
5848
5849 2004-01-20  Perry Lorier <isomer@undernet.org>
5850
5851         * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
5852
5853 2004-01-21 Gavin Grieve <hektik@dimebox.net>
5854
5855         * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
5856           code to resolve the multiple part messages bug written by Entrope.
5857
5858 2003-08-12 Timothy Vogelsang <net@astrolink.org>
5859
5860         * ircd/match.c: (match) rewrote function based on existing
5861           code from the hybrid ircd -- death to goto
5862
5863 2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
5864
5865         * ircd/s_user.c: invalidate ban cache for user on host hiding/account
5866
5867 2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
5868
5869         * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
5870         ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
5871         B is an oper", appeared in a lot of places. made it a define SeeOper.
5872
5873 2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
5874         * ircd/s_user.c: umode_str (user modes in N token) internal flags var
5875         was not initialized to the user's flags, returned a string with
5876         random modes set.
5877
5878 2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
5879
5880         * ircd/m_names.c: length counter being incremented one too many
5881         for each nick, resulting names reply messages are about 50 chars
5882         shorter than possible. fixed.
5883
5884 2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
5885
5886         * ircd/channel.c: don't ever send mode changes for local channels to
5887         servers.
5888
5889 2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
5890
5891         * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
5892         moved the supported channel/user mode strings of the 004 reply from
5893         s_err.c to the header files where the channels/user modes are
5894         defined, and show or hide +Au based on OPLEVELS setting.
5895
5896 2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
5897
5898         * ircd/m_burst.c: Clear topic set by netrider on burst.
5899
5900 2003-08-05 Diane Bruce  <db@db.net>
5901
5902         * ircd/parse.c: Fixed the typo the fix of the typo created
5903
5904 2003-08-01 Diane Bruce  <db@db.net>
5905
5906         * ircd/parse.c: Fixed typo
5907
5908 2003-06-22  Diane Bruce  <db@db.net>
5909
5910         * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
5911
5912 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
5913
5914         * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
5915         ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
5916         Make ability to create local channels a feature which can be disabled.
5917
5918 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
5919
5920         * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
5921         ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
5922         makes it possible to disable the +Au/oplevels functions.
5923
5924 2003-06-17  Alex Badea  <vampire@p16.pub.ro>
5925
5926         * ircd/res_adns.c: included sys/types.h, for non-Linux
5927         headers
5928
5929 2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
5930
5931         * libs/dbprim: database primitives library, including
5932         flexible linked lists, auto-resizing hash tables, and sparse
5933         matrices.  Has a test suite for everything but portions of
5934         the sparse matrix routines (I'm lazy; someone help me write
5935         them!).  Documentation generated by doxygen--feel free to
5936         critique, suggest phrasing improvements, etc.
5937
5938 2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
5939         * libs: put third-party libraries in this subdirectory.
5940         Started by copying adns into it--will fix the rest and remove
5941         the top-level copy later.
5942
5943 2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
5944         * ircd/m_settime.c: Fixed a minor format string issue.
5945         
5946 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
5947         * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
5948         ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
5949         bugs in transmit.c and m_opmode.c.
5950
5951 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
5952         * include/class.h, include/ircd_string.h, ircd/class.c,
5953         ircd/gline.c, ircd_string.c: Fix undefined order
5954         of evaluation bug in gline.c, add general purpose hasher for
5955         conf entries. 
5956
5957 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
5958         * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
5959         ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
5960         ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
5961         ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
5962         ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
5963         ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
5964         with g++ again, type safety, const correctness fixes,
5965         remove C++ keywords again :/
5966
5967 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
5968         * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
5969         table data was in a different order than the feature data
5970         structure, which resulted in a wild index being used in
5971         feature_bool. The feature_bool function didn't check it's
5972         index before indexing the features array resulting in
5973         a core dump on /oper.
5974
5975 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
5976         * include/client.h, include/res.h, include/s_bsd.h,
5977         ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
5978         ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
5979         Remove resolver cache wart, change hostent representation, cleanup
5980         resolver clients.
5981
5982 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
5983         * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
5984         HEAD_IN_SAND macros to get server to build, rebuild dependencies.
5985
5986 2003-01-08  Fredrik Soderblom <froo@quakenet.org>
5987         * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
5988         RPL_HOSTHIDDEN and the use of it.
5989
5990 2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
5991
5992         * BUGS: removed from distribution
5993
5994         * ChangeLog.07: moved into doc/history
5995
5996         * ChangeLog.10: moved into doc/history
5997
5998         * INSTALL: pulled up from u2.10.11.04
5999
6000         * README: pulled up from u2.10.11.04
6001
6002         * README.FreeBSD: pulled up from u2.10.11.04
6003
6004         * README.Solaris: pulled up from u2.10.11.04
6005
6006         * RELEASE.NOTES: add sysctl note from u2.10.11.04
6007
6008         * TODO: removed from distribution
6009
6010         * configure.in: add extra check for res_mkquery; remove
6011         --disable-headinsand since it no longer has any effect; pull up
6012         "Enable" vs. "Disable" changes from u2.10.11.04
6013
6014         * doc/readme.asll: pulled up from u2.10.11.04
6015
6016         * doc/readme.features: pull up missing documentation, including a
6017         couple of corrections
6018
6019         * doc/readme.log: correct text to read FACILITY instead of SYSLOG
6020         in the documentation for configuring syslog facility
6021
6022         * include/channel.h: declare IsInvited()
6023
6024         * include/handlers.h: do some minor reorderings
6025
6026         * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
6027         #define's
6028
6029         * include/ircd_policy.h: removed from the distribution
6030
6031         * include/jupe.h: declare jupe_memory_count()
6032
6033         * include/msgq.h: remove MsgCounts structure
6034
6035         * include/numeric.h: add a blank line after RPL_STATSQLINE; add
6036         RPL_HOSTHIDDEN
6037
6038         * include/s_stats.h: include ircd_features.h for definition of the
6039         enum; remove extraneous declarations
6040
6041         * ircd/Makefile.in: add LDFLAGS to table_gen
6042
6043         * ircd/engine_poll.c: remove commented-out assertion
6044
6045         * ircd/ircd.c: include s_stats.h and call stats_init()
6046
6047         * ircd/ircd_features.c: feature names have to be case-sensitive
6048         because of some of the HIS features
6049
6050         * ircd/ircd_relay.c: reorder includes
6051
6052         * ircd/m_account.c: include string.h for strlen()
6053
6054         * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
6055         sure to refer to chname, not parv[1]
6056
6057         * ircd/m_create.c: remove the broken code that squits servers that
6058         are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
6059         desyncs
6060
6061         * ircd/m_gline.c: if it's a server, force the gline; don't
6062         gline_find() before determining if the oper had the privilege
6063
6064         * ircd/m_kick.c: kicks by servers should appear to be from the
6065         local server thanks to HIS
6066
6067         * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
6068
6069         * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
6070
6071         * ircd/m_nick.c: added an assertion and some explanatory comments
6072         pulled up from u2.10.11.04
6073
6074         * ircd/m_opmode.c: no longer requiring oper to be on the channel;
6075         search for quarantines before allowing ops
6076
6077         * ircd/m_privmsg.c: one character typo that probably means nothing
6078
6079         * ircd/m_settime.c: add back comments I left in the code
6080
6081         * ircd/m_squit.c: remove protocol_violation() notices
6082
6083         * ircd/m_userhost.c: return realhost if user is an oper
6084
6085         * ircd/m_wallvoices.c: only m_wallvoices() should add a +
6086
6087         * ircd/m_who.c: add handling for the 'a' field
6088
6089         * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
6090         FEAT_HIS_SERVERINFO
6091
6092         * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
6093         ancient bug fixes from the u2.10.11 branch
6094
6095         * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
6096         call motd_memory_count(), gline_memory_count(), and
6097         jupe_memory_count() when reporting memory usage; add back a
6098         comment regarding "DBuf caveats"
6099
6100         * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
6101         change to ERR_NOPRIVILEGES wording
6102
6103         * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
6104
6105         * ircd/s_stats.c: count from 0 and not 1 when initializing the
6106         stats
6107
6108         * ircd/s_user.c: comment out assertion; remove extraneous
6109         definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
6110         hidden" reply; don't detach oper confs unless sptr is not an oper
6111
6112         * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
6113         change channel name character range to be from '\041' (!) to
6114         UCHAR_MAX
6115
6116         * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
6117
6118         * tools/linesync/linesync.conf: pull up from u2.10.11.04
6119
6120         * tools/linesync/linesync.sh: pull up from u2.10.11.04
6121
6122 2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
6123         * almost everything: Forward ported numerous changes from .11 to .12
6124         
6125 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
6126         * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
6127         when they become a server.
6128         * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
6129         packet is sent.
6130         * ircd/class.c(make_class): Fixed an assert to be more useful.
6131         
6132 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
6133         * ircd/packet.c
6134         * ircd/packet.h: (connect_dopacket): Made a dopacket function for
6135         connecting links which sends the messages through the correct message
6136         handler.
6137         * ircd/s_bsd.c(read_packet): Put packets through the correct handler
6138         for connecting links. Properly handle unknown links becoming
6139         connecting or servers.
6140
6141 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6142         * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
6143         with, this is used quite a lot.
6144         * ircd/class.c (make_class): Initialise the ref_count to 1 so that
6145         we don't leak.
6146         * ircd/class.c (add_class): When updating a class, free the old name
6147         first to prevent leakage.
6148         * ircd/class.c (class_delete_marked): Decrement the ref_count for the
6149         class after it is removed from the linked list.
6150         * ircd/ircd_parser.y: Changed a free to MyFree().
6151         * ircd/ircd_parser.y: Removed a few debugging messages.
6152
6153 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6154         * s_bsd.c (read_packet): Our daily addition to the list of entities to
6155         treat as servers - Connecting servers.
6156         
6157 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6158         * doc/debug_memleak_gc.patch,
6159         * include/ircd_ircd_alloc.h,
6160         * include/memdebug.h,
6161         * configure.in,
6162         * ircd/Makefile.in,
6163         * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
6164         and notify the operators.
6165         
6166 2002-06-29  Andrew Miller <a1kmm@mware.virtualave.net>
6167
6168         * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
6169         the dbufs.
6170         
6171 2002-06-18  Andrew Miller <a1kmm@mware.virtualave.net>
6172
6173         * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
6174         the server.
6175         
6176 2002-06-18  Alex Badea  <vampire@p16.pub.ro>
6177
6178         * ircd/m_burst.c (ms_burst): kick local members if the channel
6179         has a larger local TS and it's +i or +k remotely (anti net.ride)
6180
6181         * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
6182
6183         * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
6184
6185         * include/s_conf.h: externalized lookup_confhost
6186
6187         * adns/Makefile.in: compilation-outside-source-tree fix
6188
6189 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
6190
6191         * adns/*: added a slightly hacked copy of adns
6192
6193         * configure.in: added a --disable-adns switch if you want
6194         to use the old libresolv res.c
6195
6196         * configure: ran autoconf
6197
6198         * ircd/res_libresolv.c: renamed from res.c
6199
6200         * ircd/res_adns.c: added adns resolver
6201
6202 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
6203
6204         * ircd/ircd_parser.y: fixed 'Connect' block processing so now
6205         you can actually connect to other servers
6206
6207 2002-06-04  Alex Badea  <vampire@p16.pub.ro>
6208
6209         * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
6210         it displays all servers, not just local connects
6211
6212 2002-05-30  Jean-Edouard Babin  <Jeb@jeb.com.fr>
6213
6214         * ircd/m_server.c (mr_server): fixed core bug on insufficient
6215         arguments
6216
6217 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
6218         
6219         * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
6220
6221 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
6222  
6223         * ircd/m_join.c (m_join,HasControlChars): check if a channel
6224         name has any control chars (<=32) in it before allowing a
6225         local user to join.
6226  
6227 2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
6228         * ircd/ircd_relay.c: stop an information leak about the
6229         the network topography from relayed messages.
6230
6231 2002-04-19  Alex Badea  <vampire@p16.pub.ro>
6232
6233         * ircd/m_who.c (m_who): disallow non-opers to /who server.name
6234
6235 2002-04-18  Alex Badea  <vampire@p16.pub.ro>
6236
6237         * ircd/s_err.c (RPL_STATSILINE): connection classes are now
6238         strings
6239
6240 2002-04-17  beware <steendijk@tomaatnet.nl>
6241
6242         * m_whois.c (m_whois): disallow remote queries for non-existent
6243         local users when originated by a non-oper
6244
6245 2002-04-16  Alex Badea  <vampire@p16.pub.ro>
6246
6247         * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
6248         reply if the servername contains a '*' and it doesn't exist
6249
6250         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6251
6252 2002-04-16  beware <steendijk@tomaatnet.nl>
6253
6254         * ircd/m_whois.c: the previous patch broke whois, fixed it
6255         another way
6256
6257         * ircd/m_admin.c: cleaned up m_admin too while we're here,
6258         hunt_server_cmd can do all the work for us
6259
6260 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
6261
6262         * ircd/m_stats.c: added verbose server reporting (/stats v
6263         or /stats V for machine-readable format) (bugzilla bug 52)
6264
6265         * include/numeric.h: added RPL_STATSVERBOSE 236
6266
6267         * ircd/s_err.c: added RPL_STATSVERBOSE
6268
6269         * ircd/s_stats.c: added help for stats 'v'
6270
6271 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
6272
6273         * ircd/class.c (get_client_class): fixed typo which caused
6274         /trace (and perhaps motd) to core
6275
6276 2002-04-15  beware <steendijk@tomaatnet.nl>
6277
6278         * ircd/m_whois.c: Fixed /whois servermask nomatch bug
6279         where normal users could use the function to discover servers,
6280         also the NOSUCHSERVER check code was missing.
6281
6282 2002-04-14  Alex Badea  <vampire@p16.pub.ro>
6283
6284         * ircd/ircd_parser.y: fixed cli_info(&me) not being set
6285         from 'description' conf
6286
6287 2002-04-13  Stephane Thiell <mbuna@undernet.org>
6288
6289         * ircd/m_whois.c: removed FindUser() in ms_whois to fix
6290         remote whois relaying.
6291
6292         * ircd/class.c: removed unused (and duplicated) code
6293         get_client_ping().
6294         
6295         * include/class.h: removed unused function prototype.
6296         
6297         * config.guess: upgraded with latest
6298         
6299         * config.sub: upgraded with latest
6300
6301 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
6302
6303         * ircd-patch: report which files failed the dry run (so the
6304         user may force the patch if the rejects are in less-than-vital
6305         files, such as ChangeLog or documentation)
6306
6307 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
6308
6309         * ircd/m_invite.c: don't propagate invites for local channels
6310
6311         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6312
6313 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
6314
6315         * ircd/ircd.c: The last fix broke autoconnects completely.
6316         Fixed it another way.
6317         
6318 2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
6319
6320         * ircd/ircd.c (try_connections): To avoid problems with infinite event
6321         loops, don't try connecting to servers whose connect frequency is 0.
6322         
6323 2002-04-10  Alex Badea  <vampire@p16.pub.ro>
6324
6325         * ircd/ircd_parser.y: fixed a "features" block parse bug
6326
6327         * tools/convert-conf.py: added a configuration file converter
6328         from 2.10.11 to 2.10.12 format
6329
6330         * ircd-patch: added GPL information to top of file
6331
6332 2002-04-09  Alex Badea  <vampire@p16.pub.ro>
6333
6334         * configure.in: added a human-readable report of configured
6335         options at the end of the configure process
6336
6337         * configure: regenerated with autoconf
6338
6339 2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
6340
6341         * include/supported.h: change CHARSET to CASEMAPPING after
6342         discussions as to what would be the preferred name.
6343
6344 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
6345         * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
6346         specification.
6347         * Fix a minor parser bug that meant rehash didn't always
6348         work correctly.
6349
6350 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
6351
6352         * include/channel.h: fix compiler warnings (paratheses around &&)
6353
6354         * ircd/channel.c (modebuf_extract): fix compiler warnings
6355         (uninitialized variables)
6356
6357         * ircd/Makefile.in: make ircd properly compile outside the
6358         source tree
6359
6360 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
6361
6362         * include/s_user.h: added a sptr parameter to InfoFormatter
6363         function type
6364
6365         * ircd/m_who.c: don't match IPs for clients which have a hidden host,
6366         except when the inquiring user is an oper
6367
6368         * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
6369         target has a hidden host, but show real IP to opers
6370
6371         * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
6372         fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
6373         show real IP to opers
6374
6375         * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
6376
6377         * ircd/s_user.c (send_user_info): pass sptr to the formatting function
6378
6379         * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
6380         fake IP to show for clients with a hidden host)
6381
6382         * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
6383
6384         * doc/example.conf: default value for FEAT_HIDDEN_IP
6385
6386         * doc/readme.features: documented FEAT_HIDDEN_IP
6387
6388 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
6389         * doc/example.conf: Cleaned up some comments that ended up in
6390           strange places due to problems in the merge process.
6391         * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
6392           probably dates back to Jarkko code.
6393
6394 2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
6395
6396         * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
6397         from the path before calling do_kill(); add a msg argument to
6398         do_kill() and use it in preference to comment; remove all that old
6399         code that fiddled with the buf and the comment
6400
6401         * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
6402
6403         * include/ircd_log.h: add a seperate msg argument to
6404         log_write_kill()
6405
6406         * ircd/ircd.c: display event engine and MAXCONNECTIONS information
6407  
6408 2002-04-02  Alex Badea <vampire@p16.pub.ro>
6409
6410         * ircd-patch: Automatically generate a version string from patches
6411
6412 2002-04-02  Alex Badea <vampire@p16.pub.ro>
6413         
6414         * ircd-patch: Test before doing anything dangerous, provide -f to
6415                 to it anyway.  exit levels for easy scripting.
6416
6417 2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
6418
6419         * ircd/channel.c (joinbuf_join): don't add a channel to the list
6420         in the joinbuf unless when we flush it, we empty the list
6421
6422 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
6423         * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
6424           old configuration file format.
6425         * ircd/ircd_lexer.l
6426         * ircd/s_conf.c
6427         * doc/example.conf
6428
6429 2002-03-23 Bert Faes <bert.faes@pandora.be>
6430
6431         * s_misc.c made /trace reply always show the username
6432         
6433 2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
6434
6435         * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
6436         for setrlimit, getrusage, and times
6437
6438         * configure: rerun auto-conf
6439
6440         * config.h.in: rerun autoheader
6441
6442 2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
6443
6444         * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
6445         sending of the key to the channel
6446
6447         * ircd/channel.c (modebuf_flush_int): when processing keys, only
6448         include the actual key in the mode sent to the channel if
6449         MODEBUF_DEST_NOKEY is not set
6450
6451         * include/channel.h: needed more bits for MODEBUF_DEST_*,
6452         especially when adding MODEBUF_DEST_NOKEY to force keys in the
6453         BURST to be reported as "*" to the channel
6454
6455         * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
6456         inherited from the class associated with the O-line
6457
6458 2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
6459
6460         * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
6461         when a user changes his nickname so we can catch if he now matches
6462         a ban
6463
6464 2002-03-20 Reed Loden <reed@redmagnet.com>
6465         * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
6466
6467         * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
6468
6469 2002-03-20 LordLuke <lordluke@undernet.org>
6470         * ircd/client.c: Add LOCOP_LIST_CHAN feature.
6471
6472         * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
6473
6474 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
6475
6476         * ircd/m_links.c: Make /links behave like /map for head_in_sand.
6477         cleaned up excess code.
6478
6479         * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
6480         map_add() and map_update() for links changes.
6481
6482         * include/map.h: Added info and prot to struct Map
6483
6484         * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
6485         servers are cached in MapList
6486
6487         * ircd/s_misc.c: changed #ifdef for map_update()
6488
6489         * ircd/m_server.c: changed #ifdef for map_update()
6490
6491         * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
6492         hiding features.
6493
6494         * configure.in: add --disable-headinsand
6495
6496         * configure: Ran autoconf
6497
6498         * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
6499         connect limits
6500
6501         * ircd/s_stats.c: Made /stats i report connect limits
6502
6503         * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
6504         "*" for the password field.
6505         
6506 2002-03-19 LordLuke <lordluke@undernet.org>
6507
6508         * include/channel.h: Allow opers to view +s channels in /list
6509
6510         * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
6511
6512         * include/ircd_features.h: added "LIST_CHAN" feature
6513
6514         * ircd/channel.c: Allow opers to view +s channels in /list
6515
6516         * ircd/client.c: Add "PRIV_LIST_CHAN"
6517
6518         * ircd/ircd_features.c: Add "LIST_CHAN" feature
6519
6520 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
6521
6522         * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
6523         Must be more careful when forward porting by hand...
6524         
6525 2002-03-13  Carlo Wood  <run@alinoe.com>
6526
6527         * include/channel.h: CHFL_CHANNEL_MANAGER, new local
6528         channel flag set when someone creates a channel or joins
6529         using the Apass.  IsChannelManager(), SetChannelManager():
6530         macros to manipulate new channel flag.
6531         channel_modes: Added new argument to avoid calling
6532         find_member_link more often than needed.
6533
6534         * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
6535         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
6536         ERR_UPASSNOTSET: new numeric replies.
6537
6538         * ircd/channel.c: is_level0_op: removed.
6539         member_can_send_to_channel: disallow channel manager
6540         to talk.  channel_modes: show upass to level0 ops.
6541         mode_parse_upass: Only the channel manager is allowed
6542         to change the upass.  Only allow to set upass when apass
6543         is also set.  mode_parse_apass: Don't allow to change the
6544         Apass if the channel is older than 48 hours.  Only allow
6545         to remove the apass when upass is not set.  Send clear
6546         warnings regarding the importance of apass.
6547         mode_process_clients: Don't change the oplevel of an opped
6548         member in a channel where upass is not set.
6549
6550         * ircd/destruct_event.c: exec_expired_destruct_events:
6551         Bug fix: send DESTRUCT message when destructing a channel.
6552
6553         * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
6554         prefix for DESTRUCT message.
6555
6556         * ircd/m_join.c: m_join: Handle apass and upass.
6557
6558         * ircd/m_kick.c: m_kick: Don't allow to kick member with
6559         a higher or equal op-level.
6560
6561         * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
6562         ms_mode: Allow server to do modes on channels with apass
6563         set.
6564
6565         * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
6566         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
6567         ERR_UPASSNOTSET: new numeric replies.
6568
6569
6570 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
6571
6572         * ircd/m_kill.c: Last of the bug fixes for do_kill()
6573
6574         * ircd/list.c: Don't remove clients from the linked list
6575         that aren't actually in the list.
6576         
6577 2002-03-08  Carlo Wood  <run@alinoe.com>
6578         * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
6579         and CHFL_BURST_ALREADY_VOICED.
6580
6581         * ircd/m_burst.c: Allow BURST outside net-burst
6582         and take into account that users are already joined
6583         to the channel in that case.
6584
6585         * ircd/m_destruct.c: Implementation of DESTRUCT
6586         handling code.
6587
6588         * ircd/m_join.c: Set the channel creationtime to
6589         the timestamp of a message when that timestamp is
6590         smaller.
6591 2002-02-27 Reed Loden <reed@redmagnet.com>
6592        * tools/crypter: Updated some variables, added another notice,
6593        added CVS Id tag, and updated Perl location.
6594
6595        * tools/ringlog.c: Added IRC - Internet Relay Chat, 
6596        tools/ringlog.c
6597
6598        * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
6599        tools/ringlog.pl
6600
6601        * tools/wrapper.c: Added IRC - Internet Relay Chat, 
6602        tools/wrapper.c
6603
6604        * tools/mkpasswd.c: Added CVS Id tag
6605
6606        * tools/sums: Updated to comply with sums being moved to tools/
6607        and added CVS Id tag
6608
6609        * tools/README: Updated location of file and partly rewrote to fit 
6610        u2.10.11's Features
6611
6612        * tools/Makefile.crypt: Updated location of file and added CVS Id 
6613        tag
6614
6615        * acconfig.h: Updated location of file
6616
6617        * config.h.in: Updated location of file
6618
6619        * tools/Bounce/bounce.conf: Added CVS Id tag
6620
6621        * tools/Bounce/Bounce.cpp: Updated location of file
6622
6623        * tools/Bounce/Bounce.h: Updated location of file
6624
6625        * tools/hashtoy: Added CVS Id Tag
6626
6627 2002-02-27  Carlo Wood  <run@alinoe.com>
6628
6629         * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
6630
6631 2002-03-01  Carlo Wood  <run@alinoe.com>
6632
6633         * include/channel.h: struct Channel: new attribute destruct_event.
6634         Prototype for destruct_channel().
6635
6636         * include/destruct_event.h: new header file for destruct_event.c.
6637
6638         * ircd/Makefile.in: New source file: destruct_event.c.
6639
6640         * ircd/channel.c: sub1_from_channel: Don't destruct channel
6641         immedeately but instead schedule it for destruction after
6642         some time when a channel becomes empty (and clear invite
6643         only and limit in that case).
6644         destruct_channel: new function, was previously the destructing
6645         part of sub1_from_channel.
6646         add_user_to_channel: remove destruction request if any.
6647
6648         * ircd/destruct_event.c: New file.  Implementation of functions
6649         schedule_destruct_event_1m, schedule_destruct_event_48h,
6650         remove_destruct_event and exec_expired_destruct_events.
6651
6652         * ircd/ircd.c: destruct_event_timer: new timer.
6653         main: use destruct_event_timer to call exec_expired_destruct_events
6654         once per minute.
6655
6656         * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
6657         channels.  Schedule new empty channels for destruction.
6658
6659         * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
6660
6661 2002-03-01  Carlo Wood  <run@alinoe.com>
6662         * ircd/s_misc.c: exit_client: Only call map_update()
6663         for servers.
6664
6665 2002-02-28  Carlo Wood  <run@alinoe.com>
6666         * include/channel.h: New attribute 'oplevel' in struct Membership.
6667         Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
6668         New macros:  OpLevel(member): returns op-level of member and
6669         SetOpLevel(member, value): sets op-level of member.
6670         Prototype of add_user_to_channel: add oplevel to parameters.
6671         Prototype of mode_parse: add member to to parameters.
6672
6673         * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
6674
6675         * ircd/s_err.c: idem.
6676
6677         * ircd/channel.c: Removed unmatched '{' braces from comments
6678         (confuses vi).  add_user_to_channel: oplevel is passed to function
6679         and added in the created MemberShip structure.  send_channel_modes:
6680         Generate the nick:mode list of the BURST msg in the new style (with
6681         op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
6682         ParseState: New attribute: member.  mode_process_clients: Disallow
6683         deopping someone with an equal or higher op-level, take care of
6684         inheritance of op-level.  mode_parse: member is passed to function      
6685         and added in the created ParseState structure.  joinbuf_join: pass 0
6686         as oplevel to add_user_to_channel as needed initialization of oplevel
6687         in struct MemberShip.
6688
6689         * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
6690         decoding of a BURST message and passing on a BURST message.
6691         Renamed default_mode to current_mode.
6692
6693         * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
6694
6695         * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
6696         to mode_parse (causes opped member to get op-level 0).                  
6697
6698 2002-02-25  Carlo Wood  <run@alinoe.com>
6699         * include/channel.h: Added two new strings to struct Mode,
6700         upass and apass, both with maximum length PASSLEN (a new
6701         define in this file).  Two new mode defines MODE_UPASS and
6702         MODE_APASS.
6703
6704         * ircd/channel.c: is_level0_op: Added as dummy function.
6705         channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
6706         Added support for MODE_APASS (+A) and MODE_UPASS (+u).
6707         mode_parse_upass: New function to parse mode +u.
6708         mode_parse_apass: New function to parse mode +A.
6709
6710         * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
6711
6712 2002-02-25  Carlo Wood  <carlo@alinoe.com>
6713
6714         * ircd/m_server.c: remove unused variables
6715
6716 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
6717
6718         * ircd/m_map.c: Modified to show a useful output to non-opered
6719           clients when HEAD_IN_SAND_MAP is defined. Servers are added to
6720           the list when first seen (after receiving SERVER) and that list
6721           is sent to clients. Servers are excluded from the list if they are
6722           hubs, services, or have been missing for more than 1 week.
6723         
6724         * ircd/map.c: Created file for map_* functions
6725
6726         * include/map.h: Created file for map_* functions
6727
6728         * ircd/m_server.c: Added calls to map_update()
6729
6730         * ircd/s_misc.c: Added call to map_update()
6731
6732         * ircd/parse.c: Changed to use m_map() and mo_map()
6733         
6734 2002-02-22 Reed Loden <reed@redmagnet.com>
6735
6736        * ircd/m_connect.c: Removed an extra : in remote connect message.
6737
6738 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
6739
6740         * ircd/whocmds.c: Local opers should also be able to
6741         see servernames in /who
6742
6743         * ircd/gline.c: Fix core bug in gline_find()
6744
6745         * ircd/m_kill.c: Bug fix for HIS_KILLWHO
6746
6747 2002-02-19 John Buttery <john@io.com>
6748
6749         * ircd/ircd.c: Updated "No such file" error message.
6750         
6751 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
6752
6753         * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
6754         a message handler, and some general cleanups and bug fixes. 
6755
6756         * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
6757         kill source.
6758         
6759 2002-02-16  Tim Vogelsang <net@astrolink.org>
6760
6761         * ircd/m_kill.c: added a new static function, m_kill, which
6762         performs the actual kill.
6763         
6764 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
6765
6766         * Added support for LIST STOP
6767         
6768 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
6769
6770         * Merged changes from u2_10_11 to main branch.
6771         
6772 2002-02-08  Tim Vogelsang  <net@astrolink.org>
6773
6774        * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
6775        reason is supplied.
6776
6777 2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
6778
6779         * ircd/s_auth.c (read_auth_reply): left out an = in an
6780         assertion--shouldn't have had any impact, though
6781
6782         * ircd/Makefile.in: add a hook for using ringlog; run make depend
6783
6784         * tools/ringlog.c: for the heck of it, add a comment including
6785         rules for /etc/magic
6786
6787 2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
6788
6789         * tools/ringlog.pl: perl script to take output from ringlog and
6790         pass it to addr2line to get function, file, and line number
6791         information
6792
6793         * tools/ringlog.c: program/object to help in building function
6794         trace information
6795
6796 2002-02-04  Alex Badea  <vampire@p16.pub.ro>
6797
6798         * include/ircd_features.h: added new feature MOTD_BANNER
6799
6800         * ircd/ircd_features.c: added new feature MOTD_BANNER
6801
6802         * ircd/motd.c (motd_signon): send a one-line banner from
6803         FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
6804         is set
6805
6806         * doc/example.conf: default value for MOTD_BANNER feature
6807
6808         * doc/readme.features: documented the MOTD_BANNER feature
6809
6810 2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
6811
6812         * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
6813         check; added character 'A' to the server options string to
6814         indicate when assertion checking is enabled
6815
6816 2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
6817
6818         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6819
6820         * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
6821         event if the errno is EBADF, since the caller probably already
6822         knows about it and just hasn't gotten around to processing it yet
6823
6824         * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
6825         is generated; don't process socket_events() or socket_state() if
6826         an error occurred; add GEN_ERROR to list of flags in gen_flags()
6827
6828         * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
6829         clear it
6830
6831 2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
6832
6833         * ircd/channel.c: change make_nick_user_{ip,host} to not use a
6834         static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
6835         NUI_BUFSIZE--I confess they're not well-named) is allocated by the
6836         caller
6837
6838 2002-02-02  Alex Badea  <vampire@p16.pub.ro>
6839
6840         * include/client.h: added user flag FLAGS_HIDDENHOST
6841
6842         * include/ircd_features.h: added FEAT_HOST_HIDING and
6843         FEAT_HIDDEN_HOST
6844
6845         * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
6846         to report real hostnames and IPs to opers
6847
6848         * include/s_user.h: exported hide_hostmask()
6849
6850         * include/send.h: changed sendcmdto_channel_butserv to
6851         sendcmdto_channel_butserv_butone; ditto for
6852         sendcmdto_common_channels
6853
6854         * include/struct.h: added realhost to struct User
6855
6856         * include/whowas.h: added realhost to struct Whowas
6857
6858         * ircd/channel.c: match bans against both real and hidden
6859         hostmasks; moved some calls to use sendcmdto_*_butone
6860
6861         * ircd/gline.c: match glines agains real host
6862
6863         * ircd/ircd_features.c: added FEAT_HOST_HIDING and
6864         FEAT_HIDDEN_HOST
6865
6866         * ircd/m_account.c: call hide_hostmask() for possibly
6867         hiding the user's host
6868
6869         * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
6870
6871         * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
6872
6873         * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
6874         host
6875
6876         * ircd/m_who.c: match real hosts, if the query comes from an oper
6877
6878         * ircd/m_whois.c: report real hostname and IP to opers
6879
6880         * ircd/m_whowas.c: report real hostname to opers
6881
6882         * ircd/s_err.c: added user mode 'x' to the list of supported user
6883         modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
6884         real hostnames to opers
6885
6886         * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
6887
6888         * ircd/s_serv.c: send real hostname to servers
6889
6890         * ircd/s_user.c: send real hostname to servers; added processing
6891         of usermode 'x'; added hide_hostmask() which actually does the work
6892         of hiding a user's host; moved some calls to use sendcmdto_*_butone
6893
6894         * ircd/send.c: changed sendcmdto_channel_butserv to
6895         sendcmdto_channel_butserv_butone; ditto for
6896         sendcmdto_common_channels
6897
6898         * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
6899         it's host hidden
6900
6901         * ircd/whowas.c: if needed, store a user's real host so we can
6902         report it to opers later
6903
6904         * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
6905         features
6906
6907         * doc/example.conf: default values for HOST_HIDING and
6908         HIDDEN_HOST features
6909
6910 2002-02-01  Tim Vogelsang  <net@astrolink.org>
6911
6912         * ircd/send.c (sendwallto_group_butone): don't sent wallops to
6913         ordinary users
6914
6915 2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
6916
6917         * ircd/jupe.c (jupe_activate): remove a bogus assertion
6918
6919         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6920
6921         * ircd/s_err.c: added new channel mode 'r' to list of supported
6922         channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
6923         numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
6924         informing users why they can't join a +r channel
6925
6926         * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
6927         (+r) to do_clearmode(); note that it is *not* being added to the
6928         default clearmode mask!
6929
6930         * ircd/channel.c: don't allow non-+r users to send messages to +r
6931         channels from off the channel; add support for MODE_REGONLY (+r)
6932         to channel_modes(); don't allow non-+r users to join +r channels
6933         without an invite; add support for MODE_REGONLY to the modebuf_*()
6934         family of functions (changes in modebuf_flush_int(),
6935         modebuf_mode(), and modebuf_extract()); add support for
6936         MODE_REGONLY to mode_parse()
6937
6938         * include/supported.h (FEATURESVALUES2): added the new channel
6939         mode 'r' to the list of supported channel modes
6940
6941         * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
6942         conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
6943
6944         * include/channel.h: remove unused MODE_SENDTS; add new
6945         MODE_REGONLY
6946
6947         * ircd/s_bsd.c (read_packet): remove call to timer_verify()
6948
6949         * ircd/list.c: remove calls to timer_verify() from
6950         alloc_connection() and dealloc_connection()
6951
6952         * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
6953         from timer_run()
6954
6955 2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
6956
6957         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6958
6959         * ircd/ircd_events.c (timer_run): why did I ever use a next
6960         pointer when the algorithm guarantees that the head pointer will
6961         always be the next pointer?
6962
6963 2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
6964
6965         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6966
6967         * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
6968         client process timer to catch any list corruption
6969
6970         * ircd/list.c: surround alloc_connection() and
6971         dealloc_connection() with calls to timer_verify()
6972
6973         * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
6974         verify the timer list's structure; call it around timer_run()
6975
6976 2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
6977
6978         * ircd/send.c (sendcmdto_common_channels): don't send message to a
6979         channel that the source is a zombie on
6980
6981 2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
6982
6983         * ircd/ircd_events.c (timer_enqueue): one more assertion--make
6984         sure a timer has the ACTIVE flag set before enqueueing the timer
6985
6986         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6987
6988         * ircd/list.c (dealloc_connection): assert that the process timer
6989         has been removed from the timer queue before dealloc_connection()
6990         is called
6991
6992 2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
6993
6994         * ircd/res.c: don't accept T_A when we're looking for T_PTR
6995
6996         * ircd/channel.c (modebuf_flush_int): nuke the code that would
6997         send a HACK DESYNCH notice on a HACK(2)--it would be far too
6998         chatty
6999
7000         * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
7001
7002         * include/supported.h: add AWAYLEN to the list of supported
7003         features
7004
7005         * include/ircd_defs.h: add AWAYLEN to specify the maximum length
7006         of an away message
7007
7008         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7009
7010         * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
7011
7012         * ircd/channel.c: pass a buflen parameter to channel_modes() for
7013         pbuf--we were using sizeof(pbuf), which would always be
7014         sizeof(char*) before; change send_channel_modes() to pass extra
7015         parameter to channel_modes()
7016
7017         * include/channel.h: pass a buflen parameter to channel_modes()
7018         for pbuf
7019
7020         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7021
7022         * ircd/uping.c (uping_start): initialize some timers
7023
7024         * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
7025         out when we need to re-add the process timer
7026
7027         * ircd/s_auth.c (make_auth_request): initialize a timer
7028
7029         * ircd/res.c (init_resolver): initialize some timers
7030
7031         * ircd/list.c (alloc_connection): initialize the client process
7032         timer
7033
7034         * ircd/ircd_events.c: add a function, timer_init(), to initialize
7035         a struct Timer; recast timer_add() to catch when adding a marked
7036         timer and not re-enqueue it--but mark it for re-enqueuing; update
7037         timer_del() to turn off the GEN_READD flag and to ignore reference
7038         counts when destroying the timer--we're using GEN_MARKED as an
7039         ersatz referance count; changed timer_run() to work with the new
7040         way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
7041         map[]
7042
7043         * ircd/ircd.c: initialize some timers
7044
7045         * ircd/engine_select.c (engine_loop): initialize a timer
7046
7047         * ircd/engine_poll.c (engine_loop): initialize a timer
7048
7049         * ircd/engine_kqueue.c (engine_loop): initialize a timer
7050
7051         * ircd/engine_devpoll.c (engine_loop): initialize a timer
7052
7053         * ircd/IPcheck.c (IPcheck_init): initialize a timer
7054
7055         * include/ircd_events.h: add GEN_READD flag for timers to indicate
7056         that a timer must be readded; add t_onqueue() macro to check to
7057         see if a timer is on the queue (this is a hack, though); added
7058         timer_init() to initialize a struct Timer--we're no longer doing
7059         the initialization in timer_add()
7060
7061 2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
7062
7063         * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
7064         prevent a core bug *in* the assertion
7065
7066         * doc/readme.features: document new POLLS_PER_LOOP feature; change
7067         documentation to reflect that OPER_SET now defaults to FALSE
7068
7069         * doc/p10.html: documented the new ACCOUNT stuff
7070
7071         * doc/example.conf: document new POLLS_PER_LOOP default; change
7072         default for OPER_SET
7073
7074         * RELEASE.NOTES: changed documentation to reflect the fact that
7075         assertions are now enabled by default and do not cause memory
7076         leaks
7077
7078         * ircd/res.c (make_cache): removed a bogus assertion we probably
7079         never caught because assertions haven't been enabled on production
7080         servers for any length of time before
7081
7082         * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
7083
7084         * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
7085         instance of POLLS_PER_KQUEUE
7086
7087         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7088
7089         * ircd/s_bsd.c (client_timer_callback): only clear the
7090         FREEFLAG_TIMER flag when the timer is being destroyed
7091
7092         * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
7093         default it to 200; turn OPER_SET off by default
7094
7095         * ircd/engine_kqueue.c: dynamically allocate and reallocate the
7096         array of events to obtain from the kernel
7097
7098         * ircd/engine_devpoll.c: dynamically allocate and reallocate the
7099         array of events to obtain from the kernel
7100
7101         * include/ircd_features.h: add a new feature for tuning how many
7102         events to get from the kernel, for engines that support that
7103
7104         * ircd/Makefile.in: re-run make depend to correct dependancies
7105
7106         * ircd/m_who.c: remove unneeded inclusion of list.h
7107
7108         * ircd/ircd_events.c: remove unneeded inclusion of list.h
7109
7110         * ircd/whocmds.c (do_who): hide server name in /who unless
7111         requester is an operator; simplify hop count insertion
7112
7113         * ircd/s_misc.c (exit_one_client): make sure client's snomask is
7114         cleared
7115
7116         * ircd/parse.c: use mo_version and mo_admin when opers do /version
7117         or /admin
7118
7119         * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
7120         of the static string "*.undernet.org"
7121
7122         * ircd/m_version.c: only let ordinary users get version
7123         information for the server they are on
7124
7125         * ircd/m_admin.c: only let ordinary users get admin information
7126         for the server they are on
7127
7128         * ircd/channel.c (client_can_send_to_channel): check is_banned()
7129         before letting the client speak on a channel s/he is not on
7130
7131         * include/supported.h: add NETWORK to feature list
7132
7133         * include/handlers.h: declare mo_admin() and mo_version()
7134
7135 2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
7136
7137         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7138
7139         * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
7140         of !NDEBUG
7141
7142         * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
7143         !NDEBUG
7144
7145         * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
7146         !NDEBUG
7147
7148         * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
7149
7150         * ircd/Makefile.in: run make depend on chkconf.c as well
7151
7152         * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
7153         conditionalize on MDEBUG
7154
7155         * include/fda.h: instead of conditionalizing on !NDEBUG,
7156         conditionalize on MDEBUG
7157
7158         * configure: rebuild configure script
7159
7160         * configure.in: enable assertion checking by default, since we
7161         have now decoupled memory debugging from the NDEBUG macro
7162
7163         * ircd/s_user.c (set_nick_name): remove calls to
7164         verify_client_list()
7165
7166         * ircd/s_misc.c (exit_one_client): remove calls to
7167         verify_client_list()
7168
7169         * ircd/s_conf.c (rehash): remove calls to verify_client_list()
7170
7171         * ircd/m_who.c (m_who): remove calls to verify_client_list()
7172
7173         * ircd/list.c: remove calls to verify_client_list(); keep
7174         verify_client_list() around just in case we ever need it again,
7175         but never compile it in
7176
7177         * ircd/ircd_events.c (event_execute): remove calls to
7178         verify_client_list()
7179
7180         * ircd/client.c (client_get_ping): remove calls to
7181         verify_client_list()
7182
7183         * include/list.h (send_listinfo): remove temporary debugging
7184         function verify_client_list()
7185
7186         * ircd/uping.c: don't die if the event type is ET_ERROR in socket
7187         callback functions
7188
7189         * ircd/res.c (res_callback): don't die if the event type is
7190         ET_ERROR
7191
7192         * ircd/listener.c (accept_connection): don't die if the event type
7193         is ET_ERROR
7194
7195 2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
7196
7197         * ircd/s_user.c (set_nick_name): bracket call to
7198         add_client_to_list() with calls to verify_client_list()
7199
7200         * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
7201
7202         * ircd/list.c (verify_client_list): add a probabilistic loop
7203         detector: for every client added, there is a 2% probability that
7204         it will be used to replace the value of sentinel; if at any time,
7205         sentinel is found again, we know we're in a loop
7206
7207         * ircd/ircd_events.c (event_execute): add verify_client_list()
7208         calls wrapping event_execute; at the very least, I'll figure out
7209         what event the corruption occurred in
7210
7211         * ircd/list.c: moved verify_client_list() to try to keep it from
7212         being inlined
7213
7214         * ircd/Makefile.in (version.c): version.c wasn't dependant on
7215         version.h and patchlevel.h, like it was supposed to be
7216
7217         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7218
7219         * ircd/s_auth.c (destroy_auth_request): overload send_reports
7220         argument to also indicate whether or not to call
7221         release_auth_client() and thereby enter the client into the linked
7222         list
7223
7224         * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
7225
7226         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7227
7228         * ircd/list.c (free_client): verify that destroy_auth_request()
7229         didn't automagically re-add us to the list; we might have to think
7230         about this interaction more carefully, actually
7231
7232         * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
7233         calling free_client(); otherwise, free_client() will try to free
7234         the auth by calling destroy_auth_request(), which will call
7235         add_client_to_list()
7236
7237         * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
7238         verify_client_list() around to catch any corruption that might
7239         occur here
7240
7241         * ircd/s_conf.c (rehash): liberally sprinkle calls to
7242         verify_client_list() here, since this is about the only routine I
7243         can think of that could cause the "core on kill -HUP" bug
7244
7245         * ircd/m_who.c: sprinkle calls to verify_client_list() around
7246         liberally, since we've seen crashes here; temporarily include the
7247         otherwise unneeded list.h header
7248
7249         * ircd/list.c: sprinkle calls to verify_client_list() around quite
7250         liberally; add debugging asserts to list manipulation functions to
7251         catch strange settings for next and prev pointers; define
7252         verify_client_list(), which walks the client list and verifies
7253         that everything is as it's supposed to be
7254
7255         * ircd/client.c: wrap client_get_ping with calls to
7256         verify_client_list() to see if that's where we're dying
7257
7258         * include/patchlevel.h (PATCHLEVEL): bump to 03
7259
7260         * include/list.h: declare verify_client_list() if DEBUGMODE
7261         enabled; otherwise, define it to be empty
7262
7263 2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
7264
7265         * ircd/m_quit.c (m_quit): remove an unused variable
7266
7267         * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
7268
7269         * ircd/s_user.c: when building the user mode to send to the user,
7270         don't include +r; add an extra set of parens to squelch a warning
7271
7272         * ircd/m_quit.c (m_quit): use exit_client_msg()
7273
7274         * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
7275         keep track of who's running what version
7276
7277         * ircd/m_squit.c (ms_squit): remove debugging calls to
7278         protocol_violation()
7279
7280         * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
7281         new gmake "feature" (pull-up from trunk)
7282
7283         * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
7284         from trunk)
7285
7286 2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
7287
7288         * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
7289         list of user modes; process account name as part of user mode in
7290         NICK decoding (set_nick_name()); add account name to usermode when
7291         building the usermode to incorporate in outgoing NICK messages
7292
7293         * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
7294         user is logged in to
7295
7296         * ircd/parse.c: define the new ACCOUNT command, usable only by
7297         servers and ignored by everything else
7298
7299         * ircd/m_whois.c: report what account name is associated with a
7300         user, if any
7301
7302         * ircd/m_account.c: implement the ACCOUNT command
7303
7304         * ircd/Makefile.in: add m_account.c to the list of sources; ran
7305         make depend
7306
7307         * include/struct.h: add an account field to struct User
7308
7309         * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
7310         what username a user is logged in under
7311
7312         * include/msg.h: add ACCOUNT command and token (AC)
7313
7314         * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
7315         the maximum length of a username for X
7316
7317         * include/handlers.h: add declaration for ms_account()
7318
7319         * include/client.h: add FLAGS_ACCOUNT to flag when a user account
7320         name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
7321         IsAccount() and SetAccount() to manipulate the flag
7322
7323         * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
7324         name like "Amsterdam2.NL.EU.undernet.org", we get the struct
7325         Client for the server with numeric "Am", which happens to be
7326         stockholm!  To fix this, we look up the full name *first*; if that
7327         doesn't get it, *then* we look up by numeric.
7328
7329 2001-12-24  Perry Lorier <isomer@coders.net>
7330         * ircd/m_server.c: cleanups, maybe this will make the bug easier
7331         to find.
7332
7333         * ircd/m_stats.c: display maximum number of connects in an I:
7334
7335 2001-11-22  Perry Lorier  <isomer@coders.net>
7336         * ircd/m_squit.c: Bug fix in squit
7337
7338 2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7339         * ircd/parse.c, include/handlers.h: Give remote whois the correct
7340         handler.
7341         
7342 2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
7343
7344         * ircd/send.c: some minor white-space fiddling; recast selector
7345         test in sendwallto_group_butone() to remove a warning regarding
7346         putting & within parentheses
7347
7348         * ircd/m_create.c (ms_create): use time_t instead of int as a
7349         declaration for rate
7350
7351         * ircd/ircd_reply.c (protocol_violation): it's supposed to be
7352         WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
7353         wonder we weren't seeing any protocol violations!
7354
7355         * include/send.h: include time.h for time_t; move WALL_* closer to
7356         the function they're used in; some white-space fiddling; add
7357         declaration of sendto_opmask_butone_ratelimited()
7358
7359         * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
7360         cases where we ignore a squit, so we aren't taken by surprise, at
7361         least...
7362
7363         * ircd/m_create.c (ms_create): Display origin server, not origin
7364         user
7365
7366         * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
7367
7368 2001-10-31  Perry Lorier  <isomer@coders.net>
7369         * include/m_ping.c: Forward port ping bug
7370
7371 2001-10-31  Perry Lorier  <isomer@coders.net>
7372         * include/patchlevel.h: We're beta now
7373
7374 2001-10-31  Perry Lorier  <isomer@coders.net>
7375         * ircd/s_user.c: fixed hunt_server
7376
7377 2001-09-21  Perry Lorier  <isomer@coders.net>
7378         * ircd/send.c and various: replace sendcmdto_flag_butone with
7379         sendwallto_group_butone
7380
7381 2001-09-21  Vampire-  <unknown>
7382         * ircd/ircd_string.c: unique_name_vector round II.
7383
7384 2001-09-21  mbuna  <mbuna@undernet.org>
7385         * configure.in: Add support for darwin
7386
7387 2001-09-21  Perry Lorier  <isomer@coders.net>
7388         * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
7389
7390 2001-09-20  Perry Lorier  <isomer@coders.net>
7391
7392         * Pullups from 2.10.10.pl16
7393         * Added some warnings, and the concept of rate limited snotices
7394
7395 2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
7396
7397         * ircd/channel.c: use "%u" to format limit arguments; use
7398         strtoul() to process limit arguments in a /mode command--note:
7399         most clients seem to truncate the integer, probably because
7400         they're using atoi, and perhaps signed ints
7401
7402 2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
7403
7404         * ircd/numnicks.c: include stdlib.h for exit()
7405
7406         * ircd/ircd_log.c: include stdlib.h for exit()
7407
7408         * ircd/ircd_events.c: include stdlib.h for exit()
7409
7410         * ircd/s_stats.c: remove description of /stats v, since it's gone
7411
7412         * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
7413         /wallops to distinguish wallops from wallusers
7414
7415         * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
7416         in the "handshake" or "connecting" states--I think the latter will
7417         never happen, but...
7418
7419         * doc/Authors: apply delete's Authors patch
7420
7421         * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
7422         Braden's version
7423
7424         * README: rewrite README
7425
7426 2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
7427
7428         * ircd/s_serv.c (server_estab): remove unused variable split
7429
7430         * ircd/parse.c: add mr_error to the parse table
7431
7432         * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
7433         unregistered connections--if IsUserPort() is true, the ERROR is
7434         ignored, otherwise, the message is saved
7435
7436 2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
7437
7438         * ircd/m_kill.c (ms_kill): another minor typo *sigh*
7439
7440         * ircd/s_user.c (send_supported): oops, minor typo...
7441
7442         * ircd/s_user.c: implement send_supported() to send two ISUPPORT
7443         messages containing our feature buffers; make register_user() use
7444         send_supported()
7445
7446         * ircd/s_misc.c (exit_client): make sure not to give away a remote
7447         server in the ERROR message sent to the client; if the killer is a
7448         server, we substitute our name in its place
7449
7450         * ircd/m_version.c (m_version): use send_supported() to send the
7451         ISUPPORT values to the user
7452
7453         * ircd/m_nick.c: shave nick collision kills here a bit, too, for
7454         the same reasons as for m_kill.c
7455
7456         * ircd/m_kill.c: shave kills a bit so that the results look
7457         exactly the same no matter where you are; if we didn't do this, it
7458         would be possible to map the network by looking at the differences
7459         between kills originating under various circumstances
7460
7461         * include/supported.h: split the features into two, so as to not
7462         bust the parameter count when sending the features list
7463
7464         * include/s_user.h: declare new send_supported() function to send
7465         the ISUPPORT information
7466
7467 2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
7468
7469         * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
7470         source-routed spoofing attacks; this is only available under
7471         u2.10.11, so don't even bother, since no one but testers are using
7472         the source base
7473
7474 2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
7475
7476         * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
7477
7478         * ircd/s_err.c: put in a . for reporting link version on /trace,
7479         to match what /version does
7480
7481 2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
7482
7483         * ircd/s_misc.c (exit_client): servers don't understand what the
7484         numeric nick ERROR is supposed to mean, so they ignore error
7485         messages, resulting in not knowing why we were rejected; use
7486         sendcmdto_one for servers and sendrawto_one for clients
7487
7488 2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
7489
7490         * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
7491         a nick collide, a bare BURST may be propagated; adjust the
7492         enforced parameter count to accept the bare BURST
7493
7494 2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
7495
7496         * ircd/s_bsd.c: mark a client as having been IP checked
7497
7498         * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
7499         second call to SetIPChecked()
7500
7501 2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
7502
7503         * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
7504
7505         * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
7506
7507 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
7508
7509         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
7510         sections so that if neither is used, the declaration of buf will
7511         not elicit an "unused variable" warning under NetBSD
7512
7513         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
7514         on alpha)
7515
7516         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
7517         warnings on alpha)
7518
7519         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
7520         warnings on alpha)
7521
7522         * ircd/client.c: include string.h to declare memset (fix warnings
7523         on alpha)
7524
7525         * ircd/channel.c: remove unused functions next_overlapped_ban,
7526         del_banid, and is_deopped (fix warnings under -O1)
7527
7528         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
7529         warnings on alpha)
7530
7531 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
7532
7533         * ircd/s_user.c (set_user_mode): clear the snomask if the user
7534         isn't supposed to receive server notices anymore
7535
7536         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
7537
7538         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
7539         installation prefix; default devpoll and kqueue to on (they get
7540         turned off if the required headers aren't present)
7541
7542         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
7543         sprintf_irc(); it's a bit hackish, but it'll do for now
7544
7545         * ircd/support.c: remove unused #include
7546
7547         * ircd/send.c: remove unused #include
7548
7549         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
7550
7551         * ircd/s_serv.c: remove unused #include
7552
7553         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
7554         sprintf_irc() and friends
7555
7556         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
7557         ircd/s_err.c, which is the only other file to refer to it
7558
7559         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
7560         sprintf_irc()
7561
7562         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
7563         sprintf_irc()
7564
7565         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
7566
7567         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
7568
7569         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
7570
7571         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
7572
7573         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
7574
7575         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
7576
7577         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
7578         instead of sprintf_irc()
7579
7580         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
7581         make depend
7582
7583         * include/ircd_string.h: remove declaration of sprintf_irc() (what
7584         was it doing here anyway?)
7585
7586         * include/sprintf_irc.h: removed unneeded source file
7587
7588         * ircd/sprintf_irc.c: removed unneeded source file
7589
7590         * ircd/s_debug.c (count_memory): remove some dead code
7591
7592         * ircd/s_auth.c: remove some dead code
7593
7594         * ircd/res.c (update_list): remove some dead code
7595
7596         * ircd/m_whowas.c: remove some dead code
7597
7598         * ircd/m_whois.c: remove some dead code
7599
7600         * ircd/m_who.c: remove some dead code
7601
7602         * ircd/m_wallusers.c: remove some dead code
7603
7604         * ircd/m_wallops.c: remove some dead code
7605
7606         * ircd/m_wallchops.c: remove some dead code
7607
7608         * ircd/m_version.c: remove some dead code
7609
7610         * ircd/m_userip.c: remove some dead code
7611
7612         * ircd/m_userhost.c: remove some dead code
7613
7614         * ircd/m_uping.c: remove some dead code
7615
7616         * ircd/m_trace.c: remove some dead code
7617
7618         * ircd/m_topic.c: remove some dead code
7619
7620         * ircd/m_tmpl.c: remove some dead code
7621
7622         * ircd/m_time.c: remove some dead code
7623
7624         * ircd/m_squit.c: remove some dead code
7625
7626         * ircd/m_silence.c: remove some dead code
7627
7628         * ircd/m_settime.c: remove some dead code
7629
7630         * ircd/m_set.c: remove some dead code
7631
7632         * ircd/m_server.c: remove some dead code
7633
7634         * ircd/m_rpong.c: remove some dead code
7635
7636         * ircd/m_rping.c: remove some dead code
7637
7638         * ircd/m_restart.c: remove some dead code
7639
7640         * ircd/m_reset.c: remove some dead code
7641
7642         * ircd/m_rehash.c: remove some dead code
7643
7644         * ircd/m_quit.c: remove some dead code
7645
7646         * ircd/m_proto.c: remove some dead code
7647
7648         * ircd/m_privs.c: remove some dead code
7649
7650         * ircd/m_privmsg.c: remove some dead code
7651
7652         * ircd/m_pong.c: remove some dead code
7653
7654         * ircd/m_ping.c: remove some dead code
7655
7656         * ircd/m_pass.c: remove some dead code
7657
7658         * ircd/m_part.c: remove some dead code
7659
7660         * ircd/m_opmode.c: remove some dead code
7661
7662         * ircd/m_oper.c: remove some dead code
7663
7664         * ircd/m_notice.c: remove some dead code
7665
7666         * ircd/m_nick.c: remove some dead code
7667
7668         * ircd/m_map.c: remove some dead code
7669
7670         * ircd/m_lusers.c: remove some dead code
7671
7672         * ircd/m_list.c: remove some dead code
7673
7674         * ircd/m_links.c: remove some dead code
7675
7676         * ircd/m_kill.c: remove some dead code
7677
7678         * ircd/m_kick.c: remove some dead code
7679
7680         * ircd/m_jupe.c: remove some dead code
7681
7682         * ircd/m_join.c: remove some dead code
7683
7684         * ircd/m_ison.c: remove some dead code
7685
7686         * ircd/m_invite.c: remove some dead code
7687
7688         * ircd/m_info.c: remove some dead code
7689
7690         * ircd/m_help.c: remove some dead code
7691
7692         * ircd/m_gline.c: remove some dead code
7693
7694         * ircd/m_get.c: remove some dead code
7695
7696         * ircd/m_error.c: remove some dead code
7697
7698         * ircd/m_endburst.c: remove some dead code
7699
7700         * ircd/m_die.c: remove some dead code
7701
7702         * ircd/m_desynch.c: remove some dead code
7703
7704         * ircd/m_destruct.c: remove some dead code
7705
7706         * ircd/m_defaults.c: remove some dead code
7707
7708         * ircd/m_create.c: remove some dead code, along with an #if 1
7709
7710         * ircd/m_cprivmsg.c: remove some dead code
7711
7712         * ircd/m_connect.c: remove some dead code
7713
7714         * ircd/m_close.c: remove some dead code
7715
7716         * ircd/m_clearmode.c: remove some dead code
7717
7718         * ircd/m_burst.c: remove some dead code
7719
7720         * ircd/m_away.c: remove some dead code
7721
7722         * ircd/m_admin.c: remove some dead code
7723
7724         * ircd/listener.c (accept_connection): remove some dead code
7725
7726         * ircd/ircd_reply.c (need_more_params): remove some dead code
7727
7728         * ircd/channel.c (add_banid): remove some dead code
7729
7730         * include/support.h: remove some dead code
7731
7732         * include/querycmds.h: remove some dead code
7733
7734         * doc/readme.chroot: document how to do chroot operation
7735
7736 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
7737
7738         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
7739         force bin directory to be created if necessary prior to
7740         installation; run make depend
7741
7742         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
7743         the ${srcdir}
7744
7745         * Makefile.in: tune to detect Makefile.in changes in
7746         subdirectories and to create installation directory indicated by
7747         ${prefix}
7748
7749         * ircd/whocmds.c (count_users): routine to count the number of
7750         users matching a given user@host mask
7751
7752         * ircd/s_err.c: add error messages for ERR_LONGMASK,
7753         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
7754
7755         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
7756         from operators; only set GLINE_OPERFORCE flag if oper has the
7757         PRIV_WIDE_GLINE privilege
7758
7759         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
7760         maximum number of users a G-line can impact before it has to be
7761         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
7762         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
7763         operators to use ! to force a wide G-line to be set
7764
7765         * ircd/gline.c: make make_gline() be called with separate user and
7766         host arguments, and not call canon_userhost() directly; implement
7767         gline_checkmask() to verify that a host mask is acceptable; move
7768         BADCHAN check up in gline_add(), and check passed-in mask under
7769         certain circumstances for acceptability; fix call to
7770         sendto_opmask_butone() to handle separation of userhost into user
7771         and host in gline_add(); update call to make_gline()
7772
7773         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
7774         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
7775         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
7776
7777         * include/whocmds.h (count_users): declare routine to count users
7778         matching a given user@host mask
7779
7780         * include/numeric.h: added three new error returns: ERR_LONGMASK
7781         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
7782         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
7783         contains wildcards in the wrong places
7784
7785         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
7786         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
7787
7788         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
7789         to signal to gline_add() that the operator attempted to force the
7790         G-line to be set
7791
7792         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
7793
7794         * doc/readme.gline: update to document new "!" prefix to a G-line
7795         user@host mask
7796
7797         * doc/readme.features: document GLINEMAXUSERCOUNT,
7798         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
7799
7800         * doc/example.conf: update to mention new features along with
7801         their defaults
7802
7803 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
7804
7805         * doc/example.conf: updated example.conf from Braden
7806         <dbtem@yahoo.com>
7807
7808         * include/supported.h: forward-port from pl15
7809
7810 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
7811
7812         * ircd/whocmds.c: include ircd_policy.h and implement
7813         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
7814
7815         * ircd/m_whois.c: forward-port of the idle-time hiding code from
7816         pl15; this also required passing parc into do_whois(), which also
7817         meant passing parc into do_wilds()--*sigh*
7818
7819         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
7820         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
7821
7822 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
7823
7824         * tools/wrapper.c: add a wrapper program that can be used to
7825         adjust file descriptor limits and root directories; program must
7826         be run as root--NOT SETUID!--and given appropriate -u arguments
7827
7828         * doc/readme.log: documentation of how to configure logging
7829
7830         * doc/readme.features: documentation of each feature (except for
7831         logging)
7832
7833 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
7834
7835         * Makefile.in (config): add a deprecation notice with a pointer to
7836         tools/transition
7837
7838         * tools/transition: shell script to convert old compile-time
7839         options into new compile-time options and appropriate F-lines
7840
7841         * tools/mkchroot: shell-script to prepare the chroot area by
7842         copying over all the necessary libraries so they can be found
7843
7844 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
7845
7846         * INSTALL: partial update of INSTALL for u2.10.11 release...
7847
7848 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
7849
7850         * ircd/table_gen.c (makeTables): finally got tired of the
7851         "overflow in implicit conversion" warning, so just got rid of it
7852         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
7853         differences in the tables generated
7854
7855 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
7856
7857         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
7858         if a client is in the STAT_CONNECTING status
7859
7860 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
7861
7862         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
7863         into sendcmdto_one(); define new sendcmdto_prio_one(), which
7864         places the message into the priority queue
7865
7866         * ircd/s_user.c (hunt_server_prio_cmd): definition of
7867         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
7868         instead of sendcmdto_one()
7869
7870         * ircd/m_settime.c: use sendcmdto_prio_one() and
7871         hunt_server_prio_cmd() to send SETTIME
7872
7873         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
7874
7875         * include/send.h: removed declaration for unused vsendcmdto_one();
7876         added a declaration for sendcmdto_prio_one()
7877
7878         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
7879         sendcmdto_prio_one()
7880
7881         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
7882         put in the server's priority queue, too...
7883
7884         * ircd/ircd.c: don't check LPATH for accessibility at all
7885
7886 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
7887
7888         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
7889         command if we're configured as a hub; send individual server flags
7890         in SERVER commands
7891
7892         * ircd/s_bsd.c (completed_connection): send a +h flag in our
7893         SERVER command if we're configured as a hub
7894
7895         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
7896         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
7897         flag for a server; +hs sets both flags; also modify CMD_SERVER
7898         format string to send the flags
7899
7900         * include/client.h: define two new flags, FLAGS_HUB and
7901         FLAGS_SERVICE to mark services and hubs as such; define testing
7902         macros, setting macros
7903
7904         * ircd/s_user.c: remove deprecated struct Gline* argument to
7905         register_user(); remove GLINE rebroadcast; do not send GLINE
7906         acknowledgement parameter to NICK; do not look for GLINE
7907         acknowledgement parameter to NICK while parsing
7908
7909         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
7910         argument to server_estab(); do not send JUPE/GLINE acknowledgement
7911         parameters for SERVER or NICK
7912
7913         * ircd/m_user.c (m_user): remove deprecated argument to
7914         register_user()
7915
7916         * ircd/m_server.c: remove deprecated argument to server_estab();
7917         remove documentation comment regarding JUPE acknowledgement
7918         parameter to SERVER; remove JUPE rebroadcast
7919
7920         * ircd/m_pong.c (mr_pong): remove deprecated argument to
7921         register_user()
7922
7923         * ircd/m_nick.c: remove documentation comment regarding GLINE
7924         acknowledgement parameter to NICK
7925
7926         * ircd/jupe.c: use user's real name in JUPE server notices if
7927         HEAD_IN_SAND_SNOTICES is defined
7928
7929         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
7930         setuid code; correct ancient DEBUG vs DEBUGMODE typo
7931
7932         * ircd/gline.c: use user's real name in GLINE server notices if
7933         HEAD_IN_SAND_SNOTICES is defined
7934
7935         * ircd/channel.c (modebuf_flush_int): make apparent source be
7936         local server, not oper's server; use user's real name in hack
7937         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
7938
7939         * include/s_user.h: remove struct Gline pre-declaration; remove
7940         deprecated struct Gline argument from register_user()
7941
7942         * include/s_serv.h: remove struct Jupe pre-declaration; remove
7943         deprecated struct Jupe argument from server_estab()
7944
7945 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
7946
7947         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
7948         changes required to control remote stats
7949
7950         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
7951         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
7952         [forward-port from pl15]
7953
7954         * ircd/m_whowas.c (m_whowas): report server name only if requester
7955         is an operator [forward-port from pl15]
7956
7957         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
7958         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
7959         and obtain the report from the user's server [forward-port from
7960         pl15]
7961
7962         * ircd/m_who.c: add missing include for ircd_policy.h
7963         [forward-port from pl15]
7964
7965         * ircd/m_version.c (m_version): require oper access for remote
7966         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
7967
7968         * ircd/m_time.c (m_time): require oper access for remote /time if
7969         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
7970
7971         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
7972         missing semicolon [forward-port from pl15]
7973
7974         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
7975         kills [forward-port from pl15]
7976
7977         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
7978         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
7979
7980         * ircd/m_lusers.c (m_lusers): require oper access for remote
7981         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
7982
7983         * ircd/m_burst.c (ms_burst): server-added bans are stored using
7984         local server name, to hide remote server names; modes also are to
7985         originate from the local server [forward-port from pl15]
7986
7987         * ircd/m_admin.c (m_admin): require oper access for remote /admin
7988         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
7989
7990         * ircd/channel.c (add_banid): if a server is adding a ban, use my
7991         server name to hide the remote server's name [forward-port from
7992         pl15]
7993
7994         * ircd/Makefile.in: ran make depend
7995
7996         * include/s_stats.h: hunt_stats() has to have an extra argument to
7997         support the forward-port from pl15
7998
7999         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
8000         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
8001
8002         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
8003         forgot to check in the events branch
8004
8005 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
8006
8007         * ircd/res.c (init_resolver): don't start DNS expires with a 0
8008         relative timeout--if the server starts slow, timeouts could be
8009         messy...there's probably a better solution, but this'll do for now
8010
8011         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
8012         headers very well; include stropts.h; define an os_set_tos()
8013
8014         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
8015         os_generic.c
8016
8017         * ircd/ircd.c: if there are no C-lines, we don't want to have a
8018         timer that expires at the absolute time of 0--it kinda blocks all
8019         the other timers!
8020
8021         * ircd/engine_devpoll.c: some includes for open(); declare errcode
8022         and codesize in engine_loop()
8023
8024         * ircd/list.c (free_client): remove bogus check on timer active
8025         flag
8026
8027         * ircd/s_auth.c: pull out destruction code in
8028         auth_timeout_request() into an externally-visible
8029         destroy_auth_request(); manage cli_auth pointer in client
8030         structure; use it for an extra assertion check
8031
8032         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
8033         debugging notices to show flow when deallocating
8034         connections/clients; call destroy_auth_request() when free'ing a
8035         client that has an auth outstanding; don't free the connection if
8036         the process timer is unmarked but still active
8037
8038         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
8039         and reset it before calling the event handler for an ET_DESTROY
8040         event
8041
8042         * include/s_auth.h (destroy_auth_request): declare
8043         destroy_auth_request(), which can be used to destroy an
8044         outstanding auth request if a client socket goes away before the
8045         auth exchange is completed
8046
8047         * include/ircd_events.h: add an active flag to keep track of
8048         whether or not particular generators are active, for the
8049         convenience of functions using the API
8050
8051         * include/client.h: add a pointer for auth requests to struct
8052         Connection so we can kill outstanding auth requests if a client
8053         socket closes unexpectedly
8054
8055         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
8056         the sock or timer callback; take that into account in the assert
8057
8058         * ircd/list.c: add magic number checking and setting--magic
8059         numbers are zero'd on frees to detect double-frees; add back
8060         setting of cli_from() to 0 to break the back-link from the struct
8061         Connection (duh)
8062
8063         * ircd/ircd.c: set me's magic number correctly
8064
8065         * include/client.h: define magic numbers and accessor/verifier
8066         macros
8067
8068         * ircd/list.c: assert that dealloc_client() is called with
8069         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
8070         dealloc_client(); don't mess with cli_from(cptr)
8071
8072         * ircd/s_bsd.c: only attempt to dealloc a connection if the
8073         associated client has already been destroyed, or at least delinked
8074
8075 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
8076
8077         * ircd/list.c (free_client): only try to delete the socket when
8078         the fd hasn't already been closed, avoiding a double-free
8079
8080         * ircd/list.c (free_connection): make sure the client is really
8081         gone before doing away with the connection
8082
8083         * ircd/s_bsd.c: record that socket has been added in con_freeflag
8084         field; queue a socket_del() as soon as the socket is close()'d;
8085         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
8086         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
8087         then dealloc the connection if safe; mark socket as dead when
8088         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
8089         to client_timer_callback(); dealloc connection if safe upon
8090         ET_DESTROY event in client_timer_callback()
8091
8092         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
8093         the connection if both socket and timer have been destroyed;
8094         destroy both socket and timer explicitly and carefully
8095
8096         * include/client.h: replace the con_timer field with a
8097         con_freeflag field, to indicate what still needs freeing; define
8098         the freeflags
8099
8100         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
8101         become 0
8102
8103         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
8104         become 0
8105
8106         * ircd/s_bsd.c: add some extra assertions to try to track down a
8107         corruption problem
8108
8109         * ircd/engine_select.c (engine_loop): add an extra assert to try
8110         to track down a corruption problem
8111
8112         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
8113         track down a corruption problem
8114
8115         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
8116         to track down a corruption problem
8117
8118         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
8119         empty during processing; add an extra assert to try to track down
8120         a corruption problem
8121
8122         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
8123         entries
8124
8125 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
8126
8127         * ircd/s_bsd.c (client_sock_callback): client is no longer
8128         blocked, so we must mark it as unblocked
8129
8130         * ircd/engine_select.c: add Debug() calls galore; add handling for
8131         SS_NOTSOCK; use a dummy sock variable to keep things from
8132         disappearing on us; correct timeout calculation; update nfds for
8133         efficiency
8134
8135         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
8136         remove a spurious "if (sock)" which will always be true; update
8137         nfds for efficiency
8138
8139         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
8140         SS_NOTSOCK (just in case); correct timeout calculation
8141
8142         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
8143         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
8144
8145         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
8146         pretty-indent numbers
8147
8148         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
8149         case--it's not a socket; the check for writability is most likely
8150         not needed, but present for completeness
8151
8152 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
8153
8154         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
8155         no newline flag is set; call read_packet() when the timer expires,
8156         regardless of what's in the buffer--read_packet() should be able
8157         to deal properly
8158
8159         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
8160         sent to clients to include the client nickname (duh)
8161
8162         * ircd/ircd_events.c: don't destroy a timer if it's already marked
8163         for destruction; replace a missing ! in socket_del()
8164
8165         * ircd/engine_poll.c (engine_loop): reference a temporary variable
8166         so we don't have to worry about sockList[i] going away
8167
8168         * ircd/s_bsd.c (client_sock_callback): add Debug messages
8169
8170         * ircd/s_auth.c: add Debug messages all over the place
8171
8172         * ircd/ircd_events.c: add and edit some Debug messages; add a list
8173         of routines to convert some of the enums and flags from numbers
8174         into human-readable strings for the Debug messages
8175
8176         * ircd/engine_poll.c: hack some Debug messages to use the new name
8177         conversion routines in ircd_events.c; add an extra assert for a
8178         condition that shouldn't ever happen; apparently recv() can return
8179         EAGAIN when poll() returns readable--I wonder why...
8180
8181         * include/ircd_events.h: declare some helper routines under
8182         DEBUGMODE
8183
8184 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
8185
8186         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
8187         check
8188
8189         * ircd/s_auth.c: add more Debug messages
8190
8191         * ircd/list.c (make_client): add an extra assertion check
8192
8193         * ircd/ircd_events.c (socket_events): don't call the engine events
8194         changer if we haven't actually made any changes to the event mask
8195
8196         * ircd/uping.c: add some Debug messages
8197
8198         * ircd/s_stats.c: document new /STATS e
8199
8200         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
8201
8202         * ircd/s_bsd.c: remove static client_timer variable; in
8203         read_packet(), if there's still data in the client's recvQ after
8204         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
8205         of client_sock_callback to handle destroying the timer properly;
8206         rewrote client_timer_callback from scratch to be called on an
8207         individual client
8208
8209         * ircd/m_stats.c: add /STATS e to report the engine name
8210
8211         * ircd/list.c: deal with con_timer field in struct Connection
8212         properly; correct a core-level bug in remove_client_from_list--if
8213         the client is the only one in the list, we try to update
8214         GlobalClientList's cli_prev pointer--not good
8215
8216         * ircd/ircd.c: remove call to init_client_timer()
8217
8218         * ircd/engine_poll.c: made Debug messages more uniform by
8219         prepending "poll:" to them all; corrected an off-by-one error that
8220         caused poll_count to be 1 less than the actual count and removed
8221         my work-around; added Debug messages to indicate which socket is
8222         being checked and what the results are
8223
8224         * ircd/Makefile.in: ran a make depend
8225
8226         * include/s_bsd.h: remove init_client_timer(), since we're doing
8227         it differently now
8228
8229         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
8230         engine name
8231
8232         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
8233         reports for non-opers
8234
8235         * include/client.h: add con_timer and con_proc fields to struct
8236         Connection and define accessor macros--con_timer marks that
8237         con_proc contains a valid timer, and con_proc is used to pace user
8238         data
8239
8240         * ircd/s_bsd.c (close_connection): let free_client() destroy the
8241         socket
8242
8243         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
8244         auth has begun on a client
8245
8246         * ircd/ircd_events.c: ensure that event_execute() is called with a
8247         non-NULL event; modify event_add() macro to properly zero list
8248         bits; modify gen_dequeue() to not try to clip it out of a list
8249         it's already been clipped out of; change signal socket
8250         initialization to use state SS_NOTSOCK; permit timeout values of
8251         0 in add_timer(); add many Debug calls; change socket_del() and
8252         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
8253         timer_run() instead of GEN_DESTROY so that event_generate() will
8254         pass on the events; remove the switch and replace with a simpler
8255         if-then-else tree in timer_run(); don't allow destroyed sockets to
8256         be destroyed again, nor their states or event masks to be changed
8257
8258         * ircd/ircd.c: initialize "running" to 1
8259
8260         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
8261         messages all over the place; fix a counting problem in
8262         engine_add(); turn wait into a signed integer and set it to -1
8263         only if timer_next() returns 0; adjust wait time to be relative;
8264         don't call gen_ref_dec() if socket disappeared while we were
8265         processing it
8266
8267         * include/ircd_events.h: the pipe for signals is not a socket, so
8268         we must mark it as such--added SS_NOTSOCK for that special socket;
8269         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
8270         for the benefit of timer_run()
8271
8272         * configure.in: add --enable-pedantic and --enable-warnings to
8273         turn on (and off) -Wall -pedantic in CFLAGS
8274
8275 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
8276
8277         * ircd/s_conf.c: change "s_addr" element accesses to "address"
8278         element accesses
8279
8280         * include/s_conf.h: on some systems, "s_addr" is a macro; use
8281         "address" instead
8282
8283 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
8284
8285         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
8286         void in this file; add a missing semi-colon; declare errcode,
8287         codesize
8288
8289         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
8290
8291         * ircd/s_user.c (register_user): comment out spurious reference to
8292         nextping
8293
8294         * ircd/s_serv.c (server_estab): comment out spurious reference to
8295         nextping
8296
8297         * ircd/s_conf.c (read_configuration_file): comment out spurious
8298         reference to nextping and nextconnect
8299
8300         * ircd/s_bsd.c: comment out some spurious references to formerly
8301         global (now non-existant) variables; correct a couple of typos
8302
8303         * ircd/s_auth.c: pre-declare some functions referenced in the
8304         callback; correct a typo
8305
8306         * ircd/res.c (start_resolver): pass errno value of ENFILE
8307
8308         * ircd/listener.c (accept_connection): you know your API is messed
8309         up when...variables that shouldn't have been global crop up in
8310         other files
8311
8312         * ircd/list.c (free_client): substitution of == for =
8313
8314         * ircd/ircd_signal.c: include assert.h for assertion checking;
8315         check ev_data() to find out what signal generated event
8316
8317         * ircd/ircd_events.c: some references to the variable "timer"
8318         should have been references to the variable "ptr"
8319
8320         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
8321         ev_timer(ev) is already a timer pointer; declare codesize as a
8322         size_t to correct signedness issue; use timer_next(), not
8323         time_next()
8324
8325         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
8326         select fd out of struct pollfd in assertion checking; declare
8327         errcode and codesize; use timer_next(), not time_next()
8328
8329         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
8330         use function timer_next(), not time_next()
8331
8332         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
8333         use function timer_next(), not time_next()
8334
8335         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
8336         compiled sources; do make depend
8337
8338         * include/list.h: pre-declare struct Connection
8339
8340         * include/ircd_events.h (gen_ref_inc): cast to the right structure
8341         name
8342
8343         * include/s_auth.h: duh; missing */
8344
8345 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
8346
8347         * ircd/send.c: update write events status after sending data or
8348         accumulating data to be sent
8349
8350         * ircd/m_list.c (m_list): update write events status after
8351         canceling a running /list
8352
8353         * ircd/channel.c (list_next_channels): update write events status
8354         after listing a few channels
8355
8356         * ircd/s_bsd.c: extensive changes to update to new events model;
8357         remove on_write_unblocked() and the two implementations of
8358         read_message(), which have been deprecated by this change
8359
8360         * ircd/s_auth.c: set the socket events we're interested in for
8361         clients; simplify some logic that does the connect_nonb followed
8362         by the socket_add
8363
8364         * ircd/list.c: define free_connection() to free a connection
8365         that's become freeable once the struct Socket has been
8366         deallocated; fix up free_client() to take this new behavior into
8367         account
8368
8369         * ircd/ircd.c: call init_client_timer()
8370
8371         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
8372         to register connect-in-progress with events system; declare
8373         init_client_timer() (HACK!) to preserve rate-limiting behavior
8374
8375         * include/list.h: declare new free_connection()
8376
8377         * include/client.h: add a struct Socket to struct Connection
8378
8379 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
8380
8381         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
8382         SIGTERM into event callbacks; perform the actions in the
8383         callbacks, since they're not called in the context of the signal;
8384         set up the signal callbacks in the event engine
8385
8386         * ircd/ircd_events.c (signal_callback): we're supposed to look for
8387         a specific signal; don't generate an event if there is no signal
8388         structure for it
8389
8390         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
8391         connect_timer and ping_timer; massage try_connections() and
8392         check_pings() into timer callbacks that re-add themselves at the
8393         right time; remove ircd.c's "event_loop()"; initialize the event
8394         system and the connect_timer and ping_timer
8395
8396         * ircd/uping.c: correct a couple more typos
8397
8398         * ircd/s_auth.c: rework to use new events system
8399
8400         * ircd/os_solaris.c (os_connect_nonb): update to new interface
8401
8402         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
8403
8404         * ircd/os_linux.c (os_connect_nonb): update to new interface
8405
8406         * ircd/os_generic.c (os_connect_nonb): update to new interface
8407
8408         * ircd/os_bsd.c (os_connect_nonb): update to new interface
8409
8410         * include/s_auth.h: remove deprecated members of struct
8411         AuthRequest, replacing them with struct Socket and struct Timer
8412         structures; add flags to indicate when these structures have been
8413         released by the event system; remove the deprecated
8414         timeout_auth_queries()
8415
8416         * include/ircd_osdep.h (os_connect_nonb): connect could complete
8417         immediately, so change the interface to handle that possibility
8418
8419         * ircd/uping.c (uping_server): noticed and corrected a typo
8420
8421         * ircd/listener.c: set up to use ircd_event's struct Socket by
8422         adding an socket_add() call to inetport(), replacing
8423         free_listener() with socket_del() in close_listener(), and
8424         reworking accept_connection to be called as the callback
8425
8426         * ircd/ircd.c: add a call to IPcheck_init()
8427
8428         * ircd/IPcheck.c: remove IPcheck_expire(); rework
8429         ip_registry_expire() to be called from a timer; write
8430         IPcheck_init() to set up the expiration timer (hard-coded for a
8431         60-second expiration time)
8432
8433         * include/listener.h: add a struct Socket to the struct Listener;
8434         remove accept_connection()
8435
8436         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
8437
8438 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
8439
8440         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
8441         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
8442
8443         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
8444         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
8445
8446         * ircd/engine_poll.c: include config.h
8447
8448         * ircd/engine_kqueue.c: include config.h
8449
8450         * ircd/engine_devpoll.c: include config.h
8451
8452         * ircd/Makefile.in: include engine sources in compilation and make
8453         depend steps
8454
8455         * configure.in: add checks for enabling the /dev/poll- and
8456         kqueue-based engines
8457
8458         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
8459
8460         * ircd/Makefile.in: work in the engine sources
8461
8462 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
8463
8464         * ircd/m_settime.c: include ircd_snprintf.h
8465
8466         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
8467         parens around a construct that had both || and &&
8468
8469         * ircd/chkconf.c: #include "config.h" to get some important
8470         definitions
8471
8472         * ircd/Makefile.in: revamp ircd makefile for new build system
8473
8474         * doc/Makefile.in: revamp doc makefile for new build system
8475
8476         * config/*: Removed old build system files
8477
8478         * stamp-h.in: a stamp file
8479
8480         * install-sh: install-sh for new build system
8481
8482         * configure.in: configure.in for new build system
8483
8484         * configure: configure script for new build system (built by
8485         autoconf)
8486
8487         * config.sub: config.sub for new build system
8488
8489         * config.h.in: config.h.in for new build system (built by
8490         autoheader)
8491
8492         * config.guess: config.guess for new build system
8493
8494         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
8495         1.4)
8496
8497         * acinclude.m4: aclocal.m4 macros for new build system
8498
8499         * acconfig.h: config.h skeleton for new build system
8500
8501         * Makefile.in: modify for new build system
8502
8503 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
8504
8505         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
8506
8507         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
8508
8509         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
8510
8511 2001-05-01  Perry Lorier       <Isomer@coders.net>
8512         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
8513         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
8514                 when you have far far too many sockets in use.
8515         * {include,ircd}/iauth.c: A start on iauth support.
8516
8517 2001-05-01  Perry Lorier       <Isomer@coders.net>
8518         * ircd/s_err.c: Suggested wording change.
8519         * ircd/s_user.c: Users aren't target limited against +k users.
8520         * ircd/chkconf.c: Made it compile again, who knows if it works, but
8521                 now I can at least make install
8522         * various: Cleanups on m_*.c files.
8523
8524
8525 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
8526
8527         * ircd/s_misc.c (exit_client): make netsplit server notice say the
8528         right thing
8529
8530         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
8531         change to make Khaled happy...
8532
8533         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
8534         (do_whois): duh...
8535
8536 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
8537
8538         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
8539         turned up no more bugs
8540
8541         * ircd/ircd.c: use /* */ comments instead of // comments--all the
8542         world's not gcc :(
8543
8544         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
8545         // comments--all the world's not gcc :(
8546
8547         * ircd/runmalloc.c: finally garbage-collect unused file
8548
8549         * include/runmalloc.h: finally garbage-collect unused file
8550
8551         * ircd/<multiple files>: addition of '#include "config.h"' before
8552         all other includes in most .c files
8553
8554         * include/<multiple files>: remove includes of config.h, which are
8555         now going into the raw .c files
8556
8557 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
8558
8559         * ircd/m_whois.c (do_whois): display proper server name if the
8560         user is looking up himself
8561
8562         * ircd/m_who.c (m_who): disable match by servername or display of
8563         server names by non-opers
8564
8565         * include/ircd_policy.h: add define for
8566         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
8567         of CFV 165
8568
8569 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
8570
8571         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
8572         when we do a /stats k
8573
8574         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
8575         users from turning on +s and +g
8576
8577         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
8578         net.split notice
8579
8580         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
8581         /map for users
8582
8583         * ircd/m_whois.c (do_whois): pull-up of server name masking for
8584         /whois
8585
8586         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
8587         functions, pull-up
8588
8589         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
8590
8591         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
8592
8593         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
8594
8595         * ircd/channel.c (channel_modes): pull-up of channel key display
8596         as *
8597
8598         * include/ircd_policy.h: pull-up of ircd_policy.h
8599
8600         * include/client.h: pull-up of Set/ClearServNotice()
8601
8602         * ircd/gline.c (do_gline): report client name in G-line message
8603         (pull-up)
8604
8605         * ircd/s_user.c (register_user): pull-up--show IP address in some
8606         server notices dealing only with users; report which connection
8607         class has filled up
8608
8609         * ircd/s_stats.c (report_deny_list): use conf->flags &
8610         DENY_FLAGS_IP insteaf of conf->ip_kill
8611
8612         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
8613         insteaf of conf->ip_kill
8614
8615         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
8616         K-line by real name
8617
8618         * include/s_conf.h: use a flags field in struct DenyConf; define
8619         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
8620         pull-up of K-line by real name
8621
8622         * ircd/m_trace.c: pull-up of IP show for user connections
8623
8624         * doc/example.conf: pull-up of the realname K-line documentation
8625
8626         * ircd/ircd.c: forward port of pid file advisory locking mechanism
8627
8628 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
8629
8630         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
8631         all servers, rather than to only servers that have +w/+g/whatever
8632         users on them; among other things, this removes that atrocity
8633         known as sentalong[] from this function
8634
8635         * ircd/m_admin.c: must include ircd.h to declare "me"; must
8636         include hash.h to declare FindUser()
8637
8638         * ircd/m_wallusers.c: implementation of WALLUSERS
8639
8640         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
8641
8642         * ircd/m_wallops.c: only send WALLOPS to opers
8643
8644         * ircd/parse.c: add WALLUSERS command to parser table
8645
8646         * include/handlers.h: declare wallusers handlers
8647
8648         * include/msg.h: add WALLUSERS command
8649
8650         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
8651         flag, send only to appropriate opers
8652
8653 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
8654
8655         * ircd/uping.c: refit to use the new events interface
8656
8657         * ircd/res.c: refit to use the new events interface
8658
8659         * ircd/ircd_events.c: create timer_chg(), which permits a
8660         (non-periodic) timer's expire time to be modified; change the
8661         logic in timer_run() so that timers that were re-added while the
8662         event was being processed will not be destroyed prematurely
8663
8664         * include/uping.h: include the events header, declare some extra
8665         fields in struct UPing, remove timeout value, and define some
8666         flags for marking which cleanup items have yet to be done
8667
8668         * include/ircd_events.h: add a prototype for timer_chg() to change
8669         the expire time of a running timer
8670
8671 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
8672         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
8673         
8674 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
8675
8676         * config/configure.in: Add check for OpenBSD
8677
8678         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
8679         differs from generic BSD, particularly in its handling of
8680         _XOPEN_SOURCE.
8681         
8682 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
8683
8684         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
8685         have been added by a U-lined server, rather than going through the
8686         activate/deactivate logic; propagate G-line removals by U-lined
8687         servers as well
8688
8689         * ircd/gline.c: rename propagate_gline() to gline_propagate();
8690         make gline_propagate() return an int 0 (convenience return); only
8691         update lastmod in gline_activate() and gline_deactivate() if the
8692         current lastmod is non-zero, since 0 lastmod is our flag of a
8693         U-lined server having added a G-line
8694
8695         * include/gline.h (gline_propagate): exporting the G-line
8696         propagation function
8697
8698         * ircd/m_list.c (m_list): duh; permit explicit channel name
8699         specification only when /list gets two arguments ("Kev
8700         #wasteland") rather than when /list gets more than two
8701         arguments--nice braino
8702
8703 2001-01-29  Thomas Helvey <twhelvey1@home.com>
8704
8705         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
8706         unregistered clients to spam opers with protocol violation
8707         messages. Note: the bugfix may have eliminated some useful
8708         protocol violation messages.
8709         Please send protocol violation messages explicitly from the
8710         functions they are discovered in, you have much better context
8711         for the error there and it helps to document the behavior of the
8712         server. This was also a design bug in that it violated the
8713         "A function should do one thing" heuristic. Patching this one
8714         would have resulted in a continuous spawning of other bugs over
8715         the next 3 years, so I killed it. Check around for stuff this
8716         broke and readd the calls to protocol_violation in the functions
8717         that need to send the message.
8718
8719 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
8720
8721         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
8722         already existed, then the logic would (attempt to) skip it, but
8723         would not free the ban string; now the ban string is free'd and
8724         the ban count is decremented, releasing the ban for use
8725
8726         * ircd/s_user.c: make send_umode_out() take a prop argument
8727         instead of testing for the PRIV_PROPAGATE privilege itself; fix
8728         set_umode() to use this new argument, calculating it before
8729         calculating the new privileges for a -o'd user
8730
8731         * ircd/m_oper.c (m_oper): pass the new prop argument to
8732         send_umode_out()
8733
8734         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
8735         that we're not actually going to add because they already exist;
8736         test that particular bit before adding to the linked list
8737
8738         * include/s_user.h: add a prop argument to send_umode_out() to
8739         indicate whether or not to propagate the user mode
8740
8741 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
8742
8743         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
8744         it would have written; upper-bound the number to prevent overflows
8745         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
8746         into account the fact that ircd_vsnprintf() already takes the
8747         terminal \0 into account
8748
8749 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
8750
8751         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
8752         down an apparent buffer overflow; remove msgq_map(), since it's no
8753         longer used anywhere; slight tweaks to prevent off-by-one errors,
8754         but these can't explain the problems we've seen
8755
8756         * include/msgq.h: remove msgq_map(), since it's no longer used
8757         anywhere
8758
8759 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
8760
8761         * ircd/s_user.c (set_nick_name): call client_set_privs() after
8762         parsing user modes
8763
8764 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
8765
8766         * ircd/s_bsd.c (read_message): fix a typo in the select version of
8767         read_message()
8768
8769         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
8770         its argument to be an lvalue, which means we can't use
8771         whowas_clean()'s handy-dandy "return ww" feature
8772
8773         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
8774
8775 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
8776
8777         * ircd/ircd_events.c (timer_run): it's possible that the timer got
8778         deleted during the callback processing, so don't go to the bother
8779         of requeuing it if the destroy flag is set
8780
8781         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
8782         out of config.h if this is a *BSD; include errno.h (oops);
8783         decrement error count after an hour using a timer; use FD_SETSIZE
8784         constant instead of IRCD_FD_SETSIZE constant; fill in event
8785         processing code
8786
8787         * ircd/engine_poll.c: include errno.h (oops); decrement error
8788         count after an hour using a timer; fill in event processing code
8789
8790         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
8791         count after an hour using a timer; assert events filter is either
8792         EVFILT_READ or EVFILT_WRITE; fill in event processing code
8793
8794         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
8795         count after an hour using a timer; fill in event processing code
8796
8797 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
8798
8799         * ircd/client.c: fixed feattab; basically, when I changed features
8800         to use small integers specifying bit positions, instead of the
8801         bits themselves, I forgot to update feattab to not | these
8802         privileges together; also fixed a bug in the antiprivs masking
8803         loop in client_set_privs()--last index wouldn't get parsed
8804
8805 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
8806
8807         * ircd/ircd_events.c: call event_generate() with new data
8808         argument; make it set that field in struct Event; make
8809         socket_add() return the value of the eng_add callback
8810
8811         * ircd/engine_select.c: make engine_add() return a
8812         successful/unsuccessful status; add bounds-checking outside of an
8813         assert; use accessor macros; use log_write(), not the deprecated
8814         ircd_log(); add an assert to engine_loop() to double-check for
8815         data structure corruption
8816
8817         * ircd/engine_poll.c: make engine_add() return a
8818         successful/unsuccessful status; add bounds-checking outside of an
8819         assert; use accessor macros; use log_write(), not the deprecated
8820         ircd_log(); add an assert to engine_loop() to double-check for
8821         data structure corruption
8822
8823         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
8824
8825         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
8826
8827         * include/ircd_events.h: define some accessor macros; add ev_data
8828         to struct Event for certain important data--errno values, for
8829         instance; make EngineAdd callback tell us if it was successful or
8830         not; add extra argument to event_generate(); make socket_add()
8831         return the status from EngineAdd
8832
8833 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
8834
8835         * ircd/ircd_events.c: pass initializer information about how many
8836         total _filedescriptors_ may be opened at once
8837
8838         * ircd/ircd.c: use exported "running" instead of unexported
8839         thisServer.running
8840
8841         * ircd/engine_select.c: implementation of an event engine based on
8842         select()
8843
8844         * ircd/engine_poll.c: implementation of an event engine based on
8845         poll()
8846
8847         * include/ircd_events.h: pass the engine initializer an integer
8848         specifing how many _filedescriptors_ may be opened at once
8849
8850         * include/ircd.h: running has to be exported for the engine_*
8851         event loops
8852
8853 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
8854
8855         * ircd/ircd_events.c: include some needed headers; add some
8856         comments; make evEngines[] const; bundle sig_sock and sig_fd into
8857         a struct named sigInfo; rework struct evInfo to have a queue of
8858         _generators_, and only when threaded; added a gen_init() function
8859         to centralize generator initialization; fix various compile-time
8860         errors; rework event_add() for new queueing scheme and checked for
8861         compile-time errors; add casts where needed; spell evEngines[]
8862         correctly; make engine_name() return const char*
8863
8864         * include/ircd_events.h: type EventCallBack depends on struct
8865         Event, so pre-declare it; put _event_ queue into generators, and
8866         only when threaded; give engine data a union to store both ints
8867         and pointers; make engine name a const; fix gen_ref_dec() macro;
8868         make engine_name() return a const char*
8869
8870         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
8871         down with the non-static functions; modify event_execute() to use
8872         the new gen_ref_dec() to simplify code; make sure event_generate()
8873         does not generate new events for generators marked for destruction
8874
8875         * include/ircd_events.h: the engines, at least, may need to modify
8876         reference counts to keep generators from going away while
8877         something still points at them, so add reference counter
8878         manipulators and export gen_dequeue() for them
8879
8880         * ircd/ircd_events.c: set up the list of engines to try; set up
8881         the signal struct Socket; rename netInfo to evInfo; move static
8882         functions near the beginning of the file; do away with
8883         signal_signal() (since we no longer keep a signal count ourselves)
8884         and call event_generate() directly from signal_callback--also
8885         renamed some functions; allow signal_callback() to read up to
8886         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
8887         initialize the entire event system; add event_loop() to call the
8888         engine's event loop; initialize new struct GenHeader member,
8889         gh_engdata; remove timer_next(); add socket_add() function to add
8890         a socket; add socket_del() to mark a socket for deletion; add
8891         socket_state() to transition a socket between states; add
8892         socket_events() to set what events we're interested in on the
8893         socket; add engine_name() to retrieve event engine's name
8894
8895         * include/ircd_events.h: add engine data field to struct
8896         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
8897         note about states vs s_events; remove signal count; fold union
8898         Generator back into struct Event; remove count members from struct
8899         Generators; redefine engine callbacks to not take a struct
8900         Engine*; add explanatory comments to callback definitions; add
8901         some engine callbacks to handle operations; remove struct Engine
8902         flag member--can detect single flag from eng_signal member; add
8903         event_init(), event_loop(), engine_name(), and the socket_*()
8904         functions; make timer_next() a macro to avoid a function call
8905
8906 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
8907
8908         * include/ircd_events.h: rename to ircd_events.h, since it handles
8909         events, not just networking stuff; add signal support; more
8910         structural rearrangement
8911
8912         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
8913         events, not just networking stuff; add signal support; more
8914         structural rearrangement
8915
8916 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
8917
8918         * ircd/ircd_network.c: implement timer API; add reference counts
8919         appropriately
8920
8921         * include/ircd_network.h: firm up some pieces of the interface;
8922         split out members everything has into a separate structure; add
8923         reference counts; add timer API
8924
8925 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
8926
8927         * ircd/ircd_network.c: static data and event manipulation
8928         functions for new event processing system
8929
8930         * include/ircd_network.h: data structures for new event processing
8931         system
8932
8933 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
8934
8935         * ircd/whowas.c: Completely re-did the old allocation scheme by
8936         turning it into a linked list, permitting the
8937         NICKNAMEHISTORYLENGTH feature to be changed on the fly
8938
8939         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
8940         feature instead of old #define
8941
8942         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
8943         integer feature with a notify callback (whowas_realloc)
8944
8945         * ircd/client.c (client_set_privs): second memset was supposed to
8946         be over antiprivs, not privs; thanks, Chris Behrens
8947         <cbehrens@xo.com> for pointing that out...
8948
8949         * include/whowas.h: new elements for an extra linked list in
8950         struct Whowas; a notify function for feature value changes
8951
8952         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
8953
8954         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
8955
8956 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
8957
8958         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
8959         compile-time option--now in features subsystem
8960
8961         * ircd/motd.c (motd_init): rework motd_init() to be called as the
8962         notify function for MPATH and RPATH features (should probably
8963         split it up a bit, though...)
8964
8965         * ircd/m_privs.c (mo_privs): if called with no parameters, return
8966         privs of the caller, rather than an error
8967
8968         * ircd/m_list.c: pull usage message into its own function; pull
8969         list parameter processing into its own function that does not
8970         modify the contents of the parameter; add list_set_default() to
8971         set the default list parameter (uses the notify hook); rework
8972         m_list() to make use of these functions; removed dead code
8973
8974         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
8975         we have no notify handler
8976
8977         * ircd/ircd_features.c: add notify callback for notification of
8978         value changes; give mark callback an int return value to indicate
8979         whether or not to call the notify callback; fix up feature macros
8980         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
8981         string handling in feature_set() to deal with def_str being a null
8982         pointer; wrote feature_init() to set up all defaults appropriately
8983
8984         * ircd/ircd.c (main): call feature_init() instead of
8985         feature_mark(), to avoid calling notify functions while setting up
8986         defaults
8987
8988         * ircd/client.c: updated to deal with new privileges structure
8989
8990         * ircd/class.c: updated so init_class() can be called should one
8991         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
8992         DEFAULTMAXSENDQLENGTH be changed
8993
8994         * include/ircd_log.h: log_feature_mark() updated to fit with new
8995         API changes
8996
8997         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
8998         feature_init() function (found necessary since adding the notify
8999         stuff and notifying motd.c during start-up...before we defined
9000         RPATH!)
9001
9002         * include/client.h: move privs around to enable addition of more
9003         bits if necessary; based on the FD_* macros
9004
9005         * include/channel.h: declare list_set_default (actually located in
9006         m_list.c *blanche*)
9007
9008         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
9009         AVBANLEN*MAXSILES) from features subsystem
9010
9011         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
9012         anything anymore
9013
9014         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
9015         the features subsystem
9016
9017         * ircd/s_auth.c (start_auth): NODNS migrated to the features
9018         subsystem
9019
9020         * ircd/random.c: created random_seed_set() function to set seed
9021         value, along with some stuff to make ircrandom() a little more
9022         random--state preserving, xor of time instead of direct usage,
9023         etc.; it's still a pseudo-random number generator, though, and
9024         hopefully I haven't broken the randomness
9025
9026         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
9027
9028         * ircd/m_join.c: use features interface to retrieve
9029         MAXCHANNELSPERUSER
9030
9031         * ircd/ircd_features.c: add NODISP flag for super-secret features;
9032         add a whole bunch of new features migrated over from make config
9033
9034         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
9035         CONNECTTIMEOUT, and TIMESEC
9036
9037         * ircd/client.c (client_get_ping): use features interface to
9038         retrieve PINGFREQUENCY
9039
9040         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
9041         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
9042
9043         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
9044         features subsystem, we have to add something explicit
9045
9046         * ircd/channel.c: use features interface to retrieve
9047         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
9048         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
9049         and AVBANLEN
9050
9051         * ircd/Makefile.in: run make depend
9052
9053         * include/supported.h (FEATURESVALUES): update to reference
9054         feature settings
9055
9056         * include/random.h: add prototype for random_seed_set
9057
9058         * include/ircd_features.h: add several more features
9059
9060         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
9061         subsystem
9062
9063         * config/config-sh.in: feature-ized some more stuff
9064
9065         * include/motd.h: some new elements in motd.h for motd.c changes
9066
9067         * ircd/motd.c: motd_cache() now searches a list of already cached
9068         MOTD files; saves us from having duplicate caches in memory if
9069         there are two identical T-lines for two different sites...
9070
9071 2001-01-02  Perry Lorier <isomer@coders.net>
9072         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
9073         Amarande.
9074
9075 2001-01-02  Perry Lorier <isomer@coders.net>
9076         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
9077         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
9078                 to guppy for noticing, and hektik for providing the fix.
9079         * misc others: Minor cleanups, added more protocol_violations, ripped
9080                 out more P09 stuffs, bit more protocol neg stuff.
9081
9082 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
9083
9084         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
9085         space (*sigh* stupid clients...)
9086
9087         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
9088         ircd_features.[ch]
9089
9090         * ircd/s_err.c: get rid of GODMODE conditionals
9091
9092         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
9093         calls into the features subsystem for various serveropts
9094         characters
9095
9096         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
9097
9098         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
9099         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
9100         NOFLOWCONTROL conditional
9101
9102         * ircd/s_auth.c: use features subsystem to determine value of
9103         KILL_IPMISMATCH
9104
9105         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
9106         features subsystem to determine the setting of IDLE_FROM_MSG
9107
9108         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
9109
9110         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
9111         use features subsystem to get motd file names
9112
9113         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
9114         subsystem
9115
9116         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
9117         us no good; use features subsystem to figure out if we need to do
9118         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
9119         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
9120         features subsystem
9121
9122         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
9123
9124         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
9125         subsystem
9126
9127         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
9128
9129         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
9130         from getting marked if they were already set to something...
9131
9132         * ircd/ircd_features.c: add a flag to indicates read-only access;
9133         add several new features that used to be compile-time selected
9134
9135         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
9136         access to motd files (what the heck?); make sure to initialize the
9137         feature subsystem before trying to write the config file
9138
9139         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
9140         use feature_bool() to figure out if we're using the FERGUSON
9141         flusher
9142
9143         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
9144         remove the clause that creates empty files of that name; also ran
9145         make depend
9146
9147         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
9148         there is no easy way to bounds-check it at present
9149
9150         * include/querycmds.h: make sure ircd_features.h is included; use
9151         feature_str(FEAT_DOMAINNAME) in calls to match()
9152
9153         * include/ircd_features.h: many new features that used to be
9154         compile-time selected
9155
9156         * config/config-sh.in: add * to DOMAINNAME; try also using first
9157         argument to search in /etc/resolv.conf; removed many compile-time
9158         options that now can be configured through the features system
9159
9160 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
9161
9162         * doc/api/log.txt: how to use the logging API
9163
9164         * doc/api/features.txt: how to use the features API
9165
9166         * doc/api/api.txt: how to write API documentation
9167
9168         * include/ircd_features.h: rearranged a couple of features for
9169         neatness purposes
9170
9171         * ircd/ircd_features.c: cleaned up the macros some; rearranged
9172         some code to all go into the switch; rearranged a couple of
9173         features for neatness purposes
9174
9175 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9176         * ircd/os_bsd.c: Added os_set_tos for BSD users.
9177
9178 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
9179
9180         * ircd/ircd_features.c: Isomer almost got it right; you need to
9181         use F_I(), since it's an integer value, not a boolean value.  The
9182         asserts in feature_int would catch you out...  Also made the F_*
9183         macros take flags
9184
9185         * ircd/s_err.c: define RPL_PRIVS reply
9186
9187         * ircd/parse.c: put new PRIVS command into command table
9188
9189         * ircd/m_privs.c (mo_privs): message handler to report operator
9190         privileges
9191
9192         * ircd/ircd_features.c: declare new features OPER_SET and
9193         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
9194         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
9195
9196         * ircd/client.c: simplify client_set_privs() with a table that
9197         defines what features to test for; add new client_report_privs()
9198
9199         * ircd/Makefile.in: compile new m_privs.c; run make depend
9200
9201         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
9202         an operator's privileges
9203
9204         * include/msg.h: define new command: PRIVS
9205
9206         * include/ircd_features.h: create new features OPER_SET and
9207         LOCOP_SET for controlling access to /set
9208
9209         * include/handlers.h (mo_privs): declare message handler for
9210         reporting oper privileges
9211
9212         * include/client.h (client_report_privs): declare function to
9213         report what privileges an oper has
9214
9215         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
9216         report that a user is an oper if the oper doing the /whois had
9217         PRIV_SEE_OPERS
9218
9219 2000-12-17  Isomer <Isomer@coders.net>
9220         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
9221
9222 2000-12-17  Isomer <Isomer@coders.net>
9223         * ircd/os_linux.c: add TOS stuffs
9224
9225         * ircd/listener.c: add TOS stuffs
9226
9227 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
9228
9229         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
9230         to indicate a user is an oper
9231
9232         * ircd/s_user.c: clear privileges setting when deopping; don't
9233         propagate +o unless user has PRIV_PROPAGATE privilege
9234
9235         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
9236         function and replaced how the server option string is generated
9237
9238         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
9239
9240         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
9241         not to indicate the user is an operator
9242
9243         * ircd/m_who.c: use HasPriv to determine whether or not a user
9244         should be displayed in the list of opers
9245
9246         * ircd/m_version.c: call debug_serveropts() to get server option
9247         string
9248
9249         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
9250         whether or not to show oper status
9251
9252         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
9253         whether or not to show oper status
9254
9255         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
9256         checks with HasPriv check; remove dead code
9257
9258         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
9259         checks with HasPriv check
9260
9261         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
9262         use feature_bool to check if disabled
9263
9264         * ircd/m_oper.c (m_oper): set oper priviliges
9265
9266         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
9267         check
9268
9269         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
9270         can kill
9271
9272         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
9273         check
9274
9275         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
9276         use feature_bool to check if disabled
9277
9278         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
9279         #ifdef conditional with a HasPriv check
9280
9281         * ircd/m_gline.c (mo_gline): rework permissions checking
9282         structure; use feature_bool to check if any part is disabled
9283
9284         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
9285         check; remove dead code
9286
9287         * ircd/m_clearmode.c: use feature_bool() to detect if we're
9288         disabled; use HasPriv to figure out what we're permitted to do;
9289         only allow clearmode on moded channels
9290
9291         * ircd/ircd_features.c: define various features; use HasPriv to
9292         verify permissions to set/reset
9293
9294         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
9295         conditionals
9296
9297         * ircd/client.c (client_set_privs): function to set an oper's
9298         privileges
9299
9300         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
9301
9302         * include/whocmds.h: deconditionalize several macros and
9303         substitute appropriate calls to HasPriv()
9304
9305         * include/s_debug.h: get rid of global serveropts[]; define new
9306         function debug_serveropts() to build that string on the fly
9307
9308         * include/ircd_features.h: define some features
9309
9310         * include/client.h: add privs member to struct Connection; define
9311         various priviledges
9312
9313         * include/channel.h: no longer using IsOperOnLocalChannel; remove
9314         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
9315
9316         * doc/Configure.help: remove help information for deprecated
9317         options
9318
9319         * config/config-sh.in: remove certain deprecated options having to
9320         do with what opers can and cannot do--first stage in moving
9321         compile-time constants into the .conf
9322
9323 2000-12-16  Isomer <Isomer@coders.net>
9324         * ircd/parse.c: detect if the prefix is missing and try and recover
9325         instead of coring.
9326
9327 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
9328
9329         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
9330         code that would sometimes result in the log file not being
9331         reopened--which meant that a user could connect and get the
9332         logging output--oops
9333
9334         * ircd/Makefile.in: run make depend...
9335
9336         * ircd/s_stats.c: get rid of report_feature_list()
9337
9338         * ircd/s_err.c: add the 'bad value' error message, shift error
9339         messages over somewhat
9340
9341         * ircd/s_debug.c (debug_init): call log_debug_init with the
9342         use_tty flag
9343
9344         * ircd/s_conf.c (read_configuration_file): unmark features before
9345         reading the config file, then reset unmarked features after
9346         reading the config file
9347
9348         * ircd/m_stats.c: use feature_report() instead of
9349         report_feature_list()
9350
9351         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
9352         special 'mark' flags and use them; add the stuff needed by the
9353         features API
9354
9355         * ircd/ircd_features.c: rework the features API and add gobs of
9356         comments to try to explain what some of these complex functions
9357         are actually doing
9358
9359         * include/s_stats.h: get rid of report_feature_list(); use
9360         feature_report() instead
9361
9362         * include/numeric.h: added a new error message and shifted old
9363         values over some--this is, after all, an alpha
9364
9365         * include/ircd_log.h: log_debug_init now takes an integer to tell
9366         it if it should be using the tty; added a couple of functions
9367         required by the features API
9368
9369         * include/ircd_features.h: add an enum and some more functions to
9370         flesh out the feature API--it should now be possible to put all
9371         those compile-time constants in the config file!
9372
9373         * ircd/send.c: got the direction of the assert incorrect...
9374
9375         * ircd/send.c: implement the efficiency of flush_connections by
9376         creating a linked list of struct Connection's with queued data;
9377         also get rid of flush_sendq_except and make sure to yank
9378         connections out of the list when their sendQs become empty (notice
9379         the assertion in flush_connections!)
9380
9381         * ircd/s_bsd.c (close_connection): must yank the Connection out of
9382         the sendq list
9383
9384         * ircd/list.c (dealloc_connection): must yank the Connection out
9385         of the sendq list
9386
9387         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
9388         deprecated flush_sendq_except
9389
9390         * ircd/client.c: define a couple new helper functions for sendq
9391         threading--this will make the flush_connections function in send.c
9392         considerably more efficient by creating a linked list of
9393         Connections that have queued data to send
9394
9395         * include/send.h: remove flush_sendq_except, as it's not used
9396         anymore
9397
9398         * include/client.h: declare a couple new helper functions for the
9399         sendq threading system
9400
9401 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
9402
9403         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
9404         parse all arguments
9405
9406         * ircd/s_debug.c (count_memory): modify to report for clients and
9407         connections, not local clients and remote clients
9408
9409         * ircd/list.c: fiddle with the client-fiddling functions to take
9410         into account the divorce of struct Connection from struct Client
9411
9412         * ircd/ircd.c: define a struct Connection for me, initialize it,
9413         and link it into the right place (ewww, globals!)
9414
9415         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
9416         struct Client into struct Client and struct Connection; redefine
9417         local-portion accessor macros to go through struct Client to the
9418         struct Connection; define struct Connection accessor macros
9419
9420 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
9421
9422         * ircd/whowas.c: missed a couple of accesses to a struct Client
9423
9424         * ircd/uping.c: missed a couple of accesses to a struct Client
9425
9426         * ircd/send.c: missed a couple of accesses to a struct Client
9427
9428         * ircd/s_user.c: missed a couple of accesses to a struct Client
9429
9430         * ircd/s_misc.c: missed a couple of accesses to a struct Client
9431
9432         * ircd/s_conf.c: missed a couple of accesses to a struct Client
9433
9434         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
9435
9436         * ircd/s_auth.c: missed a couple of accesses to a struct Client
9437
9438         * ircd/res.c: missed a couple of accesses to a struct Client
9439
9440         * ircd/parse.c: missed a couple of accesses to a struct Client
9441
9442         * ircd/m_whois.c: use new accessor macros for struct Client
9443
9444         * ircd/m_who.c: use new accessor macros for struct Client
9445
9446         * ircd/m_wallchops.c: use new accessor macros for struct Client
9447
9448         * ircd/m_version.c: use new accessor macros for struct Client
9449
9450         * ircd/m_userip.c: use new accessor macros for struct Client
9451
9452         * ircd/m_userhost.c: use new accessor macros for struct Client
9453
9454         * ircd/m_user.c: use new accessor macros for struct Client
9455
9456         * ircd/m_uping.c: use new accessor macros for struct Client
9457
9458         * ircd/m_trace.c: use new accessor macros for struct Client
9459
9460         * ircd/m_topic.c: use new accessor macros for struct Client
9461
9462         * ircd/m_time.c: use new accessor macros for struct Client
9463
9464         * ircd/m_stats.c: use new accessor macros for struct Client
9465
9466         * ircd/m_squit.c: use new accessor macros for struct Client
9467
9468         * ircd/m_silence.c: use new accessor macros for struct Client
9469
9470         * ircd/m_server.c: use new accessor macros for struct Client;
9471         remove dead code
9472
9473         * ircd/m_rpong.c: use new accessor macros for struct Client
9474
9475         * ircd/m_rping.c: use new accessor macros for struct Client
9476
9477         * ircd/m_quit.c: use new accessor macros for struct Client
9478
9479         * ircd/m_privmsg.c: use new accessor macros for struct Client
9480
9481         * ircd/m_pong.c: use new accessor macros for struct Client; remove
9482         dead code
9483
9484         * ircd/m_ping.c: use new accessor macros for struct Client
9485
9486         * ircd/m_pass.c: use new accessor macros for struct Client
9487
9488         * ircd/m_part.c: use new accessor macros for struct Client
9489
9490         * ircd/m_oper.c: use new accessor macros for struct Client
9491
9492         * ircd/m_notice.c: use new accessor macros for struct Client
9493
9494         * ircd/m_nick.c: use new accessor macros for struct Client
9495
9496         * ircd/m_names.c: use new accessor macros for struct Client
9497
9498         * ircd/m_mode.c: use new accessor macros for struct Client
9499
9500         * ircd/m_map.c: use new accessor macros for struct Client
9501
9502         * ircd/m_list.c: use new accessor macros for struct Client
9503
9504         * ircd/m_links.c: use new accessor macros for struct Client;
9505         remove some dead code
9506
9507         * ircd/m_kill.c: use new accessor macros for struct Client; remove
9508         some dead code
9509
9510         * ircd/m_kick.c: use new accessor macros for struct Client
9511
9512         * ircd/m_join.c: use new accessor macros for struct Client; remove
9513         some dead code
9514
9515         * ircd/m_ison.c: use new accessor macros for struct Client
9516
9517         * ircd/m_invite.c: use new accessor macros for struct Client
9518
9519         * ircd/m_info.c: use new accessor macros for struct Client
9520
9521         * ircd/m_gline.c: use new accessor macros for struct Client
9522
9523         * ircd/m_error.c: use new accessor macros for struct Client
9524
9525         * ircd/m_create.c: use new accessor macros for struct Client
9526
9527         * ircd/m_connect.c: use new accessor macros for struct Client;
9528         removed some dead code
9529
9530         * ircd/m_burst.c: use new accessor macros for struct Client
9531
9532         * ircd/m_away.c: use new accessor macros for struct Client
9533
9534         * ircd/m_admin.c: use new accessor macros for struct Client
9535
9536         * ircd/hash.c: missed a couple of accesses to a struct Client
9537
9538         * ircd/gline.c: missed a couple of accesses to a struct Client
9539
9540         * ircd/crule.c: missed a couple of accesses to a struct Client
9541
9542         * ircd/class.c: missed an access to a struct Client
9543
9544         * ircd/channel.c: missed a couple of accesses to a struct Client
9545
9546         * ircd/IPcheck.c: missed an access to a struct Client
9547
9548         * include/querycmds.h: fix a couple of stats macros to use
9549         structure accessor macros
9550
9551         * include/client.h: change structure member names to highlight any
9552         places in the code I've missed
9553
9554 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
9555
9556         * ircd/whowas.c: use new struct Client accessor macros
9557
9558         * ircd/whocmds.c: use new struct Client accessor macros
9559
9560         * ircd/send.c: use new struct Client accessor macros
9561
9562         * ircd/s_user.c: use new struct Client accessor macros; removed
9563         some dead code
9564
9565         * ircd/s_serv.c: use new struct Client accessor macros; removed
9566         some dead code
9567
9568         * ircd/s_numeric.c: use new struct Client accessor macros
9569
9570         * ircd/s_misc.c: use new struct Client accessor macros
9571
9572         * ircd/s_debug.c: use new struct Client accessor macros
9573
9574         * ircd/s_conf.c: use new struct Client accessor macros
9575
9576         * ircd/s_bsd.c: use new struct Client accessor macros
9577
9578         * ircd/s_auth.c: use new struct Client accessor macros
9579
9580         * ircd/parse.c: use new struct Client accessor macros
9581
9582         * ircd/packet.c: use new struct Client accessor macros
9583
9584         * ircd/numnicks.c: use new struct Client accessor macros
9585
9586         * ircd/motd.c: use new struct Client accessor macros
9587
9588         * ircd/listener.c: use new struct Client accessor macros
9589
9590         * ircd/list.c: use new struct Client accessor macros
9591
9592         * ircd/jupe.c: use new struct Client accessor macros
9593
9594         * ircd/ircd_snprintf.c: use new struct Client accessor macros
9595
9596         * ircd/ircd_reply.c: use new struct Client accessor macros
9597
9598         * ircd/ircd_relay.c: use new struct Client accessor macros
9599
9600         * ircd/ircd.c: use new struct Client accessor macros
9601
9602         * ircd/gline.c: catch some instances of me.<stuff> I missed
9603         previously
9604
9605         * ircd/client.c: use cli_ instead of con_
9606
9607         * ircd/class.c: use cli_ instead of con_
9608
9609         * ircd/channel.c: use cli_ instead of con_
9610
9611         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
9612         of me.<stuff> I missed previously
9613
9614         * include/client.h: use cli_ instead of con_...seemed like a good
9615         idea at the time *shrug*
9616
9617 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
9618
9619         * ircd/hash.c: use struct Client accessor macros
9620
9621         * ircd/gline.c: use struct Client accessor macros
9622
9623         * ircd/crule.c: use struct Client accessor macros
9624
9625         * ircd/client.c: use struct Client accessor macros; remove some
9626         dead code
9627
9628         * ircd/class.c: use struct Client accessor macros
9629
9630         * ircd/channel.c: use struct Client accessor macros; remove some
9631         dead code
9632
9633         * ircd/IPcheck.c: use struct Client accessor macros
9634
9635         * include/numnicks.h: use struct Client accessor macros
9636
9637         * include/client.h: first step to divorcing struct Client and
9638         struct Connection--define accessor macros and use them
9639
9640         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
9641         uplink would remove them.  This is because the removal protocol
9642         message wasn't being sent to the uplinks.  This is fixed by fixing
9643         propagate_gline() to send the proper number of arguments depending
9644         on whether or not we're adding or deleting the Uworld gline, and
9645         by having gline_deactivate() make sure to turn off the active bit
9646         and call propagate_gline() if it's a Uworld gline
9647
9648 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
9649
9650         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
9651
9652         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
9653         anywhere intelligent...
9654
9655 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
9656
9657         * ircd/send.c (send_queued): call deliver_it with appropriate
9658         arguments
9659
9660         * ircd/s_serv.c: reorder a couple of headers--cosmetic
9661
9662         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
9663         MsgQ
9664
9665         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
9666         with appropriate iovec
9667
9668         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
9669         with appropriate iovec
9670
9671         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
9672         with appropriate iovec
9673
9674         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
9675         appropriate iovec
9676
9677         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
9678         exactly how much we're trying to write out to the fd
9679
9680         * include/s_bsd.h: make deliver_it take a struct MsgQ
9681
9682         * include/msgq.h: add a len_p argument to msgq_mapiov to help
9683         detect short writes that indicate possible socket blocking
9684
9685         * include/ircd_osdep.h: declare os_sendv_nonb()
9686
9687         * ircd/channel.c (modebuf_mode): don't add empty modes...
9688
9689 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
9690
9691         * include/send.h: add prio argument to send_buffer to select
9692         between normal and priority queues
9693
9694         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
9695         call
9696
9697         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
9698
9699         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
9700         call
9701
9702         * ircd/channel.c (send_channel_modes): add prio argument to
9703         send_buffer call
9704
9705         * ircd/send.c (send_buffer): add a prio argument to select the
9706         priority queue; update send.c functions to use it
9707
9708         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
9709         msgq_add; add a prio argument to msgq_add to select the priority
9710         queue
9711
9712         * include/msgq.h: remove msgq_prio; add a prio argument to
9713         msgq_add
9714
9715         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
9716         using msgq functions instead of dbuf functions; remove old, dead
9717         sendto_* functions; redo send_buffer to take a struct MsgBuf;
9718         rework sendcmdto_* functions to make use of the new struct MsgBuf
9719
9720         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
9721         make appropriate use of struct MsgBuf
9722
9723         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
9724         system and report it
9725
9726         * ircd/s_conf.c (read_configuration_file): use
9727         sendto_opmask_butone instead of the now dead sendto_op_mask
9728
9729         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
9730         calls on sendQ
9731
9732         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
9733
9734         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
9735         msgq_clean
9736
9737         * ircd/m_version.c: fix spelling in comments marking dead code
9738
9739         * ircd/m_userip.c (userip_formatter): restructure to make use of
9740         struct MsgBuf
9741
9742         * ircd/m_userhost.c (userhost_formatter): restructure to make use
9743         of struct MsgBuf
9744
9745         * ircd/m_stats.c: use MsgQLength on a sendQ
9746
9747         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
9748         sendQ; mark a piece of dead code
9749
9750         * ircd/m_names.c: use send_reply instead of sendto_one
9751
9752         * ircd/m_mode.c: use new mode; remove old dead code
9753
9754         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
9755
9756         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
9757         dead code
9758
9759         * ircd/listener.c (accept_connection): use sendto_opmask_butone
9760         instead of sendto_op_mask
9761
9762         * ircd/list.c (free_client): use MsgQClear to clear sendQ
9763
9764         * ircd/ircd_reply.c: remove send_error_to_client; restructure
9765         send_reply to make use of struct MsgBuf
9766
9767         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
9768         since its no longer used (at least currently)
9769
9770         * ircd/channel.c: restructure send_channel_modes to make use of
9771         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
9772         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
9773
9774         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
9775
9776         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
9777
9778         * include/send.h: send_buffer now takes a struct MsgBuf * instead
9779         of a char *; flush_sendq_except now takes no arguments, as sendq
9780         flushing currently only happens in dbuf.h and sendQ is a struct
9781         MsgQ; remove prototypes for a lot of old sendto_* functions that
9782         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
9783         no longer needed, and the latter is identical to BUFSIZE in
9784         ircd_defs.h
9785
9786         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
9787         instead of a char *; also make it return void, instead of char *
9788
9789         * include/msgq.h: add msgq_append and msgq_bufleft functions
9790
9791         * include/client.h: use a struct MsgQ instead of a struct DBuf for
9792         sendq
9793
9794         * doc/Configure.help: Remove help for compile-time options that
9795         have gone away
9796
9797         * config/config-sh.in: remove CONFIG_NEWMODE
9798
9799         * ircd/m_server.c (mr_server): don't send server IPs in any server
9800         notices
9801
9802         * ircd/msgq.c (msgq_vmake): add \r\n to messages
9803
9804 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
9805
9806         * include/msgq.h: declare the MsgQ API
9807
9808         * ircd/msgq.c: implementation of new MsgQ system
9809
9810 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
9811
9812         * ircd/ircd_features.c: #include was supposed to be for
9813           ircd_features.h, not features.h--missed when I had to do a
9814           rename because of namespace collision
9815
9816 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9817         * ircd/m_topic.c: Added missing braces that caused all remote
9818           topics to be ignored.
9819
9820 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
9821
9822         * ircd/m_create.c: I'm tired of the exit_client warning :)
9823         (ms_create): discovered that exit_client() was being called with
9824         too few arguments
9825
9826         * ircd/s_misc.c (exit_client): remove all dependance on
9827         FNAME_USERLOG, since that's now gone; log only to LS_USER
9828
9829         * ircd/s_debug.c: USE_SYSLOG no longer means anything
9830
9831         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
9832         log to LS_OPER
9833
9834         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
9835
9836         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
9837
9838         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
9839         the same purpose as LS_USER and LS_OPER
9840
9841         * config/config-sh.in: remove no longer relevant log config
9842         variables
9843
9844         * ircd/uping.c (uping_init): use log_write instead of ircd_log
9845
9846         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
9847
9848         * ircd/s_conf.c: use log_write instead of ircd_log
9849
9850         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
9851
9852         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
9853         ircd_log
9854
9855         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
9856
9857         * ircd/m_who.c: use log_write instead of write_log; no longer
9858         conditionalize on WPATH; mark dead ircd_log calls
9859
9860         * ircd/m_uping.c: mark dead ircd_log call
9861
9862         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
9863
9864         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
9865         ircd_log calls
9866
9867         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
9868
9869         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
9870         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
9871
9872         * ircd/m_kill.c: mark dead ircd_log calls
9873
9874         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
9875         ircd_log
9876
9877         * ircd/m_clearmode.c: use log_write instead of write_log; no
9878         longer conditionalize on OPATH
9879
9880         * ircd/jupe.c: use log_write instead of write_log; no longer
9881         conditionalize on JPATH
9882
9883         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
9884         function; fix a couple of bugs
9885
9886         * ircd/ircd_alloc.c: fixed a comment
9887
9888         * ircd/ircd.c: use log_write instead of ircd_log; fold server
9889         notice generation in a couple of cases
9890
9891         * ircd/gline.c: use log_write instead of write_log; no longer
9892         conditionalize on GPATH
9893
9894         * ircd/channel.c (modebuf_flush_int): use log_write instead of
9895         write_log; no longer conditionalize on OPATH
9896
9897         * ircd/Makefile.in: run make depend, since dependencies have
9898         changed
9899
9900         * doc/example.conf: add system USER to documentation
9901
9902         * include/ircd_log.h: add system USER; remove old ircd_log()
9903         declarations
9904
9905 2000-12-04  Isomer <isomer@coders.net>
9906         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
9907         'end_of_names' reply when done.
9908         * ircd/m_join.c: use NAMES_EON as mentioned above
9909
9910 2000-12-01  net  <simms@LUCIDA.QC.CA>
9911
9912         * ircd/motd.c: add a freelist for struct Motds
9913
9914 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
9915
9916         * ircd/s_stats.c (report_feature_list): report features--only
9917         local opers can see logging configuration, since it doesn't really
9918         mean anything to users
9919
9920         * ircd/s_err.c: add reply messages for new feature subsystem
9921
9922         * ircd/s_conf.c: add F lines to .conf
9923
9924         * ircd/parse.c: add the message descriptions for /set, /reset, and
9925         /get
9926
9927         * ircd/m_stats.c: add /stats f
9928
9929         * ircd/m_set.c (mo_set): implement /set
9930
9931         * ircd/m_reset.c (mo_reset): implement /reset
9932
9933         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
9934         reopens log files (for log file rotation)
9935
9936         * ircd/m_get.c (mo_get): implement /get
9937
9938         * ircd/ircd_log.c: use int instead of void return value; add
9939         log_report_features() and log_canon(); fix a function that
9940         disappears if DEBUGMODE not #define'd
9941
9942         * ircd/ircd_features.c: functions to manipulate feature settings
9943         either from the config file or with the new /set, /reset, and /get
9944         commands
9945
9946         * ircd/Makefile.in: add new .c files, run make depend
9947
9948         * include/s_stats.h: declare report_feature_list() (/stats f
9949         handler)
9950
9951         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
9952         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
9953         reply numerics
9954
9955         * include/msg.h: add defines for SET, RESET, and GET
9956
9957         * include/ircd_log.h: add a function to canonicalize subsystem
9958         names; change some void return values to int
9959
9960         * include/ircd_features.h: new features subsystem handles all the
9961         manipulation of special features, like log files
9962
9963         * include/handlers.h: declare new mo_{s,res,g}et message handlers
9964         for fiddling with features run-time
9965
9966         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
9967         seemed like a good idea at the time...
9968
9969         * doc/example.conf: document new F lines
9970
9971 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
9972
9973         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
9974         new logging functions, which have special support for the debug
9975         log; added loop detection to vdebug(), so that I can
9976         sendto_opmask_butone() from log_vwrite() without incurring another
9977         call to vdebug()
9978
9979         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
9980         this allows log file rotations
9981
9982         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
9983
9984         * ircd/ircd_log.c: much more work fleshing out the interface;
9985         removed old interface; included backwards-compat ircd_log()
9986         function that logs to subsystem LS_OLDLOG
9987
9988         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
9989         functions
9990
9991         * include/ircd_log.h: include stdarg.h for va_list; move ordering
9992         warning to top of file; fill out LogSys enum; declare new
9993         log_debug_init(), log_vwrite(), log_write_kill(), and
9994         log_[sg]et_*() functions; add flags argument to log_write();
9995         defined flags to inhibit various logging actions
9996
9997         * include/client.h: added support for new SNO_DEBUG, enabled only
9998         if DEBUGMODE is defined
9999
10000 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
10001
10002         * ircd/ircd_log.c: make sure the various LOG_* constants are
10003         defined (probably not needed, since #include <syslog.h> isn't
10004         conditional); various static data needed for the new logging
10005         functions; definitions of new logging functions
10006
10007         * include/ircd_log.h: new LogSys enum, declarations for part of
10008         new logging API
10009
10010         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
10011         which was of course stupid; switched to using switch/case in
10012         initialization in motd_create(); zero the MotdList.other pointer
10013         from motd_clear()
10014
10015         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
10016         or we overwrite init_conf()'s hard work with respect to T-lines
10017
10018 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
10019
10020         * ircd/s_stats.c: comment out report_motd_list and include a
10021         reference to motd_report()
10022
10023         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
10024         motd_add() from the conf parser; call motd_clear() from the rehash
10025         routine; remove the no longer needed memory clearing and reloading
10026         stuff from the rehash service routine
10027
10028         * ircd/motd.c: loads new API, including static internal functions
10029         to do allocation/deallocation, etc.
10030
10031         * ircd/m_stats.c: use new motd_report() instead of
10032         report_motd_list()
10033
10034         * ircd/m_motd.c: use new syntax for motd_send()
10035
10036         * ircd/ircd.c: use new motd_init() function
10037
10038         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
10039         Makefile.(in); also ran make depend
10040
10041         * include/motd.h: don't need config.h, but now do need time.h;
10042         define new structures and constants; redefine old API and define
10043         new functions
10044
10045 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
10046
10047         * ircd/s_user.c (register_user): use motd_signon() instead of
10048         calling m_motd; much cleaner this way
10049
10050         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
10051         less of a crock
10052
10053         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
10054         functions
10055
10056         * include/motd.h: define new MOTD API stuff
10057
10058 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
10059
10060         * ircd/ircd_reply.c (protocol_violation): rewrite
10061         protocol_violation so it'll actually work
10062
10063         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
10064         the client's real name in there.
10065
10066         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
10067         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
10068         gets called from register_user with a NULL sptr.  This is probably
10069         a design problem, but this bandaid will do for now...
10070
10071 2000-11-19  Isomer <isomer@coders.net>
10072         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
10073         to problems in the server<->server protocol.
10074
10075         * ircd/m_connect.c: allow remote connects with a port of '0'
10076         meaning to use the port in the config file.
10077
10078         * ircd/m_create.c: Enable hacking protection, lets see how far we
10079         get.
10080
10081         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
10082         clients, so we don't any more.
10083
10084         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
10085         and the user@host is displayed of the victim.
10086
10087         * ircd/m_map.c: reloaded 'dump_map'.
10088
10089         * ircd/m_trace.c: allow per class T:
10090
10091         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
10092
10093 2000-11-17  Isomer <isomer@coders.net>
10094
10095         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
10096         that were the *same* instead of different.  Oh the embarrasment!
10097
10098         * ircd/IPcheck.c: Merged net's fix.
10099
10100 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
10101
10102         * ircd/m_whois.c: remove compiler warning by adding a newline to
10103         end of file
10104
10105         * ircd/m_names.c: moved the flags up to s_user.h
10106
10107         * ircd/m_join.c: call do_names instead of m_names; restructure
10108         ms_join to never transmute a JOIN into a CREATE, but use the TS in
10109         the JOIN (if present) to timestamp the channel
10110
10111         * ircd/channel.c: send JOINs individually, instead of grouping
10112         them, so that we can send the channel's creation time
10113
10114         * include/s_user.h: declare do_names()
10115
10116 2000-10-30  Isomer <isomer@coders.net>
10117         * ircd/m_oper.c: Fixed warning
10118
10119 2000-10-30  Isomer <isomer@coders.net>
10120         * ircd/m_oper.c: Fixed over agressive cut and no paste
10121
10122 2000-10-30  Isomer <isomer@coders.net>
10123
10124         * ircd/m_topic.c: Restructured, fixed bug where topics on local
10125         channels are propergated (I forget who pointed this out to me, but
10126         thanks anyway).  Also to save bandwidth don't send the topic to
10127         users if the topic is already the same on the server (but still
10128         propergate to other servers).  X/W's "autotopic" feature must
10129         chew a lot of bandwidth, hopefully this will help reduce this.
10130
10131         * doc/rfc1459.rfc: Updated documentation on /topic.
10132
10133         * ircd/listener.c: snotice warnings about failed accept()'s
10134         potentially warning admins that they're running out of fd's.
10135
10136         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
10137         people in a class in /stats y
10138
10139         * ircd/m_create.c: Checks for timewarp hacking and squit's
10140         evil servers. (currently disabled)
10141         
10142
10143 2000-10-30  net <simms@lucida.qc.ca>
10144         
10145         * ircd/gline.c: Fixed various bugs Isomer left behind.
10146
10147 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
10148
10149         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
10150         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
10151
10152 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
10153
10154         * ircd/channel.c: ok, now last mode rules; mode +ps will always
10155         result in +s (and won't send a mode if the channel is already +s);
10156         mode +sp will always result in +p; -n+n on a +n channel results in
10157         no mode change; -n+n on a -n channel results in a +n mode change;
10158         etc.
10159
10160 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
10161
10162         * ircd/channel.c: add "add" and "del" elements to ParseState to
10163         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
10164         mode_parse_limit that caused it to clear all channel modes
10165         prematurely; restructure mode_parse_mode to avoid calling
10166         modebuf_mode too early (ties in with first mentioned change);
10167         better logic for +p/+s mutual exclusivity; initialize "add" and
10168         "del" elements in mode_parse; send simple modes down to
10169         modebuf_mode after the loop in mode_parse
10170
10171 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10172         * ircd/m_names.c: Fixed a non-lethal logic error that 
10173         triggers an assert() in find_member_link while debugging.
10174         (Spotted by Maniac-).
10175 2000-09-19  Thomas Helvey <helveytw@home.com>
10176         * ircd/s_conf.c: move K:lines to their own list and data
10177         structures, add supporting code.
10178         * ircd/m_stats.c: cleanup stats processing a bit move
10179         kline listing code to a new function, haven't figured
10180         out where it goes yet tho'
10181         * ircd/s_stats.c: added K:line bulk lister
10182         * include/s_conf.h: added new DenyConf struct
10183         * *[ch]: fixeup code that depended on changes
10184
10185 2000-09-17  Thomas Helvey <helveytw@home.com>
10186         * ircd/class.c: encapsulate class list
10187         * include/class.h: clean up classes
10188         * * fixup code that depended on changes
10189
10190 2000-09-17  Thomas Helvey <helveytw@home.com>
10191         * ircd/s_conf.c: add me to local conf
10192         * include/s_conf.h: move CONF_ME macro to chkconf.c
10193         * ircd/s_bsd.c: cleanup initialization, allow virtual host
10194         to be changed by rehash
10195
10196 2000-09-17  Thomas Helvey <helveytw@home.com>
10197         * include/class.h: add missing prototype
10198         * ircd/class.c: make argument to get_conf_class const
10199
10200 2000-09-17  Thomas Helvey <helveytw@home.com>
10201         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
10202         merge conflicts.
10203         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
10204         merge conflicts
10205
10206 2000-09-16  Thomas Helvey <helveytw@home.com>
10207         * ircd/s_conf.c: add code for server struct
10208         * ircd/client.c: copy of class.c sort of, new file for client
10209         specific operations, will move things here as appropriate,
10210         currently only one function is exported from here.
10211         * ircd/*.c: general logic cleanups, convert negatives to
10212         positives in places.
10213
10214 2000-09-16  Thomas Helvey <helveytw@home.com>
10215         * ircd/s_conf.c: add code for new crule data structs, strip quotes
10216         * ircd/crule.c: clean up scary casting a bit, type safety stuff
10217         * include/s_conf.h: add CRuleConf struct and support, remove
10218         unused constants
10219         * include/crule.h: type safety cleanups
10220         * ircd/*.c: fixup code that depended on stuff I changed
10221
10222 2000-09-15  Thomas Helvey <helveytw@home.com>
10223         * ircd/s_conf.c: start adding code for new conf data structs, changed
10224         listeners, admin line, motd lines, class lines. Move validate_hostent
10225         to resolver. General mayhem.
10226         * include/s_conf.h: new data structs and accessors
10227         * ircd/res.c: move validate_hostent here, rewrite, use regular
10228         expression for validation.
10229         * doc/example.conf: update docs for port
10230
10231 2000-09-14  Thomas Helvey <helveytw@home.com>
10232         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
10233         up conf_init into managable chunks.
10234         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
10235         * include/s_conf.h: add new data struct for local info (unwinding the mess).
10236
10237 2000-09-13  Thomas Helvey <helveytw@home.com>
10238         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
10239         local clients.
10240         * ircd/list.c: put SLinks in free lists
10241         * ircd/channel.c: put Memberships in free lists
10242         * ircd/ircd.c: rearrange initializations a bit in main
10243         Note: With these changes, ircd NEVER frees Clients, SLinks or
10244         Memberships. It will also rarely need to allocate new
10245         ones during net bursts and other disruptions. This should
10246         cut down on memory fragmentation a bit as well.
10247
10248 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
10249
10250         * ircd/m_names.c (do_names): pull-up from do_names fix in
10251         u2.10.10.pl11
10252
10253 2000-07-15  Perry Lorier       <Isomer@coders.net>
10254         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
10255                  match()'s.  Major Major cpu savings.  Also speed up the
10256                  other case slightly.  As a side effect you can now
10257                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
10258                  3am.
10259
10260 2000-07-15  Perry Lorier       <Isomer@coders.net>
10261         * various: Fixed warnings after compiling on an alpha.
10262 2000-07-09  Perry Lorier       <Isomer@coders.net>
10263         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
10264                       changes suggested by various other people.
10265         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
10266                         that it gets a corrupt entry somehow.
10267 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10268         * ircd/m_oper.c: Clean up compiler warning.
10269
10270 2000-07-08  Perry Lorier       <Isomer@coders.net>
10271         * doc/ircd.8: Updated the documentation, it was slightly out of date
10272                       being updated around 1989.
10273         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
10274                           fixed a few minor glitches.
10275         * doc/rfc1459.unet: Updated.
10276         * ircd/IPcheck.c: Fixed more bugs.
10277         * ircd/s_bsd.c: We now keep track of servers we've conected.
10278
10279 2000-07-02  Perry Lorier       <Isomer@coders.net>
10280         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
10281                         me.  Thanks to Hektik, thanks thanks thanks thanks
10282                         thanks thanks thanks thanks thank thanks thank thanks
10283
10284 2000-07-01  Perry Lorier       <Isomer@coders.net>
10285         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
10286         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
10287
10288 2000-06-22  Perry Lorier       <Isomer@coders.net>
10289         * ircd/IPcheck.c: Large chunks redone.
10290         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
10291                         single AND double digit limits are allowed now.
10292         * misc other: Changes to IPcheck.
10293
10294 2000-06-30  Perry Lorier       <Isomer@coders.net>
10295         * ircd/ircd.c: Fix command line parameter bugs.
10296
10297 2000-06-30  Perry Lorier       <Isomer@coders.net>
10298         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
10299         * ircd/m_nick.c: Tidied things up.
10300
10301 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
10302         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
10303         
10304 2000-05-29  Perry Lorier       <Isomer@coders.net>
10305         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
10306         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
10307                         you think it'll get bored and fix itself?
10308
10309 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10310
10311         * ircd/m_names.c: Clean up compiler warnings.
10312
10313 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
10314
10315         * ircd/channel.c (mode_parse_client): don't send warning if
10316         there's not enough arguments for a +/-o/v; means the habit of
10317         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
10318         error messages
10319
10320 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10321
10322         * ircd/m_names.c: Re-factor code to remove unneccessary
10323         GlobalChannelList iteration every time someone joins a channel.
10324
10325 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
10326
10327         * ircd/s_user.c: add struct Gline * argument to register_user;
10328         look up global glines and repropagate them if necessary; send
10329         acknowledgement of gline to remote servers when registering users
10330
10331         * ircd/s_serv.c (server_estab): don't send acknowledgement of
10332         local glines to remote servers; do send gline acknowledgement of
10333         bursted users
10334
10335         * ircd/m_user.c (m_user): pass new struct Gline * argument to
10336         register_user
10337
10338         * ircd/m_pong.c: pass new struct Gline * argument to register_user
10339
10340         * ircd/m_nick.c (ms_nick): document protocol change
10341
10342         * ircd/gline.c: support GLINE_LASTMOD
10343
10344         * include/s_user.h: add struct Gline * argument to register_user
10345
10346         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
10347
10348         * ircd/s_conf.c (find_kill): add unsigned int argument to
10349         gline_lookup()
10350
10351         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
10352         glines; add unsigned int argument to gline_lookup()
10353
10354         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
10355         argument to gline_lookup()
10356
10357         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
10358         parameter, or when it falls out of bounds: see comments prior to
10359         call to jupe_resend(); call server_estab with struct Jupe
10360         parameter, so that we place the appropriate %<lastmod> in the
10361         appropriate place.
10362
10363         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
10364         server, as well as for servers when we're sending the BURST
10365
10366         * include/s_serv.h: add a struct Jupe * to the arguments for
10367         server_estab() so that we can send the appropriate lastmod
10368         parameter
10369
10370         * ircd/m_gline.c (ms_gline): actually, this should be the
10371         slightest bit more efficient...
10372
10373         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
10374         bit more efficient...
10375
10376         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
10377         during netburst
10378
10379         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
10380         netburst
10381
10382         * ircd/channel.c (joinbuf_join): really remove user from local
10383         channels
10384
10385 2000-05-29  Perry Lorier       <Isomer@coders.net>
10386         * ircd/m_names.c: Removed redundant space. 
10387         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
10388
10389 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
10390
10391         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
10392         a " "
10393
10394 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
10395
10396         * ircd/channel.c: replace bogus assertions with returns, which is
10397         logically correct; only wipe out limit/key if they were originally
10398         set in the first place; remove user from channel when doing a
10399         PARTALL; only send MODE +o for user CREATEing channel if user is
10400         not MyUser--CREATE will only be used if the channel did not
10401         originally exist, therefore we can assume no one local is on the
10402         channel anyway, and we don't exactly need for the user to see an
10403         explicit +o for themselves
10404
10405         * doc/readme.gline: describe the syntax of the GLINE command
10406
10407         * doc/readme.jupe: update to reflect a couple of changes to JUPE
10408
10409         * ircd/gline.c: don't propagate local changes
10410
10411         * ircd/jupe.c: don't propagate local changes
10412
10413         * ircd/m_gline.c (mo_gline): force local flag when deactivating
10414         glines with 0 lastmod
10415
10416         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
10417         are now removed instead of being deactivated
10418
10419         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
10420         -<mask>" be accepted
10421
10422         * ircd/channel.c (send_channel_modes): deal with one of the last
10423         vestiges of sendbuf
10424
10425         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
10426         debugging hooks
10427
10428         * ircd/channel.c (modebuf_extract): remove debugging
10429         sendto_opmask_butone calls
10430
10431 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
10432
10433         * ircd/channel.c: support a couple of new flags to support using
10434         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
10435         of modebuf_extract to extract added flags for use by ms_burst
10436
10437         * include/channel.h: a couple of new flags to support using
10438         mode_parse inside ms_burst
10439
10440         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
10441
10442         * ircd/m_endburst.c: add loop to processing of end_of_burst to
10443         free empty channels after the BURST is over.
10444
10445         * ircd/m_server.c: convert to use new send.c functions--I wanted
10446         to rewrite it from scratch, but the logic's pretty complex; I may
10447         still rewrite it, though...
10448
10449 2000-05-02  Thomas Helvey <tomh@inxpress.net>
10450
10451         * ircd/ircd.c: fix broken header include ordering
10452
10453 2000-05-02  Thomas Helvey <tomh@inxpress.net>
10454         
10455         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
10456         review emailed privately
10457
10458         * include/IPcheck.h: removed unneeded include
10459
10460 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
10461
10462         * ircd/s_user.c (hunt_server): throw in a comment so I know what
10463         the sendto_one is for
10464
10465         * include/querycmds.h (Count_unknownbecomesclient): convert to
10466         sendto_opmask_butone
10467
10468         * ircd/send.c: start removing dead code
10469
10470         * include/send.h: start removing dead code
10471
10472         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
10473         hunt_server_cmd
10474
10475         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
10476
10477 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
10478
10479         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
10480
10481         * ircd/m_kick.c: Completely reimplement m_kick
10482
10483         * ircd/channel.c: send_user_joins removed; it was dead code,
10484         anyway...
10485
10486 2000-05-01  Perry Lorier <isomer@coders.net>
10487         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
10488         * ircd/channels.c: My fix for the part problem.  Untested, probably
10489                 won't work.  Can't be much worse than the current problem.
10490                 it'll either work or core, take your pick.
10491
10492
10493 2000-04-30  Perry Lorier <isomer@coders.net>
10494         * config/config-sh.in: Fix for CONNEXIT
10495         * ircd/s_{user,misc}.c: Fix for CONNEXIT
10496         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
10497                         (Kev: Want to come talk to me about this?)
10498
10499 2000-04-30  Steven M. Doyle <steven@doyle.net>
10500         * ircd/ircd.c
10501           - general cleanups and readability enhancements
10502           - rewrite of setuid/chroot code.
10503           - server will no longer run as root
10504           - -DPROFIL compile option removed
10505           - Fixed IPcheck API calls
10506  
10507         * config/config-sh.in
10508           - Fixed up chroot compile options
10509           - Added options for debug and profile compiles
10510  
10511         * config/gen.ircd.Makefile
10512           - Support for new debug/profile options
10513  
10514         * ircd/Makefile.in
10515           - Support for new debug/profile options
10516  
10517         * ircd/ircd_signal.c
10518           - Removed -DPROFIL
10519
10520         * include/IPcheck.h
10521           - Removed old API prototypes, added new ones
10522         
10523         * ircd/IPcheck.c
10524           - Readability cleanups (well, I -think-...)
10525           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
10526             used unsigned short was probably causing interesting things after
10527             a client had been connected longer than about 65,535 seconds...
10528           - Removed old API functions.
10529
10530         * ircd/whocmds.c
10531           - Removed IPcheck.h include
10532         
10533         * Additionally modified IPcheck API calls in:
10534           - ircd/m_nick.c
10535           - ircd/m_auth.c
10536           - ircd/s_bsd.c
10537           - ircd/s_conf.c
10538           - ircd/s_misc.c
10539           - ircd/s_serv.c
10540           - ircd/s_user.c
10541         
10542         
10543 2000-04-30  Perry Lorier <isomer@coders.net>
10544         * ircd/s_bsd.c: Sigh. :)
10545         * ircd/m_mode.c: fix for modeless channels by poptix.
10546
10547 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
10548
10549         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
10550
10551         * ircd/channel.c (clean_channelname): make clean_channelname also
10552         truncate long channel names
10553
10554 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
10555
10556         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
10557
10558         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
10559         joinbuf_flush
10560
10561         * include/channel.h: definitions and declarations for the struct
10562         JoinBuf abstraction
10563
10564 2000-04-29  Perry Lorier <isomer@coders.net>
10565         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
10566
10567 2000-04-29  Perry Lorier <isomer@coders.net>
10568         * ircd/s_bsd.c: Add debugging code to IPcheck
10569
10570 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
10571
10572         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
10573
10574         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
10575         RPL_EXPLICIT
10576
10577         * ircd/m_userhost.c (m_userhost): add a dead code comment
10578
10579         * ircd/m_desynch.c: forgot one...
10580
10581         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
10582
10583         * ircd/m_proto.c (proto_send_supported): just change a comment so
10584         it doesn't show up in my scans
10585
10586         * ircd/ircd_reply.c (send_reply): fix a slight bug...
10587
10588         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
10589         kinda hackish...
10590
10591         * ircd/parse.c (parse_server): argument wrangling to make
10592         processing in do_numeric a little easier to deal with
10593
10594         * ircd/s_serv.c (server_estab): SERVER should come from
10595         acptr->serv->up, not &me
10596
10597         * ircd/m_lusers.c: accidentally left out sptr for a %C
10598
10599         * ircd/send.c: hack to support doing wallchops...
10600
10601         * ircd/m_whowas.c: convert to new send functions
10602
10603         * ircd/m_whois.c: convert to new send functions
10604
10605         * ircd/m_who.c: convert to new send functions
10606
10607         * ircd/m_wallops.c: convert to new send functions
10608
10609         * ircd/m_wallchops.c: convert to new send functions
10610
10611         * ircd/m_version.c: convert to new send functions
10612
10613         * ircd/m_userip.c: convert to new send functions
10614
10615         * ircd/m_userhost.c: convert to new send functions
10616
10617         * ircd/m_uping.c: convert to new send functions
10618
10619         * ircd/m_trace.c: convert to new send functions
10620
10621         * ircd/m_topic.c: convert to new send functions
10622
10623         * ircd/m_time.c: convert to new send functions
10624
10625         * ircd/m_squit.c: convert to new send functions
10626
10627         * ircd/m_silence.c: convert to new send functions
10628
10629         * ircd/m_settime.c: convert to new send functions
10630
10631         * ircd/m_restart.c: convert to new send functions
10632
10633         * ircd/m_rehash.c: convert to new send functions
10634
10635         * ircd/m_privmsg.c: convert to new send functions
10636
10637         * ircd/m_pong.c: convert to new send functions
10638
10639         * ircd/m_ping.c: convert to new send functions
10640
10641         * ircd/m_pass.c: convert to new send functions
10642
10643         * ircd/m_opmode.c: convert to new send functions
10644
10645         * ircd/m_oper.c: convert to new send functions
10646
10647         * ircd/m_notice.c: convert to new send functions
10648
10649         * ircd/m_nick.c: convert to new send functions
10650
10651         * ircd/m_names.c: convert to new send functions
10652
10653         * ircd/m_motd.c: convert to new send functions
10654
10655         * ircd/m_mode.c: convert to new send functions
10656
10657         * ircd/m_map.c: convert to new send functions
10658
10659         * ircd/m_lusers.c: convert to new send functions
10660
10661         * ircd/m_list.c: convert to new send functions
10662
10663         * ircd/m_links.c: convert to new send functions
10664
10665         * ircd/m_kill.c: convert to new send functions
10666
10667         * ircd/m_jupe.c: convert to new send functions
10668
10669         * ircd/m_invite.c: convert to new send functions
10670
10671         * ircd/m_info.c: convert to new send functions
10672
10673         * ircd/m_help.c: convert to new send functions
10674
10675         * ircd/m_gline.c: convert to new send functions
10676
10677         * ircd/m_error.c: convert to new send functions
10678
10679         * ircd/m_endburst.c: convert to new send functions
10680
10681         * ircd/m_die.c: convert to new send functions
10682
10683         * ircd/m_destruct.c: convert to new send functions
10684
10685         * ircd/m_defaults.c: convert to new send functions
10686
10687         * ircd/m_connect.c: convert to new send functions
10688
10689 2000-04-28  Perry Lorier <isomer@coders.net>
10690         * RELEASE.NOTES: Describe a few more undocumented features.
10691         * config/config-sh.in: change the default paths for logging
10692         and the recommended number of channels.
10693         * include/supported.h: Rearrange slightly, added CHANTYPE's
10694
10695 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
10696
10697         * ircd/m_close.c: convert to send_reply
10698
10699         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
10700
10701         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
10702
10703         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
10704
10705         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
10706         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
10707         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
10708         carefully rethought...
10709
10710         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
10711
10712         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
10713
10714         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
10715         numeric nick; therefore, we have to use the server name
10716
10717         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
10718
10719         * ircd/send.c: fix minor bugs
10720
10721         * ircd/s_user.c (check_target_limit): mark dead code so I filter
10722         it when I grep
10723
10724         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
10725         when I grep
10726
10727         * ircd/parse.c: mark dead code so I filter it when I grep
10728
10729         * ircd/map.c: mark dead code so I filter it when I grep
10730
10731         * ircd/ircd.c: mark dead code so I filter it when I grep
10732
10733         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
10734         functions
10735
10736         * ircd/channel.c: mark dead code so I filter it when I grep
10737
10738         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
10739         hope I'm not stepping on toes...
10740
10741         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
10742         conversions; use ircd_snprintf in a couple of cases to negate the
10743         possibility of buffer overflow
10744
10745 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
10746
10747         * ircd/channel.c: convert as much as possible to new send
10748         semantics
10749
10750         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
10751         test member->user->from->fd, not from->fd
10752
10753         * ircd/gline.c (gline_add): go ahead and add badchans; we just
10754         won't look for them in m_gline; this way, they always work...
10755
10756         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
10757
10758         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
10759         ircd_vsnprintf conversion specifiers
10760
10761         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
10762         I have my conversion specifiers
10763
10764         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
10765
10766         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
10767         local users
10768
10769         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
10770         little less brain-dead
10771
10772         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
10773
10774         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
10775         RPL_STATSDEBUG
10776
10777         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
10778         RPL_STATSDEBUG
10779
10780         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
10781         for RPL_STATSDEBUG
10782
10783         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
10784
10785         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
10786
10787         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
10788         ERR_INVALIDUSERNAME
10789
10790         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
10791
10792         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
10793         a numeric as needing to use an explicit pattern, which will be the
10794         first argument in the variable argument list
10795
10796         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
10797         non-prefixed nospoof PING
10798
10799         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
10800         non-prefixed SERVER login
10801
10802         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
10803         a numeric usage further up)
10804
10805         * include/send.h: declare sendrawto_one
10806
10807         * ircd/send.c (sendrawto_one): new function to use ONLY for
10808         non-prefixed commands, like PING to client, or PASS/SERVER on
10809         server registration
10810
10811 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
10812
10813         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
10814         future expansion (channel numerics?)
10815
10816         * include/ircd_snprintf.h: added documentation to # to explain use
10817         with %C; added documentation for : to explain use with %C; added
10818         documentation for %H for channels
10819
10820         * ircd/whocmds.c: use send_reply
10821
10822         * ircd/userload.c: use sendcmdto_one
10823
10824         * ircd/uping.c: use sendcmdto_one
10825
10826         * ircd/send.c: use new flags to %C format string; ':' prefixes
10827         client name with a colon for local connects, '#' uses
10828         nick!user@host form for local connects
10829
10830         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
10831         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
10832
10833         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
10834
10835         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
10836         sendcmdto_one
10837
10838         * ircd/s_auth.c: use sendto_opmask_butone
10839
10840         * ircd/res.c: use sendcmdto_one
10841
10842         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
10843         debugging assertions
10844
10845 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
10846
10847         * ircd/support.c: dumpcore is no longer used, so get rid of it
10848
10849         * ircd/parse.c: use send_reply, sendcmdto_one
10850
10851         * ircd/map.c: use send_reply
10852
10853         * ircd/listener.c: use send_reply
10854
10855         * ircd/jupe.c: use sendto_opmask_butone, send_reply
10856
10857         * ircd/ircd_reply.c: use send_reply
10858
10859         * ircd/ircd.c: use sendto_opmask_butone
10860
10861         * ircd/gline.c: use sendto_opmask_butone, send_reply
10862
10863         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
10864         registered clients; make FLAG_ALT print nick!user@host; make
10865         FLAG_COLON print :blah
10866
10867         * ircd/class.c (report_classes): use send_reply instead of
10868         sendto_one
10869
10870         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
10871
10872         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
10873         sendto_one with sendcmdto_one
10874
10875 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
10876
10877         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
10878         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
10879         sendcmdto_match_butone
10880
10881         * include/send.h: declare sendcmdto_match_butone
10882
10883 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
10884
10885         * ircd/jupe.c: update to use send_reply()
10886
10887         * ircd/gline.c: update to use send_reply()
10888
10889         * include/ircd_reply.h: declare send_reply
10890
10891         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
10892         replies; uses ircd_snprintf
10893
10894         * ircd/send.c: added comments to redirect searchers to appropriate
10895         sendcmdto_* function; moved new functions to end of file; added
10896         explanatory comments; reordered arguments; defined new functions
10897         mentioned below
10898
10899         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
10900
10901         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
10902
10903         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
10904
10905         * ircd/gline.c: reorder arguments to sendcmdto_* functions
10906
10907         * include/send.h: reorder arguments, add explanatory comments,
10908         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
10909         and vsendto_opmask_butone
10910
10911 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
10912
10913         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
10914         vsendto_op_mask that uses '*' instead of the receiving client
10915         nickname
10916
10917         * include/send.h: declare sendcmdto_channel_butone; takes a skip
10918         argument that allows you to skip (or not to skip) deaf users,
10919         users behind bursting servers, and non channel operators
10920
10921 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
10922
10923         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
10924         sendto_channel_butserv has a subtle bug; also wrote
10925         sendcmdto_common_channels.
10926
10927         * include/send.h: declare new sendcmdto_* functions
10928
10929         * ircd/jupe.c: support local deactivations of jupes
10930
10931         * ircd/gline.c: support local deactivations of glines
10932
10933         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
10934         deactivated; if they aren't locally deactivated, then it slaves to
10935         the net-wide activation status; JupeIsRemActive() tests only
10936         whether the jupe is active everywhere else
10937
10938         * include/gline.h: GLINE_LDEACT allows glines to be locally
10939         deactivated; if they aren't locally deactivated, then it slaves to
10940         the net-wide activation status; GlineIsRemActive() tests only
10941         whether the gline is active everywhere else
10942
10943         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
10944         gline expires after the new one will, we drop the new one,
10945         otherwise we add the G-line after that one (so the wide one will
10946         apply first); if the new one contains an existing G-line and if it
10947         will expire after the existing one, we drop the existing one to
10948         save memory
10949
10950         * ircd/m_gline.c (mo_gline): opers could issue remote local
10951         glines when CONFIG_OPERCMDS was off; fixed
10952
10953 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
10954
10955         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
10956         this is a local JUPE
10957
10958         * ircd/gline.c: add flags argument to gline_activate and
10959         gline_deactivate for future expansion
10960
10961         * ircd/m_gline.c: pass flags to gline_activate and
10962         gline_deactivate
10963
10964         * include/gline.h: add flags argument to gline_activate and
10965         gline_deactivate
10966
10967         * ircd/jupe.c: add flags argument to jupe_activate and
10968         jupe_deactivate for future expansion
10969
10970         * include/jupe.h: add flags argument to jupe_activate and
10971         jupe_deactivate
10972
10973         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
10974         local, active; pass flags to jupe_activate and jupe_deactivate
10975
10976         * include/gline.h: remove dead code
10977
10978         * ircd/gline.c: make gline expire times relative to CurrentTime,
10979         since that should be monotonically increasing, instead of
10980         TStime(), which can be set backwards, and which can therefore
10981         cause an expire time to increase; make local glines be removed
10982         instead of just deactivated; don't let gline_find() look for
10983         user@host glines if the mask being looked up is a channel mask
10984
10985         * ircd/send.c (vsendcmdto_one): forgot to account for the case
10986         where origin is a server and destination is a user
10987
10988         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
10989         since that should be monotonically increasing, instead of
10990         TStime(), which can be set backwards, and which can therefore
10991         cause an expire time to increase; make local jupes be removed
10992         instead of just deactivated
10993
10994         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
10995         limit is fine.  any other warnings I should know about?
10996
10997 2000-04-15  Thomas Helvey <tomh@inxpress.net>
10998
10999         * ircd/*.c: const correctness and type safety cleanups to
11000         get code to compile with C++ compiler. Still has
11001         signed/unsigned comparison warnings.
11002
11003 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11004
11005         * ircd/userload.c: change <sys/time.h> include to <time.h> for
11006           portability.
11007
11008 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
11009
11010         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
11011         and convert acptr...
11012
11013         * ircd/s_user.c: move gline_lookup function call into
11014         register_user, where it'll have a username to lookup!
11015
11016         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
11017         functions; also stuff send_error_to_client into return clauses
11018
11019         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
11020         functions; also use send_error_to_client where that makes sense
11021
11022         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
11023         functions; also use send_error_to_client where that makes sense
11024
11025         * ircd/gline.c: modify to utilize new sendcmdto_* series of
11026         functions; also fix gline_lookup() to deal properly with remote
11027         clients--boy, do struct Client and struct User need to be cleaned
11028         up!
11029
11030         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
11031         too...
11032
11033         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
11034         sendcmdto_serv_butone(), all utilizing the %v conversion of
11035         ircd_snprintf()
11036
11037         * include/send.h: define IRC_BUFSIZE, max size of a message;
11038         declare sendcmdto_one(), vsendcmdto_one(), and
11039         sendcmdto_serv_butone()
11040
11041         * include/msg.h: define all the CMD_* constants needed to utilize
11042         the new sendcmdto_* series of functions
11043
11044         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
11045
11046         * ircd/gline.c: remove old, dead code.
11047
11048         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
11049         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
11050         (don't advertise proxies); remove dead code
11051
11052         * ircd/parse.c: oper handler for JUPE only lists jupes unless
11053         CONFIG_OPERCMDS is enabled
11054
11055         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
11056         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
11057
11058         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
11059         always return ERR_DISABLED
11060
11061         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
11062         enabled, always return ERR_DISABLED
11063
11064         * ircd/s_err.c: add error message to indicate disabled commands
11065
11066         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
11067
11068         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
11069
11070         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
11071         CONFIG_NEW_MODE to 'y' for now
11072
11073         * ircd/gline.c (gline_list): fix a minor formatting bogon
11074
11075         * BUGS: since I fixed that bug, might as well mark it fixed.
11076
11077         * ircd/m_join.c: look up badchans with GLINE_EXACT
11078
11079         * ircd/m_gline.c: fix parc count problems; look up existing
11080         G-lines with GLINE_EXACT; only set new lastmod when
11081         activating/deactivating existing glines if old lastmod was not 0
11082
11083         * ircd/gline.c: forgot to copy the gline reason over; don't
11084         propagate a gline with 0 lastmod if origin is user; add
11085         GLINE_EXACT to force exact matching of gline mask
11086
11087         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
11088         flag properly
11089
11090         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
11091         but gline_lookup() actually takes a client--d'oh.
11092
11093 2000-04-13  Thomas Helvey <tomh@inxpress.net>
11094         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
11095
11096 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11097
11098         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
11099           "/who * x"
11100           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
11101           (Found by Plexus).
11102
11103         * ircd/whocmds.c: Change idle time calc from socket idle to user
11104           idle.
11105
11106 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
11107
11108         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
11109         too, for ircd_snprintf.c
11110
11111         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
11112         comments; mostly descended from the Linux manpage for printf, but
11113         also documenting the extensions.
11114
11115         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
11116         client; make 'q' be the same as 'L'; remove __inline__; only
11117         define EXTENSION if HAVE_LONG_LONG is defined
11118
11119         * include/handlers.h: declare m_gline()
11120
11121         * ircd/parse.c: gline can be called by users, but it only lists
11122         the glines.
11123
11124         * ircd/s_user.c (set_nick_name): resend gline if a remote server
11125         introduces a glined client
11126
11127         * ircd/s_serv.c (server_estab): burst glines, too
11128
11129         * ircd/gline.c: fix up all the expire times to be offsets;
11130         simplify gline_resend()
11131
11132         * ircd/m_gline.c: begin coding replacements for ms_gline(),
11133         mo_gline(), and m_gline()
11134
11135         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
11136         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
11137
11138 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11139
11140         * tools/Bouncer/*: Add comments/documentation/tags.
11141         * tools/Bouncer/*: Add debug defines, make task fork().
11142
11143 2000-04-12  Thomas Helvey <tomh@inxpress.net>
11144         * ircd/s_err.c: Cleanup s_err.c make one table so we
11145         don't have to do anything tricky to get an error string.
11146
11147 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11148         * Add port bouncer for http (x/w)
11149
11150 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
11151
11152         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
11153         call to gline_find(); also used GlineReason() instead of direct
11154         reference to structure member
11155
11156         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
11157         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
11158         is active
11159
11160         * ircd/channel.c: nothing seems to be called anywhere...
11161
11162         * ircd/s_err.c: update a couple of replies to dovetail with new
11163         semantics
11164
11165         * ircd/gline.c: begin complete re-implementation of gline.c along
11166         the lines of the final design of jupe.c
11167
11168         * include/gline.h: begin complete re-implementation of gline.c
11169         along the lines of the final design of jupe.c
11170
11171         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
11172         %s by %s" message...
11173
11174         * ircd/ircd_snprintf.c: my new snprintf()-like functions
11175
11176         * include/ircd_snprintf.h: my new snprintf()-like functions
11177
11178 2000-04-11  Thomas Helvey <tomh@inxpress.net>
11179         * ircd/IPcheck.c: removed old dead code
11180         * ircd/s_user.c (send_user_info): removed non-standard
11181           user not found message for userhost/userip
11182
11183 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11184
11185         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
11186         * doc/p10.html: Work on chapter 4.
11187
11188 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
11189
11190         * ircd/channel.c (mode_parse_client): fix coredump on /mode
11191         #foobar +o nosuchnick
11192
11193 2000-04-10  Perry Lorier  <Isomer@coders.net>
11194         * BUGS: Added bug.
11195
11196 2000-04-09  Thomas Helvey <tomh@inxpress.net>
11197         * include/IPcheck.h: fix prototype
11198         * ircd/s_user.c: fix usage of IPcheck_remote_connect
11199         * ircd/IPcheck.c: removed unused args
11200
11201 2000-04-09  Thomas Helvey <tomh@inxpress.net>
11202         * include/IPcheck.h: add proto for IPcheck_expire
11203
11204         * ircd/IPcheck.c: Rewrote
11205
11206         * ircd/ircd.c: Add IPcheck_expire to main message loop
11207
11208         * ircd/s_user.c: Redo target hashing, refactor target code
11209
11210         * include/numeric.h: Cleaned up numerics, added which ones are
11211         in use by other networks and what they are in use for.
11212
11213         * ircd/channel.c: cleaned can_join(), allow anyone through anything
11214         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
11215         will get a message explaining to them not to cheat.
11216
11217         * ircd/m_join.c: cleaned up the various join functions, should be
11218         a lot more efficient.  Still needs work.  Now assumes that s<->s
11219         won't send it a JOIN 0.  Service coders - note this and tread with
11220         care.
11221
11222         * ircd/m_stats.c: added Gte-'s stats doc patch.
11223
11224         * ircd/m_version.c: /version now returns the 005 numeric as well.
11225         as requested by Liandrin.
11226
11227
11228 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
11229
11230         * ircd/m_clearmode.c: add include for support.h for write_log()
11231
11232         * configure: move ircd/crypt/* to tools/*
11233
11234 2000-04-06  Thomas Helvey <tomh@inxpress.net>
11235         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
11236           set client host to server alias if connection from localhost
11237
11238 2000-04-06  Perry Lorier <isomer@coders.net>
11239         * ircd/ircd.c: Fix core during pinging (oops)
11240         
11241 2000-04-06  Perry Lorier <isomer@coders.net>
11242         * ircd/send.c: fixed wrong ident being sent to channels bug.
11243         * include/numerics.h: Updated some of the numerics from other
11244         networks.  Flagged some as 'unused' by undernet.
11245
11246 2000-03-30  Perry Lorier <isomer@coders.net>
11247         * ircd/ircd.c: Lets see if this helps the ping problem at all.
11248         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
11249         time for local clients. (as requested), extended who now returns all
11250         the flags (@+!) so you can tell the complete state of a client.
11251
11252 2000-03-30  Thomas Helvey <tomh@inxpress.net>
11253         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
11254
11255 2000-03-30  Perry Lorier <isomer@coders.net>
11256         * ircd/parse.c: oops, missed opers.
11257
11258 2000-03-30  Perry Lorier <isomer@coders.net>
11259         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
11260         for so long.  Remember: m_ping MUST be in the parse array. :)
11261
11262 2000-03-30  Perry Lorier <isomer@coders.net>
11263         * ircd/ircd.c: test in check_pings was wrong.  I move that we
11264         disallow cvs commit after 10pm localtime....
11265
11266 2000-03-30  Perry Lorier <isomer@coders.net>
11267         * ircd/m_pong.c: Fix it for servers too.
11268
11269 2000-03-30  Perry Lorier <isomer@coders.net>
11270         * ircd/m_pong.c: Fix ping timeout bugs
11271
11272 2000-03-30  Perry Lorier <isomer@coders.net>
11273         * ircd/channel.c: Bans had CurrentTime in their when field instead
11274         of TStime()
11275
11276 2000-03-31  Thomas Helvey <tomh@ixpress.net>
11277         * ircd/numnicks.c (SetXYYCapacity): fix for extended
11278         numerics.
11279
11280 2000-03-30  Perry Lorier <isomer@coders.net>
11281         * ircd/m_nick.c: send kills both ways so when we add nick change
11282         on collision we don't desync the network.
11283
11284         * ircd/map.c: Fixup the map a bit more.
11285
11286 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
11287
11288         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
11289
11290         * ircd/m_opmode.c: Log the mode changes to OPATH
11291
11292         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
11293         OPATH
11294
11295         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
11296         OPATH
11297
11298         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
11299
11300         * config/config-sh.in: added OPATH for opmode log file
11301
11302         * ircd/m_clearmode.c (do_clearmode): updated uses of
11303         modebuf_mode_string() for the new usage
11304
11305         * ircd/channel.c: added flag MODE_FREE and an int argument to
11306         modebuf_mode_string() to indicate that the string must be free'd;
11307         updated calls to modebuf_mode_string() for the new usage; called
11308         collapse(pretty_mask()) on the ban string and use allocated memory
11309         for it; added ban list length accounting; fixed a number of small
11310         bugs in ban processing
11311
11312         * include/channel.h: added flag MODE_FREE and an int argument to
11313         modebuf_mode_string() to indicate that the string must be free'd
11314
11315         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
11316         keys and limits that are set
11317
11318 2000-03-30  Perry Lorier <isomer@coders.net>
11319         * ircd/ircd.c: rewrote check_pings() for maintainability
11320         and speed.  Also changed quit msg's so they don't have
11321         redundant nick[host] info in them.
11322
11323         * ircd/send.c: Changed write errors to report what error
11324         occured (if possible).
11325
11326         * ircd/gline.c: added gline comment to the quit.
11327
11328         * ircd/m_server.c: Added suggestions to server quits mentioning
11329         what went wrong so the admin can fix it earlier instead of asking
11330         questions...
11331
11332         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
11333         servers that aren't fully burst yet.  And show '(--s)' for servers
11334         where its not sure.
11335
11336         * doc/example.conf: Fixed wrapped U:
11337
11338 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
11339
11340         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
11341         mode_parse() (version selectable at compile time)
11342
11343         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
11344
11345         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
11346
11347         * config/config-sh.in: add new config option to enable new m_mode
11348         implementation
11349
11350         * doc/Configure.help: add documentation for new config option
11351         CONFIG_NEW_MODE
11352
11353         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
11354         MODE -v : Not enough parameters
11355
11356         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
11357         +k and +l even if they weren't set...
11358
11359         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
11360
11361         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
11362         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
11363         for; test the 0-th member, not the i-th member, of the client
11364         change state stuff
11365
11366         * ircd/m_clearmode.c (do_clearmode): use the new
11367         mode_invite_clear() function
11368
11369         * ircd/channel.c: cleared up all the compile-time warnings and
11370         errors
11371
11372         * include/channel.h: added declarations for mode_ban_invalidate()
11373         and mode_invite_clear()
11374
11375         * ircd/channel.c: finished mode_parse(), then broke it up into a
11376         dozen or so helper functions to make the code easier to read
11377
11378 2000-03-29  Thomas Helvey <tomh@inxpress.net>
11379         * ircd/ircd.c: refactor server initialization a bit, use
11380         getopt for parsing command line, refactor init_sys, main,
11381         and other bits.
11382
11383         * ircd/s_bsd.c: add functions for initialization to clean
11384         up logic a bit and remove duplicated code.
11385
11386         * include/ircd.h: add struct for server process related
11387         variables.
11388
11389 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
11390
11391         * ircd/channel.c: initial definition of mode_parse(); flags to
11392         prevent doing the same thing multiple times; helper method
11393         send_notoper() to send a "Not oper"/"Not on channel" notice
11394
11395         * include/channel.h: declare mode_parse() and helper flags
11396
11397         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
11398         sending to match the current action of set_mode() closely enough
11399         that hopefully there won't be major conflicts
11400
11401         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
11402         building logic, reversed the order of the arguments to mode
11403         commands to have '-' preceed '+'
11404
11405 2000-03-29  Thomas Helvey <tomh@inxpress.net>
11406         * ircd/s_bsd.c (add_connection): don't disable socket options
11407         let OS tune itself and allow important performance tweaks to 
11408         work.
11409
11410 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
11411
11412         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
11413         confused by set_mode, which is doing some really weird logic;
11414         guess what I'm going to rewrite next?  ;)
11415
11416 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
11417
11418         * include/channel.h: added MODE_SAVE for the bounds checking stuff
11419         in modebuf_flush
11420
11421         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
11422         make it do bounds checking on the buffer; all modes are sent only
11423         if the all parameter is 1; modebuf_flush is the exported wrapper
11424
11425         * include/channel.h: add BOUNCE, renumber flags to get a little
11426         more space
11427
11428         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
11429         BOUNCE; send DESYNCH message
11430
11431 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
11432
11433         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
11434         channel actually has in effect for deletion
11435
11436         * ircd/channel.c: added explanatory comments to all added
11437         functions; made flushing take place at the correct place even if
11438         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
11439         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
11440         is empty, fixed the apparent source, removed some bogus string
11441         termination code, properly terminate the mode strings, add support
11442         for HACK2 and HACK3, made limit strings not be sent if the limit
11443         is being removed, changed where '+' and '-' come from in sent
11444         strings, added support for DEOP flag, set up bouncing code for
11445         HACK2
11446
11447         * ircd/Makefile.in: ran make depend
11448
11449         * include/channel.h: added new defines for future functionality,
11450         made modebuf_flush() return int so I can use tail recursion
11451
11452         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
11453         to make it all compile
11454
11455         * ircd/m_opmode.c: add msg.h to includes...
11456
11457         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
11458
11459         * ircd/channel.c (modebuf_flush): realized I forgot to
11460         nul-terminate addbuf/rembuf properly...
11461
11462         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
11463
11464         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
11465         sendto_serv_butone--blah^2
11466
11467         * ircd/send.c (sendto_serv_butone): stupid comments confused me
11468
11469         * ircd/channel.c (modebuf_flush): if there are no mode changes to
11470         propagate, we're done...
11471
11472         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
11473         not sendto_all_butone
11474
11475         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
11476
11477         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
11478
11479         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
11480         the list
11481
11482         * ircd/parse.c: added messages for opmode and clearmode
11483
11484         * include/handlers.h: added declarations for mo_opmode(),
11485         ms_opmode(), mo_clearmode(), and ms_clearmode()
11486
11487         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
11488         TOK_CLEARMODE
11489
11490         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
11491         MODEBUF_DEST_OPMODE flag
11492
11493         * ircd/channel.c (modebuf_flush): added new flag,
11494         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
11495         to originate from source's server (or source itself, if
11496         IsServer(source)); also causes a server-level MODE to be sent as
11497         OPMODE instead
11498
11499         * include/channel.h: defined MODEBUF_DEST_SERVER,
11500         MODEBUF_DEST_HACK4
11501
11502         * ircd/channel.c: Add another argument to build_string() to handle
11503         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
11504         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
11505         to be sent out
11506
11507 2000-03-27  Perry Lorier <isomer@coders.net>
11508
11509         * ircd/s_bsd.c: fixed missing 'u' typo.
11510
11511 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
11512
11513         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
11514         _mode_string(), _mode_client(), _flush(); also implemented a
11515         simple build_string()
11516
11517         * include/channel.h: added definition of ModeBuf, modebuf_*
11518         manipulation functions, and a couple of helper macros
11519