Revert the accidental commit to list.c, and commit the correct file (s_bsd.c).
[ircu2.10.12-pk.git] / ChangeLog
1 2010-01-03  Michael Poole <mdpoole@troilus.org>
2
3         * ircd/s_bsd.c (client_sock_callback): Invalidate cli_fd() when we
4         receive an EBADF error.
5
6 2010-01-03  Michael Poole <mdpoole@troilus.org>
7
8         * ircd/engine_select.c (engine_loop): Remove a bogus assert() that
9         the structure's FD is correct after the event-handling callback
10         returns.  Also fix a warning about the type of the last parameter
11         passed to getsockopt().
12
13 2010-01-03  Michael Poole <mdpoole@troilus.org>
14
15         * ircd/m_names.c (m_names): Terminate the buffer used for listing
16         clients who are not in any channel.
17
18 2010-01-03  Michael Poole <mdpoole@troilus.org>
19
20         * ircd/channel.c (find_delayed_joins): Move earlier in the file.
21         (modebuf_flush_int): Move the checks for changing between +D and
22         +d to here...
23         (modebuf_flush): ... from here.
24
25 2010-01-03  Michael Poole <mdpoole@troilus.org>
26
27         * ircd/m_server.c (check_loop_and_lh): Never return 1 when we kill
28         another server.  Update the squit message text for maxhops and hub
29         violations.
30
31 2010-01-03  Michael Poole <mdpoole@troilus.org>
32
33         * ircd/Makefile.in (IRCD_SRC): Add m_xquery.c and m_xreply.c to
34         the build.
35
36         * ircd/m_xquery.c: Add missing include.
37         (mo_xquery): Fix spelling of struct Client.
38         (ms_xquery): Likewise.
39
40         * ircd/m_xreply.c: Add missing includes.
41         (ms_xreply): Fix spelling of struct Client and findNUser().
42
43 2010-01-01  Kevin L. Mitchell  <klmitch@mit.edu>
44
45         * doc/readme.xquery: documentation for design and use of the
46         extension query mechanism
47
48         * doc/readme.iauth: document X iauth message and X and x server
49         messages
50
51         * include/msg.h: declare XQUERY/XQ and XREPLY/XR commands/tokens
52
53         * include/handlers.h: declare mo_xquery(), ms_xquery(), and
54         ms_xreply() message handlers
55
56         * include/s_auth.h: declare auth_send_xreply() to forward replies
57         to extension queries to the iauth instance
58
59         * ircd/m_xquery.c: process extension queries
60
61         * ircd/m_xreply.c: process replies to extension queries
62
63         * ircd/parse.c: add XQUERY and XREPLY commands to the list
64
65         * ircd/s_auth.c: add support for extension queries to iauth
66         protocol
67
68 2010-01-01  Michael Poole <mdpoole@troilus.org>
69
70         * ircd/s_auth.c (iauth_do_spawn): Add debug output to diagnose
71         which system call might be failing.
72         (auth_spawn): Avoid reading past the end of iauth->i_argv[].  When
73         discarding an existing IAuth instance, use auth_close_unused() to
74         close the sockets and avoid leaking memory.
75
76 2010-01-01  Michael Poole <mdpoole@troilus.org>
77
78         * ircd/channel.c (mode_process_bans): Bypass total ban count and
79         length checks for OPMODEs.
80
81 2010-01-01  Michael Poole <mdpoole@troilus.org>
82
83         * ircd/ircd_features.c (feature_report): If sd->sd_funcdata is
84         non-zero, report even unchanged features (using prefix 'f').
85
86         * ircd/s_stats.c (statsinfo): Make "/stats f" case-sensitive, and
87         use the upper case variant to report all features.
88
89 2009-07-30  Michael Poole <mdpoole@troilus.org>
90
91         * ircd/s_user.c (register_user): Move the default-usermodes call
92         to set_user_mode() to before SetUser(), so that the former does
93         not increment the UserStats fields.  Add back the explicit
94         adjustments to UserStats for invisible and opered clients.
95
96 2009-07-05  Michael Poole <mdpoole@troilus.org>
97
98         * ircd/s_user.c (register_user): Use correct parc for
99         set_user_mode().  Do not increment UserStats fields here, because
100         set_user_mode() handles that.
101
102 2009-07-05  Michael Poole <mdpoole@troilus.org>
103
104         * ircd/m_gline.c (ms_gline): Fix the sense of the test for
105         strtoul() when parsing G-line lifetimes -- zero indicates failure.
106
107 2009-07-05  Michael Poole <mdpoole@troilus.org>
108
109         * ircd/channel.c (mode_parse_client): Ignore anything after a
110         colon when the mode is CHFL_VOICE or the mode is being removed.
111
112 2009-07-04  Michael Poole <mdpoole@troilus.org>
113
114         * ircd/s_auth.c (find_conf_client): New function.
115         (preregister_user): Use it to avoid assigning a second conf class
116         on client connection.
117         (auth_ping_timeout): Send the "T" message only if we do not kill
118         the client (and thus send a "D" message).
119         (auth_find_classs_conf): Do not allow IAuth to select a disabled
120         class.  Unlink new conf items from GlobalConfList.
121         (iauth_cmd_done_client): Handle failures from attach_conf().
122         (iauth_parse): Behave decently when a client is killed by the
123         message handler.
124
125         * tools/iauth-test (%handlers): Add entries to help test this.
126
127 2009-07-04  Michael Poole <mdpoole@troilus.org>
128
129         * include/channel.h (RevealDelayedJoinIfNeeded): Declare.
130
131         * ircd/channel.c (RevealDelayedJoinIfNeeded): Implement.
132
133         * ircd/ircd_relay.c (relay_channel_message): Only reveal the user
134         if he passes the check_target_limit() test.
135         (relay_channel_notice): Likewise.
136
137         * ircd/m_wallchops.c (m_wallchops): Likewise.
138
139         * ircd/m_wallvoices.c (m_wallvoices): Likewise.
140
141         * ircd/s_user.c (check_target_limit): Micro-optimize to only check
142         the user's channel list for invites if we are about to deny it.
143
144 2009-03-25  Michael Poole <mdpoole@troilus.org>
145
146         * ircd/ircd.c (main): Unconditionally set +6 flag on self.
147
148 2009-03-25  Michael Poole <mdpoole@troilus.org>
149
150         * ircd/s_auth.c (iauth_cmd_hostname): Properly assign the spoofed
151         hostname (yea, even as the "real" host) in the hurry state.
152
153         * tools/iauth-test: Add reminder about perl's RTMIN signal and a
154         new handler to exercise the N command in the hurry state.
155
156 2009-03-25  Michael Poole <mdpoole@troilus.org>
157
158         * ircd/channel.c (mode_parse): Add Doxygen comment.  When bouncing
159         a mode from a desynced U-lined server, do not set the modes or
160         send the change as a HACK(4) message.
161
162 2009-03-17  Michael Poole <mdpoole@troilus.org>
163
164         * ircd/send.c (sendcmdto_match_butone): Move match_it() to the end
165         of the if() to minimize the number of expensive function calls.
166
167 2009-03-17  Michael Poole <mdpoole@troilus.org>
168
169         * patches/diffs/antispambot.diff: Forward port a patch by Dianora
170         to add rudimentary spam bot detection to ircu.
171
172 2009-02-08  Michael Poole <mdpoole@troilus.org>
173
174         * include/client.h (ClearHub): New macro.
175
176         * ircd/ircd.c (main): Set IPv6 flag on &me if appropriate.
177
178         * ircd/ircd_features.c (feature_notify_hub): New function.
179         (features[]): Register it for FEAT_HUB.
180
181         * ircd/ircd_parser.y (connectblock): Do not default maxlinks to
182         65535 unless "hub" is specified.
183         (clientblock): Reset maxlinks on cleanup.
184
185 2009-02-08  Michael Poole <mdpoole@troilus.org>
186
187         * ircd/channel.c (clean_channelname): Delete this function; it is
188         no longer used, and had the same length-off-by-one bug.
189
190         * ircd/m_join.c (m_join): Use > instead of >= with CHANNELLEN.
191
192         * tests/ircd.conf: Set CHANNELLEN to make it easier to test this.
193
194         * tests/bug-2328334.cmd: New file for regression testing.
195
196 2009-02-08  Michael Poole <mdpoole@troilus.org>
197
198         * include/numeric.h (ERR_INVALIDKEY): Define new numeric.
199
200         * ircd/s_err.c (ERR_INVALIDKEY): Give it a text string.
201
202         * ircd/channel.c (is_clean_key): Rename from clean_key(), and make
203         this function responsible for sending error messages to the client
204         when necessary.
205         (mode_parse_key): Update to match the new is_clean_key() behavior.
206         (mode_parse_upass): Likewise.
207         (mode_parse_apass): Likewise.
208
209         * tests/channel-keys.cmd: New file for regression testing.
210
211 2009-02-08  Michael Poole <mdpoole@troilus.org>
212
213         * include/gline.h (gline_forward_deactivation): Undeclare.
214
215         * ircd/m_gline.c (mo_gline): Remove the special case to call
216         gline_forward_deactivation().
217
218         * ircd/gline.c (gline_add): Mention if the new G-line is already
219         deactivated.
220         (gline_forward_deactivation): Delete implementation.
221
222         * tests/glines.cmd: Update the expected output to match.
223
224 2009-01-12  Michael Poole <mdpoole@troilus.org>
225
226         * ircd/m_topic.c (do_settopic): Just before sending the topic out,
227         check to see if the user is join-delayed and should be shown.
228
229         * ircd/m_wallchops.c (m_wallchops): Allow this command to expose
230         join-delayed users.
231         (ms_wallchops): Likewise.
232
233         * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose
234         join-delayed users.
235         (ms_wallvoices): Likewise.
236
237 2009-01-12  Michael Poole <mdpoole@troilus.org>
238
239         * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
240
241 2009-01-12  Michael Poole <mdpoole@troilus.org>
242
243         * ircd/gline.c (count_users): Accept "flags" mask to limit count
244         to local users.
245         (gline_add): Pass the flags to count_users().
246
247 2009-01-12  Michael Poole <mdpoole@troilus.org>
248
249         * include/gline.h (gline_forward_deactivation): Declare.
250
251         * ircd/gline.c (count_users): Use ipmask-based checks too.
252         (gline_add): Require flags to have exactly one of the GLINE_GLOBAL
253         and GLINE_LOCAL bits set.
254         (gline_forward_deactivation): Implement new function.
255         (gline_find): Only require the GLINE_LOCAL flag to be set in the
256         gline structure; infer GLINE_GLOBAL when it is cleared.  (This
257         matches the value and usage of GLINE_MASK.)
258
259         * ircd/m_gline.c (ms_gline): Default lastmod to the known lastmod
260         time for GLINE_LOCAL_{DE,}ACTIVATE.
261         (mo_gline): Check that expiration times parse as expected.  Reject
262         "*" as a target for GLINE_LOCAL_{DE,}ACTIVATE.  Require reason and
263         expiration time for new G-lines.  Allow deactivation of an unknown
264         G-line without creating it ("so-and-so ... creating new G-line" is
265         a confusing message for a deactivation).
266
267         * tests/glines.cmd: New test script for G-line parsing tests.
268
269         * tests/ircd.conf: Enable CONFIG_OPERCMDS for glines.cmd.
270
271         * tests/ircd-2.conf: Likewise.
272
273         * tests/readme.txt: Add section on command syntax.
274
275         * tests/test-driver.pl: Report line numbers more clearly.
276         Fix (somewhat kludgily) the brokenness of consecutive "expect"
277         lines, as demonstrated by the numeric 219 and 281 expects in
278         glines.cmd.
279
280 2008-11-17  Michael Poole <mdpoole@troilus.org>
281
282         * ircd/m_kick.c (ms_kick): Properly handle crossing net rider and
283         normal KICKs (in the case where we get the normal kick first).
284
285 2008-11-17  Michael Poole <mdpoole@troilus.org>
286
287         * ircd/match.c (match): Fix an error in backtracking (apparently
288         exacerbated by escapes).
289
290         * ircd/test/ircd_match_t.c: Update headers and make sure we have a
291         mmap() anonymous request flag.
292         (test_match): New function.
293         (do_match_test): Use it instead of calling match() directly.
294
295 2008-09-07  Perry Lorier <isomer@undernet.org>
296         
297         * ircd/m_kill.c: Remove the . from the end of the nickname in kill
298         messages to make cut and pasting easier.
299
300 2008-03-20  Michael Poole <mdpoole@troilus.org>
301
302         * ircd/ircd_string.c (ircd_aton_ip4): Reject strings with more
303         than 3 dots in them.
304
305         * ircd/test/ircd_in_addr_t.c (test_addrs): Update the expected
306         parsing for a bare IPv4 address to a IPv4-mapped address.
307         (test_masks): Add a test for the ircd_string.c change.
308
309 2008-03-20  Kevin L. Mitchell  <klmitch@mit.edu>
310
311         * include/client.h: IsLocOp() now checks to see if its MyUser() as
312         well; IsAnOper() uses IsOper() and IsLocOp() instead of directly
313         testing the flags
314
315 2008-03-15  Michael Poole <mdpoole@troilus.org>
316
317         * ircd/s_bsd.c (init_connection_limits): Remove errant apostrophe.
318         Print text error message when unable to set max FDs.
319
320 2008-03-15  Michael Poole <mdpoole@troilus.org>
321
322         * ircd/s_user.c (set_user_mode): Check for end of argument list
323         when processing 'r' modes.
324
325 2008-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
326
327         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
328
329 2008-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
330
331         * ircd/m_burst.c (ms_burst): surround protocol_violation() and
332         break in braces to do what Jan Krueger was trying to do...
333
334 2008-01-03  Jan Krueger  <jast@heapsort.de>
335
336        * ircd/m_burst.c: prevent leaking the next nick into the current one's
337        oplevel. Add protocol_violation when an invalid nick flag appears.
338
339 2007-12-28  Kevin L. Mitchell  <klmitch@mit.edu>
340
341         * ircd/channel.c: add MODE_REGISTERED, mapped to +R; arrange to
342         only have it settable or clearable by remote users or /opmode
343
344         * include/supported.h (FEATURESVALUES2): update to include 'R'
345         channel mode
346
347         * include/channel.h: add MODE_REGISTERED, update infochanmodes to
348         include 'R' channel mode
349
350 2007-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
351
352         * ircd/m_gline.c (ms_gline): if we got an activate or deactivate
353         for a global G-line we never heard of, and we cannot create it
354         because no expire time was sent, manually propagate the G-line
355         instead of trying to call gline_add()
356
357         * ircd/gline.c (make_gline): never allow a G-line to be created
358         with a 0 expire time
359
360 2007-12-03  Michael Poole <mdpoole@troilus.org>
361
362         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.12 release.
363
364 2007-12-03  Michael Poole <mdpoole@troilus.org>
365
366         * doc/Makefile.in (DATAROOTDIR): Define.
367         (DATADIR): Likewise.
368         
369 2007-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
370
371         * ircd/version.c.SH: correct invalid syntax in shell case/esac
372
373         * ircd/ircd_lexer.l: provide an implementation of yywrap() so we
374         no longer have to link against -lfl
375
376         * configure.in: drop tests on LEXLIB and don't add it to the list
377         of libs
378
379         * ircd/gline.c (gline_add): apply too-many-users test to realname
380         G-lines *only* when the origin is my user (or a user, for
381         remote-local G-lines)
382
383 2007-11-28  Michael Poole <mdpoole@troilus.org>
384
385         * include/patchlevel.h (PATCHLEVEL): Bump for pre12 development.
386
387 2007-11-28  Michael Poole <mdpoole@troilus.org>
388
389         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.11 release.
390
391 2007-11-28  Michael Poole <mdpoole@troilus.org>
392
393         * tests/test-driver.pl (drv_default): Fix expect for numeric
394         responses that have non-trivial parameters.
395         (check_expect): Simplify (and fix) sender name check.
396
397         * tests/bug-1640796.cmd: Update expect NNN for new POE behavior
398         and part to not try to part the channel named "leaving".
399
400         * tests/bug-1674539.cmd: Update expect NNN for new POE behavior.
401
402         * tests/bug-1840011.cmd: New test script.
403         
404 2007-11-28  Michael Poole <mdpoole@troilus.org>
405
406         * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
407         (apply_ban): Only block narrower bans if the wider ban is active.
408
409 2007-11-24  Michael Poole <mdpoole@troilus.org>
410
411         * ircd/m_names.c (do_names): Don't try to re-initialize the start
412         of buf[] for each line.  It's done the first time around and that
413         can be reused safely.
414
415 2007-11-17  Michael Poole <mdpoole@troilus.org>
416
417         * ircd/m_stats.c (m_stats): Properly assign param before it is
418         used in the hunt_server_cmd() call.
419         
420 2007-11-17  Michael Poole <mdpoole@troilus.org>
421
422         * ircd/s_auth.c (iauth_disconnect): Avoid destroying invalid
423         sockets.
424         (iauth_stderr_callback): Disconnect iauth child if stderr has
425         EOF (in case stdin notification is delayed somehow).
426         
427 2007-11-04  Michael Poole <mdpoole@troilus.org>
428
429         * ircd/umkpasswd.c (sum): Typecast buffer to avoid a warning about
430         the parameter type being passed to strlen().
431         
432 2007-11-04  Michael Poole <mdpoole@troilus.org>
433
434         * doc/example.conf: Document /LIST M as controlled by list_chan.
435
436         * include/channel.h (LISTARG_SHOWMODES): Define.
437
438         * ircd/hash.c (list_next_channels): Handle it.
439
440         * ircd/m_list.c (show_usage): Document 'M' flag.
441         (param_parse): Recognize 'M' as LISTARGS_SHOWMODES.
442
443 2007-11-04  Michael Poole <mdpoole@troilus.org>
444
445         * ircd/m_list.c (param_parse): Reverse comparison direction when
446         converting from minutes to time_t, and which bound is set (so that
447         T<time_t works correctly).  Also switch is_time cases so that 'T'
448         and 'C' work as documented.  Remove a "break" after a "return".
449
450         (m_list): Remove a "break" after a "return".
451
452 2007-10-29  Michael Poole <mdpoole@troilus.org>
453
454         * ircd/ircd_lexer.l (YY_INPUT): Redefine to use fbgets().
455         (init_lexer): Return a value to indicate failure.  Use fbopen().
456         (deinit_lexer): New function.
457
458         * ircd/s_conf.c (read_configuration_file): Update extern
459         declarations.  Bail if init_lexer() fails.  Call deinit_lexer()
460         rather than directly munging yyin.
461
462 2007-10-29  Michael Poole <mdpoole@troilus.org>
463
464         * include/gline.h: Delete declaration of gline_propagate().
465
466         * include/whocmds.h: Delete declaration of count_users().
467
468         * ircd/whocmds.c (count_users): Move to gline.c as a static.
469
470         * ircd/gline.c (whocmds.h): Remove #include.
471         (gliter): Document boolean trickiness.  Add missing trickiness
472         when gl_flags has bits set besides GLINE_ACTIVE.
473         (make_gline): Get rid of now-unused "after" variable and the
474         comments related to overlapping G-lines.
475         (gline_propagate): Make static.
476         (count_users): Move from whocmds.c as a static function.
477         (count_realnames): New function.
478         (gline_add): Require a force to hit lots of users with a realname
479         G-line.
480
481 2007-09-05  Michael Poole <mdpoole@troilus.org>
482
483         * ircd/m_gline.c (ms_gline): Remove dead branch when 4 < parc < 5.
484         (mo_gline): Consistently use the last argument as the reason.
485
486 2007-09-05  Michael Poole <mdpoole@troilus.org>
487
488         * ircd/Makefile.in: Fix dependencies for version.h generation.
489
490 2007-08-20  Michael Poole <mdpoole@troilus.org>
491
492         * ircd/send.c (sendwallto_group_butone): Move a feature_bool()
493         call out of a loop.  Convert HasFlag() uses to appropriate macros
494         from client.h.
495
496 2007-08-20  Michael Poole <mdpoole@troilus.org>
497
498         * ircd/ircd_string.c (ircd_aton_ip4): Allow a sequence of *.* at
499         the end of an IPv4 mask.
500         (ipmask_parse): Likewise for *:* at the end of IPv6 masks.
501
502         * ircd/test/ircd_in_addr_t.c (test_masks): Add tests for this.
503
504 2007-08-20  Michael Poole <mdpoole@troilus.org>
505
506         * ircd/s_user.c (register_user): Update inv_clients and opers
507         counts.  Call client_set_privs() for local users.
508         (set_nick_name): Do not call client_set_privs() for remote users.
509         (set_user_mode): Move oper and invisible client checks inside the
510         IsRegistered() section.
511
512 2007-08-14  Michael Poole <mdpoole@troilus.org>
513
514         * ircd/channel.c (DONE_*): Split key changes into _ADD and _DEL.
515         (mode_parse_key): Check both, to properly handle -k+k changes.
516         (mode_parse_upass): Likewise, for -U+U.
517         (mode_parse_apass): Liekwise, for -A+A (in case that ever happens).
518         (mode_parse): Update which "done" flag is checked during a wipeout.
519
520 2007-08-13  Michael Poole <mdpoole@troilus.org>
521
522         * ircd/s_user.c (whipser): CNOTICEs should not trigger away
523         messages, only CPRIVMSGs.
524
525 2007-08-13  Michael Poole <mdpoole@troilus.org>
526
527         * ircd/m_who.c (m_who): Reorder responses and change the
528         ERR_QUERYTOOLONG parameter to be consistent with m_whois().
529         
530 2007-08-13  Michael Poole <mdpoole@troilus.org>
531
532         * ircd/s_user.c (register_user): Initialize umodev[] in a
533         C89-compatible way.  (gcc 4.1.2 warned about it.)
534
535 2007-08-13  Michael Poole <mdpoole@troilus.org>
536
537         * ircd/m_names.c (do_names): Add NAMES_DEL to comment.  Avoid use
538         of strcat().  Get rid of ms_names(), which was basically a copy of
539         m_names(), and merge the "showingdelayed" changes into m_names().
540         Replace the recursion with iteration.
541
542         * ircd/parse.c (msgtab): Use m_names(), not ms_names().
543
544 2007-08-08  Michael Poole <mdpoole@troilus.org>
545
546         * ircd/s_auth.c (report_iauth_conf): Remove end-of-stats message;
547         m_stats() already does that.
548
549         (report_iauth_stats): Likewise.
550
551 2007-08-08  Michael Poole <mdpoole@troilus.org>
552
553         * include/res.h (irc_in_addr_is_ipv4): Fix classification of
554         addresses like 0.0.0.0.
555
556 2007-07-21  Perry Lorier <isomer@undernet.org>
557
558         * ircd/s_user.c: Move set_nick_name() to use set_user_mode(),
559         set_user_mode() now interprets +r usermodes properly (and ignores
560         them from non servers).  This fixes a problem where remote users
561         weren't being counted properly anymore.
562
563 2007-07-20  Kevin L. Mitchell  <klmitch@mit.edu>
564
565         * ircd/m_gline.c: create abs_expire() macro to convert an expire
566         timestamp from the network into an absolute time, if needed;
567         rename expire_off to expire globally, since it now represents an
568         absolute expiration time; use expire - CurrentTime in gline
569         forwarding statements; in ms_gline(), use abs_expire() to convert
570         network expiration timestamp into absolute timestamp; in
571         mo_gline(), add CurrentTime to oper-provided expiration offset to
572         convert to absolute timestamp
573
574         * ircd/gline.c: assume expire and lifetime arguments to
575         gline_add() and gline_modify() are already absolute timestamps;
576         send lifetime parameter as an absolute timestamp, but leave expire
577         timestamp as relative as first part of a 2-phase update
578
579 2007-07-12  Perry Lorier <isomer@undernet.org>
580         Reconsider how we manage modes before registration, to avoid stats
581         getting out of sync.
582
583         * ircd/s_user.c (set_user_mode): Add new parameter to set_user_mode to
584         ignore some modes.
585         (register_user): Use set_user_mode to parse default usermode for
586         users.
587
588         * ircd/m_user.c: Add extra parameter to set_user_mode call
589
590         * ircd/s_auth.c: Add extra parameter to set_user_mode call
591
592         * ircd/m_mode.c: Add extra parameter to set_user_mode call
593
594         * ircd/s_misc.c: Verify stats are consistant.
595
596         * include/s_user.h: Change prototype, add flag definitions.
597
598         * ircd/m_lusers.c (m_users): Assert that we're generating sane stats,
599         include "unknowns" in the total user connections to avoid negative
600         wrap arounds.
601
602 2007-07-12  Perry Lorier <isomer@undernet.org>
603         
604         * ircd/m_user.c (m_luser): Fix broken RFC 2812 on connect user mode 
605         setting
606
607 2007-05-28  Michael Poole <mdpoole@troilus.org>
608
609         * include/numeric.h (ERR_INPUTTOOLONG): New numeric.
610
611         * ircd/s_bsd.c (read_packet): Use it.
612
613         * ircd/s_err.c (replyTable): Give it a format string.
614
615 2007-05-20  Michael Poole <mdpoole@troilus.org>
616
617         * ircd/m_burst.c (ms_burst): Do not let bursting servers join a
618         user to a channel more than once.
619
620 2007-05-20  Michael Poole <mdpoole@troilus.org>
621
622         * ircd/ircd_features.c (feature_set): Report new value of feature
623         for /set.
624         (feature_reset): Likewise, for /reset.
625
626 2007-05-20  Michael Poole <mdpoole@troilus.org>
627
628         * ircd/m_burst.c (netride_modes): Return -1 if someone tries to
629         remove modes in the burst.
630         (ms_burst): Check for, and handle, that protocol violation.
631
632 2007-05-20  Michael Poole <mdpoole@troilus.org>
633
634         * ircd/m_privs.c (mo_privs): Report "no such nickname" for unknown
635         nicks in the list.  (Unfortunately, the nick is lost before ms_privs.)
636
637 2007-05-20  Michael Poole <mdpoole@troilus.org>
638
639         * ircd/listener.c (show_ports): Actually hide hidden ports from
640         clients that should not see them.
641
642 2007-05-20  Michael Poole <mdpoole@troilus.org>
643
644         * ircd/s_err.c (ERR_DONTCHEAT): Add apparently missing %s.
645         
646 2007-05-20  Michael Poole <mdpoole@troilus.org>
647
648         * ircd/m_connect.c (mo_connect): Return an error to a locop who
649         tries to do a remote connect.
650
651 2007-05-20  Michael Poole <mdpoole@troilus.org>
652
653         * ircd/parse.c (msgtab): Make SETTIME consistent with other
654         oper commands, in using m_not_oper for non-opered clients.
655
656 2007-05-20  Michael Poole <mdpoole@troilus.org>
657
658         * ircd/ircd_parser.y (pseudoblock): Forbid pseudo commands that
659         are not all alphabetic characters.
660
661 2007-05-20  Michael Poole <mdpoole@troilus.org>
662
663         * configure.in (maxcon): Check that maximum connections is
664         sufficiently large to avoid underflow in MAXCLIENTS.
665         
666 2007-05-20  Michael Poole <mdpoole@troilus.org>
667
668         * include/supported.h (FEATURES2): Remove extra space.
669
670         * ircd/m_admin.c (m_admin): Only check server mask against our
671         name, so that it cannot leak information about other linked
672         servers.
673
674         * ircd/m_version.c (m_version): Likewise.
675         
676 2007-04-15  Kevin L. Mitchell  <klmitch@mit.edu>
677
678         * ircd/m_gline.c: fix minor typo in code that forwards remote
679         local activations/deactivations: %c takes characters, not
680         pointers!
681         (mo_gline): fix similar typo in code forwarding remote local
682         G-lines by opers
683
684 2007-04-10  Michael Poole <mdpoole@troilus.org>
685
686         * ircd/ircd_parser.y (iauth): Avoid problems related to MyFree's
687         multiple evaluation of its argument.
688
689 2007-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
690
691         * ircd/m_gline.c (ms_gline): lastmod must be non-zero
692
693 2007-04-04  Michael Poole <mdpoole@troilus.org>
694
695         * ircd/s_conf.c (rehash): Restart resolver after reading the
696         config file; this un-breaks the resolver after /rehash if the
697         ircd.conf contains no "dns server = <ipstring>;" lines.
698
699 2007-04-01  J. R. Lenz <ralf@starshadow.com>
700
701         * ircd/s_user.c (register_user): Check for host-hiding when fully
702         registering a user.  [Comment added by Entrope.]
703
704 2007-03-31  Michael Poole <mdpoole@troilus.org>
705
706         * doc/readme.iauth (IAuth M): Document new command.
707
708         * ircd/m_user.c (m_user): Recognize RFC 2812 mode request and a
709         saner usermode request.
710
711         * ircd/s_auth.c (iauth_cmd_usermode): New command.
712         (iauth_parse): Dispatch to it.
713
714         * ircd/s_user.c (set_user_mode): Only broadcast usermode changes
715         for registered clients.
716
717         * tools/iauth-test (127.0.1.3): Test the new M command.
718
719 2007-03-31  Michael Poole <mdpoole@troilus.org>
720
721         * ircd/m_mode.c (m_mode): Check and report target/source
722         violations before calling set_user_mode().
723         (ms_mode): Likewise.
724
725         * ircd/s_user.c (set_user_mode): Remove those checks from here.
726
727 2007-03-31  Michael Poole <mdpoole@troilus.org>
728
729         * include/ircd_events.h (struct Generators): Convert elements to
730         be struct GenHeader*.
731         (timer_next): Update to match.
732
733         * ircd/ircd_events.c (timer_enqueue): Update to match.
734         (signal_callback): Likewise.
735         (timer_init): Remove a typecast with something slightly safer.
736         (timer_run): Update to deal with new type of Generator.g_timer.
737         (signal_add): Likewise.
738         (socket_add): Likewise.
739         
740 2007-03-28  Michael Poole <mdpoole@troilus.org>
741
742         * ircd/m_asll.c (ms_asll): Count hits and report at the end, so
743         that a client is told whether any match (and has a hint that only
744         directly linked servers are checked).
745         (mo_asll): Likewise.
746
747 2007-03-26  Michael Poole <mdpoole@troilus.org>
748
749         * ircd/s_stats.c (m_stats): Move check for STAT_FLAG_LOCONLY (and
750         the assignment to "param") to the hunted server.
751
752 2007-03-26  Michael Poole <mdpoole@troilus.org>
753
754         * ircd/s_auth.c (iauth_parse): Check for missing arguments when
755         parsing the iauth message.
756
757         * tests/bug-1685648.cmd: New file to test this.
758
759         * tests/iauth-test: New file to exercise the code path.
760
761         * tests/ircd.conf: Use the iauth-test helper program.
762
763 2007-03-26  Michael Poole <mdpoole@troilus.org>
764
765         * ircd/m_silence.c (forward_silences): Do not try twice to process
766         silences that were both added and deleted.
767
768 2007-03-26  Michael Poole <mdpoole@troilus.org>
769
770         * ircd/ircd_parser.y (portblock): Restore old behavior for Port
771         blocks with no host listed.
772
773 2007-03-26  Michael Poole <mdpoole@troilus.org>
774
775         * doc/readme.iauth (iauth I): Fix example and syntax.
776
777 2007-03-18  Michael Poole <mdpoole@troilus.org>
778
779         * acinclude.m4 (unet_NONBLOCKING): Properly quote function name.
780         (unet_SIGNALS): Likewise.
781         (unet_CHECK_TYPE_SIZES): Likewise.
782         (AC_LIBRARY_NET): Likewise.
783
784 2007-03-18  Kevin L. Mitchell  <klmitch@mit.edu>
785
786         * ircd/m_gline.c (mo_gline): add permissions checks I kept
787         forgetting to add--remote local modifications require
788         FEAT_CONFIG_OPERCMDS and PRIV_GLINE, local G-lines require
789         PRIV_LOCAL_GLINE, and global G-line changes (excluding local
790         activation/deactivation) require FEAT_CONFIG_OPERCMDS and
791         PRIV_GLINE
792
793 2007-03-17  Michael Poole <mdpoole@troilus.org>
794
795         * doc/example.conf (CRule): Document the support for multiple
796         server masks in a single CRule block.
797         (Port): Document the optional additional field for vhost entries.
798         Document the support for multiple vhost entries in a single Port
799         block.
800
801         * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
802         (USE_IPV6): Likewise.
803         (portblock): Iterate over hosts rather than using the single host.
804         (portitem): Add portvhostnumber alternative production.
805         (portnumber): Check port number here.  If valid, combine address
806         family and port number in "port" variable.  If a port-less item
807         exists in "hosts", set its port number.
808         (portvhost): Prepend mask to "hosts" list.
809         (portvhostnumber): New production.
810         (cruleblock): Iterate over hosts rather than using the single
811         host.
812         (cruleserver): Prepend server mask to "hosts" list.
813
814 2007-03-17  Michael Poole <mdpoole@troilus.org>
815
816         * ircd/listener.c (add_listener): Only try to create IPv6 sockets
817         for IPv6-compatible addresses; likewise for IPv4.
818
819 2007-03-17  Michael Poole <mdpoole@troilus.org>
820
821         * doc/example.conf (Operator): Update documentation to mention
822         more than one host entry is allowed.
823         (Motd): Likewise.
824
825         * ircd/ircd_parser.y (hosts): New file-scope variable.
826         (free_slist): New helper function.
827         (operblock): Iterate over hosts instead of using the single host.
828         (operhost): Prepend the mask to hosts.
829         (motdblock): Iterate over hosts instead of using the single host.
830         (motdhost): Prepend the mask to hosts.
831         (motdfile): Fix possible leak of "pass" string (the filename).
832
833         * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
834         string; operblock (the only caller) frees it now.
835
836 2007-03-17  Michael Poole <mdpoole@troilus.org>
837
838         * ircd/list.c (free_link): Only decrement the in-use count of
839         links if we free a link.
840
841 2007-03-17  Kevin L. Mitchell  <klmitch@mit.edu>
842
843         * ircd/s_err.c: update replies to handle new fields in
844         RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
845         G-line lifetime, and local activation status
846
847         * ircd/m_gline.c: update function documentation for ms_gline();
848         move test for server to before mask processing; don't look up
849         remote server too early; add code to process local activations and
850         deactivations early in ms_gline(); implement adding and destroying
851         local G-lines; don't try to locally activate or deactivate G-lines
852         that don't exist; add code to keep track of which fields were
853         available to ms_gline(); implement G-line modification and
854         creation; remove old ms_gline() code; convert
855         sendwallto_group_butone() calls to Debug() calls; reimplement
856         mo_gline() to take into account new syntax
857
858         * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
859         its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
860         G-line expires; add lifetime parameter to make_gline(); disable
861         overlapping G-line check; initialize gl_lifetime from lifetime
862         parameter; initialize gl_state to GLOCAL_GLOBAL; update
863         gline_propagate() to send lifetime parameter; add lifetime
864         parameter to gline_add(); remove some old code in gline_add();
865         figure out lifetime to set on new G-line; remove test for
866         make_gline() returning NULL, since it should never do so now; add
867         modify_gline() for modifying global G-lines; add gline_destroy()
868         for destroying local G-lines; update gline_burst() to send
869         lifetime parameter; update gline_resend() to send lifetime
870         parameter; update gline_list() to add lastmod, lifetime, and local
871         status indicators; update gline_stats() to send lastmod, lifetime,
872         and local status indicators; count BADCHANs in
873         gline_memory_count()
874
875         * include/gline.h: add enum GlineLocalState for keeping track of
876         local state changes to global G-lines; store state in struct
877         Gline; document enum GlineAction; add GLINE_EXPIRE,
878         GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
879         those fields to gline_modify(); add GLINE_UPDATE mask for checking
880         for the above flags; update GlineIsActive() to take into account
881         new gl_state field in struct Gline; add lifetime to gline_add();
882         add gline_modify() for modifying existing global G-lines, and
883         gline_destroy() for destroying local G-lines
884
885         * doc/readme.gline: update documentation to reflect changes made
886         to G-line command syntax
887
888 2007-03-17  Michael Poole <mdpoole@troilus.org>
889
890         * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
891         aborting on unrecognized arguments.  It isn't nice to core on
892         "umkpasswd --help"..
893
894 2007-03-16  Michael Poole <mdpoole@troilus.org>
895
896         * doc/example.conf (Class): Move the "Recommended client classes"
897         comment to a better place (and stop recommending them).  Clarify
898         what maxlinks does.  Make it clear that Operator password entries
899         only support umkpasswd formats.
900         
901 2007-03-16  Michael Poole <mdpoole@troilus.org>
902
903         * ircd/ircd.c (parse_command_line): Emit a warning if using -x
904         when DEBUGMODE is disabled.
905
906 2007-03-16  Michael Poole <mdpoole@troilus.org>
907
908         * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
909         unlimited here, to match attach_conf()'s behavior.
910
911 2007-03-16  Kevin L. Mitchell  <klmitch@mit.edu>
912
913         * ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to
914         checking for a G-line matching a new user
915
916         * ircd/m_gline.c (ms_gline): rework ms_gline() to handle new
917         command syntax--although it can parse the new syntax, it doesn't
918         yet perform the actions demanded by that syntax
919
920         * ircd/ircd_features.c: trap-door feature FEAT_DISABLE_GLINES to
921         disable G-lines
922
923         * ircd/gline.c: create gliter() macro which performs an iteration
924         over all G-lines in a specified G-line list; initialize record
925         expire in make_gline() (to be redone); check FEAT_DISABLE_GLINES
926         in do_gline(); add and document what happens if GLINE_LOCAL is
927         passed to gline_find()
928
929         * include/ircd_features.h: trap-door feature FEAT_DISABLE_GLINES
930         to disable G-lines; intended use: accidental G-line of *@*
931
932         * include/gline.h: add rexpire (record expiration time) field to
933         gline description structure; add GlineAction enumeration (still
934         undocumented) to describe actions that may be performed on G-lines
935
936 2007-03-09  Michael Poole <mdpoole@troilus.org>
937
938         * include/patchlevel.h (PATCHLEVEL): Bump for .pre11 development.
939
940 2007-03-09  Michael Poole <mdpoole@troilus.org>
941
942         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release.
943
944 2007-03-05  Michael Poole <mdpoole@troilus.org>
945
946         * ircd/m_privs.c (ms_privs): Use the correct source when
947         forwarding the PRIVS request.
948
949         * tests/bug-1674539.cmd: New file to test for this.
950
951         * tests/test-driver.pl: Recognize "oper" command from scripts.
952
953 2007-03-05  Michael Poole <mdpoole@troilus.org>
954
955         * tests/ircd.conf: Make into a hub.
956
957         * tests/ircd-2.conf: New file, for a second server.
958
959         * tests/ircd-3.conf: Configuration for a third server.
960
961 2007-03-04  Michael Poole <mdpoole@troilus.org>
962
963         * ircd/whocmds.c (count_users): Fix length of ipbuf.  (Spotted by
964         paulr.)
965
966 2007-02-28  Michael Poole <mdpoole@troilus.org>
967
968         * ircd/os_generic.c (sockaddr_from_irc): Zero out socket address
969         before setting family, and regardless of whether we have an
970         irc_sockaddr template.
971
972 2007-02-25  Michael Poole <mdpoole@troilus.org>
973
974         * doc/example.conf: Document new options for General block.
975         
976         * include/res.h (clear_nameservers): Declare new function.
977         (add_nameserver): Declare previously static function.
978
979         * include/s_bsd.h (VirtualHost_dns_v4): Declare.
980         (VirtualHost_dns_v6): Likewise.
981
982         * ircd/ircd_lexer.l (DNS): Recognize new token.
983
984         * ircd/ircd_parser.y (DNS): Declare new token.
985         (generalitem): Allow new items for dns vhost(s) and dns servers.
986         (generaldnsvhost): New production.
987         (generaldnsserver): New production.
988
989         * ircd/ircd_res.c (VirtualHost_dns_v4): New variable.
990         (VirtualHost_dns_v6): Likewise.
991         (clear_nameservers): New function.
992         (restart_resolver): Scan specified servers so we only try to open
993         DNS client sockets that we need.
994
995         * ircd/ircd_reslib.c (irc_nscount): Remove redundant initializer.
996         (irc_res_init): Only read the resolver config file if there are no
997         nameservers provided.
998         (add_nameserver): Make non-static.  Remove off-by-one check
999         against IRCD_MAXNS.
1000
1001         * ircd/s_conf.c (read_configuration_file): Clear nameserver list
1002         before reading the config file.
1003
1004 2007-01-27  Jeannot Langlois <jeannot12@linuxmail.org>
1005
1006         * doc/example.conf (Features): Illustrate URLREG feature.
1007
1008         * doc/readme.features (URLREG): Define new feature.
1009
1010         * include/ircd_features.h (Feature): Add FEAT_URLREG.
1011
1012         * ircd/ircd_features.c (features): Set the default value.
1013
1014         * ircd/m_join.c (m_join): For ERR_NEEDREGGEDNICK, include the
1015         URLREG value as a format argument.
1016
1017         * ircd/s_err.c (replyTable): Update ERR_NEEDREGGEDNICK
1018         appropriately.
1019
1020 2007-02-03  Michael Poole <mdpoole@troilus.org>
1021
1022         * ircd/ircd_reply.c (protocol_violation): Avoid reusing the
1023         va_list in vd.
1024
1025         * ircd/send.c (sendcmdto_channel_butone): Warn against using %v in
1026         the pattern -- that will cause incorrect behavior.
1027         (sendwallto_group_butone): Likewise.
1028         (sendcmdto_match_butone): Likewise.
1029
1030 2007-01-22  Michael Poole <mdpoole@troilus.org>
1031
1032         * ircd/channel.c (find_delayed_joins): New function.
1033         (modebuf_flush): Handle +D-D and related cases.
1034         (mode_parse_mode): It is too early to handle +D here, so don't.
1035         (CheckDelayedJoins): Use find_delayed_joins().
1036
1037 2007-01-22  Michael Poole <mdpoole@troilus.org>
1038
1039         * tests: New subdirectory for test framework.
1040
1041         * tests/ircd.conf: Helper file for testing.
1042
1043         * tests/readme.txt: Simple documentation of test framework.
1044
1045         * tests/test-driver.pl: Testing script interpreter.
1046
1047 2007-01-22  Michael Poole <mdpoole@troilus.org>
1048
1049         * doc/example.conf: Fix potentially confusing comment about ip
1050         mask syntax.
1051
1052 2007-01-22  Michael Poole <mdpoole@troilus.org>
1053
1054         * INSTALL: Mention source directory naming; update the reference
1055         to the config file converter (hah); update CVS directions.
1056
1057 2007-01-22  Michael Poole <mdpoole@troilus.org>
1058
1059         * include/supported.h: Move parameters from FEATURES1 to FEATURES2
1060         so that neither ISUPPORT line has more than 15 parameters.  (Some
1061         clients are picky about this.)
1062
1063 2007-01-21  Michael Poole <mdpoole@troilus.org>
1064
1065         * include/patchlevel.h (PATCHLEVEL): Bump for pre10 development.
1066
1067 2007-01-20  Michael Poole <mdpoole@troilus.org>
1068
1069         * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.09 release.
1070
1071 2007-01-15  Michael Poole <mdpoole@troilus.org>
1072
1073         * doc/readme.iauth (U): Document extended fields.
1074
1075         * include/s_auth.h (auth_set_user): Declare new parameters.
1076
1077         * ircd/m_user.c (m_user): Pass new parameters.
1078
1079         * ircd/s_auth.c (auth_set_user): Accept new parameters.  When
1080         using Undernet extensions, forward them to the iauth process.
1081
1082 2007-01-14  Michael Poole <mdpoole@troilus.org>
1083
1084         * ircd/os_generic.c (os_recv_nonb): Set errno to zero when
1085         returning IO_FAILURE due to a closed connection.
1086
1087 2006-12-31  Michael Poole <mdpoole@troilus.org>
1088
1089         * ircd/m_mode.c (ms_mode): Bounce modes from deopped members.
1090
1091 2006-12-30  Michael Poole <mdpoole@troilus.org>
1092
1093         * ircd/ircd_string.c (ircd_strncpy): Make sure the output buffer
1094         is terminated.  We don't rely on the arguable strncpy semantics.
1095
1096 2006-12-30  Michael Poole <mdpoole@troilus.org>
1097
1098         * include/struct.h (struct Server): Add asll_last field.
1099
1100         * ircd/ircd.c (check_pings): Add check for asll_last.  When a
1101         server doesn't ping, use an old-style ping rather than AsLL ping.
1102
1103         * ircd/m_pong.c (ms_pong): Use ClearPingSent() rather than
1104         ClrFlag().  Set asll_last to current time.
1105         (mr_pong): Use ClearPingSent() rather than ClrFlag().
1106         (m_pong): Likewise.
1107
1108         * ircd/s_bsd.c (completed_connection): Likewise.
1109         (read_packet): Likewise.  Update cli_lasttime for servers in
1110         addition to clients.
1111
1112 2006-01-13  Michael Poole <mdpoole@troilus.org>
1113
1114         * ircd/m_burst.c (ms_burst): Properly handle member mode :ov.
1115
1116 2006-01-13  Michael Poole <mdpoole@troilus.org>
1117
1118         * ircd/m_create.c (ms_create): Add channel name to the protocol
1119         violation notice for a redundant CREATE.
1120
1121 2006-01-13  Michael Poole <mdpoole@troilus.org>
1122
1123         * ircd/s_user.c (set_nick_name): Use user's account name rather
1124         than the account parameter, in case the parameter contains a colon
1125         (i.e. "account:1234" format).
1126
1127 2006-01-13  Michael Poole <mdpoole@troilus.org>
1128
1129         * doc/readme.who: Document 'd' user-matching flag.
1130
1131 2006-12-18  Michael Poole <mdpoole@troilus.org>
1132
1133         * ircd/m_jupe.c (mo_jupe): Fix which privilege is tested.
1134
1135 2006-12-07  Michael Poole <mdpoole@troilus.org>
1136
1137         * ircd/listener.c (show_ports): Update to show '4' and/or '6' as
1138         flags in response, with a '-' suffix if either one fails to open.
1139
1140 2006-12-07  Michael Poole <mdpoole@troilus.org>
1141
1142         * doc/example.conf (Port): Document the method to select IPv4 or
1143         IPv6 restriction for a port.
1144
1145         * include/listener.h (LISTEN_IPV4): New listener flag.
1146         (LISTEN_IPV6): New listener flag.
1147         (struct Listener): Split 'fd' and 'socket' fields into two each.
1148
1149         * ircd/ircd_lexer.l (gb): Move to be alphabetical.
1150         (gigabytes): Likewise.
1151         (ipv4): New token.
1152         (ipv6): Likewise.
1153         Adapted word matcher to handle digits in the non-leading character.
1154
1155         * ircd/ircd_parser.y (USE_IPV4): New macro.
1156         (USE_IPV6): Likewise.
1157         (TOK_IPV4): New token.
1158         (TOK_IPV6): Likewise.
1159         (address_family): New non-terminal rule.
1160         (portblock): Default to listening on both IPv4 and IPv6.
1161         (portnumber): Add address_family element and use it.
1162         (portvhost): Likewise.
1163
1164         * ircd/listener.c (make_listener): Adjust for newly split fields
1165         in struct Listener.
1166         (inetport): Likewise.  Adjust return value as well.
1167         (add_listener): Update to handle both IPv4 and IPV6 support.
1168         (close_listener): Likewise.
1169         (accept_connection): Because each listener has two sockets, it is
1170         no longer safe to free the listener when one is destroyed -- so
1171         don't.  Also accept() on the file descriptor from the incoming
1172         event rather than on a fixed fd.
1173
1174         * ircd/os_generic.c (os_socket): For platforms with IPV6_V6ONLY,
1175         enable it for AF_INET6 sockets rather than disabling it for
1176         unspecified sockets.
1177
1178 2006-12-06  Michael Poole <mdpoole@troilus.org>
1179
1180         * include/listener.h (enum ListenerFlag): New enum.
1181         (struct Listener): Convert "active", "hidden" and "server" to a
1182         flagset.
1183         (add_listener): Convert "is_server" and "is_hidden" arguments to
1184         use the same flagset structure.
1185
1186         * ircd/ircd_parser.y (listen_flags): New variable.
1187         (general_vhost): Consolidate references to $3 to use a variable.
1188         (portblock): Use listen_flags instead of tconn and tping.
1189         (portserver): Likewise.
1190         (porthidden): Likewise.
1191
1192         * ircd/listener.c (show_ports): Use new field in Listener.
1193         (set_listener_options): New function.
1194         (inetport): Use it.
1195         (add_listener): Use new field in Listener.  When reusing an extant
1196         listener, call set_listener_options() so the options are updated.
1197         (mark_listeners_closing): Use new field in Listener.
1198         (close_listeners): Use new helper macro to check activeness.
1199         (release_listener): Likewise.
1200         (accept_connection): Likewise.
1201
1202         * ircd/s_bsd.c (report_error): Use the standard snotice rate
1203         limiting here.
1204         (add_connection): Use new helper macro to check serverness.
1205
1206 2006-11-04  Michael Poole <mdpoole@troilus.org>
1207
1208         * ircd/m_nick.c (m_nick): If we get NICK on a server port, tell
1209         the client to go away.
1210
1211 2006-11-04  Michael Poole <mdpoole@troilus.org>
1212
1213         * ircd/version.c.SH: Skip version.c.
1214
1215 2006-11-04  Michael Poole <mdpoole@troilus.org>
1216
1217         * doc/readme.who: Document new 'o' field flag.
1218
1219         * include/whocmds.h (WHO_FIELD_OPL): New flag.
1220
1221         * ircd/channel.c (send_channel_modes): Rename feat_oplevels to
1222         send_oplevels and determine it automatically.
1223         (modebuf_flush_int): Pass along oplevel if it's less than
1224         MAXOPLEVEL.
1225         (mode_process_clients): Allow oplevels to be inherited for -A
1226         channels.  Inherit the opper's oplevel if >= MAXOPLEVEL.
1227
1228         * ircd/m_who.c (m_who): Recognize 'o' flag as WHO_FIELD_OPL.
1229
1230         * ircd/whocmds.c (do_who): Send oplevel for WHO_FIELD_OPL, but
1231         only show up to the requester's own oplevel.
1232
1233 2006-10-21  Michael Poole <mdpoole@troilus.org>
1234
1235         * ircd/convert-conf.c (finish_connects): Fix error display for
1236         missing C: lines when an H: line is present.
1237
1238 2006-08-02  Michael Poole <mdpoole@troilus.org>
1239
1240         * ircd/ircd_parser.y (connectblock): Check for too-long password.
1241         (operblock): Comment why we don't check password length.  Move
1242         PRIV_PROPAGATE test earlier (so a buggy edit, rehash, /oper will
1243         not crash).
1244         (clientblock): Check for too-long password.
1245
1246 2006-08-02  Michael Poole <mdpoole@troilus.org>
1247
1248         * include/channel.h (struct Ban): Fix typo in doxygen comment.
1249
1250 2006-07-09  Michael Poole <mdpoole@troilus.org>
1251
1252         * include/patchlevel.h (PATCHLEVEL): Bump for pre09.
1253
1254 2006-07-09  Michael Poole <mdpoole@troilus.org>
1255
1256         * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.08 release.
1257
1258 2006-07-05  Michael Poole <mdpoole@troilus.org>
1259
1260         * ircd/s_auth.c (auth_freelist): New static variable.
1261         (check_auth_finished): Move call to destroy_auth_request().
1262         (destroy_auth_request): Prepend auth request to freelist.
1263         (start_auth): Use struct from auth freelist if possible.
1264
1265 2006-06-30  Michael Poole <mdpoole@troilus.org>
1266
1267         * ircd/ircd_parser.y (iauth*): Avoid leaking program name string.
1268
1269 2006-06-30  Michael Poole <mdpoole@troilus.org>
1270
1271         * ircd/s_auth.c (check_auth_finished): Free auth structure when
1272         done with it.
1273         (sendto_iauth): Free message buffer when done with it.
1274
1275 2006-06-26  Michael Poole <mdpoole@troilus.org>
1276
1277         * include/patchlevel.h (PATCHLEVEL): Bump for pre08.
1278
1279 2006-06-26  Michael Poole <mdpoole@troilus.org>
1280
1281         * include/patchlevel.h (PATCHEVEL): Bump for release.
1282
1283 2006-06-17  Michael Poole <mdpoole@troilus.org>
1284
1285         * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe.
1286
1287 2006-06-08  Michael Poole <mdpoole@troilus.org>
1288
1289         * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local)
1290         channels for locops as well as global opers.
1291
1292 2006-06-08  Michael Poole <mdpoole@troilus.org>
1293
1294         * ircd/m_gline.c (ms_gline): Use final argument as G-line reason.
1295
1296 2006-06-08  Michael Poole <mdpoole@troilus.org>
1297
1298         * ircd/gline.c (gline_stats): Show activation state in /stats g.
1299
1300         * ircd/s_err.c (RPL_STATSGLINE): Update format string to match.
1301
1302 2006-06-07  Michael Poole <mdpoole@troilus.org>
1303
1304         * doc/example.conf: Document the list_chan privilege.
1305
1306         * ircd/ircd_lexer.l: Recognize the token.
1307
1308         * ircd/ircd_parser.y: Treat it appropriately.
1309
1310 2006-06-07  Michael Poole <mdpoole@troilus.org>
1311
1312         * ircd/s_auth.c (auth_ping_timeout): If the client never had an
1313         auth request, kill them on ping timeout.
1314
1315 2006-06-05  Michael Poole <mdpoole@troilus.org>
1316
1317         * ircd/s_auth.c (auth_timeout_callback): Clear AR_DNS_PENDING when
1318         destroying the lookup and reporting DNS failure.
1319
1320 2006-05-28  Michael Poole <mdpoole@troilus.org>
1321
1322         * doc/readme.features (MAXBANS): Update default value.
1323         (NICKLEN): Likewise.
1324         (HIS_STATS_*): Sort alphabetically.
1325
1326         * ircd/m_stats.c (m_stats): Describe the intention so that there
1327         are not further questions about local opers and remote /stats.
1328         Fix places that use cptr instead of sptr.
1329
1330 2006-05-24  Michael Poole <mdpoole@troilus.org>
1331
1332         * ircd/s_auth.c (auth_dns_callback): Be more careful about
1333         handling failed DNS lookups.  Use a more standard function to
1334         disconnect clients for IP mismatches.
1335         (start_auth): Use a more standard function to disconnect clients
1336         for peer or local socket address lookup failures.
1337
1338 2006-05-17  Michael Poole <mdpoole@troilus.org>
1339
1340         * ircd/s_auth.c (auth_ping_timeout): Fix off-by-one error.
1341
1342 2006-05-17  Michael Poole <mdpoole@troilus.org>
1343
1344         * ircd/Makefile.in (install-*): Install convert-conf.  Install
1345         umkpasswd when ${BINDIR}/ircd is not a symlink.
1346
1347 2006-05-15  Michael Poole <mdpoole@troilus.org>
1348
1349         * ircd/s_auth.c (check_auth_finished): Only check passwords on
1350         user ports.
1351
1352 2006-05-14  Michael Poole <mdpoole@troilus.org>
1353
1354         * doc/example.conf (Connect): Mention the vhost option.
1355
1356 2006-05-08  Michael Poole <mdpoole@troilus.org>
1357
1358         * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here...
1359
1360         * ircd/s_auth.c (auth_set_pong): ... to here.
1361
1362 2006-05-07  Michael Poole <mdpoole@troilus.org>
1363
1364         * include/s_auth.h (auth_ping_timeout): Declare new function.
1365
1366         * ircd/ircd.c (check_pings): Move auth timeout logic into that new
1367         function.
1368
1369         * ircd/s_auth.c (HeaderMessages): Insert new message.
1370         (auth_ping_timeout): Define new function.
1371         (auth_timeout_callback): Remove "hurry" notification from here.
1372
1373 2006-05-07  Michael Poole <mdpoole@troilus.org>
1374
1375         * include/s_auth.h (destroy_auth_request): Remove second argument.
1376
1377         * ircd/list.c (free_client): Update to match.
1378
1379         * ircd/s_auth.c (check_auth_finished): Remove second argument and
1380         update call to destroy_auth_request().
1381         (send_auth_query): Update call to destroy_auth_request().
1382         (destroy_auth_request): Remove second argument.
1383         (auth_timeout_callback): Send timeout failure messages here
1384         instead.  Update call to check_auth_finished().
1385         (auth_dns_callback): Update call to check_auth_finished().
1386         (start_auth): Likewise.
1387         (auth_set_pong): Likewise.
1388         (auth_set_user): Likewise.
1389         (auth_set_nick): Likewise.
1390         (auth_cap_done): Likewise.
1391         (iauth_parse): Likewise.
1392
1393 2006-05-06  Michael Poole <mdpoole@troilus.org>
1394
1395         * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED.
1396         (check_auth_finished): Move password check out of iauth-only part
1397         and use AR_PASSWORD_CHECKED to make sure we only check it once.
1398
1399 2006-04-28  Michael Poole <mdpoole@troilus.org>
1400
1401         * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field.
1402         (check_auth_finished): Fix timeout update.
1403         (destroy_auth_request): Only delete timer if it is active.
1404         (auth_timeout_callback): Do not disconnect client on timeout, so
1405         that the user can finish sending NICK/USER or doing iauth.
1406
1407 2006-04-28  Michael Poole <mdpoole@troilus.org>
1408
1409         * doc/example.conf (Admin): Fix documentation of which line can be
1410         listed twice.
1411
1412         * ircd/ircd_parser.y (adminblock): Allow admin information to be
1413         changed via /rehash.
1414
1415 2006-04-06  Michael Poole <mdpoole@troilus.org>
1416
1417         * ircd/s_auth.c (start_auth): Add client to list after getting
1418         endpoint names (which can apparently fail for some reason).
1419
1420 2006-04-06  Michael Poole <mdpoole@troilus.org>
1421
1422         * ircd/ircd_snprintf.c: Use SIZEOF_LONG_LONG (which is 0 for
1423         unknown types) instead of the never-defined HAVE_LONG_LONG.
1424
1425 2006-04-06  Michael Poole <mdpoole@troilus.org>
1426
1427         * doc/example.conf (IAuth): Update to reflect new syntax.
1428
1429         * doc/readme.who: Fix typo in metasyntactic variable name.
1430
1431 2006-04-04  Michael Poole <mdpoole@troilus.org>
1432
1433         * include/patchlevel.h: Update for pre07.
1434
1435 2006-04-04  Michael Poole <mdpoole@troilus.org>
1436
1437         * include/patchlevel.h: Update for u2.10.12.06 release.
1438
1439 2006-04-03  Michael Poole <mdpoole@troilus.org>
1440
1441         * ircd/channel.c (bmatch): If ipmask_check() indicates old_ban is
1442         a CIDR-wise superset of new_ban, check whether new_ban is a
1443         text-wise superset of old_ban.
1444
1445 2006-03-31  Michael Poole <mdpoole@troilus.org>
1446
1447         * tools/iauth-test (send_server_notice): Use a colon prefix before
1448         the message.
1449         (%handlers): Likewise.
1450
1451 2006-03-24  Michael Poole <mdpoole@troilus.org>
1452
1453         * ircd/ircd_signal.c (alloc_crec): Zero-fill returned
1454         ChildRecord structs.
1455
1456         * ircd/jupe.c (make_jupe): Zero-fill newly allocated jupes.
1457
1458         * ircd/list.c (make_link): Zero-fill returned SLink structs.
1459
1460         * ircd/whowas.c (whowas_init): Delete function.
1461         (whowas_alloc): Rewrite to follow the more common pattern and to
1462         zero-fill returned Whowas structs.
1463
1464 2006-03-23  Kevin L. Mitchell  <klmitch@mit.edu>
1465
1466         * ircd/s_auth.c: rewrite iauth_read(), spliting out the parsing
1467         into iauth_parse(); change parsing to separate parameters and deal
1468         with the ':' sentinel; send sentinel in multi-word parameters; fix
1469         iauth_cmd_config() and iauth_cmd_stats() to clear the 'next'
1470         pointer in the SLink structure; fix buffering in
1471         iauth_read_stderr(); remove carriage returns from STDERR contents
1472         as well
1473
1474         * doc/readme.iauth: fix a minor typo in comments for 'd' and 'N'
1475         server messages
1476
1477 2006-03-18  Michael Poole <mdpoole@troilus.org>
1478
1479         * ircd/convert-conf.c (finish_features): Do not emit a feature
1480         setting that has no values.
1481
1482 2006-03-18  Michael Poole <mdpoole@troilus.org>
1483
1484         * ircd/channel.c (mode_parse_key): Outside of burst, allow
1485         overwriting of keys by a service when a key is already set.
1486         (mode_parse_upass): Likewise.  Instead, ignore new Upass during
1487         burst if it is lexicographically greater than the current one.
1488         (mode_parse_apas): Likewise for Apass, but only allow overwiting
1489         an existing Apass in a BURST.
1490
1491 2006-03-18  Michael Poole <mdpoole@troilus.org>
1492
1493         * ircd/channel.c (modebuf_flush_int): Fix typo about changing
1494         oplevels.  Send correct channel TS for modes to other servers.
1495         (mode_parse): Accept timestamps on modes from users on other
1496         servers.  If the received timestamp is too large, handle that.
1497
1498         * ircd/m_create.c (ms_create): Mention the CREATE-during-burst
1499         case and handle it.
1500
1501         * ircd/m_mode.c (ms_mode): Put back HACK(3) when oplevels are off.
1502
1503 2006-03-14  Wouter Coekarts <wouter@coekaerts.be>
1504
1505         * ircd/s_err.c (RPL_STATSILINE): Add two %s to the first field.
1506
1507         * ircd/s_stats.c (stats_configured_links): Use the new %s's to
1508         show username masks for I: lines that have them.
1509         (stats_access): Likewise.
1510
1511 2006-03-13  Michael Poole <mdpoole@troilus.org>
1512
1513         * ircd/msgq.c (msgq_vmake): Try to clear msgbuf freelist after
1514         killing clients, so that that case does not lead immediately to a
1515         server panic.
1516         (msgq_count_memory): Report total buffer text used as a way to
1517         determine whether the BUFFERPOOL value is marginal.
1518
1519 2006-03-02  Michael Poole <mdpoole@troilus.org>
1520
1521         * include/ircd_osdep.h (os_socket): New parameter.
1522
1523         * include/res.h (irc_in_addr_unspec): New macro.
1524
1525         * ircd/ircd_res.c (restart_resolver): Set family appropriately.
1526
1527         * ircd/listener.c (inetport): Let os_ library pick socket family.
1528
1529         * ircd/os_generic.c: Do not #define _XOPEN_SOURCE on FreeBSD 5+.
1530         (sockaddr_from_irc): New parameter.
1531         (os_sendto_nonb): Use new parameter to sockaddr_from_irc().
1532         (os_socket): New parameter.  Try to turn off IPV6_V6ONLY on
1533         sockets that listen on unspecified addresses.
1534         (os_connect_nonb): Use new parameter to sockaddr_from_irc().
1535
1536         * ircd/s_auth.c (start_auth_query): Let os_ library pick socket
1537         family.
1538
1539         * ircd/s_bsd.c (connect_inet): If we pick the IPv4 vhost, specify
1540         family for os_socket() as AF_INET.
1541
1542         * ircd/uping.c (uping_init): Set socket family appropriately.
1543         (uping_server): Likewise.
1544         (uping_end): Fix format strings (the ms_* fields are int, not
1545         long, and this causes bad results on LP64 machines).
1546
1547 2006-02-22  Michael Poole <mdpoole@troilus.org>
1548
1549         * ircd/m_silence.c (apply_silence): Refuse to apply silences for
1550         local users that are broader than an IPv4 /16 or an IPv6 /32,
1551         unless they match every host indiscriminately.
1552
1553 2006-02-22  Michael Poole <mdpoole@troilus.org>
1554
1555         * ircd/s_auth.c (check_auth_finished): Give non-iauth clients
1556         connection classes, too.
1557         (auth_close_unused): Remove redundant check for iauth != NULL.
1558         (report_iauth_conf): Check iauth != NULL before deref'ing it.
1559         (report_iauth_stats): Likewise.
1560
1561 2006-02-22  Kevin L. Mitchell  <klmitch@mit.edu>
1562
1563         * ircd/s_auth.c: fix macros to not dereference a NULL pointer when
1564         iauth is not connected
1565
1566 2006-02-17  Alex Badea <vamposdecampos@gmail.com>
1567
1568         * ircd/s_auth.c (auth_set_username): Check if the last
1569         character of the username is alphanumeric, instead of the
1570         '\0' terminator.
1571         
1572         * ircd/m_pong.c (mr_pong): Parse cookie with strtoul(),
1573         since atol() causes signedness problems.
1574
1575 2006-02-15  Michael Poole <mdpoole@troilus.org>
1576
1577         * include/res.h (NXDOMAIN): Define.
1578
1579         * ircd/ircd_res.c (res_readreply): Treat NXDOMAIN just like
1580         SERVFAIL.  Patch courtesy of Dianora.
1581
1582         * tools/iauth-test (Carp): This doesn't actually use Carp.
1583
1584 2006-02-15  Michael Poole <mdpoole@troilus.org>
1585
1586         * doc/example.conf: Include new HIS_STATS_IAUTH feature.
1587
1588         * doc/readme.features: Document the feature.
1589
1590         * doc/readme.iauth: Rewrite to reflect the new progressive iauth
1591         protocol, based on IRCnet's iauth.
1592
1593         * doc/snomask.html: Document SNO_AUTH server notice flag.
1594
1595         * include/client.h (FLAG_IAUTHED): Delete.
1596         (con_cookie): Delete.
1597         (con_unreg): Delete.
1598         (con_auth): Make comment capitalization consistent.
1599         (con_iauth): Delete.
1600         (CLIREG_*): Delete.
1601         (cli_unreg): Delete.
1602         (cli_cookie): Delete.
1603         (cli_iauth): Delete.
1604         (con_unreg): Delete.
1605         (con_iauth): Delete.
1606         (IsIAuthed): Delete.
1607         (SetIAuthed): Delete.
1608         (SNO_AUTH): New server notice flag.
1609         (SNO_ALL): Update to include SNO_AUTH.
1610         (SNO_OPER): Update to include SNO_AUTH.
1611
1612         * include/ircd_auth.h: Delete file.
1613
1614         * include/ircd_features.h (HIS_STATS_IAUTH): New feature.
1615
1616         * include/s_auth.h: Rewrite almost everything for new auth system.
1617
1618         * include/s_user.h (COOKIE_VERIFIED): Delete.
1619         (register_user): Remove redundant nick and username arguments.
1620
1621         * ircd/ircd_auth.c: Delete file.
1622
1623         * ircd/ircd_features.c (HIS_STATS_IAUTH): New feature.
1624
1625         * ircd/ircd_lexer.l (PROGRAM): New token in grammar.
1626
1627         * ircd/ircd_log.c (masks): Add SNO_AUTH flag.
1628
1629         * ircd/ircd_parser.y (stringlist): Simplify production.
1630         (iauthblock): Revise to only include a PROGRAM production.
1631
1632         * ircd/list.c (make_client): Do not assign to deleted field.
1633
1634         * ircd/m_cap.c (cap_ls): Use auth_cap_start() instead of
1635         cli_unreg().
1636         (cap_req): Likewise.
1637         (cap_end): Use auth_cap_done() instead of cli_unreg().
1638
1639         * ircd/m_pass.c (mr_pass): Merge arguments to PASS.  Use
1640         auth_set_password() to notify iauth of password.
1641
1642         * ircd/m_pong.c (mr_pong): Use auth_set_pong() instead of
1643         cli_cookie() and cli_unreg().
1644
1645         * ircd/m_user.c (m_user): Use auth_set_user() instead of
1646         cli_unreg(), etc.
1647
1648         * ircd/s_auth.c: Rewrite most of the infrastructure for the new
1649         auth system.
1650
1651         * ircd/s_conf.c (rehash): Call auth_*() instead of iauth_*().
1652
1653         * ircd/s_misc.c (exit_one_client): Do not use iauth_exit_client().
1654         (exit_client): Use auth_send_exit() instead.
1655
1656         * ircd/s_stats.c (statsinfo): Include iauth and iauthconf.
1657
1658         * ircd/s_user.c (clean_user_id): Delete (moved into s_auth.c).
1659         (register_user): Remove nick and username parameters; move conf
1660         interactions and username validation to s_auth.c.
1661         (set_nick_name): Use auth_set_nick() instead of cli_cookie(),
1662         cli_unreg(), etc.
1663
1664         * tools/iauth-test: Implementation of iauth for testing purposes.
1665
1666 2006-02-15  Michael Poole <mdpoole@troilus.org>
1667
1668         * ircd/ircd_snprintf.c (doprintf): Fix typecast for %hu.
1669
1670 2006-02-15  Michael Poole <mdpoole@troilus.org>
1671
1672         * include/ircd_signal.h (SigChldCallBack): New typedef.
1673         (register_child): Declare.
1674         (unregister_child): Declare.
1675         (reap_children): Declare.
1676
1677         * ircd/ircd_signal.c (alloc_crec): New function.
1678         (release_crec): New function.
1679         (register_child): New function.
1680         (do_unregister_child): New function.
1681         (unregister_child): New function.
1682         (sigchld_callback): New function.
1683         (setup_signals): Hook SIGCHLD.
1684         (reap_children): New function.
1685
1686         * ircd/ircd.c (server_restart): Call reap_children() on exit.
1687
1688 2006-02-15  Michael Poole <mdpoole@troilus.org>
1689
1690         * include/ircd_osdep.h (os_socketpair): Declare.
1691
1692         * ircd/os_generic.c (is_blocked): New local function.
1693         (os_*): Use is_blocked() instead of cut-and-pasted code.
1694         (os_socketpair): New function.
1695
1696 2006-02-15  Michael Poole <mdpoole@troilus.org>
1697
1698         * ircd/match.c (match): Fix backtracking bug after an escape
1699         (reported by Michael, I think).
1700
1701 2006-02-04  Michael Poole <mdpoole@troilus.org>
1702
1703         * ircd/ircd.c (try_connections): Scan all Connect blocks for the
1704         earliest hold time (suggested by Michael).
1705
1706 2006-02-04  Michael Poole <mdpoole@troilus.org>
1707
1708         * ircd/m_join.c (m_join): Remove #if 0 code and update comment.
1709
1710         * ircd/m_mode.c (ms_mode): Remove self-op support.
1711
1712 2006-01-12  Michael Poole <mdpoole@troilus.org>
1713
1714         * include/patchlevel.h (PATCHLEVEL): Update for 2.10.12.pre06.
1715
1716 2006-01-12  Michael Poole <mdpoole@troilus.org>
1717
1718         * include/patchlevel.h (PATCHLEVEL): Update for release.
1719
1720 2006-01-11  Michael Poole <mdpoole@troilus.org>
1721
1722         * doc/Makefile.in: Make install target VPATH-safe.
1723
1724         * doc/example.conf: Comment out example IAuth block.
1725
1726         * ircd/m_burst.c (ms_burst): Change isdigit() to IsDigit(),
1727         silencing a warning on Solaris.
1728
1729 2006-01-09  Michael Poole <mdpoole@troilus.org>
1730
1731         * ircd/s_user.c (register_user): Do not send +r flag to user when
1732         they first connect.
1733
1734 2006-01-09  Michael Poole <mdpoole@troilus.org>
1735
1736         * include/ircd_features.h (FEAT_ZANNELS): Actually, put it back.
1737
1738         * ircd/ircd_features.c (FEAT_ZANNELS): Likewise.
1739
1740 2006-01-06  Michael Poole <mdpoole@troilus.org>
1741
1742         * ircd/channel.c (mode_process_clients): Do not reveal zombies who
1743         are being opped (MODE and KICK crossed).  Reported by coekie.
1744
1745 2006-01-06  Michael Poole <mdpoole@troilus.org>
1746
1747         * ircd/m_join.c (ms_join): Wipe out all modes (not just chanops)
1748         when replacing a resurrected channel.
1749
1750         * ircd/convert-conf.c (dupstring): Fix probable off-by-one size
1751         passed to memcpy().
1752
1753 2006-01-03  Michael Poole <mdpoole@troilus.org>
1754
1755         * ircd/channel.c (modebuf_flush_int): Also send timestamp when &me
1756         originates the MODE going to other servers (currently just when a
1757         client joins a zannel or uses an A/U password).
1758
1759 2006-01-02  Michael Poole <mdpoole@troilus.org>
1760
1761         * include/ircd_features.h (FEAT_ZANNELS): Remove.
1762
1763         * ircd/channel.c (sub1_from_channel): Remove reference to
1764         FEAT_ZANNELS.
1765
1766         * ircd/ircd_features.c (FEAT_ZANNELS): Remove.
1767
1768         * ircd/m_destruct.c (ms_destruct): Do not try to remove a destruct
1769         event for channels that do not have them (created by BURSTing a
1770         zannel but not yet destroyed by EOB).
1771
1772 2005-12-31  Michael Poole <mdpoole@troilus.org>
1773
1774         * ircd/m_whowas.c (m_whowas): Mention that IP is untracked in WHOWAS.
1775         Spotted by Progs.
1776
1777 2005-12-30  Michael Poole <mdpoole@troilus.org>
1778
1779         * ircd/m_topic.c: Remove block comment about sptr, cptr, etc.
1780         (do_settopic): Add doxygen comment. Move permissions checks..
1781         (m_topic): .. to here.  Update doxygen comment.
1782         (ms_topic): Update doxygen comment here too.
1783
1784 2005-12-30  Michael Poole <mdpoole@troilus.org>
1785
1786         * ircd/s_conf.c (conf_debug_iline): Fix display of null passwords.
1787
1788 2005-12-30  Michael Poole <mdpoole@troilus.org>
1789
1790         * RELEASE.NOTES: Mention removal of HIS_STATS_h.
1791
1792         * ircd/convert-conf.c (removed_features): Add AUTOHIDE,
1793         HIS_DESYNCS and TIMESEC.
1794         (get_connect): Do not downcase connection name on insert.
1795         (do_feature): Do not upcase feature name (cf HIS_STATS_k).
1796
1797 2005-12-30  Michael Poole <mdpoole@troilus.org>
1798
1799         * ircd/engine_devpoll.c (engine_loop): Remove bogus assert.
1800
1801 2005-12-31  Perry Lorier <isomer@undernet.org>
1802
1803         * convert-conf.c: Skip with a warning, H:'s that are missing a
1804         corresponding C:
1805
1806 2005-12-28  Michael Poole <mdpoole@troilus.org>
1807
1808         * ircd-patch: Do not use [ for test, and do not use $[] for expr.
1809         (Solaris /bin/sh, among others, have problems with those.)
1810
1811 2005-12-23  Michael Poole <mdpoole@troilus.org>
1812
1813         * config.guess: Update to current version.
1814
1815         * config.sub: Likewise.
1816
1817 2005-12-23  Kevin L. Mitchell  <klmitch@mit.edu>
1818
1819         * ircd/m_join.c: get rid of MAGIC_REMOTE_JOIN_TS; perform the
1820         deop-other-users loop only when creation < channel timestamp or
1821         when the channel in question happens to be a zannel; actually deop
1822         users, don't just say we are and not do it
1823
1824         * ircd/m_create.c (ms_create): get rid of MAGIC_REMOTE_JOIN_TS
1825
1826         * include/channel.h: get rid of MAGIC_REMOTE_JOIN_TS
1827
1828 2005-12-13  Michael Poole <mdpoole@troilus.org>
1829
1830         * configure.in: Define a macro when compiling on Solaris.
1831
1832         * ircd/ircd_crypt_native.c (_XOPEN_SOURCE): Turn down to 500 so
1833         that Solaris doesn't complain that SUSv3 requires C99.
1834
1835         * ircd/os_generic.c (_XOPEN_SOURCE): Likewise, but leave it at 600
1836         on non-Solaris platforms so that IPv6 stays supported.
1837
1838 2005-12-13  Michael Poole <mdpoole@troilus.org>
1839
1840         * ircd/m_join.c (ms_join): Prevent net rides allowed by moving the
1841         channel timestamp backwards in time without deopping current ops.
1842         (Reported by Wouter Coekaerts.)
1843
1844 2005-12-13  Michael Poole <mdpoole@troilus.org>
1845
1846         * doc/example.conf: Remove extraneous "Other" Client block.
1847
1848         * ircd/convert-conf.c (finish_operators): Fix operator precedence
1849         bug.
1850
1851         * ircd/ircd_parser.y (clientclass): Fix typo in error message.
1852
1853 2005-11-27  Michael Poole <mdpoole@troilus.org>
1854
1855         * ircd/Makefile.in (version.c): version.c also depends on
1856         version.h, patchlevel.h and source files.
1857
1858 2005-11-27  Michael Poole <mdpoole@troilus.org>
1859
1860         * ircd/m_join.c (m_join): Count a join to a new channel as a
1861         target change.
1862
1863 2005-11-19  Michael Poole <mdpoole@troilus.org>
1864
1865         * ircd/s_stats.c (stats_servers_verbose): Display IPv6 support
1866         flag with the other per-server flags.
1867
1868 2005-11-19  Michael Poole <mdpoole@troilus.org>
1869
1870         * ircd/convert-conf.c (finish_features): Only emit "Features {"
1871         once in the converted configuration file.  Display the original
1872         input line for each feature line in the output.
1873
1874 2005-11-18  Michael Poole <mdpoole@troilus.org>
1875
1876         * include/patchlevel.h (PATCHLEVEL): Update for pre05.
1877
1878 2005-11-18  Michael Poole <mdpoole@troilus.org>
1879
1880         * include/patchlevel.h (PATCHLEVEL): Update for release.
1881
1882 2005-11-15  Brian Cline <brian.cline@gmail.com>
1883
1884         * doc/example.conf: Add new line for HIS_MODEWHO feature.
1885
1886         * doc/readme.features: Document new HIS_MODEWHO feature.
1887
1888         * include/ircd_features.h: Declare new HIS_MODEWHO feature.
1889
1890         * ircd/channel.c (modebuf_flush_int): Use new HIS_MODEWHO feature
1891         to show or hide the server name that performed a channel mode change.
1892
1893         * ircd/ircd_features.c: Place new HIS_MODEWHO setting in the feature
1894         table and give it a default value of true, which will hide the
1895         originating server name.
1896
1897 2005-11-16  Michael Poole <mdpoole@troilus.org>
1898
1899         * doc/example.conf (Features): Mention ZANNELS default.
1900
1901         * doc/readme.features: Document OPLEVELS and ZANNELS.
1902
1903 2005-11-17  Carlo Wood <run@alinoe.com>
1904
1905         * include/ircd_features.h (Feature): Add ZANNELS.
1906         * ircd/ircd_features.c (FeatureDesc): idem.
1907         * ircd/channel.c (sub1_from_channel): Don't keep zannels
1908         around when ZANNELS and OPLEVELS are FALSE.
1909         * ircd/m_destruct.c (ms_destruct): Use JOIN instead of
1910         CREATE to recreate a non-empty channel after DESTRUCT.
1911
1912 2005-11-16  Michael Poole <mdpoole@troilus.org>
1913
1914         * tools/convert-conf.py: Delete obsolete code.
1915
1916 2005-11-16  Michael Poole <mdpoole@troilus.org>
1917
1918         * ircd/m_names.c (m_names): Fix handling of NAMES #a,#b.
1919         (ms_names): Likewise.
1920
1921 2005-11-15  Michael Poole <mdpoole@troilus.org>
1922
1923         * ircd/m_nick.c (ms_nick): Clarify message when an older nick
1924         overrules a newer nick.  When killing a client for a nick
1925         collision, make sure to use the numnick as the first argument.
1926
1927 2005-11-14  Michael Poole <mdpoole@troilus.org>
1928
1929         * ircd/channel.c (member_can_send_to_channel): After prodding from
1930         reed, always allow remote users to send to a channel.  He also
1931         pointed out a bug in the first version of this change.
1932
1933 2005-11-14  Carlo Wood <run@alinoe.com>
1934
1935         * ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
1936         (modebuf_mode_uint): Make sure the limit is included as an
1937         argument when necessary (and only when necessary) in a bounce.
1938
1939         * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead
1940         of burst to resynchronize a non-empty destructed channel.
1941
1942 2005-11-14  Michael Poole <mdpoole@troilus.org>
1943
1944         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
1945         changes by voiceless no-account users on a +r channel.
1946
1947 2005-11-14  Michael Poole <mdpoole@troilus.org>
1948
1949         * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
1950         server is kicking him.
1951
1952 2005-11-13  Michael Poole <mdpoole@troilus.org>
1953
1954         * include/patchlevel.h (PATCHLEVEL): Bump for pre04.
1955
1956 2005-11-13  Michael Poole <mdpoole@troilus.org>
1957
1958         * include/patchlevel.h (PATCHLEVEL): Update for release.
1959
1960 2005-11-13  Carlo Wood <run@alinoe.com>
1961
1962         * ircd/m_create (ms_create): Accept CREATE for zannels.
1963
1964         * ircd/m_join.c (m_join): MODE +o for a zannel must come from the
1965         server for compatibility with older versions.
1966
1967 2005-11-12  Michael Poole <mdpoole@troilus.org>
1968
1969         * include/patchlevel.h (PATCHLEVEL): Bump for pre03.
1970
1971 2005-11-12  Michael Poole <mdpoole@troilus.org>
1972
1973         * include/patchlevel.h (PATCHLEVEL): Update for release.
1974
1975 2005-11-11  Michael Poole <mdpoole@troilus.org>
1976
1977         * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A
1978         and AAAA lookups as well as PTR.
1979
1980 2005-11-07  Michael Poole <mdpoole@troilus.org>
1981
1982         * ircd/channel.c (mode_parse_client): Allow clients to specify
1983         oplevel in MODE #channel +o.
1984         (mode_process_clients): Allow oplevel 999 to deop another 999.
1985
1986         * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999.
1987
1988 2005-10-31  Michael Poole <mdpoole@troilus.org>
1989         (Based on a patch by Romain Bignon <progs@ir3.org>)
1990
1991         * ircd/channel.c: Some modes (currently only WASDELJOINS) should
1992         not be propagated to remote servers.
1993
1994 2005-10-30  Michael Poole <mdpoole@troilus.org>
1995
1996         * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
1997         inside an if (MyUser(state->sptr)) test.
1998
1999         * ircd/m_join.c (m_join): Reorganize zannel join check to match
2000         surrounding code.
2001
2002 2005-10-30  Carlo Wood <run@alinoe.com>
2003
2004         * ircd/channel.c (sub1_from_channel): Delay destruction for -A
2005         channels.  They become zombie channels (zannels).
2006         (mode_parse_upass): Add duration to ERR_NOMANAGER message.
2007         (mode_parse_apass): Likewise.  Unconditionally set the member who
2008         sets Apass as oplevel 0.  Clear Upass when clearing Apass.
2009         (joinbuf_join): Remove code to pass oplevel in JOIN.
2010
2011         * ircd/m_burst.c (ms_burst): Handle zannels.
2012
2013         * ircd/m_join.c (m_join): Handle a join to a zannel.  If the user
2014         is joining with ops and/or an oplevel, send those.
2015         (ms_join): Stop trying to parse oplevels in JOIN.  Copy join
2016         timestamp when a user joins a zannel.
2017
2018         * ircd/m_mode.c (ms_mode): Never generate HACK3.  Silently allow a
2019         user to op himself if he is the only one in a channel.
2020
2021         * ircd/s_err.c (ERR_UPASSSET): Remove extra space.
2022         (ERR_UPASSNOTSET): Likewise.
2023         (ERR_NOMANAGER): Add field for channel lifetime.
2024
2025 2005-10-30  Michael Poole <mdpoole@troilus.org>
2026
2027         * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real
2028         channel key is OVERRIDE.  (Reworked patch from a1kmm.)
2029
2030 2005-10-30  Michael Poole <mdpoole@troilus.org>
2031
2032         * .cvsignore: Add autom4te.cache.
2033
2034         * ircd/.cvsignore: Add convert-conf.
2035
2036         * ircd/test/.cvsignore: Add ircd_match_t.
2037
2038         * patches/.cvsignore: Add marks.
2039
2040 2005-10-28  Alex Badea  <vamposdecampos@gmail.com>
2041
2042         * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538)
2043
2044 2005-10-17  Diane Bruce  <db@db.net>
2045
2046         * ircd/ircd_res.c: Don't send retries if the client did
2047         not resolve (SERVFAIL); this fixes a bug causing a flurry
2048         of retries in this case
2049
2050 2005-10-14  Michael Poole <mdpoole@troilus.org>
2051
2052         * include/patchlevel.h (PATCHLEVEL): Update to pre02.
2053
2054 2005-10-14  Michael Poole <mdpoole@troilus.org>
2055
2056         * doc/readme.cvs: Document tag name consistently with the release
2057         name.
2058
2059         * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release
2060         of 2.10.12.01.
2061
2062 2005-10-12  Michael Poole <mdpoole@troilus.org>
2063
2064         * doc/example.conf: Update documentation to match this change.
2065
2066         * ircd/client.c (client_set_privs): Make default global oper
2067         privileges match what was in 2.10.11.
2068
2069 2005-10-11  Michael Poole <mdpoole@troilus.org>
2070
2071         * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE
2072         to mitigate bug #1313429.
2073
2074 2005-10-12  Perry Lorier <isomer@undernet.org>
2075
2076         * include/s_stats.h: Add new "Local" only flag to /stats.
2077
2078         * ircd/m_stats.c: Consult it.
2079
2080         * ircd/s_stats.c: Use the flag.
2081
2082 2004-01-04  Kevin L Mitchell  <klmitch@mit.edu>
2083
2084         * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is
2085         sent to a channel...
2086
2087 2005-10-06  Michael Poole <mdpoole@troilus.org>
2088
2089         * ircd/m_join.c (m_join): Report too-long channel names as
2090         non-existent.
2091
2092 2005-10-05  Michael Poole <mdpoole@troilus.org>
2093
2094         * ircd/m_names.c (m_names): Fix format string when forwarding
2095         /names -D to other servers.
2096         (ms_names): Likewise.  Add support for remote /names -D.
2097
2098 2005-10-05  Michael Poole <mdpoole@troilus.org>
2099
2100         * ircd/class.c (do_find_class): Fix bug from previous commit.
2101
2102         * ircd/ircd_parser.y (clientblock): Allow setting Client port.
2103
2104         * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline.
2105         (attach_iline): Only set FLAG_DOID when we are sure we will attach
2106         this Client block to the client. [Credit: Jukka Ollila and others]
2107
2108 2005-10-04  Michael Poole <mdpoole@troilus.org>
2109         [Based on a patch by Jukka Ollila]
2110
2111         * include/class.h (find_class): Rename to do_find_class().
2112
2113         * ircd/class.c (class_delete_marked): Keep invalid classes in list
2114         until next rehash.
2115         (add_class): Use new parameter to do_find_class() to allow a class
2116         to be "resurrected".
2117         (find_class): Rename.
2118         (report_classes): Use 'y' instead of 'Y' when reporting invalid
2119         classes.
2120
2121 2005-10-01  Michael Poole <mdpoole@troilus.org>
2122
2123         * ircd/m_kick.c (ms_kick): If the kick target is join-delayed,
2124         only send the KICK to the kicker.  Spotted by Cesar_.
2125
2126 2005-10-01  Michael Poole <mdpoole@troilus.org>
2127
2128         * include/patchlevel.h (PATCHLEVEL): Update to pre1.
2129
2130         * ircd/class.c (init_class): Only set default class's ->next
2131         pointer when first allocating it.
2132
2133 2005-09-30  Michael Poole <mdpoole@troilus.org>
2134
2135         * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when
2136         matching users.
2137
2138 2005-09-30  Michael Poole <mdpoole@troilus.org>
2139
2140         * include/patchlevel.h: Update for release.
2141
2142 2005-09-28  Michael Poole <mdpoole@troilus.org>
2143
2144         * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a
2145         chanop being kicked.
2146
2147 2005-09-26  Michael Poole <mdpoole@troilus.org>
2148
2149         * ircd/whocmds.c (do_who): Fix uninitialized variable warning
2150         about 'chan'.
2151
2152 2005-09-26  Michael Poole <mdpoole@troilus.org>
2153
2154         * ircd/parse.c (del_msg_element): Only delete empty subtrees, and
2155         leave subtrees that may still contain data.
2156
2157 2005-09-26  Michael Poole <mdpoole@troilus.org>
2158
2159         * include/channel.h (struct ModeBuf): Add mbm_oplevel to args
2160         array.
2161         (MB_OPLEVEL): New corresponding macro.
2162         (modebuf_mode_client): Add corresponding argument.
2163
2164         * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer
2165         usage to include :999 suffix.  Change format for oplevel passing.
2166         (modebuf_mode_client): Set oplevel field in mbuf args array.
2167         (struct ParseState): Add oplevel field to cli_change array.
2168         (mode_parse_client): Accept and record oplevel suffix from
2169         servers; fix it up if we're bouncing a deop.
2170         (mode_process_clients): If a valid oplevel was parsed, use it.
2171
2172         * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client().
2173
2174         * ircd/m_clearmode.c (do_clearmode): Likewise.
2175
2176         * ircd/m_create.c (ms_create): Likewise.
2177
2178         * ircd/m_kick.c (ms_kick): Likewise.
2179
2180 2005-09-23  Michael Poole <mdpoole@troilus.org>
2181
2182         * include/whocmds.h (WHOSELECT_DELAY): Define new constant.
2183
2184         * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set
2185         WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER.  Do not skip
2186         join-delayed users if WHOSELECT_DELAY is set.
2187
2188         * ircd/whocmds.c (do_who): Remember membership for shared channel
2189         if one exists.  Use it when displaying flags, adding '<' for
2190         join-delayed users.
2191
2192 2005-09-22  Michael Poole <mdpoole@troilus.org>
2193
2194         * ircd/channel.c (mode_parse_key): Only accept the new key when
2195         the current one is empty or "greater" than the new one.
2196         (mode_parse_upass): Likewise, for upass.
2197         (mode_parse_apass): Likewise, for apass.
2198
2199 2005-09-22  Michael Poole <mdpoole@troilus.org>
2200
2201         * ircd/gline.c (gline_checkmask): Add missing digit in mask length
2202         check.
2203
2204 2005-09-21  Michael Poole <mdpoole@troilus.org>
2205
2206         * doc/example.conf: Remove confused and outdated references to
2207         Martians.
2208
2209 2005-09-20  Michael Poole <mdpoole@troilus.org>
2210
2211         * ircd/Makefile.in: Regenerate "make depend" dependencies.
2212
2213         * ircd/test/Makefile.in: Likewise.
2214
2215 2005-09-16  Kevin L. Mitchell  <klmitch@mit.edu>
2216
2217         * ircd/m_join.c (last0): fix problem leading to protocol
2218         violations on certain combinations of /join 0 from remote servers
2219         (probably from local users, too) [bug #1291029]; remove redundant
2220         !IsChannelChar() check
2221
2222 2005-09-14  Michael Poole <mdpoole@troilus.org>
2223
2224         * doc/readme.cvs: Document the branching scheme for 2.10.12.
2225
2226 2005-09-14  Michael Poole <mdpoole@troilus.org>
2227
2228         * include/patchlevel.h (PATCHLEVEL): Increment to reflect the
2229         pre-release code freeze.
2230
2231 2005-09-14  Michael Poole <mdpoole@troilus.org>
2232
2233         * ircd/channel.c (find_ban): Fix the sense of another check.
2234
2235 2005-09-13  Michael Poole <mdpoole@troilus.org>
2236
2237         * include/channel.h (clean_channelname): Remove prototype.
2238
2239         * ircd/m_invite.c (m_invite): Do not clean channel name; just
2240         reject invalid channel names.
2241
2242         * ircd/m_join.c (m_join): Likewise.
2243
2244         * ircd/m_mode.c (m_mode): Do not clean channel name.
2245
2246         * ircd/m_names.c (m_names): Likewise.
2247
2248         * ircd/m_opmode.c (mo_opmode): Likewise.
2249
2250 2005-09-13  Michael Poole <mdpoole@troilus.org>
2251
2252         * ircd/channel.c (find_ban): Revert to older style of comparison,
2253         fixing the sense of one check.  Spotted by Alex Badea.
2254
2255 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
2256
2257         * ircd/ircd.c (try_connections): modify autoreconnect logic to
2258         allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq
2259
2260 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
2261
2262         * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList,
2263         otherwise the linked list has an invalid ending sentinel on rehash
2264
2265 2005-09-12  Michael Poole <mdpoole@troilus.org>
2266
2267         * ircd/channel.c (find_ban): Compare ban mask against hostname
2268         even when it looks like an IP, to match things like *!*@1.* when
2269         users have a hostname like 1.2.3.example.com.
2270
2271 2005-09-12  Michael Poole <mdpoole@troilus.org>
2272
2273         * RELEASE.NOTES: Note the resolution of ambiguous ipmasks.
2274
2275         * ircd/ircd_string.c (ipmask_parse): Implement it.
2276
2277 2005-09-12  Michael Poole <mdpoole@troilus.org>
2278
2279         * ircd/m_join.c (m_join): If we find an empty key, null out the
2280         key pointer.
2281
2282 2005-09-11  Michael Poole <mdpoole@troilus.org>
2283
2284         * RELEASE.NOTES: Mention the side benefits of this change.
2285
2286         * include/ircd_string.h (ipmask_parse): Declare function here.
2287         (ircd_aton): Becomes a special case of ipmask_parse().
2288
2289         * include/match.h (check_if_ipmask): Undeclare function.
2290         (ipmask_parse): Remove function prototype from this file.
2291
2292         * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter
2293         to accept ipmask length.  Rework to fill that in.
2294         (ircd_aton): Rework into...
2295         (ipmask_parse): this function, which knows how to fill in its own
2296         pbits parameter.
2297
2298         * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban
2299         flags correctly, to avoid call to check_if_ipmask().
2300
2301         * ircd/match.c (ipmask_parse_ipv4): Delete function.
2302         (check_if_ipmask): Likewise.
2303         (ipmask_parse): Delete this version in favor of ircd_string.c's.
2304
2305         * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type.
2306         (test_masks): New array of ipmask_test.
2307         (test_ipmask): Function to run one of those tests.
2308         (main): Call test_ipmask().
2309
2310 2005-09-11  Alex Badea <vamposdecampos@gmail.com>
2311
2312         * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code
2313         (probably during the forward port) which broke AsLL; fixed.
2314
2315 2005-09-01  Michael Poole <mdpoole@troilus.org>
2316
2317         * ircd/gline.c (make_gline): Remove debug output from when IPv6
2318         support was being debugged.
2319         (do_gline): Likewise.
2320         (gline_lookup): Likewise, plus remove redundant code.
2321
2322 2005-09-01  Michael Poole <mdpoole@troilus.org>
2323
2324         * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining
2325         0, since no other call passes a null channel.
2326
2327         * ircd/m_join.c: Remove comment discussing argument meanings.
2328         (last0): Make this also handle the JOIN 0 logic, doxyfy.
2329         (join0): Merge into last0.
2330         (m_join): Doxygenate.  Remove check for join0.  Further
2331         reorganize, so new versus old channel handling are moved to just
2332         one place each within this function.
2333         (ms_join): Doxygenate.  Remove check for join0.
2334
2335 2005-09-01  Michael Poole <mdpoole@troilus.org>
2336
2337         * RELEASE.NOTES: Bump revision date and highlight this change.
2338
2339         * include/channel.h (MAGIC_OPER_OVERRIDE): Remove.
2340         (can_join): Remove declaration.
2341
2342         * ircd/channel.c (compall): Remove.
2343         (can_join): Remove.
2344
2345         * ircd/m_join.c (m_join): Remove redundant check for control
2346         characters (clean_channelname() will get them). Reorganize initial
2347         flags calculation.  Accept channel keys like RFC 1459 says; this
2348         requires the old compall()/can_join() logic to modify 'keys', so
2349         inline the code and reorganize it.
2350
2351 2005-08-30  Michael Poole <mdpoole@troilus.org>
2352
2353         * include/channel.h (PASSLEN): Remove; use KEYLEN instead.
2354
2355         * ircd/channel.c (mode_parse_upass): Likewise.
2356         (mode_parse_apass): Likewise.
2357         The inconsistency (in clean_key()) was reported by Reed.
2358
2359 2005-08-30  Michael Poole <mdpoole@troilus.org>
2360
2361         * RELEASE.NOTES: Document +D and +d channel modes.
2362
2363 2005-08-29  Michael Poole <mdpoole@troilus.org>
2364
2365         * include/numeric.h (ERR_NOMANAGER_LONG): Undefine.
2366         (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER.
2367
2368         * ircd/s_err.c (replyTable): Change to reflect that.
2369
2370         * ircd/channel.c (clean_key): New function.
2371         (mode_parse_key): Use it, and check that keys do not start with :.
2372         (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER.
2373         (mode_parse_apass): Likewise.
2374         The key and password changes fix bugs reported by coekie.
2375
2376 2005-08-27  Michael Poole <mdpoole@troilus.org>
2377
2378         * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
2379         of assigning directly to member->oplevel.
2380         (mode_parse_apass): Likewise.
2381         (mode_process_clients): Users opped by outsiders should get
2382         oplevel 1, since they are not channel managers.
2383
2384         * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
2385         directly to member->oplevel.
2386
2387 2005-08-25  Michael Poole <mdpoole@troilus.org>
2388
2389         * ircd/channel.c (member_can_send_to_channel): At coekie's
2390         suggestion, disallow channel manager talking after Apass is set,
2391         so they set and use Upass sooner.
2392
2393         * ircd/class.c (init_class): Default class should have 1 link.
2394         (report_classes): Return links count minus one to match old output.
2395
2396         * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by
2397         Reed).
2398
2399 2005-08-25  Michael Poole <mdpoole@troilus.org>
2400
2401         * ircd/channel.c (mode_parse): Accept +A/+U from servers
2402         regardless of FEAT_OPLEVELS.
2403
2404 2005-08-24  Michael Poole <mdpoole@troilus.org>
2405
2406         * ircd/ircd.c (parse_command_line): Mention epoll engine when run
2407         with -v.
2408
2409 2005-08-24  Michael Poole <mdpoole@troilus.org>
2410
2411         * include/patchlevel.h (PATCHLEVEL): Increment.
2412
2413         * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or
2414         1 when propagating JOIN <level>:#channel, to avoid PV on receiver.
2415
2416         * ircd/engine_epoll.c: Add system call numbers for more CPU types.
2417
2418         * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls;
2419         anyone who writes logs over NFS is mental.  (Thanks to D. Bruce.)
2420
2421 2005-08-21  Michael Poole <mdpoole@troilus.org>
2422
2423         * include/s_conf.h (free_mapping): Declare new function.
2424
2425         * ircd/ircd_parser.y (pseudoblock): Use it.
2426
2427         * ircd/s_conf.c (free_mapping): Define it.
2428         (close_mappings): New function.
2429         (rehash): Call close_mappings() before reading file.
2430
2431         * ircd/m_kill.c (do_kill): Revert 2005-08-18 change.
2432
2433 2005-08-19  Michael Poole <mdpoole@troilus.org>
2434
2435         * ircd/parse.c (tok_tree): Re-add token tree structure.
2436         (initmsgtree): Populate it.
2437         (parse_server): Prefer it to full message tree.
2438
2439 2005-08-18  Michael Poole <mdpoole@troilus.org>
2440
2441         * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent
2442         source of KILLs to &his instead of &me.
2443
2444 2005-08-16  Michael Poole <mdpoole@troilus.org>
2445
2446         * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
2447         newban->banstr[] when the source is a server.  (Spotted by jcq.)
2448
2449 2005-08-16  Michael Poole <mdpoole@troilus.org>
2450
2451         * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
2452         announcements to local users in a channel.
2453
2454         * ircd/m_burst.c (ms_burst): Likewise.
2455
2456         * ircd/m_invite.c (m_invite): Likewise.
2457         (ms_invite): Likewise.
2458
2459         * ircd/m_kick.c (ms_kick): Likewise.
2460
2461         * ircd/m_topic.c (do_settopic): Another &me -> &his change for
2462         HIS, and use that apparent source for the channel localcast.
2463
2464 2005-08-16  Jukka Ollila <jaollila@niksula.hut.fi>
2465
2466         * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the
2467         real thing for the post-mode-x rejoin.
2468
2469 2005-08-15  Michael Poole <mdpoole@troilus.org>
2470
2471         * include/supported.h (FEATURESVALUES2): Add +d channel mode.
2472
2473         * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not
2474         a varadic function.  (Suggested by Ian Kumlien.)
2475
2476         * ircd/convert-conf.c (finish_operators): Likewise.
2477
2478         * ircd/listener.c (close_listeners): Likewise.
2479
2480         * ircd/channel.c (CheckDelayedJoins): Use HIS server name to
2481         remove channel mode +d.
2482
2483 2005-08-12  Michael Poole <mdpoole@troilus.org>
2484
2485         * ircd/channel.c (pretty_mask): Recognize ':' as unique to the
2486         host part of a ban mask.
2487
2488 2005-08-03  Jan Krueger <jast@heapsort.de>
2489
2490         * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on
2491         invisible member.
2492
2493 2005-08-08  Michael Poole <mdpoole@troilus.org>
2494
2495         * ircd/channel.c (find_ban): For non-IPmask bans, match the ban
2496         string against the string form of the client's IP address.
2497
2498 2005-07-16  Michael Poole <mdpoole@troilus.org>
2499
2500         * configure.in: Apply a test for socklen_t that Reed found.
2501
2502         * configure: Regenerate.
2503
2504 2005-07-16  Michael Poole <mdpoole@troilus.org>
2505
2506         * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels.
2507
2508         * README.FreeBSD: Remove (merged into README).
2509
2510         * README.Solaris: Remove (merged into README).
2511
2512         * README: Merge in the above; also update for 2.10.12.
2513
2514         * doc/example.conf: Change mention of K-lines to say Kill blocks
2515         instead.
2516
2517         * doc/iauth.txt: Remove (out of date).
2518
2519         * doc/readme.features: Update to reflect that 2.10.11 is not the
2520         current release.  Change mention of various config lines to use
2521         the equivalent config entries or blocks instead.
2522
2523         * doc/readme.log: Likewise.
2524
2525         * doc/api/features.txt: Change F-line mentions to say Feature
2526         entry instead.
2527
2528         * doc/api/modebuf.txt: Change U-line mention to say Uworld entry.
2529
2530         * doc/api/motd.txt: Change T-line mentions to say Motd entry.
2531
2532 2005-07-15  Michael Poole <mdpoole@troilus.org>
2533
2534         * ircd/ircd_features.c (feature_init): Always call
2535         feature_notify_server*() so that 'his' is initialized.
2536
2537         * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose
2538         between user->server and &his.
2539
2540 2005-07-14  Michael Poole <mdpoole@troilus.org>
2541
2542         * ircd/channel.c (mode_parse_apass): Update oplevels when setting
2543         or removing the +A password.  Partial credit goes to Reed Loden.
2544
2545 2005-07-14  Michael Poole <mdpoole@troilus.org>
2546
2547         * include/ircd_features.h: Declare new "his" pseudo-server to hold
2548         FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place.
2549
2550         * ircd/ircd_features.c: Initialize and update it.
2551
2552         * ircd/channel.c (modebuf_flush_int): Use it as the apparent
2553         source for opmodes and server mode changes (also when the source
2554         is me).
2555
2556         * ircd/m_burst.c (ms_burst): Use it as the apparent source for net
2557         rider kicks.
2558
2559         * ircd/m_whois.c (do_whois): Use it to simplify code here.
2560
2561         * ircd/s_misc.c (exit_client): Use it as the apparent killer.
2562
2563 2005-07-14  Michael Poole <mdpoole@troilus.org>
2564
2565         * doc/example.conf (General): Update comment about vhost to match
2566         the code change below.
2567
2568         * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a
2569         synonym for the default behavior (for backwards compatibility).
2570         Spotted by Kev.
2571
2572         * ircd/channel.c (sub1_from_channel): Remove stale code and
2573         comment, replacing with an up-to-date comment.  Spotted by skx.
2574
2575 2005-07-11  Michael Poole <mdpoole@troilus.org>
2576
2577         * ircd/engine_select.c: Remove outdated comment about USE_POLL.
2578
2579         * ircd/parse.c (msgtab): #if out CAP handler until we have caps.
2580
2581         * RELEASE.NOTES: Remove mention of capabilities for now.
2582
2583 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
2584
2585         * ircd/gline.c (gline_add): It's only a protocol violation when a
2586         server issues a "whacky" gline.  If it's an oper, only tell opers
2587         with SNO_GLINE.
2588
2589         * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole
2590         network is not likely to care about IAuth PVs, so only tell opers
2591         with SNO_CONNEXIT.
2592
2593 2005-07-11  Michael Poole <mdpoole@troilus.org>
2594
2595         * doc/readme.features: Document FEAT_CHANNELLEN.
2596
2597         * doc/example.conf: Give an example of it.
2598
2599         * ircd/m_join.c (ms_join): Do not clean channel names from remote
2600         servers, to avoid desynchs.
2601
2602         * ircd/m_names.c (ms_names): Likewise.
2603
2604 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
2605
2606         * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
2607
2608         * include/supported.h: Add it to the ISUPPORT display.
2609
2610         * ircd/channel.c (clean_channelname): Impose the lower limit
2611         between FEAT_CHANNELLEN and CHANNELLEN.
2612
2613         * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
2614
2615 2005-07-11  Reed Loden <reed@reedloden.com>
2616
2617         * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
2618
2619         * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c
2620         Remove unused #include <sys/poll.h>.
2621
2622         * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity
2623         checks here, since they are not used elsewhere in the daemon.
2624         [Order slightly changed by Michael Poole to compile.]
2625
2626 2005-07-03  Michael Poole <mdpoole@troilus.org>
2627
2628         * ircd/convert-conf.c: New file.
2629
2630         * ircd/Makefile: Compile it.
2631
2632 2005-06-27  Michael Poole <mdpoole@troilus.org>
2633
2634         * ircd/s_bsd.c (add_connection): Split logic for server versus
2635         client listeners; only do IPcheck for client connections.
2636
2637         * ircd/s_serv.c (server_estab): There is no longer a need to
2638         remove IPcheck reference, so don't.
2639
2640 2005-06-27  Michael Poole <mdpoole@troilus.org>
2641
2642         * include/client.h (struct Connection): Remove con_dns_reply (and
2643         associated macros).
2644
2645         * include/res.h (gethost_byname): Change calling signature to
2646         clarify memory ownership.
2647         (gethost_byaddr): Likewise.
2648
2649         * include/s_bsd.h (release_dns_reply): Remove function.
2650
2651         * ircd/hash.c: #include "match.h" to quash warning.
2652
2653         * ircd/ircd_auth.c (struct IAuth): Remove i_query field.
2654         (iauth_dns_callback): Adjust for new gethost_byname signature.
2655         (iauth_reconnect): Likewise.
2656
2657         * ircd/ircd_res.c (struct reslist): Make elements of query field
2658         inline rather than in a contained structure.
2659         (make_request): Reflect removal of DNSQuery.
2660         (do_query_name): Likewise.
2661         (do_query_number): Likewise.
2662         (make_dnsreply): Remove now-unused function.
2663         (timeout_resolver): Adjust to new callback signature.
2664         (delete_resolver_queries): Reflect removal of DNSQuery.
2665         (gethost_byname): Update to new signature.
2666         (gethost_byaddr): Likewise.
2667         (res_readreply): Reflect removal of DNSReply.
2668
2669         * ircd/list.c (dealloc_connection): con_dns_reply no longer
2670         exists, so do not free it.
2671
2672         * ircd/s_auth.c (auth_verify_hostname): constify.
2673         (auth_dns_callback): Adjust to new callback signature.
2674         (start_auth): Adjust to new gethost_byaddr() signature.
2675
2676         * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback
2677         signature.
2678         (release_dns_reply): Remove unused function.
2679         (connect_server): Adjust to new gethost_byname() signature.
2680
2681         * ircd/s_conf.c (conf_dns_callback): Adjust to new callback
2682         signature.
2683         (conf_dns_lookup): Adjust to new gethost_byname() signature.
2684         (attach_iline): Use cli_sockhost() instead of DNS reply.
2685         (conf_check_server): Simplify use of DNS results.
2686
2687         * ircd/s_serv.c (server_estab): Remove call to removed function.
2688
2689         * ircd/s_user.c (register_user): Remove call to removed function.
2690
2691 2005-06-27  Michael Poole <mdpoole@troilus.org>
2692
2693         * include/s_misc.h (get_sockhost): Remove the unused (and
2694         deceptively named) get_sockhost().
2695
2696         * ircd/s_misc.c (get_sockhost): Likewise.
2697
2698 2005-06-25  Andrew Miller  <a1kmm@amxl.com>
2699
2700         * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to
2701         DupStr so memdebug works.
2702
2703         * doc/debug_memleak_gc.patch : Update to gc6.5
2704         
2705 2005-06-24  Andrew Miller  <a1kmm@amxl.com>
2706         * ircd/m_invite.c (m_invite): Don't propagate invites to local channels.
2707         
2708 2005-06-21  Andrew Miller  <a1kmm@amxl.com>
2709
2710         * ircd/m_list.c (param_parse): Add support for channel wildcards.
2711         * ircd/m_list.c (show_usage): Document the new format.
2712         * ircd/hash.c (list_next_channels): Check channel wildcard in list.
2713         * include/channel.h (ListingArgs): Add the wildcard member.
2714
2715 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
2716
2717         * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more
2718         gracefully.
2719
2720         * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking
2721         the pending request list, to make DoS attacks harder.
2722
2723         * ircd/m_invite.c (m_invite): Give no such channel rather than not on
2724         channel when the channel being invited to does not exist.
2725         
2726 2005-06-18  Michael Poole <mdpoole@troilus.org>
2727
2728         * ircd/s_debug.c (count_memory): Consolidate several lines; make
2729         initial letter capitalization consistent.
2730
2731 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
2732
2733         * ircd/s_stats.c: Remove the "debug only" label on memusage stats,
2734         since it no longer applies.
2735
2736 2005-05-16  Michael Poole <mdpoole@troilus.org>
2737
2738         * include/channel.h (struct Ban): Make 'who' and 'banstr' direct
2739         arrays, rather than pointers.
2740
2741         * ircd/channel.c (bans_alloc): New variable to count number of ban
2742         structures allocated.
2743         (bans_inuse): New variable to count number of ban structures
2744         currently in use.
2745         (set_banmask): Adapt to changes in struct Ban.
2746         (make_ban): Likewise, and update ban counts.
2747         (free_ban): Likewise.
2748         (bans_send_meminfo): New function.
2749         (apply_ban): Adapt to changes in struct Ban.
2750         (mode_parse_ban): Likewise.
2751         (mode_process_bans): Likewise.
2752         (mode_parse): Likewise.
2753         (RevealDelayedJoin): Fix brace placement.
2754         (CheckDelayedJoins): Fix brace placement and whitespace.
2755
2756         * ircd/list.c (struct liststats): Add new fields to eliminate the
2757         separate count variables.
2758         (init_list): Adapt to those changes.
2759         (alloc_client): Likewise.
2760         (dealloc_client): Likewise.
2761         (alloc_connection): Likewise.
2762         (dealloc_connection): Likewise.
2763         (make_server): Likewise.
2764         (remove_client_from_list): Likewise.
2765         (verify_client_list): Likewise.
2766         (make_link): Likewise.
2767         (free_link): Likewise.
2768         (send_liststats): New function.
2769         (send_listinfo): Rewrite to use new struct liststats layout.
2770
2771         * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban.
2772
2773         * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct
2774         Ban.
2775
2776         * ircd/s_stats.c (stats_meminfo): Define unconditionally and call
2777         bans_send_meminfo().
2778         (statsinfo): Always give access to stats_meminfo.
2779
2780 2005-06-16  Michael Poole <mdpoole@troilus.org>
2781
2782         * include/ircd_string.h: Include necessary <string.h> header.
2783
2784         * ircd/test/.cvsignore: Ignore log output files.
2785
2786         * ircd/test/Makefile.in: Remove log output files.
2787
2788         * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills.
2789
2790         * ircd/test/run-tests.sh: Switch sense of argument.  Send an IRC
2791         debug dump to log files.
2792
2793 2005-06-13  Michael Poole <mdpoole@troilus.org>
2794
2795         * ircd/s_user.c (make_user): Unconditionally increment userCount.
2796         (free_user): Unconditionally decrement it here.
2797
2798         * ircd/s_conf.c (make_conf): Unconditionally increment
2799         GlobalConfCount.
2800         (free_conf): Unconditionally decrement it here.
2801
2802         * ircd/s_debug.c (count_memory): Fix termination condition for
2803         ban-walking loop.  Add missing "e" to "members".
2804
2805
2806 2005-06-10  Michael Poole <mdpoole@troilus.org>
2807
2808         * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot
2809         be true IP masks.
2810
2811 2005-05-30  Michael Poole <mdpoole@troilus.org>
2812
2813         * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes.
2814
2815         * ircd/test/ircd_match_t.c: Test recovery from backtracking.
2816
2817         * ircd/test/channel-1.cmd: Modify to improve code coverage.
2818
2819         * ircd/test/client-1.cmd: Likewise.
2820
2821         * ircd/test/gline-1.cmd: Likewise.
2822
2823         * ircd/test/ircd-t1.conf: Likewise.
2824
2825         * ircd/test/stats-1.cmd: Likewise.
2826
2827         * ircd/test/run-tests.sh: Explicitly start ircds.  Add new test scripts.
2828
2829         * ircd/test/test-driver.pl: Silently handle more signals from IRC.
2830
2831         * ircd/test/commands-1.cmd: New test script.
2832
2833         * ircd/test/feature-1.cmd: New test script.
2834
2835         * ircd/test/jupe-1.cmd: New test script.
2836
2837         * ircd/test/kill-block-1.cmd: New test script.
2838
2839         * ircd/test/ircd-t1-2.conf: New configuration file for test scripts.
2840
2841         * ircd/test/ircd-t2.conf: Likewise.
2842
2843 2005-05-30  Michael Poole <mdpoole@troilus.org>
2844
2845         * ircd/s_debug.c (count_memory): Use count_listener_memory() to
2846         report memory used by listener structures.
2847
2848 2005-05-30  Michael Poole <mdpoole@troilus.org>
2849
2850         * include/class.h (get_con_freq): Remove unused function.
2851
2852         * include/list.h (find_user_link): Remove unused function.
2853
2854         * include/class.c (get_con_freq): Remove.
2855
2856         * ircd/list.c (find_user_link): Remove.
2857
2858         * include/string.h (string_is_hostname, string_is_address,
2859         strnChattr): Remove unused functions.
2860         (init_string): Remove function that becomes a noop.
2861
2862         * ircd/string.h (init_string): Remove.
2863         (string_is_hostname, string_is_address, strnChattr): Likewise.
2864
2865         * ircd/ircd.c (main): Remove call to init_string().
2866
2867 2005-05-30  Michael Poole <mdpoole@troilus.org>
2868
2869         * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS,
2870         RPL_NOTOPERANYMORE): Undefine unused numeric replies.
2871
2872         * ircd/s_err.c (replyTable): Fix format fields for certain numeric
2873         arguments.  Remove some unused entries.
2874
2875         * ircd/s_stats.c (stats_configured_links): Move invariant
2876         parameters to message format string.
2877
2878 2005-05-30  Michael Poole <mdpoole@troilus.org>
2879
2880         * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move
2881         WIDE_GLINE to reflect its enumerated value.
2882
2883         * ircd/s_debug.c (count_memory): Use user_count_memory() function
2884         to count User structs in-use.
2885
2886         * ircd/m_server.c (mr_server): Change "C:line" to "Connect block".
2887
2888         * ircd/s_bsd.c (connect_server): Likewise.
2889
2890         * ircd/s_conf.c (conf_check_server): Likewise.
2891
2892         * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block".
2893
2894 2005-05-30  Michael Poole <mdpoole@troilus.org>
2895
2896         * ircd/match.c (match): Rewrite to handle globs that end in an
2897         escaped wildcard (and hopefully clarify the code).
2898
2899         * ircd/test/Makefile.in: Add new ircd_match_t test program.
2900
2901         * ircd/test/ircd_match_t.c: New file.
2902
2903         * ircd/test/test_stub.c: Emite newlines after log and debug
2904         messages.
2905
2906 2005-05-25  Reed Loden <reed@reedloden.com>
2907
2908         * ircd/s_err.c (replyTable): Allow for the specification of 'O' or
2909         'o' in RPL_STATSOLINE.
2910
2911         * ircd/s_stats.c (stats_configured_links): In /stats o/O, display
2912         'O' if either the oper block or the connection class has
2913         PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE
2914         (local oper).
2915
2916 2005-05-30  Michael Poole <mdpoole@troilus.org>
2917
2918         * ircd/IPcheck.c: Add Debug()s to try to track why the connected
2919         count underflows.
2920
2921         * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan'
2922         after it may be freed (in sub1_from_channel).
2923
2924         * ircd/s_user.c (register_user): Rearrange code to reduce number
2925         of "if (MyConnect(sptr))" checks.
2926
2927 2005-05-12  Michael Poole <mdpoole@troilus.org>
2928
2929         * configure.in: Do not try to outsmart the default CFLAGS.
2930         Simply add parameters explicitly requested by the user.
2931
2932         * configure: Regenerate.
2933
2934         * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is
2935         used in os_generic.c) to get crypt() on NetBSD.
2936
2937 2005-05-11  Kevin L. Mitchell  <klmitch@mit.edu>
2938
2939         * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and
2940         -x given), reserve fd 2 for the use of the debugging log;
2941         otherwise, some engines may attempt to use fd 2, which would end
2942         up getting closed by debug_init() (actually, by
2943         log_debug_reopen(), called by log_debug_init(), called by
2944         debug_init())
2945
2946 2005-08-10  Michael Poole <mdpoole@troilus.org>
2947
2948         * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a
2949         local user creates a channel.
2950
2951         * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of
2952         memory for the tagged output string.
2953
2954         * ircd/test/test-driver.pl: Add -vhost=... option.
2955
2956         * ircd/test/ircd-t1.conf: Add new Operator blocks.
2957
2958         * ircd/test/*.cmd: Rearrange and add more coverage tests.
2959
2960 2005-08-09  Michael Poole <mdpoole@troilus.org>
2961
2962         * ircd/ircd_parser.y: Move error tokens to top level of parse, and
2963         make ';' a synchronizing token for them.  This avoids crashes in
2964         situations like missing ';' between two Kill blocks.  Move several
2965         ';'s earlier for earlier detection of syntax errors.
2966
2967         * ircd/motd.c (motd_memory_count): Use size_t for memory counts to
2968         match the format strings used for those variables.
2969
2970         * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of
2971         unsigned int, not unsigned long; use correct format string.
2972
2973         * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd'
2974         based on crule type, rather than query type.
2975         (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and
2976         "help" stats, which don't use the varparam.
2977
2978         * ircd/test/test-driver.pl: Interpreter for test scripts.b
2979
2980         * ircd/test/ircd-t1.conf: Configuration file for test scripts.
2981
2982         * ircd/test/*.cmd: New test scripts for test-driver.pl.
2983
2984 2005-05-08  Jukka Ollila <jaollila@niksula.hut.fi>
2985         (Adapted slightly by Michael Poole.)
2986
2987         * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
2988         addresses event when !defined(IPV6).
2989
2990 2005-05-07  Michael Poole <mdpoole@troilus.org>
2991
2992         * ircd/channel.c (joinbuf_join): Be smarter about what source to
2993         use when opping a user that joins a channel.
2994
2995 2005-05-04  Reed Loden <reed@reedloden.com>
2996
2997         * ircd/m_trace.c (do_trace): Show the real nickname instead of the
2998         numnick.
2999
3000 2005-05-02  Jan Krueger <jast@heapsort.de>
3001
3002         * ircd/channel.c (member_can_send_to_channel): if the channel can only
3003         be joined by users with accounts (+r), do not allow users without
3004         accounts to speak.
3005
3006 2005-05-07  Michael Poole <mdpoole@troilus.org>
3007
3008         * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
3009         addresses.
3010         * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry.
3011         (test_address): Test base64toip() as well.
3012
3013 2005-05-05  Michael Poole <mdpoole@troilus.org>
3014
3015         * ircd/s_user.c (umode_str): Only clear the operator flag when not
3016         propagating; never set it.
3017
3018 2005-05-04  Michael Poole <mdpoole@troilus.org>
3019
3020         * ircd/channel.c (joinbuf_join): Include channel manager flag in
3021         determination of oplevel.  If opping the user for a non-local
3022         non-create, include oplevel in message to other servers.  Send
3023         "MODE +o <client>" to local users whenever opping the client.
3024
3025         * ircd/m_join.c (m_join): Remove logic that moved into
3026         joinbuf_join().
3027         (ms_join): Look for level 0 and 1 joins from remote servers
3028         and adjust value of 'flags' appropriately.
3029
3030 2005-05-04  Michael Poole <mdpoole@troilus.org>
3031
3032         * include/numeric.h: Remap oplevel numerics to new range.
3033
3034         * ircd/s_err.c: Likewise.
3035
3036 2005-05-03  Michael Poole <mdpoole@troilus.org>
3037
3038         * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT
3039         fields, fixing crash found by nighty.
3040
3041 2005-05-02  Michael Poole <mdpoole@troilus.org>
3042
3043         * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when
3044         trying to set +U pass to the same as the +A pass.
3045
3046         * ircd/channel.c (mode_parse_upass): Use it.
3047
3048         * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if
3049         there is an active IAuth connection, fixing PR#1193808.
3050         (iauth_dispose_request): Only delete the timer if it is active.
3051
3052         * ircd/m_invite.c (m_invite): Always forward the invite in the
3053         correct direction, and then skip it as 'one' if announcing.
3054         (ms_invite): Likewise.
3055
3056         * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as
3057         ::ffff:0.0.0.0; keep it as ::.
3058
3059         * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS.
3060
3061 2005-05-01  Michael Poole <mdpoole@troilus.org>
3062
3063         * doc/readme.log: Document IAUTH log target, remove docs for
3064         OLDLOG log target.
3065
3066         * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG.
3067
3068         * ircd/ircd_log.c (logDesc): Likewise.
3069
3070         * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all
3071         sockets (e.g. when connecting) and do not generate read/write
3072         events in the same pass as error or EOF events.
3073
3074         * ircd/ircd_auth.c: Convert old sendto and debug messages to use
3075         the LS_IAUTH log target.  Consistently use IAUTH_CONNECTED flag
3076         instead of comparing fd to -1.
3077         (iauth_reconnect): If already connected, disconnect and schedule a
3078         reconnect later, since an immediate reconnect can cause assertion
3079         failure in the event engine.  Also schedule a reconnect when the
3080         connection attempt fails.
3081         (iauth_read): Reconnect on IO_FAILURE.
3082         (iauth_sock_callback): Disconnect and schedule a reconnect on both
3083         error (after reporting the error) and EOF.
3084         (iauth_start_client): Record the IAuth request in the client.
3085         (iauth_exit_client): Report the client exit.
3086
3087         * ircd/s_misc.c (exit_one_client): Fix formatting.
3088
3089 2005-04-30  Michael Poole <mdpoole@troilus.org>
3090
3091         * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add)
3092         timer here and set fd to -1.
3093         (iauth_schedule_reconnect): Rewrite to handle previously
3094         initialized timer.
3095         (iauth_reconnect): If server is connected, disconnect first.
3096         Update socket generator fd before calling socket_add().
3097         (iauth_read): When reading 0 bytes (EOF), reconnect.
3098
3099 2005-04-27  Michael Poole <mdpoole@troilus.org>
3100
3101         * ircd/ircd_parser.y: Report non-existent class names as errors
3102         earlier, and do not fall back to "default" for Client blocks.
3103
3104 2005-04-25  Reed Loden  <reed@reedloden.com>
3105
3106         * ircd/ircd_lexer.l: Add missing header to squash a warning.
3107
3108 2005-04-25  Michael Poole <mdpoole@troilus.org>
3109
3110         * ircd/s_user.c (register_user): Replace call with set_user_mode()
3111         with a direct parsing of user modes.  To match this, revert the
3112         initial display of usermode to how it was done before.
3113
3114 2005-04-24  Michael Poole <mdpoole@troilus.org>
3115
3116         * doc/example.conf: Document new autoconnect field of Connect.
3117
3118         * include/s_conf.h: Add CONF_AUTOCONNECT and field for it.
3119
3120         * ircd/ircd.c (try_connections): Skip non-autoconnect servers.
3121
3122         * ircd/ircd_lexer.l: Recognize autoconnect token.
3123
3124         * ircd/ircd_parser.y: Add autoconnect= option to Connect block.
3125
3126         * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to
3127         user being invited.
3128         (ms_invite): Likewise.
3129
3130         * ircd/s_user.c (register_user): Show class name rather than
3131         pointer-as-integer.
3132
3133 2005-04-24  Michael Poole <mdpoole@troilus.org>
3134
3135         * ircd/ircd_parser.y: Rewrite so each error condition gets its own
3136         error message, and so that invalid parameters are printed out.
3137
3138 2005-04-23  Michael Poole <mdpoole@troilus.org>
3139
3140         * ircd/channel.c (apply_ban): Consistently free newban->banstr
3141         when the function fails.
3142         (mode_process_bans): Free banstr for all BAN_DEL bans.
3143
3144         * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
3145
3146 2005-04-23  Michael Poole <mdpoole@troilus.org>
3147
3148         * include/patchlevel.h: Bump to being a beta.
3149
3150         * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that
3151         parser actions don't have to be immediately after a QSTRING.
3152
3153         * ircd/ircd_parser.y (FNAME): Remove unused token.
3154         (QSTRING): Adjust for QSTRING being an already-copied version.
3155
3156 2005-04-23  Michael Poole <mdpoole@troilus.org>
3157
3158         * doc/example.conf (UWorld): Illustrate new config extension.
3159
3160         * ircd/ircd_parser.y (uworldblock): Do the expected thing when
3161         multiple name= entries are present.
3162
3163 2005-04-22  Michael Poole <mdpoole@troilus.org>
3164
3165         * RELEASE.NOTES: Silence exceptions use ~, not -.  Oops!
3166
3167         * doc/example.conf: Fix typo in example Kill block.
3168
3169         * ircd/channel.c (mode_parse_ban): Use correct test for flag_p.
3170
3171         * ircd/m_silence.c (apply_silence): Make mask pretty so that later
3172         processing does not convert * to @ (and match no one).
3173
3174 2005-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
3175
3176         * ircd/m_userip.c (userip_formatter): /userip should *never*
3177         report the user's real IP unless its answering the user
3178         him/herself
3179
3180         * ircd/m_userhost.c (userhost_formatter): /userhost should *never*
3181         report the user's real host unless its answering the user
3182         him/herself
3183
3184 2005-04-20  Michael Poole <mdpoole@troilus.org>
3185
3186         * ircd/ircd.c (parse_command_line): Update usage text.
3187
3188         * ircd/numnicks.c (base64toip): Use v4mapped address range instead
3189         of v4compat address range, fixing IPv4-based /who.
3190
3191 2005-04-19  Michael Poole <mdpoole@troilus.org>
3192
3193         * configure.in: When --enable-profile, add -pg to LDFLAGS.
3194
3195         * configure: Regenerate.
3196
3197 2005-04-19  Michael Poole <mdpoole@troilus.org>
3198
3199         * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo.
3200
3201         * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks
3202         once a matching Client block is found.
3203
3204         * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp().
3205
3206 2005-04-18  Michael Poole <mdpoole@troilus.org>
3207
3208         * ircd/match.c (check_if_ipmask): Do not interpret masks that
3209         start with . or / as IP-based host masks.
3210
3211 2005-04-17  Michael Poole <mdpoole@troilus.org>
3212
3213         * ircd/channel.c (mode_process_clients): Only prohibit deops of
3214         users with the same or higher oplevel where apass is set.
3215         Likewise, when opping users, give them MAXOPLEVEL for non-apass
3216         channels.
3217         (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels.
3218
3219         * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the
3220         same or higher oplevel where apass is set.
3221
3222         * ircd/s_user.c (register_user): Fix order of server version vs
3223         various mode strings.
3224
3225         * tools/linesync/linesync.sh: Add revision id field.
3226
3227 2005-04-17  Michael Poole <mdpoole@troilus.org>
3228
3229         * tools/linesync/linesync.sh: Fix typo comment.  Check for
3230         multiple blocks per line in the linesync input.
3231
3232 2005-04-17  Dan <daniel@undernet.org>
3233
3234         * tools/linesync/linesync.sh: Update to support new syntax and to
3235         avoid rehashing the ircd when the config is the same.
3236
3237         * tools/linesync/linesync.conf: Update allowed conf items.
3238
3239 2005-04-16  Michael Poole <mdpoole@troilus.org>
3240
3241         * doc/example.conf (Kill): Document newly supported syntax.
3242
3243         * include/s_conf.h (DenyConf): Split realname mask into its own
3244         field.  Remove the unused DENY_FLAGS_{IP,REALNAME}.
3245
3246         * ircd/ircd_parser.y (Kill): Only require one of usermask,
3247         hostmask, realmask to be set for a valid block.
3248         (killitem): Add new production killusername.
3249
3250         * ircd/s_conf.c (conf_erase_deny_list): Free realmask field.
3251         (find_kill): Rearrange slightly to clarify control flow.
3252
3253         * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask,
3254         so the old usermask field can be adopted for realname mask.  Add
3255         double quotes around the realmask field.
3256
3257         * ircd/s_stats.c (report_deny_list): Do so.
3258         (stats_klines): Likewise.
3259
3260 2005-04-17  Perry Lorier <isomer@undernet.org>
3261         
3262         * tools/convert-conf.py: Fix lots of conversion problems with
3263         oper privielges (now they are converted), 
3264         features (deprecated features commented out, most converted to
3265         priviliges), 
3266         realname klines (also add host= lines)
3267         quarintines (generate blocks for them), 
3268         connect blocks (don't generate empty port config lines)
3269         etc...
3270
3271 2005-04-16  Michael Poole <mdpoole@troilus.org>
3272
3273         * ircd/gline.c (do_gline): Fix typo when activating IP-based
3274         G-lines.
3275
3276 2005-04-16  Michael Poole <mdpoole@troilus.org>
3277
3278         * ircd/class.c (free_class): Free default_umode field.
3279
3280         * ircd/ircd_parser.y (classblock): Free default_umode field before
3281         overwriting it.
3282
3283         * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit
3284         fields.
3285         (find_kill): Realname Kill blocks no longer have $R at the start,
3286         so do not skip over the first two characters of the mask.
3287
3288 2005-04-15  Michael Poole <mdpoole@troilus.org>
3289
3290         * doc/example.conf (Operator): Properly qualify plaintext password.
3291         (Quarantine): Document (new) syntax.
3292
3293         * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
3294         correctly on BSDs.
3295
3296         * ircd/ircd_parser.y (qconf): Remove global variable.
3297         (killuhost): Null terminate username when present.
3298         (quarantineblock): Replace with a syntax that works.
3299
3300         * ircd/s_stats.c: #include <querycmds.h> for UserStats.
3301         (stats_server_verbose): Reinstate check for UserStats.
3302
3303 2005-04-09  Kevin L. Mitchell  <klmitch@mit.edu>
3304
3305         * ircd/ircd.c: conditionally include sys/resource.h; otherwise,
3306         RLIMIT_CORE will not be defined and so set_core_limit() will never
3307         be defined, much less run.
3308
3309         * configure.in: add sys/resource.h to the list of headers to
3310         search for
3311
3312         * configure: regenerate configure
3313
3314         * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to
3315         config.h.in
3316
3317 2005-04-08  Michael Poole <mdpoole@troilus.org>
3318
3319         * include/s_conf.h (conf_debug_iline): Declare new function.
3320
3321         * ircd/ircd.c (dbg_client): New file-scoped variable.
3322         (parse_command_line): Set it from the new -c option.
3323         (main): If dbg_client is set during chkconf, use it.
3324
3325         * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses,
3326         not IPv4-compatible addresses, to match ipmask_parse().
3327
3328         * ircd/m_whowas.c (m_whowas): Split display of real host to a
3329         separate line, in hopes of not confusing opers in the future.
3330
3331         * ircd/s_conf.c (conf_debug_iline): Implement new function.
3332
3333 2005-04-06  Michael Poole <mdpoole@troilus.org>
3334
3335         * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping
3336         out locally opped and voiced channel members.
3337
3338 2005-04-06  Michael Poole <mdpoole@troilus.org>
3339
3340         * include/numeric.h (RPL_APASSWARN): Replace with three distinct
3341         values.
3342         (ERR_NOMANAGER_LONG): Assign new numeric.
3343         (ERR_NOMANAGER_SHORT): Assign new numeric.
3344
3345         * ircd/channel.c (parse_mode_upass): Adapt to new formats for
3346         ERR_NOTMANAGER separation.
3347         (parse_mode_apass): Likewise.  Also adapt to RPL_APASSWARN split.
3348
3349         * ircd/s_err.c (RPL_APASSWARN): Replace with three message
3350         strings, to avoid embedding long message strings in the logic
3351         implementation.
3352         (ERR_NOTMANAGER): Likewise (but not the same strings).
3353
3354 2005-04-06  Michael Poole <mdpoole@troilus.org>
3355
3356         * ircd/ircd_parser.y (clientblock): Use the password field.
3357
3358         * ircd/s_user.c (register_user): Allow aconf->password to be a
3359         single digit, since per-IP limit is now in a separate field.
3360
3361 2005-04-06  Michael Poole <mdpoole@troilus.org>
3362
3363         * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in
3364         current gcc releases and is slower than files for previous
3365         releases on most OSes.
3366
3367         * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING.
3368         (unet_PIPE_CFLAGS): Remove use of macro.
3369
3370         * aclocal.m4: Regenerate.
3371
3372         * configure: Likewise.
3373
3374 2005-04-04  Michael Poole <mdpoole@troilus.org>
3375
3376         * configure.in: For developers' ease, allow passing an option to
3377         configure to persistently set optimization CFLAGS.
3378
3379         * configure: Regenerate.
3380
3381 2005-04-04  Michael Poole <mdpoole@troilus.org>
3382
3383         * doc/example.conf (Jupe): Make the default Jupe block follow
3384         CFV-0255.  (Thanks to FrankP for pointing me at this and to DinTn
3385         for getting me a copy of the CFV.)
3386
3387 2005-04-04  Michael Poole <mdpoole@troilus.org>
3388
3389         * include/capab.h (CAPFL_STICKY): Define.
3390         (CAPLIST): Remove the entries used for testing.
3391
3392         * include/client.h (Connection): Clarify comment about the
3393         distinction between con_capab and con_active.
3394
3395         * ircd/m_cap.c: Add doxygen comments and replace the long
3396         discussion of m_handler functions with an xref to it.
3397         (send_caplist): Add new parameters and change the terminal vs
3398         non-terminal line distinction to make compliant with current draft
3399         specification.
3400         (cap_empty): Rename to cap_ls().
3401         (cap_req): Track modified capabilities bitwise, so that the
3402         responding ACK contains all the appropriate flags.
3403         (cap_ack): Add comment explaining why there is no response.
3404         (cap_clear): Build and send a list of cleared capabilities, as
3405         required by the current draft.
3406         (cap_list): Send capability list using LIST subcommand.
3407         (cmdlist): Add handler for LS subcommand.  Remove entries for the
3408         empty and LSL subcommands, which are no longer allowed.
3409         (m_cap): Require at least one argument from user.
3410
3411 2005-04-01  Michael Poole <mdpoole@troilus.org>
3412
3413         * include/s_conf.h (SMAP_FAST): Define.
3414         (s_map): Add 'flags' field.
3415
3416         * ircd/ircd_lexer.l: Recognize 'FAST' token.
3417
3418         * ircd/ircd_parser.y (FAST): New token.
3419         (pseudoitem): Add pseudoflags alternative.
3420         (pseudoflags): New production, recognizing FAST token.
3421
3422         * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally.
3423         Remove outdated comment.
3424
3425 2005-04-01  Michael Poole <mdpoole@troilus.org>
3426
3427         * include/handlers.h (ms_privs): Declare.
3428
3429         * include/msg.h (TOK_PRIVS): Assign token.
3430         (CMD_PRIVS): Define.
3431
3432         * ircd/m_privs.c: Add doxygen comments and replace the long
3433         discussion of m_handler functions with an xref to it.
3434         (mo_privs): Forward requests for non-local users
3435         to their own server.
3436         (ms_privs): Implement.
3437
3438         * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends
3439         the message.
3440
3441 2005-03-30  Michael Poole <mdpoole@troilus.org>
3442
3443         * include/client.h (struct Client): Explain where cli_username
3444         comes from.
3445
3446         * include/struct.h (struct User): Explain where this username
3447         comes from, too
3448
3449         * ircd/ircd_res.c (timeout_resolver): Update parameter name in
3450         Doxygen comment, too.
3451
3452         * ircd/s_misc.c (get_client_name): Reorganize to have less
3453         indentation and behave like 2.10.11 when client is not idented.
3454
3455 2005-03-29  Michael Poole <mdpoole@troilus.org>
3456
3457         * doc/example.conf: Remove no-longer-used HIS_STATS_h.
3458
3459         * doc/readme.features: Likewise.
3460
3461         * include/ircd_features.h: Likewise.
3462
3463         * ircd/ircd_features.c: Likewise.
3464
3465 2005-03-20  Reed Loden <reed@reedloden.com>
3466
3467         * include/ircd_features.h: Alphabetize HIS_STATS_? features.
3468
3469         * ircd/ircd_features.c: Likewise.
3470
3471 2005-03-29  Michael Poole <mdpoole@troilus.org>
3472         (The previously unapplied part of another patch (by Carlo Wood?).)
3473
3474         * ircd/m_part.c (ms_part): Remove a check that should already be
3475         done by the user's own server.
3476
3477 2005-03-29  Michael Poole <mdpoole@troilus.org>
3478
3479         * doc/example.conf: Add HIS_STATS_J entry.
3480
3481         * doc/readme.features: Likewise.
3482
3483 2005-03-25  Reed Loden <reed@reedloden.com>
3484
3485         * include/hash.h: Add needed prototypes for new
3486         stats_nickjupes() function.
3487
3488         * include/ircd_features.h: Add FEAT_HIS_STATS_J.
3489
3490         * include/numeric.h: Add RPL_STATSJLINE (222) for new nick
3491         jupes stats. Correct a typo in a comment.
3492
3493         * ircd/hash.c: Add stats_nickjupes() function to report all
3494         nick jupes to an oper. Because of the nature of hash tables,
3495         there is no way to sort this list so the results look weird.
3496
3497         * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE).
3498
3499         * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes
3500         stats.
3501
3502         * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes
3503         stats. Make 'j' case sensitive. Modify the comment for stats
3504         uworld.
3505
3506 2005-03-27  Michael Poole <mdpoole@troilus.org>
3507
3508         * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A
3509         channel when forwarding a channel burst line.
3510
3511 2005-03-25  Michael Poole <mdpoole@troilus.org>
3512
3513         * ircd/m_server.c (set_server_flags): New function.  Unlike the
3514         old code, this recognizes the IPv6 flag.  (Spotted by Reed.)
3515         (mr_server): Use the new function.
3516         (ms_server): Likewise.  Also don't show "Net junction:" message if
3517         any closer server is still bursting (also spotted by Reed).
3518         Finally, forward the +6 flag to other servers.
3519
3520         * ircd/s_serv.c (server_estab): Forward the +6 flag here, too.
3521
3522         * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it
3523         may be cleared by completed_connection().
3524
3525 2005-03-23  Michael Poole <mdpoole@troilus.org>
3526
3527         * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
3528         is wiped out during burst.
3529
3530 2005-03-22  Michael Poole <mdpoole@troilus.org>
3531
3532         * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
3533         kludgy earlier version of the timeout fix.
3534
3535 2005-03-22  Michael Poole <mdpoole@troilus.org>
3536
3537         * ircd/channel.c (send_channel_modes): Fix test for when to send
3538         membership mode suffix, to avoid sending it more than once.
3539
3540 2005-03-22  Michael Poole <mdpoole@troilus.org>
3541         (Many thanks to nex and Reed for helping hunt this down and
3542         doing the testing of various patches.)
3543
3544         * ircd/ircd_events.c (timer_chg): Properly change a timer that is
3545         in the middle of executing its expiration event.
3546
3547         * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for
3548         whether to use timer_chg() or timer_add().
3549         On second thought, use timer_add() unconditionally; the server
3550         connection loop does.
3551         (timeout_resolver): Do not try to re-schedule the DNS timeout
3552         unless it is the expiration event.
3553         (do_query_number): Properly initialize request->state.
3554         (res_readreply): Mention the response code that was bad.
3555
3556 2005-03-22  Michael Poole <mdpoole@troilus.org>
3557
3558         * ircd/engine_kqueue.c (engine_delete): The kernel removes
3559         close()'d FDs from the activity list, so don't try to remove the
3560         FD here (the caller may have already close()'d it).
3561
3562 2005-03-20  Michael Poole <mdpoole@troilus.org>
3563
3564         * ircd/IPcheck.c: Fix typos in comments and strings to reduce
3565         future slumming for credit.
3566
3567         * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise.
3568         * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise.
3569         * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise.
3570         * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise.
3571         * ircd/ircd_features.c, ircd/ircd_log.c: Likewise.
3572         * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise.
3573         * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise.
3574         * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise.
3575         * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise.
3576         * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise.
3577         * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise.
3578         * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise.
3579         * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise.
3580         * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise.
3581         * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise.
3582         * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise.
3583         * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise.
3584
3585         * ircd/test/test_stub.c: Make exit_client() argument list
3586         consistent with that in s_misc.c so doxygen is not confused.
3587
3588 2005-03-20  Michael Poole <mdpoole@troilus.org>
3589         (Thanks to Reed Loden for pointing these out.)
3590
3591         * ircd/channel.c: Fix typos in comments.
3592
3593         * ircd/m_create.c: Likewise.
3594
3595         * ircd/m_list.c: Likewise.
3596
3597         * ircd/m_names.c: Likewise.
3598
3599         * ircd/numnicks.c: Likewise.
3600
3601         * ircd/s_bsd.c: Likewise.
3602
3603 2005-03-20  Michael Poole <mdpoole@troilus.org>
3604         (Thanks to Reed Loden for pointing these out.)
3605
3606         * doc/Configure.help: Remove outdated file.
3607
3608         * doc/exaconf.2: Likewise.
3609
3610         * doc/snomask.html: Add missing <tr>, SNO_AUTO, SNO_DEBUG, and
3611         update SNO_OPERDEFAULT list.
3612
3613         * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd
3614         instead).
3615
3616         * tools/Makefile.crypt: Remove outdated file.
3617
3618         * tools/mkpasswd.c: Likewise.
3619
3620         * tools/transition: Likewise.
3621
3622 2005-03-19  Michael Poole <mdpoole@troilus.org>
3623
3624         * ircd/channel.c (sub1_from_channel): Check apass rather than mode
3625         to determine whether an apass is set (MODE_KEY/APASS/UPASS are not
3626         set in mode.mode).
3627         (send_channel_modes): Use the same change when determining how to
3628         send oplevels for channels.
3629
3630 2005-03-19  Michael Poole <mdpoole@troilus.org>
3631
3632         * include/IPcheck.h (IPcheck_connect_fail): Take a Client
3633         parameter instead of irc_in_addr.
3634
3635         * ircd/IPcheck.c (IPcheck_connect_fail): Likewise.  Assert that
3636         the client has been IP-checked.
3637         (IPcheck_remote_connect): Assert that the client has not yet been
3638         charged for connecting.
3639         (IPcheck_connect_succeeded): Assert that the client has been
3640         charged for connecting.
3641         (IPcheck_disconnect): Likewise.
3642
3643         * ircd/m_nick.c (m_nick): Pass rejected client to
3644         IPcheck_connect_fail() when somebody takes the nick first.
3645         (ms_nick): Likewise.
3646
3647         * ircd/s_serv.c (server_estab): Pass new server to
3648         IPcheck_connect_fail().
3649
3650         * ircd/s_user.c (register_user): When rejecting a user, pass
3651         the struct Client to IPcheck_connect_fail().
3652
3653 2005-03-19  Michael Poole <mdpoole@troilus.org>
3654
3655         * doc/example.conf (Connect): Remove a buggy comment about leaf
3656         directives; refer the reader to the Connect block instead.
3657
3658         * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;"
3659
3660 2005-03-19  Michael Poole <mdpoole@troilus.org>
3661
3662         * doc/example.conf (Operator): Correct the comment explaining
3663         hashed passwords.
3664
3665         * ircd/m_oper.c (oper_password_match): Check correct variable to
3666         determine whether the hashed password matched.
3667
3668 2005-03-08  Michael Poole <mdpoole@troilus.org>
3669
3670         * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask
3671         and bit count for "*".
3672         (ipmask_check): Make more robust to similar errors.
3673
3674 2005-03-07  Michael Poole <mdpoole@troilus.org>
3675
3676         * configure.in: Consistently use a constant in AC_DEFINE().
3677
3678         * configure: Regenerate.
3679
3680         * doc/example.conf (Port): Add comment about the mask option.
3681         (Port): Fix the vhosted Port example.
3682
3683         * ircd/ircd_parser.y (clientblock): Correctly initialize the IP
3684         address and addrbits for a Client block with no IP mask.
3685
3686         * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask.
3687
3688         * ircd/s_auth.c (start_auth_query): Count socket allocation
3689         failure as a failed auth check, as .11 does.
3690
3691         * ircd/s_debug.c (debug_serveropts): Add '6' to server options
3692         when compiled with IPv6 support.
3693
3694 2005-02-23  Michael Poole <mdpoole@troilus.org>
3695
3696         * doc/example.conf: Explain apass_opmode privilege, pointing out
3697         that, unlike previous privs, the default is OFF for global opers.
3698
3699         * include/client.h (PRIV_APASS_OPMODE): Define new privilege.
3700
3701         * ircd/channel.c (mode_parse_upass): Only prevent local opers
3702         without the apass_opmode privilege from forcing a +U change.
3703         (mode_parse_apass): Likewise, for +A.
3704
3705         * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in
3706         the default privileges for global opers.
3707
3708         * ircd/ircd_lexer.l (apass_opmode): Recognize keyword.
3709
3710         * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token.
3711         (privtype): Fix typo for local_badchan privilege value.
3712         Accept apass_opmode token.
3713
3714 2005-02-23  Michael Poole <mdpoole@troilus.org>
3715
3716         * doc/example.conf: Fix comment's description of "whox" privilege.
3717
3718 2005-02-21  Michael Poole <mdpoole@troilus.org>
3719
3720         * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check
3721         from here, so /whois does not show secret global channels.
3722
3723         * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use
3724         "/list s".
3725         (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels.
3726
3727 2005-02-21  Perry Lorier <isomer@undernet.org>
3728
3729         * ircd/s_stats.c: Hide the hub IP's.  They're kinda important.
3730
3731 2005-02-20  Perry Lorier <isomer@undernet.org>
3732
3733         * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to
3734         parse_error()'s so that ./ircd -k will display them.  Also clarified
3735         the warning about oper blocks.
3736
3737 2005-02-20  Perry Lorier <isomer@undernet.org>
3738
3739         * tools/convert-conf.py: A multitude of changes to deal with parsing
3740         mistakes, generate a newer config file, better error handling,
3741         being smarter about what config elements you generate etc.
3742         
3743 2005-02-20  Perry Lorier <isomer@undernet.org>
3744
3745         * ircd/engine_epoll.c: Change a size_t to socklen_t to match
3746         getsockopt prototype, so it compiles without warning on amd64
3747
3748 2005-02-19  Michael Poole <mdpoole@troilus.org>
3749
3750         * ircd/ircd_parser.y (clientblock): Parse IP address before
3751         allocating ConfItem; if the parse fails, generate an error.
3752
3753         * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6
3754         addresses starting with ':'.
3755         (RPL_STATSILINE): Likewise.
3756         (RPL_STATSOLINE): Add format field for username.
3757
3758         * ircd/s_stats.c (stats_configured_links): Pass the appropriate
3759         argument for the RPL_STATSxLINE changes.
3760         Change RPL_STATSILINE to use * instead of <NULL> when IP or host
3761         is null.
3762
3763 2005-02-18  Michael Poole <mdpoole@troilus.org>
3764
3765         * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP
3766         address to look up and compare against hash entries.
3767
3768         * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban.
3769
3770         * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name.
3771         (clienthost): Split hosts that contain '@' into username and host.
3772         (clientip): Split IPs that contain '@' into username and IP.
3773         (killreason): Add missing ~ to mask off DENY_FLAGS_FILE.
3774
3775         * ircd/m_silence.c (forward_silences): When we reject a silence,
3776         splice it out of the ban list.  Warn the user if he is local.
3777
3778         * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server
3779         connections.
3780
3781         * ircd/s_stats.c (stats_configured_links): Display correct field
3782         when listing CONF_UWORLD entries.
3783
3784 2005-02-09  Michael Poole <mdpoole@troilus.org>
3785
3786         * configure.in (YACC): Only warn if we cannot get a version number
3787         from $YACC.
3788
3789         * configure: Regenerate.
3790
3791         * ircd/ircd_res.c (check_resolver_timeout): Try another way to
3792         avoid timer_chg() on a non-queued/active timer.
3793
3794         * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
3795         strings like "::127.0.0.1".
3796
3797         * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
3798
3799 2005-02-02  Michael Poole <mdpoole@troilus.org>
3800
3801         * Makefile.in (install): Do not create ${prefix}/include since it
3802         is no longer used.
3803
3804         * ircd/Makefile.in (install-*): Remove commented-out code to touch
3805         and chown MPATH and RPATH.
3806
3807         * ircd/gline.c (gline_find): Allow searching for host-based
3808         G-lines by plain hostname (not *@host), thus preventing "GLINE
3809         test ..." from inserting duplicate G-lines.
3810
3811         * ircd/motd.c (motd_create): Null out new Motd's hostmask when
3812         appropriate, avoiding an uninitialized or stale pointer.
3813
3814 2005-01-26  Michael Poole <mdpoole@troilus.org>
3815
3816         * include/ircd_alloc.h (DoMallocZero): Parenthesize macro
3817         arguments, fixing operator precedence problems.
3818         (DoFree): Make debug version also overwrite p.
3819
3820         * include/memdebug.h (fda_get_byte_count, fda_get_block_count):
3821         Declare functions used outside memdebug.c.
3822
3823         * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c.
3824
3825         * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not
3826         use these if using the memdebug version.
3827
3828         * ircd/memdebug.c: #include "send.h" and <string.h> to get
3829         declarations for certain functions.
3830
3831         * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug.
3832         (sendto_opmask_butone): Likewise.
3833
3834 2005-01-25  Michael Poole <mdpoole@troilus.org>
3835
3836         * configure.in: Fix typos and thinkos in previous commut.
3837
3838         * configure: Regenerate.
3839
3840         * doc/example.conf: Change class name in Connect block to be
3841         consistent with earlier Class block.
3842
3843         * ircd/ircd.c (try_connections): Consider Connect blocks with hold
3844         time of 0.  Fix Links() vs MaxLinks() comparison to reflect ref
3845         count starting at 1.
3846
3847         * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused
3848         variables after use.
3849
3850 2005-01-24  Michael Poole <mdpoole@troilus.org>
3851
3852         * configure.in: Make sure that $LEX and $YACC are reasonable and
3853         actually run.
3854
3855         * configure: Regenerate.
3856
3857         * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to
3858         test whether the timer is already pending.
3859
3860 2005-01-23  Michael Poole <mdpoole@troilus.org>
3861
3862         * doc/example.conf (Kill): Fix typo in realname Kill block
3863
3864         * include/client.h (infousermodes): Fix typo in comment.
3865
3866         * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY.
3867         (main): Move daemon_init() before event_init() to work around BSD
3868         lameness.
3869
3870 2005-01-23  Michael Poole <mdpoole@troilus.org>
3871
3872         * ircd/test/Makefile.in: Add missing "install" target.  Make
3873         compatible with BSD make (which has no $^ and no $(CPPFLAGS) in
3874         its default .c.o rule).
3875
3876 2005-01-21  Michael Poole <mdpoole@troilus.org>
3877
3878         * ircd/engine_kqueue.c: Move <sys/types.h> earlier to fix build on
3879         FreeBSD 5.x (which needs it for <sys/event.h>).
3880
3881         * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with
3882         portable equivalents.
3883
3884         * ircd/ircd_log.c (log_open): Likewise.
3885
3886         * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so
3887         that IPv6 definitions become visible on FreeBSD 5.3.
3888
3889         * ircd/s_auth.c: Remove apparently unused <sys/file.h> because
3890         it fails to compile on FreeBSD 5.3.
3891
3892 2005-01-22  Perry Lorier <isomer@undernet.org>
3893
3894         * ircd/ircd_parser.y: Fix missing ;
3895
3896 2005-01-19  Michael Poole <mdpoole@troilus.org>
3897
3898         * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in
3899         outbound INVITE messages.  On incoming INVITEs, ignore if the
3900         timestamp is too recent or if the timestamp is missing and the
3901         peer server is in burst.
3902
3903 2005-01-15  Michael Poole <mdpoole@troilus.org>
3904
3905         * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans
3906         and silences.  Mention net.rider kick change.
3907
3908         * doc/example.conf (Class): Add documentation for restart and
3909         local_opmode privileges.  Fix name of local_jupe privilege.
3910
3911         * ircd/ircd_lexer.l: Recognize local_opmode privilege.
3912
3913 2005-01-14  Michael Poole <mdpoole@troilus.org>
3914
3915         * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify
3916         CAP comment, mention named /stats, list config heteromorphisms.
3917
3918         * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L,
3919         HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST.
3920
3921         * ircd/channel.c (mode_parse_apass): Change old mention of +u mode
3922         to say +U.
3923
3924 2005-01-13  Michael Poole <mdpoole@troilus.org>
3925
3926         * RELEASE.NOTES: Update for 2.10.12.
3927
3928 2005-01-08  Michael Poole <mdpoole@troilus.org>
3929
3930         * ircd/channel.c (@page zombie): Add synopsis to explain what
3931         zombies are supposed to do.
3932
3933         * doc/example.conf (Features): Transfer recommended LOG features
3934         from 2.10.11 example.conf.
3935
3936 2005-01-03  Michael Poole <mdpoole@troilus.org>
3937
3938         * ircd/ircd.c (try_connections): Test Connect hold time before
3939         updating it (spotted by Kev).
3940
3941 2005-01-03  Michael Poole <mdpoole@troilus.org>
3942
3943         * Makefile.in: Add ircd/test as a subdirectory.
3944
3945         * ircd/.cvsignore: Ignore umkpasswd binary.
3946
3947         * ircd/Makefile.in: Update dependencies.
3948
3949         * ircd/test/.cvsignore: New file.
3950
3951         * ircd/test/Makefile.in: Use ${} instead of $().  Add build,
3952         depend, distclean targets to integrate with rest of build system.
3953
3954 2005-01-03  Michael Poole <mdpoole@troilus.org>
3955
3956         * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
3957         that have an invalid IP address.
3958
3959         * ircd/ircd.c (try_connections): Update Connect hold time before
3960         skipping it, to prevent infinite loops.
3961
3962 2005-01-03  Kevin L Mitchell  <klmitch@mit.edu>
3963
3964         * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
3965         was a server; fixed to skip servers
3966
3967 2004-12-28  Michael Poole <mdpoole@troilus.org>
3968
3969         * include/s_bsd.h (VirtualHost): Replace with separate variables
3970         for IPv4 and IPv6 virtual hosts.
3971
3972         * include/uping.h (uping_echo): Remove declaration.
3973
3974         * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
3975         VirtualHost_v6 based on iauth server address family.
3976
3977         * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
3978
3979         * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
3980         (RESOLVER): Remove definition.
3981         (generalresolver): Remove.
3982         (generalvhost): Assign address to either VirtualHost_v4 or
3983         VirtualHost_v6, depending on format.
3984
3985         * ircd/ircd_res.c (res_socket): Replace with separate variables
3986         for IPv4 and IPv6 resolver sockets.
3987         (ResolverAddr): Remove definition.
3988         (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
3989         (send_res_msg): Select outbound FD based on resolver address type.
3990         (res_readreply): Recognize either inbound socket FD.
3991
3992         * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
3993         (os_socket): Require local != NULL.
3994
3995         * ircd/s_bsd.c (VirtualHost): Replace with separate variables
3996         for IPv4 and IPv6 virtual hosts.
3997         (connect_inet): Select virtual host based on destination address.
3998
3999         * ircd/uping.c (UPingFIleDescriptor): Remove.
4000         (upingSock): Split into separate IPv4 and IPv6 variables.
4001         (uping_echo_callback): Incorporate uping_echo() body here, so the
4002         proper socket FD can be used.
4003         (uping_init): Attempt to set up both v4 and v6 UPING sockets.
4004         (uping_server): Create uping socket with appropriate local address.
4005
4006         * doc/example.conf (General): Update example config file to
4007         reflect removal of Resolver setting and support for separate IPv4
4008         and IPv6 VHost settings.
4009
4010 2004-12-28  Michael Poole <mdpoole@troilus.org>
4011
4012         * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
4013         DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
4014         unused macros.
4015
4016         * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
4017         ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
4018         #include <arpa/inet.h>.
4019
4020 2004-12-28  Michael Poole <mdpoole@troilus.org>
4021
4022         * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
4023         (ipmask_parse_ipv4): We already parse the dotted quads from the
4024         input string, so use them instead of inet_addr() to populate
4025         out->s_addr.
4026
4027         * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
4028         (do_gline): Pass SHOW_IP instead of TRUE as argument to
4029         get_client_name().
4030
4031         * ircd/ircd.c (try_connections): Revise to use fewer temporary
4032         variables.
4033
4034 2004-12-28  Michael Poole <mdpoole@troilus.org>
4035
4036         * include/res.h: Implement irc_in_addr_* as macros.
4037
4038         * ircd/ircd_res.c: Remove the function bodies.
4039
4040         * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
4041         (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
4042         (ircd_aton): Accept IPv6 addresses with all eight segments
4043         specified (e.g. 0:0:0:0:0:0:0:0).  Correctly parse addresses
4044         with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
4045
4046         * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
4047
4048         * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
4049         support.  Add test_stub.c and ircd_in_addr_t.c references.
4050
4051         * configure.in: Generate ircd/test/Makefile as an output file.
4052
4053         * configure: Update.
4054
4055 2004-12-18  Michael Poole <mdpoole@troilus.org>
4056
4057         * include/client.h: Move unreg, privs, capab and active fields
4058         from struct Client to struct Connection since that is how they
4059         are really associated.  Adjust macros to match.
4060         (SetPriv, ClrPriv): New macros.
4061
4062         * ircd/client.c (client_set_privs): Exit earlier for remote
4063         clients.  Adjust macro use to correspond.
4064
4065         * ircd/m_server.c (mr_server): Grant all privileges except
4066         PRIV_SET to peer servers.
4067
4068 2004-12-18  Michael Poole <mdpoole@troilus.org>
4069
4070         * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
4071         #1087461.
4072
4073 2004-12-18  Michael Poole <mdpoole@troilus.org>
4074
4075         * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
4076         socket's FD is the same after processing as it was before; local
4077         clients apparently have s_fd() == -1 after close.
4078
4079 2004-12-18  Kevin L Mitchell  <klmitch@mit.edu>
4080
4081         * ircd/s_user.c: make absolutely certain register_user() is never
4082         called with cli_unreg non-zero; transition set_nick_name() over to
4083         the new way of determining whether client is ready for
4084         register_user()
4085
4086         * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
4087         understand a given CAP subcommand
4088
4089         * ircd/parse.c: add "CAP" command
4090
4091         * ircd/m_user.c (m_user): transition over to new way of
4092         determining whether client is ready for register_user()
4093
4094         * ircd/m_pong.c (mr_pong): transition over to new way of
4095         determining whether client is ready for register_user()
4096
4097         * ircd/m_cap.c: implementation of the IRC capabilities draft
4098
4099         * ircd/list.c (make_client): initialize cli_unreg element of
4100         client structure
4101
4102         * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
4103         functions that were never found because cross-case ordering has
4104         not been needed until now
4105
4106         * ircd/Makefile.in: add m_cap.c to list of .c files
4107
4108         * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
4109         indicate an unknown CAP subcommand
4110
4111         * include/msg.h: add "CAP" command
4112
4113         * include/handlers.h: add m_cap() to list of handlers
4114
4115         * include/client.h: add support for client capabilities; rototill
4116         the registration mechanism to dovetail well with the capability
4117         system--i.e., allow the capability system to suspend registration
4118         if the user issues one of the CAP commands
4119
4120         * include/capab.h: header file to define client capabilities
4121
4122 2004-12-17  Michael Poole <mdpoole@troilus.org>
4123
4124         * ircd/channel.h (apply_ban): Add new flag to indicate whether
4125         newban should be free()'d after it is used.
4126
4127         * ircd/channel.c (apply_ban): Likewise.  Also set BAN_DEL flag
4128         when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
4129         (mode_parse_ban): Delete buggy shortcut when channel banlist is
4130         empty.
4131         (mode_process_bans): Always give ownership of ban->banstr to the
4132         mode buffer, avoiding a memory leak.
4133
4134         * ircd/m_silence.c (apply_silence): Pass new parameter to
4135         apply_ban.
4136
4137 2004-12-17  Michael Poole <mdpoole@troilus.org>
4138
4139         * ircd/channel.c (sub1_from_channel): Immediately destroy
4140         non-Apass channels when oplevels are enabled; otherwise, they can
4141         stay opless for a considerable period.
4142         (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
4143         does not try to free() an invalid pointer.
4144
4145         * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
4146         aconf->host, not aconf->name.
4147
4148         * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
4149         by host here..
4150
4151         * ircd/s_conf.c (conf_check_server): .. rather than by name here.
4152         (attach_conf_uworld): New function to attach CONF_UWORLD items.
4153         (rehash): Use attach_conf_uworld() instead of attaching by name.
4154
4155 2004-12-15  Michael Poole <mdpoole@troilus.org>
4156
4157         * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
4158         channels they are not joined.
4159
4160 2004-12-15  Michael Poole <mdpoole@troilus.org>
4161
4162         * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
4163         warning.
4164         (ip_registry_canonicalize): New function to convert an IP address
4165         into a canonical form for clone checks.
4166         (ip_registry_hash): Update to reflect canonical form.
4167         (ip_registry_find): Use ip_registry_canonicalize().
4168         (ip_registry_check_local, ip_registry_check_remote): Likewise.
4169
4170         * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
4171         sending them to a non-IPv6 server.
4172
4173 2004-02-17  Michael Poole <mdpoole@troilus.org>
4174
4175         * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
4176         +D channel when they hide their hostmask.
4177
4178 2004-12-15  Michael Poole <dmpoole@troilus.org>
4179
4180         * doc/example.conf: Remove the example Server blocks since they
4181         are no longer used (were merged into Connect).
4182
4183         * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
4184
4185         * ircd/m_server.c (check_loop_and_lh): Use a different argument to
4186         test whether an introduced server is directly connected or not.
4187
4188 2004-12-14  Michael Poole <mdpoole@troilus.org>
4189
4190         * include/client.h (FLAG_IPV6): New value for enum Flag.
4191         (IsIPv6, SetIPv6): Accessor macros for it.
4192
4193         * include/numnicks.h (iptobase64): Add flag indicating whether to
4194         use full IPv6 addresses or fake them in an IPv4-compatible way.
4195
4196         * ircd/numnicks.c (iptobase64): Use the new flag.
4197
4198         * include/send.h (sendcmdto_flag_serv_butone): New function to
4199         send different lines to servers based on flags (like FLAG_IPV6).
4200
4201         * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
4202
4203         * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
4204         our server flags.
4205
4206         * ircd/s_serv.c (server_estab): Likewise.  Also make sure we send
4207         compatible IP addresses for the new server.
4208
4209         * ircd/s_user.c (register_user): Only send full IPv6 addresses to
4210         links that have FLAG_IPV6 set.
4211
4212 2004-12-13  Michael Poole <mdpoole@troilus.org>
4213
4214         * doc/example.conf: Update General block comment to mention
4215         new RESOLVER option and to explain IPv6 support.
4216
4217         * ircd/ircd_lexer.l: Recognize RESOLVER token.
4218
4219         * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
4220         alternative for generalitem.
4221
4222         * ircd/ircd_res.c: Define global ResolverAddr variable.  If it is
4223         valid, use it instead of VirtualHost in restart_resolver().
4224
4225 2004-12-13  Michael Poole <mdpoole@troilus.org>
4226
4227         * doc/example.conf: Update configuration to move Client block
4228         comment after sample Class blocks, and update entries in it.
4229
4230         * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
4231
4232         * ircd/ircd_parser.y: Add ip and username global variables and IP
4233         and USERNAME tokens.  Add clientip and clientusername alternatives
4234         for clientitem, and update clientblock to correspond.
4235
4236         * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
4237         the request_list before request_list is initialized.
4238         (cres_mem): Likewise.
4239
4240         * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
4241         proper address family.
4242
4243         * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
4244         means DNS reply is optional.  If aconf->addrbits >= 0, test it.
4245
4246         * tools/crypter: Delete.
4247
4248 2004-12-11  Kevin L Mitchell  <klmitch@mit.edu>
4249
4250         * ircd/*.c: use new assert() in ircd_log.h in preference to system
4251         assert()
4252
4253         * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
4254         glue so that umkpasswd will successfully compile and link
4255
4256         * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
4257         there are no calls to assert()
4258
4259         * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
4260         from looping should there be an assertion failure somewhere in the
4261         logging subsystem
4262
4263         * include/ircd_log.h: custom implementation of assert() that calls
4264         log_write()
4265
4266 2004-11-21  Michael Poole <mdpoole@troilus.org>
4267
4268         * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
4269         be done by non-channel-managers, fixing a crash from OPMODE.
4270         (mode_parse_apass): Likewise.
4271
4272 2004-11-20  Michael Poole <mdpoole@troilus.org>
4273
4274         * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
4275         a channel they are already in, but do not add them again.
4276
4277 2004-11-09  Michael Poole <mdpoole@troilus.org>
4278
4279         * include/res.h (init_resolver): Delete, and initialize lazily.
4280
4281         * ircd/ircd.c (main): Do not call init_resolver().
4282
4283         * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
4284         local resolver socket address.
4285         (init_resolver): Delete.
4286         (make_request): Call restart_resolver() if necessary.
4287         (query_name): Use ircrandom() instead of rand().
4288
4289         * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
4290         a file descriptor that indicates the socket family to use.
4291         (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
4292
4293 2004-11-09  Michael Poole <mdpoole@troilus.org>
4294
4295         * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
4296         socket from epoll on delete, since the kernel does that for us.
4297
4298 2004-11-07  Michael Poole <mdpoole@troilus.org>
4299
4300         * ircd/m_server.c (m_server, ms_server): Assign timestamp before
4301         it might be used in exit_new_server().
4302
4303 2004-11-07  Michael Poole <mdpoole@troilus.org>
4304
4305         * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
4306         to reflect the changes since these files' last rebuild.
4307
4308 2004-11-07  Michael Poole <mdpoole@troilus.org>
4309
4310         * include/ircd_crypt.h (ircd_crypt): This should return char*, not
4311         const char*, since it does not own the returned pointer.
4312
4313         * ircd/ircd_crypt.c (ircd_crypt): Change return type.
4314
4315         * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
4316         field since it is returned but this function must own the buffer.
4317
4318         * ircd/m_oper.c (oper_password_match): Free the string returned by
4319         ircd_crypt().
4320
4321         * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
4322
4323 2004-11-07  Michael Poole <mdpoole@troilus.org>
4324
4325         * acinclude.m4: Look for a 64-bit integer type.
4326
4327         * configure.in: Look for inttypes.h, since some systems have that
4328         but not stdint.h (and define 64-bit integers therein).
4329
4330         * include/client.h: Delete con_sendK, con_receiveK.  Make
4331         con_sendB and con_receiveB 64 bits wide.
4332
4333         * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
4334         Convert the other byte counters and the connected time counters to
4335         64 bits wide.
4336
4337         * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
4338         HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
4339
4340         * ircd/packet.c (update_bytes_received): Remove use of
4341         cli_receiveK().
4342
4343         * ircd/s_bsd.c (deliver_it): Likewise.
4344         (close_connection): Likewise.
4345
4346         * ircd/s_misc.c (tstats): Likewise.  Update format strings to use
4347         %Lu for 64-bit integer parameters.
4348
4349         * ircd/s_stats (stats_links): Convert cli_sendK() and
4350         cli_receiveK() use shifted versions of the byte counters, and
4351         update format strings to use %Lu for 64-bit integer parameters.
4352
4353 2004-11-07  Michael Poole <mdpoole@troilus.org>
4354
4355         * include/s_user.h (add_silence): Delete.
4356         (del_silence): Delete.
4357
4358         * include/struct.h (struct User): Convert silence list to struct Ban.
4359
4360         * ircd/m_silence.c (apply_silence, forward_silences): New functions.
4361         (m_silence): Use forward_silences() instead of add_silence().
4362         (ms_silence): Likewise.
4363
4364         * ircd/s_err.c (replyTable): Update RPL_SILELIST.
4365
4366         * ircd/s_misc.c (exit_one_client): Update to new silence list type.
4367
4368         * ircd/s_user.c (is_silenced): Use find_ban() to search for
4369         silences.  If one is found, send it plus any silence exceptions.
4370         (del_silence): Delete.
4371         (add_silence): Delete.
4372
4373 2004-11-07  Michael Poole <mdpoole@troilus.org>
4374
4375         * include/channel.h: Remove declarations for undefined functions
4376         cancel_mode(), add_token_to_sendbuf(), IsMember().  Delete
4377         add_banid(), next_removed_overlapped_ban().  Add BAN_EXCEPTION
4378         flag and new functions find_ban(), apply_ban().
4379
4380         * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
4381         LocalChanOperMode): Remove unused variable definitions.
4382         (make_nick_user_host): Delete.
4383         (add_banid): Delete.
4384         (next_removed_overlapped_ban): Delete.
4385         (find_ban): New function, which knows about exceptions.
4386         (is_banned): Use find_ban() and only work on a struct Membership.
4387         (bmatch): New function, which knows about CIDR bans.
4388         (apply_ban): New function to replace add_banid().
4389         (mode_parse_ban): Use apply_ban().
4390
4391 2004-10-28  Michael Poole <mdpoole@troilus.org>
4392
4393         * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
4394         new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
4395
4396 2004-10-22  Michael Poole <mdpoole@troilus.org>
4397
4398         * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
4399         with announcements enabled (do not "announce" to the recipient,
4400         and unconditionally send to the recipient).
4401
4402         * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
4403         the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
4404
4405 2004-10-21  Michael Poole <mdpoole@troilus.org>
4406
4407         * include/channel.h (Ban): Add fields address, nu_len, addrbits to
4408         support netmask-based bans.
4409
4410         * ircd/channel.c (set_ban_mask): New function to parse a ban as
4411         either netmask-based or not.
4412         (make_ban): Use set_ban_mask().
4413         (make_nick_user_ip): Becomes unused; remove it.
4414         (is_banned): Rewrite to match only once against the nick!user part
4415         of a ban, and compare addresses if BAN_IPMASK is set.
4416         (mode_parse_ban): Use set_ban_mask().
4417
4418 2004-10-21  Michael Poole <mdpoole@troilus.org>
4419
4420         * ircd/s_conf.c (attach_iline): Test resolved host names against
4421         aconf->host, not the (NULL) aconf->name.
4422
4423 2004-10-19  Michael Poole <mdpoole@troilus.org>
4424
4425         * include/channel.h: Move ban flags out of channel flags and
4426         rename to reflect this.
4427
4428         * ircd/channel.c: Update ban constant names.
4429
4430         * ircd/m_burst.c: Likewise.
4431
4432 2004-10-18  Michael Poole <mdpoole@troilus.org>
4433
4434         * include/list.h (SLink): Remove ban elements from here...
4435
4436         * include/channel.h (Ban): And move to the new struct Ban.
4437         (Channel): Update banlist field to match.
4438         (next_removed_overlapped_ban): Update return type to match.
4439         (make_ban, free_ban): New functions.
4440
4441         * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
4442         list types.
4443         (free_bans): New variable to hold unused Ban elements.
4444         (make_ban, free_ban): New functions.
4445         (destruct_channel, add_banid, next_removed_overlapped_ban): Update
4446         to use struct Ban.
4447         (is_banned, send_channel_modes, send_ban_list): Likewise.
4448         (ParseState, mode_parse_ban, mode_process_bans): Likewise.
4449         (mode_parse): Likewise.
4450
4451         * ircd/m_burst.c (ms_burst): Update to use struct Ban.
4452
4453         * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
4454
4455         * ircd/s_debug.c (count_memory): Update to use struct Ban.
4456
4457 2004-10-18  Kevin L Mitchell  <klmitch@mit.edu>
4458
4459         * ircd/gline.c (gline_find): unless we're looking for an exact
4460         match, we should call match() on hostnames, not ircd_strcmp()
4461
4462 2004-10-17  Michael Poole <mdpoole@troilus.org>
4463
4464         * include/s_conf.h (ConfItem): Add new field username.  Replace
4465         unused field bits with addrbits.
4466         (find_conf_exact): Replace user and host arguments with cptr.
4467         (find_conf_name, read_tlines, find_restrict): Remove declaration
4468         for undefined functions.
4469         (conf_parse_userhost): New function.
4470
4471         * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
4472         resolved hostname and IP are matched in one pass now.
4473
4474         * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
4475
4476         * ircd/s_conf.c (conf_parse_userhost): New function.
4477         (check_limit_and_attach): Use correct ConfItem field to determine
4478         maximum connections per IP.
4479         (attach_iline): Replace user@host matching with shorter, clearer
4480         matching against username and host/IP fields.
4481         (find_conf_exact): Likewise.
4482
4483         * ircd/ircd_parser.y: Replace assignment to aconf->host for
4484         CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
4485         conf_parse_userhost().  This means CONF_CLIENT ConfItems no longer
4486         use the name field or the IP token.  Remove the latter.
4487
4488         * ircd/ircd_lexer.l: Remove unused token IP.
4489
4490 2004-10-17  Michael Poole <mdpoole@troilus.org>
4491
4492         * ircd/crule.c (crule_via): Simplify the lookup for the directly
4493         connected server name.
4494
4495 2004-10-16  Michael Poole <mdpoole@troilus.org>
4496
4497         * ircd/class.c: Make find_class() return NULL for unknown classes,
4498         rather than returning the start of connClassList.
4499
4500         * ircd/match.c (parse_ipmask): Translate IPv4 masks as
4501         IPv4-compatible addresses.
4502         (check_ipmask): Fix comparison of IP masks.
4503
4504         * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
4505         uses CIDR style masks in the hostname field of a Motd block.
4506
4507 2004-10-16  Michael Poole <mdpoole@troilus.org>
4508
4509         * ircd/numeric.h: Remove the unused RPL_STATMEM and
4510         RPL_STATMEMTOT.  Move the RPL_BOUNCE comment to its current
4511         value (the former RPL_STATMEM).
4512
4513         * ircd/s_err.c: Remove format strings for RPL_STATMEM and
4514         RPL_STATMEMTOT.
4515
4516 2004-10-16  Michael Poole <mdpoole@troilus.org>
4517
4518         * ircd/m_server.c: Look up server configuration by name of our
4519         directly connected peer rather than the server being introduced.
4520
4521 2004-10-13  Michael Poole <mdpoole@troilus.org>
4522
4523         * include/channel.h: Delete MODE_LISTED and is_listed().  Replace
4524         ListingArgs.chptr with ListingArgs.bucket.  Move declaration of
4525         list_next_channels() to..
4526
4527         * include/hash.h: here, and drop the "nr" argument.
4528
4529         * ircd/channel.c: Remove redundant scan of local clients for
4530         channels being listed.  Delete list_next_channels() function.
4531
4532         * ircd/hash.c: Add list_next_channels() here, revising to not use
4533         MODE_LISTED and to use ListingArgs.bucket instead of chptr.  Also
4534         decide when to stop sending RPL_LISTs based on a half-full sendq.
4535
4536         * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
4537
4538         * ircd/m_list.c: Delete mention of MODE_LISTED.  Unconditionally
4539         call list_next_channels(sptr).
4540
4541         * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
4542
4543         * ircd/Makefile.in: Update dependencies (for hash.c).
4544
4545 2004-10-13  Michael Poole <mdpoole@troilus.org>
4546
4547         * ircd/ircd_parser.y: Consistently zero out global variables after
4548         they are used (prevents double frees and other problems).
4549
4550 2004-10-12  Michael Poole <mdpoole@troilus.org>
4551
4552         * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
4553         Set, Clr respectively.  Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
4554         Delete con_fd (get from con_socket) and con_port.  Move sentalong
4555         from send.c to struct Connection, and cli_lasttime and cli_since
4556         from struct Client to struct Connection.  Update cli_*() macros to
4557         use con_*(cli_connect(cli)).
4558
4559         * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
4560         FlagClr(), PrivHas() with FlagHas().
4561
4562         * ircd/ircd_parser.y: Likewise.
4563
4564         * ircd/list.c: Remove assignment to cli_local() since it is now a
4565         calculated value.
4566
4567         * ircd/s_bsd.c: Remove uses of cli_port().
4568
4569         * ircd/s_conf.c: Remove uses of ClearAccess().
4570
4571         * ircd/send.c: Delete sentalong array and replace with references
4572         to con_sentalong().
4573
4574 2004-10-12  Michael Poole <mdpoole@troilus.org>
4575
4576         * doc/example.conf: Update example config to reflect the changes
4577         made in the remainder of this patch.
4578
4579         * include/list.h: Make make_conf() take a type argument.
4580
4581         * include/s_conf.h: Delete CONF_LEAF and CONF_HUB.  Add "maximum"
4582         and "hub_limit" to ConfItem to compensate.
4583
4584         * ircd/ircd_lexer.l: Recognize MAXHOPS token.
4585
4586         * ircd/ircd_parser.y: Get rid of aconf global variable and add
4587         hub_limit global variable.  Add MAXHOPS token, and productions
4588         inside connectblock to recognize it and hub masks.  Allow maxlinks
4589         field in a Client block, rather than overloading password field.
4590         Convert serverblock to uworldblock and remove extraneous fields.
4591
4592         * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
4593         calculate LHcptr and active_lh_line.  Merge some duplicated code
4594         so handling active_lh_line cases is clearer.
4595
4596         * ircd/s_conf.c: Make make_conf() take a type argument.  Delete
4597         CONF_LEAF and CONF_HUB.  Do not overwrite server name with what
4598         is specified in the config file.
4599
4600         * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
4601         RPL_STATSHLINE.  Remove useless parameters and format fields from
4602         RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
4603         RPL_STATSULINE.
4604
4605         * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
4606
4607         * ircd/s_stats.c: Get rid of report_array and make
4608         stats_configured_links() directly use RPL_STATSxLINE (adding the
4609         new fields for Server and Client blocks).  Remove /stats h, since
4610         that has no meaning.
4611
4612 2004-10-12  Michael Poole <mdpoole@troilus.org>
4613
4614         * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
4615         default rather than by listing which should be wiped out.
4616
4617 2004-10-09  Michael Poole <mdpoole@troilus.org>
4618
4619         * ircd/m_server.c: Forward port checks for leaf and hub config
4620         rules, and reorganize mr_server() and ms_server() by moving out
4621         common code.  Add doxygen comments for the file.
4622
4623 2004-10-09  Michael Poole <mdpoole@troilus.org>
4624
4625         * ircd/hash.c: Fix thinko in hash function: It is not indexed
4626         simply by character value, so we cannot just remap the values
4627         by case.
4628
4629 2004-10-05  Michael Poole <mdpoole@troilus.org>
4630
4631         * ircd/hash.c: Replace the old hash function with one based on
4632         randomized CRC-32.  The new one avoids a big table from the old
4633         function.
4634
4635 2004-10-05  Michael Poole <mdpoole@troilus.org>
4636
4637         * ircd/random.c: Convert to use ircd_md5 interface and hopefully
4638         keep more internal random state.
4639
4640 2004-10-05  Michael Poole <mdpoole@troilus.org>
4641
4642         * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
4643         ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
4644         prefixes.
4645
4646 2004-10-05  Michael Poole <mdpoole@troilus.org>
4647
4648         * adns, lib/adns: Remove unused adns library.
4649
4650 2004-10-05  Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
4651
4652         * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
4653         format, and add new comments where needed.
4654
4655         * Doxyfile: New file to tell Doxygen how to run.
4656
4657 2004-09-21  Michael Poole <mdpoole@troilus.org>
4658
4659         * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
4660         programmer, generate magic numbers.
4661         (AuthIncompleteList): Remove.
4662         (AuthPollList): Remove.
4663
4664 2004-09-19  Michael Poole <mdpoole@troilus.org>
4665
4666         * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
4667         acconfig.h.
4668
4669         * acconfig.h: Remove since it is now redundant.
4670
4671         * aclocal.m4, config.h.in, configure: Regenerate.
4672
4673 2004-09-19  hikari <hikari@undernet.org>
4674
4675         * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison 
4676         aren't found as they're essential for compilation.  Regenerated files with 
4677         autreconf.
4678                 
4679 2004-09-18  Michael Poole <mdpoole@troilus.org>
4680
4681         * doc/example.conf: Add NETWORK feature example.  Fix typos in
4682         eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
4683
4684         * include.class.h: Make max_links and ref_count unsigned ints.
4685         Make ping_freq and conn_freq unsigned short. (No more negative
4686         numbers in /stats y.)
4687
4688         * ircd/ircd.c: Report configuration file name for "ircd -k".
4689
4690 2004-09-18  hikari <hikari@undernet.org>
4691
4692         * ircd/Makefile.in: Fixed a missing internal build dependency.
4693         
4694 2004-09-16  Michael Poole <mdpoole@troilus.org>
4695
4696         * INSTALL: Fix name of example.conf and mention its installed
4697         location.
4698
4699         * include/supported.h (FEATURESVALUES2): Fix a reference to
4700         channel mode +u that escaped earlier rename attempts.
4701
4702         * ircd/ircd_auth.c (iauth_connect): Assign port number after
4703         zeroing out the destination address.
4704         Add some additional debug statements to help follow operations.
4705
4706         * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
4707
4708 2004-09-11  Bas Steendijk <steendijk@xs4all.nl>
4709
4710         * include/channel.h, include/supported.h, ircd/channel.c,
4711         ircd/s_err.c: Use +U instead of +u for user keys.
4712
4713 2004-09-13  Michael Poole <mdpoole@troilus.org>
4714
4715         * doc/example.conf: Remove sample VIRTUAL_HOST setting.
4716
4717         * doc/readme.features: Remove VIRTUAL_HOST documentation, and
4718         update NODNS documentation to match current behavior.
4719
4720         * include/s_conf.h: Remove now-unused vhost_address field and
4721         set_virtual_host() function.
4722
4723         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
4724         Remove VIRTUAL_HOST.
4725
4726         * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
4727         if we do not have a more specific alternate.
4728
4729         * ircd/ircd_parser.y: Check for sanity in General blocks (from old
4730         conf_add_local()) and assign vhost directly to VirtualHost.
4731
4732         * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
4733         value will be either != 0 or != 0xffff.
4734
4735         * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
4736         local addresses are specified as IPv4 addresses.
4737
4738         * ircd/s_conf.c: Remove unused conf_add_local() and
4739         set_virtual_host().
4740
4741 2004-09-13  Michael Poole <mdpoole@troilus.org>
4742
4743         * ircd/listener.c (add_listener): Consolidate duplicated code, and
4744         make sure listener->server is set before calling inetport() on it.
4745
4746 2004-09-12  Michael Poole <mdpoole@troilus.org>
4747
4748         * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
4749         services (not normal opers) force a change of +A or +u.
4750
4751 2004-09-11  Michael Poole <mdpoole@troilus.org>
4752
4753         * include/s_stats.h: Add sd_name to struct StatDesc.  Stop
4754         publishing the statsinfo and statsmap arrays; replace them with
4755         stats_find().  Change argument list of StatFunc() to work with
4756         names.
4757
4758         * ircd/m_stats.c: Use stats_find() instead of statsmap[].  Use the
4759         full argument instead of just the first character in reports.
4760
4761         * ircd/s_stats.c: Adapt individual stats handler functions to new
4762         argument list.  Add long names to statsinfo[].  Add new functions
4763         stats_cmp(), stats_search(), stats_find().  Sort statsinfo[] in
4764         stats_init().
4765
4766         * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
4767         a single character.
4768
4769         * ircd/s_user.c: Send an error to the user when a message loses
4770         its target in transit.
4771
4772         * include/class.h include/gline.h include/ircd_features.h
4773         include/listener.h include/motd.h include/msgq.h include/res.h
4774         include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
4775         ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
4776         ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
4777         ircd/userload.c: Adjust stats handlers to new argument list.
4778
4779 2004-09-11  Michael Poole <mdpoole@troilus.org>
4780
4781         * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
4782         replace with RPL_TRACEEND.
4783
4784         * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
4785         do_trace().  Implement RPL_TRACEEND, per RFE#830291.
4786
4787 2003-06-20  Alexander Maassen <outsider@key2peace.org>
4788
4789         * ircd/m_topic.c : Don't allow banned users to set a topic in a
4790         channel.
4791
4792 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
4793
4794         * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
4795         comment in header.
4796
4797         * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
4798         header comment.
4799
4800         * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
4801         ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
4802         ircd/m_version.c: Remove "template" moniker from comments.
4803
4804         * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
4805         channel prefix list.
4806
4807 2004-09-11  Michael Poole <mdpoole@troilus.org>
4808
4809         * doc/example.conf: Add examples for FEAT_HIS_* features.
4810
4811 2003-06-08 Matthias Crauwels <ultimate_@wol.be>
4812         [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
4813
4814         * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
4815
4816         * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
4817
4818         * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
4819
4820         * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
4821
4822         * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
4823
4824 2004-09-11  Michael Poole <mdpoole@troilus.org>
4825
4826         * ircd/ircd_relay.c (server_relay_channel_message,
4827         server_relay_channel_notice): Do not allow other servers to send
4828         or relay to local channels.
4829
4830         * ircd/m_wallchops (ms_wallchops): Likewise.
4831
4832         * ircd/m_wallvoices (ms_wallvoices): Likewise.
4833
4834 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
4835
4836         * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
4837
4838         * ircd/channel.c: removing limits shouldn't gobble an argument;
4839         this was a subtle interaction issue with modebuf...fixed by adding
4840         MODE_LIMIT to modebuf_flush_int() and short-circuiting
4841         modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
4842         removal case.  Note that this is not proof against the sequence,
4843         "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
4844         modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
4845         (Bug #916138)
4846
4847 2004-09-11  Michael Poole <mdpoole@troilus.org>
4848
4849         * include/supported.h: Kev pointed out I misinterpreted the
4850         meaning of CHANMODES; fix this.  Also define CHANNELLEN and
4851         STATUSMSG from the ISUPPORT draft.
4852
4853 2004-09-10  Michael Poole <mdpoole@troilus.org>
4854
4855         * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
4856         when oplevels are enabled.
4857
4858 2004-09-10  Michael Poole <mdpoole@troilus.org>
4859
4860         * ircd/channel.c (send_channel_modes): Only send oplevels for
4861         channels that actually use them -- for -A channels, send chanops
4862         as :o even if OPLEVELS is enabled.
4863
4864         * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
4865
4866         * ircd/numnicks.c (base64toip): Fill in the right number of 0
4867         words when we see _ in a base64-encoded IPv6 address.
4868
4869 2004-09-10  Michael Poole <mdpoole@troilus.org>
4870
4871         * ircd/ircd.c: Add -k as a chkconf-like option to exit after
4872         reading the configuration file.
4873
4874         * ircd/chkconf.c: Remove as unused.
4875
4876         * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
4877
4878 2004-09-10  Michael Poole <mdpoole@troilus.org>
4879
4880         * doc/example.conf: Remove examples for unused features (TIMESEC,
4881         CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
4882
4883         * doc/readme.features: Remove documentation for unused features
4884         (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
4885         HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
4886         add documentation for ANNOUNCE_INVITES.
4887
4888         * include/ircd_features.h: Remove unused features (TIMESEC,
4889         CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
4890
4891         * include/ircd_features.c: Likewise.
4892
4893         * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
4894         FEAT_IRCD_RES_TIMEOUT where appropriate.
4895
4896         * ircd/s_debug.c: Do not display setting of unused (and now
4897         non-existent) FEAT_CRYPT_OPER_PASSWORD.
4898
4899 2004-09-10  Michael Poole <mdpoole@troilus.org>
4900
4901         * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
4902         to use the correct address family and IP offset.
4903
4904 2004-09-10  Michael Poole <mdpoole@troilus.org>
4905
4906         * include/s_conf.h (struct ConfItem): Add origin and origin_name
4907         fields.
4908
4909         * ircd/ircd_parser.y: Add new global variable "origin."  Add a new
4910         "connectionvhost" production that accepts vhost = "IP" inside a
4911         Connect block and assigns the IP to origin_name.
4912
4913         * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
4914         as the local address.  Otherwise, fall back to the old logic (if
4915         VIRTUAL_HOST="TRUE", use the virtual host setting).
4916
4917         * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
4918         origin_name, try to parse it as an IP address.
4919
4920 2004-04-17  Isomer <isomer@undernet.org>
4921         * ircd/parse.c: Don't rate limit /gline messages
4922
4923 2004-09-10  Michael Poole <mdpoole@troilus.org>
4924
4925         * ircd/ircd_parser.y: Replace references to yylval.whatever with
4926         references to the appropriate term.  This fixes bugs like
4927         "1 hour 30 minutes" being misrecognized as 30 seconds.
4928
4929 2004-09-10  Michael Poole <mdpoole@troilus.org>
4930
4931         * ircd/ircd_features.c (features): Change default values for
4932         SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
4933         need not specify them in ircd.conf.
4934
4935 2004-09-10  Michael Poole <mdpoole@troilus.org>
4936
4937         * ircd/ircd_parser.y (serverblock): Server blocks should default
4938         to CONF_LEAF status.
4939
4940         * doc/example.conf: Update example to reflect this.
4941
4942 2004-09-10  Michael Poole <mdpoole@troilus.org>
4943
4944         * ircd/parse.c (msg_tree_parse): Reject commands that contain
4945         non-alphabetic characters.
4946
4947 2004-09-09  Michael Poole <mdpoole@troilus.org>
4948
4949         * config.h.in: Remove duplicated and unused macro definitions.
4950
4951 2004-08-24  Michael Poole <mdpoole@troilus.org>
4952
4953         * ircd/client.h: Properly parenthesize "flag" argument to
4954         FLAGSET_INDEX() and FLAGSET_MASK() macros.
4955
4956 2004-08-22  Michael Poole <mdpoole@troilus.org>
4957
4958         * ircd/channel.c (send_channel_modes): If oplevels are disabled,
4959         send 'o' for chanops instead of the member's oplevel.
4960
4961 2004-08-22  Michael Poole <mdpoole@troilus.org>
4962
4963         * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
4964         instead of memcmp().  (Fixes IPv4 servers linking to an IPv6
4965         server.)
4966
4967 2004-08-22  Alex Badea  <decampos@users.sourceforge.net>
4968
4969         * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
4970
4971 2004-08-19  Michael Poole <mdpoole@troilus.org>
4972
4973         * include/res.h: Remove unused function gethost_byname_type().
4974
4975         * ircd/ircd_res.c: Likewise, and clean up some small functions
4976         only used once (remove_dlink(), timeout_resolver()).  Use rand()
4977         for random request IDs instead of the deprecated *rand48().  Make
4978         resolver timeout event fire only when needed instead of once a
4979         second.
4980
4981 2004-08-17  Michael Poole <mdpoole@troilus.org>
4982
4983         IPv6 support, with lots of code and design borrowed from a patch
4984         by Alex Badea.
4985
4986         * config.h.in: Add place to #define IPV6 support.
4987
4988         * configure.in: Check for struct sockaddr_in6, and use that as
4989         the default choice for IPv6 support.
4990
4991         * configure: Regenerate.
4992
4993         * include/IPcheck.h, include/client.h, include/gline.h,
4994         include/ircd_string.h, include/listener.h, include/match.h,
4995         include/res.h, include/s_bsd.h: Convert from struct in_addr (from
4996         <netinet/in.h>) to struct irc_in_addr (from "res.h").
4997
4998         * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
4999         from struct sockaddr_in (from <netinet/in.h>) to struct
5000         irc_sockaddr (from "res.h").  Add new functions os_socket(),
5001         os_accept(), os_sendto_nonb() to help abstract away actual
5002         sockaddr types.
5003
5004         * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
5005         characters valid in IPv6 addresses.
5006
5007         * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
5008         and base64toip() to convert from base64 to struct irc_in_addr.
5009
5010         * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
5011         ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
5012         ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
5013         irc_in_addr instead of unsigned int or struct in_addr.
5014
5015         * ircd/gline.c: Use new more-generic ipmask functions.
5016
5017         * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
5018         fields.
5019
5020         * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
5021         instead of irc_ssaddr and irc_getaddrinfo().
5022
5023         * ircd/ircd_string.c: Implement new functions: IPv6-capable
5024         ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
5025
5026         * ircd/match.c: Delete IPv4-only matchcompIP().  Replace with
5027         IPv6-capable ipmask_parse() and ipmask_check().
5028
5029         * ircd/numnicks.c: Implement new functions: iptobase64() and
5030         base64toip().
5031
5032         * ircd/os_generic: Convert external parameters to be struct
5033         irc_addrinfo.  When using IPv6 support, sockaddr_in6 is native.
5034         Implement new functions os_sendto_nonb(), os_socket() and
5035         os_accept().
5036
5037         * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
5038         ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
5039         ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
5040         irc_sockaddr instead of separate in_addr and port fields and new
5041         OS support functions.
5042
5043         * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
5044         ircd/ircd_getnameinfo.c: Remove, since these functions are no
5045         longer used.
5046
5047         * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
5048         ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
5049         since these are unused and not compatible with IPv6 support.
5050
5051         * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
5052         Regenerate dependencies.
5053
5054 2004-08-17  Michael Poole <mdpoole@troilus.org>
5055
5056         * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
5057         states and be case-insensitive again.
5058
5059 2004-08-15  Michael Poole <mdpoole@troilus.org>
5060
5061         * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
5062         former is from C99 (and the latter is absent on Solaris).
5063
5064         * configure.in: Remove check for inttypes.h (which is a C99 format
5065         string header); replace with check for stdint.h.  Add checks for
5066         sys/param.h and sys/socket.h.  Check for socklen_t being defined
5067         (OS X does not set it).  Run program tests for lex and yacc, and
5068         use them rather than assuming flex and bison.  Remove OSDEP_C and
5069         mention to adns.  Remove check for res_mkquery().
5070
5071         * config.h.in: Update u_intNN_t #undef lines.  Add #undef
5072         socklen_t so configure test can set it.
5073
5074         * configure: Regenerate.
5075
5076         * include/ircd_addrinfo.h: #include headers needed for netdb.h and
5077         to define struct addrinfo and uintNN_t.
5078
5079         * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
5080
5081         * include/res.h: #include "ircd_addrinfo.h" to get proper type
5082         definitions.  #define INADDR_NONE if it is not defined (as on
5083         Solaris).
5084
5085         * ircd/Makefile.in: Replace LEX and YACC definitions.  Remove
5086         OSDEP_C and OSDEP_SRC; always compile os_generic.c.  Remove adns
5087         directory from CPPFLAGS.  Regenerate dependencies.
5088
5089         * ircd/client.c: Return when no propagation set for oper, to
5090         squash warning about use of "defaults" before it is set.
5091
5092         * ircd/engine_epoll.c: #include correct C99 integer header.
5093
5094         * ircd/engine_poll.c: Last argument to getsockopt() should be of
5095         socklen_t, not size_t; fix.
5096
5097         * ircd/engine_select.c: Squash warning about bzero().
5098
5099         * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
5100         with uint32_t.  We need <stdint.h> for that, so include it.
5101
5102         * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
5103         uint32_t.
5104
5105         * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
5106         There is no portable way to do %option, so remove that.  lex on
5107         Solaris needs several of its internal tables to be bigger, so
5108         increase those sizes.
5109
5110         * ircd/ircd_parser.y: Remove the second declarations of two
5111         tokens, since standard yacc warns about changing precedence.
5112
5113         * ircd/os_generic.c: Make this compile on common OSes (Linux,
5114         Solaris, OS X, FreeBSD, OpenBSD).
5115
5116         * ircd/table_gen.c: Make arguments to isprint() all unsigned char
5117         to squash warnings on Solaris that array index is "char."
5118
5119         * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
5120         portable, and replace basename() with an equivalent.
5121
5122         * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
5123
5124 2004-07-27  Michael Poole <mdpoole@troilus.org>
5125
5126         * ircd/m_burst.c: Add new netride_modes() function to check
5127         which modes could be used in a net.ride.  Use this instead
5128         of the old check for just +i or +k.
5129         (Based on patches by beware and pomac.)
5130
5131 2004-07-25  Michael Poole <mdpoole@troilus.org>
5132
5133         * ircd/ircd_parser.y: Remove redundant semicolon; it causes
5134         errors on some versions of yacc.
5135
5136 2004-07-21  Michael Poole <mdpoole@troilus.org>
5137
5138         * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
5139         ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
5140
5141 2004-07-21  Michael Poole <mdpoole@troilus.org>
5142
5143         New DNS resolver code, courtesy of Dianora and the rest of the
5144         Hybrid team.  (Bugs are of course my fault.)
5145
5146         * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
5147         libresolv from the build process.  Update dependencies.
5148
5149         * configure: Regenerate.
5150
5151         * include/client.h: Change connection's DNS reply type.
5152
5153         * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
5154
5155         * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
5156         RPL_STATSALINE and /stats a to list DNS servers.
5157
5158         * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
5159         ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
5160         ircd/ircd_reslib.c: New resolver files.
5161
5162         * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
5163         Update to new resolver callback interface and to only deal with
5164         one IP and one name per DNS reply.
5165
5166         * ircd/parse.c: Remove /DNS command, since new resolver does not
5167         track those statistics.
5168
5169 2004-07-20  Michael Poole <mdpoole@troilus.org>
5170
5171         * doc/readme.features: Change references to O:, Y:, etc lines into
5172         references to the appropriate block types.
5173
5174 2004-07-01  Michael Poole <mdpoole@troilus.org>
5175
5176         * include/fileio.h: Elaborate on "works for any file descriptor."
5177
5178         * include/iauth.h: Remove unused file.
5179
5180 2004-07-01  Michael Poole <mdpoole@troilus.org>
5181
5182         * include/map.h, ircd/map.c: Remove unused code.
5183
5184         * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
5185         map.h and a call to map_update().
5186
5187         * ircd/Makefile.in: Remove map.c and regenerate dependencies.
5188
5189         * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
5190         for the new config parser.
5191
5192         * ircd/match.c: Remove pointless pointer dereference (Reed points
5193         out that this generates a warning with old gcc).
5194
5195         * ircd/s_user.c: Display connection class in CONNEXIT connection
5196         notice as a string rather than an integer.
5197
5198         * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
5199         lines (falsely) identifying ringlog as related to IRC; the files
5200         are general purpose.
5201
5202         * configure.in, include/ircd_snprintf.h: Add checks for
5203         va_copy()-like alternatives and use them if va_copy() is missing.
5204
5205         * configure, config.h.in: Regenerate.
5206
5207 2004-02-01  beware <steendijk@xs4all.nl>
5208
5209         * ircd/channel.c: Check bans that look like IP bans against user's
5210         hostname just in case they have a host like 1234.domain.tld.
5211
5212 2003-12-18  Timothy Grant Vogelsang <net@astrolink.org>
5213
5214         * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
5215
5216 2004-04-02  Gavin Grieve <hektik@dimebox.net>
5217
5218         * ircd/ircd_parser.y: Fix rehash warnings for servername and
5219         numeric so they only warn if changed in the config file.
5220
5221 2004-06-30  Michael Poole <mdpoole@troilus.org>
5222
5223         * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
5224         files.
5225
5226         * doc/example.conf: Illustrate IAUTH configuration.
5227
5228         * include/client.h: Add fields to record IAUTH status.
5229
5230         * ircd/Makefile.in: Add ircd_auth.c to Makefile.
5231
5232         * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
5233
5234         * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
5235         so that an obsolete connection can be abandoned.
5236
5237         * ircd/s_misc.c: Report client exits via IAUTH.
5238
5239         * ircd/s_user.c: If IAUTH is active and a connecting user has not
5240         been checked against it, interrogate the IAUTH server.
5241
5242 2004-06-25  Michael Poole <mdpoole@troilus.org>
5243
5244         * configure.in: Check for crypt.h as well.
5245
5246         * configure: Regenerate.
5247
5248         * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
5249         affect the first includes of system headers.  Include crypt.h if
5250         it is available.
5251
5252         * ircd/umkpasswd.c: Quash a gcc warning.
5253         
5254 2004-06-23  Michael Poole <mdpoole@troilus.org>
5255
5256         * doc/Authors: Add contributors to ircu2.10.11 and myself.
5257
5258         * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
5259
5260         * configure.in: Add missing check for inttypes.h; remove obsolete
5261         display of Head-in-sand, add display of epoll() engine.
5262
5263         * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
5264         to use SourceForge's CVS server, from the u2.10.11 branch.
5265
5266 2003-11-09 beware <steendijk@xs4all.nl>
5267
5268         * ircd/s_user.c: move assigning a numeric to a local client from
5269         when nick is set, to when connection becomes client, to not waste
5270         numerics.
5271
5272 2004-06-08  Kevin L Mitchell  <klmitch@mit.edu>
5273
5274         * ircd/parse.c: don't let rank-and-file users escape HIS
5275         limitations with /jupe...
5276
5277 2004-06-18  Alex Badea  <decampos@users.sourceforge.net>
5278
5279         * ircd/gline.c (gline_lookup): only return a gline if it's
5280         active
5281
5282         * ircd/s_conf.c (find_kill): don't check for active gline,
5283         since gline_lookup does now
5284
5285 2002-11-11  hikari <shadow@undernet.org>
5286         * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and 
5287         modularise :P
5288
5289         * ircd/ircd_xopen.c: removed, superseded by new crypto system.
5290
5291         * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
5292         wrote ircd_crypt_mech_register() function, various other bits 
5293         designed to create a near-pluggable crypto system for ircu.  currently
5294         this code also loads the various mechanisms i've written code for.
5295
5296         * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from 
5297         elsewhere, manipulated to suit ircu, returns a salted MD5 password.
5298
5299         * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
5300         generate a crypted password using the systems native crypt() function.
5301
5302         * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
5303         only be used for testing purposes.
5304
5305         * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
5306         elsewhere, ircuified.
5307
5308         * ircd/umkpasswd.c: mkpasswd program for ircu.
5309
5310         * include/ircd_xopen.h: removed, superseded by new crypto system.
5311
5312         * include/ircd_crypt.h: external definitions for the new ircd_crypt()
5313         function and definition of the ircd_crypt_mech structure for containing
5314         crypto mechanism data.
5315
5316         * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
5317         mechanism.
5318
5319         * include/ircd_crypt_native.h: sundary definitions for the native 
5320         crypt() mechanism.
5321
5322         * include/ircd_crypt_plain.h: sundary definitions for the plain text
5323         mechanism.
5324
5325         * include/umkpasswd.h: fluff for umkpasswd.
5326
5327 2003-03-11  Landon Fuller (landonf) <landonf@sf.net>
5328
5329         * configure.in: allow ircu to build on OS X.
5330
5331 2004-05-24  Michael Poole <mdpoole@troilus.org>
5332
5333         * ircd/m_invite.c (m_invite): Include channel name in invitation
5334         announcements.
5335         (ms_invite): Likewise, and also fix a use-before-assignment bug in
5336         them.
5337
5338 2004-05-18  Michael Poole <mdpoole@troilus.org>
5339
5340         Announce invitations to other channel operators.
5341
5342         * include/ircd_features.h, ircd/ircd_features.c
5343         (ANNOUNCE_INVITES): Add new boolean feature, default off.
5344
5345         * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
5346         reply.
5347
5348         * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
5349         Add 'skip' parameter that is needed elsewhere.
5350         (sendcmdto_channel_servers_butone): New function.
5351
5352         * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
5353         ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
5354
5355         * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
5356         the INVITE message to all interested servers, and send a numeric
5357         to all local chanops.
5358
5359 2004-05-18  Michael Poole <mdpoole@troilus.org>
5360
5361         * ircd/res_adns.c (res_ourserver): Remove unused function.
5362         (validate_name): Likewise.
5363
5364 2004-05-17  Michael Poole <mdpoole@troilus.org>
5365
5366         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
5367         Rip out feature settings related to oper privileges.
5368
5369         * include/client.h: Comment a few unexplained privileges.
5370
5371         * ircd/ircd_lexer.l: Rename privilege keywords to match their
5372         names in code and /PRIVS output.  Add support for two "new"
5373         privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
5374
5375         * include/class.h, ircd/client.c, ircd/ircd_parser.y,
5376         ircd/m_oper.c: Replace the removed feature settings with
5377         per-connection class operator privileges.
5378
5379         * doc/example.conf: Document the change.
5380
5381         * ircd/ircd_parser.y (portblock): Fix slight memory leak.
5382
5383 2004-05-16  Michael Poole <mdpoole@troilus.org>
5384
5385         * doc/example.conf: Make this show the new NICKLEN default.
5386
5387 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5388
5389         * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
5390         to 12
5391
5392 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5393
5394         * ircd/s_user.c: process account creation timestamp if present in
5395         user mode portion of a N protocol message; add account creation
5396         timestamp to outgoing N protocol messages if that timestamp is
5397         non-zero
5398
5399         * ircd/m_account.c: process account creation timestamp if present
5400         in AC protocol message
5401
5402         * include/struct.h: add account creation timestamp
5403
5404 2004-05-16  Michael Poole <mdpoole@troilus.org>
5405
5406         * doc/example.conf: Document operator privilege settings.
5407
5408 2004-05-16  Michael Poole <mdpoole@troilus.org>
5409
5410         Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
5411
5412         * ircd/ircd_parser.y (invert): New variable.
5413         (operlocal): Remove production.
5414         (operpriv): Use "invert" variable.
5415         (privtype): Add LOCAL alternative production.
5416
5417         * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
5418         with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
5419
5420         * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
5421         Likewise.
5422
5423         * ircd/s_stats.c (report_array, statsinfo): Likewise.
5424
5425         * ircd/s_user.c (set_user_mode): Likewise.
5426
5427 2004-05-15  Michael Poole <mdpoole@troilus.org>
5428
5429         * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
5430         patches obsoleted by F: lines.
5431
5432         * patches/diffs/topicburst.diff: Remove patch that was integrated
5433         into the main code.
5434
5435 2004-05-15  Isomer <isomer@undernet.org>
5436
5437         [Original ChangeLog date: 2003-11-05 -MDP]
5438
5439         * ircd/m_whois.c: On remote whois, show +s local channels with a *
5440         prefix to opers.
5441
5442 2004-05-15  Michael Poole <mdpoole@troilus.org>
5443
5444         * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
5445         of gline-related fixes from 2.10.11.  Things that work are due to
5446         Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
5447         to figure out who did what.  Any mistakes are mine.
5448
5449 2004-05-15  Isomer <isomer@undernet.org>
5450
5451         [Original ChangeLog date: 2003-11-05 -MDP]
5452
5453         * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
5454         messages (so you can match EXIT's to CONN's)
5455
5456 2004-05-15  Reed Loden <reed@reedloden.com>
5457
5458         [Original ChangeLog date: 2003-05-01 -MDP]
5459
5460         * ircd/s_err.c: Added network to text and edited 001 a bit.
5461
5462         * ircd/s_user.c: Send network with 001.
5463
5464 2004-05-15  Michael Poole <mdpoole@troilus.org>
5465
5466         * ircd/s_user.c (add_target): Move free target invite check...
5467
5468         * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
5469         behavior.
5470
5471 2004-05-15  Isomer <isomer@undernet.org>
5472
5473         [Original ChangeLog date: 2003-11-23 -MDP]
5474
5475         * ircd/s_user.c: Don't credit users with an extra attempt if they
5476         are klined/glined, throttle them!
5477
5478 2004-05-15  Jeekay <jeekay@netgamers.org>
5479
5480         [Original ChangeLog date: 2003-04-24 -MDP]
5481
5482         * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
5483
5484 2004-05-15  splidge <splidge@quakenet.org>
5485
5486         [Original ChangeLog date: 2003-09-03 -MDP]
5487
5488         * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
5489         channels where the user is a zombie.
5490
5491 2004-05-15  beware <steendijk@xs4all.nl>
5492
5493         [Original ChangeLog date: 2003-10-25 -MDP]
5494         
5495         * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
5496         cpu hog bug
5497
5498 2004-05-15  Michael Poole <mdpoole@troilus.org>
5499
5500         * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
5501         2.10.11 does.  Show ident and IP for clients being killed by new
5502         G-lines and K-lines.
5503
5504 2004-05-15  hikari <shadow@undernet.org>
5505
5506         [Original ChangeLog date: 2003-06-27 -MDP]
5507         
5508         * ircd/ircd.c: After thought, update the next check time based on
5509         when an unregistered client should expire.
5510
5511 2004-05-15   hikari <shadow@undernet.org>
5512
5513         [Original ChangeLog date: 2003-06-22 -MDP]
5514
5515         * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
5516         clients not being able to connect anymore.
5517
5518 2004-05-15  Michael Poole <mdpoole@troilus.org>
5519
5520         * ircd/channel.c (can_join): Revert to using IsInvited() rather
5521         than walking the list directly.
5522         (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
5523         use feature_bool(FEAT_HIS_SNOTICES) instead.
5524
5525 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5526
5527         [Original ChangeLog date: 2004-01-31 -MDP]
5528
5529         * ircd/channel.c (mode_parse_key): don't allow , in keys!
5530
5531 2003-04-12  David Mansell (splidge) <splidge@sf.net>
5532
5533         [Original ChangeLog date: 2003-04-14 -MDP]
5534
5535         * ircd/channel.c: When keys and limits conflict on burst, the key
5536         which is first alphabetically or the limit which is lower will be 
5537         used by both servers. This matches pre-2.10.11 behaviour.  
5538         Closes: (#713930)
5539
5540 2004-05-15  David Mansell <splidge@quakenet.org>
5541
5542         [Original ChangeLog date: 2002-12-28 -MDP]
5543
5544         * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
5545         set, don't allow -l with negative parameter (or unsigned >2^31).
5546  
5547 2004-05-15  David Mansell <splidge@quakenet.org>
5548
5549         [Original ChangeLog date: 2002-12-31 -MDP]
5550
5551         * ircd/m_burst.c (ms_burst): when kicking net riders, clear
5552         invites too.
5553
5554 2004-05-15  Isomer <isomer@undernet.org>
5555
5556         [Original ChangeLog date: 2003-11-04 -MDP]
5557
5558         * ircd/s_serv.c: Burst glines/jupes early
5559
5560 2004-05-15  volta <volta2@gmx.de>
5561
5562         [Original ChangeLog date: 2003-04-26 -MDP]
5563
5564          * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
5565          allows users to see their own ip & hostname. (Should solve
5566          all problems with dcc)
5567
5568 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5569
5570         [Original ChangeLog date: 2003-06-13 -MDP]
5571
5572         * ircd/m_settime.c: it's supposed to be %ld, not %l
5573
5574 2004-05-15  Isomer <isomer@undernet.org>
5575
5576         [Original ChangeLog date: 2004-03-20 -MDP]
5577
5578         * ircd/m_invite.c: Disallow invites to non existant channels
5579
5580 2004-05-15  David Mansell <splidge@quakenet.org>
5581
5582         [Original ChangeLog date: 2003-04-26 -MDP]
5583
5584         * ircd/m_invite.c: let +k users invite into channels they aren't on.
5585
5586 2004-05-15  hikari <shadow@undernet.org>
5587
5588         [Original ChangeLog date: 2003-07-13 -MDP]
5589         
5590         * ircd/IPcheck.c: Fixed (another) overflow problem in
5591         ip_registry_check_local()
5592
5593         [Original ChangeLog date: 2003-06-29 -MDP]
5594
5595         * ircd/IPcheck.c: Fixed overflow problem in
5596         ip_registry_connect_fail()
5597
5598 2004-05-15 Isomer <isomer@undernet.org>
5599
5600         [Original ChangeLog date: 2003-05-02 -MDP]
5601         
5602         * ircd/IPcheck.c: Added assert()'s to check for underflow
5603
5604 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5605
5606         [Original ChangeLog date: 2003-11-22 -MDP]
5607
5608         * tools/wrapper.c: commit uid on chroot fix from ubra
5609
5610         * ircd/version.c.SH: fix generation generation
5611
5612 2004-05-15  Isomer <isomer@undernet.org>
5613
5614         [Original ChangeLog date: 2003-11-23 -MDP]
5615         
5616         * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
5617         to off.  if an admin is smart enough to understand these features
5618         they can enable them manually.
5619
5620 2004-05-15  splidge  <splidge@quakenet.org>
5621
5622         [Original ChangeLog date: 2003-03-26 -MDP]
5623
5624         * ircd/include/ircd_features.h, include/ircd_osdep.h,
5625           ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, 
5626           ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
5627           ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be 
5628           altered via F: lines
5629
5630 2004-05-15  Isomer <isomer@undernet.org>
5631
5632         [Original ChangeLog date: 2003-11-18 -MDP]
5633
5634         * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
5635         the preregistration subsystem allowing customisation of timers,
5636         make the dns resolver stats oper only, and make it much more clear
5637         what all the numbers are.
5638
5639 2004-05-15  Spike <spike@undernet.org>
5640
5641         [Original ChangeLog date: 2003-11-23 -MDP]
5642
5643         * ircd/IPcheck.c: Make IPcheck constants configurable
5644
5645 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5646
5647         [Original ChangeLog date: 2003-11-22 -MDP]
5648
5649         * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
5650         the maximum allowed length (NICKLEN) or the allowed nickname
5651         length specified as the NICKLEN feature
5652
5653         * ircd/ircd_features.c: declare NICKLEN and set its default value
5654         to 9
5655
5656         * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
5657         rearranging...
5658
5659         * include/ircd_features.h: add NICKLEN feature
5660
5661         * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
5662
5663         * doc/readme.features: document new NICKLEN feature
5664
5665         * doc/example.conf: list new NICKLEN F-line
5666
5667 2004-05-14  Matthias Crauwels <ultimate_@wol.be>
5668
5669         [Original ChangeLog date: 2003-06-08 -MDP]
5670         
5671         * ircd/gline.c: fixed the counting bug in gline_memory_count
5672  
5673         * ircd/jupe.c: fixed the counting bug in jupe_memory_count
5674
5675 2004-05-14  Michael Poole <mdpoole@troilus.org>
5676
5677         * ircd/m_mode.c (ms_mode): Do not always try to call
5678         set_user_mode() when parv[1] is a channel name.
5679
5680 2004-05-10  Michael Poole <mdpoole@troilus.org>
5681
5682         Implement a per-connection-class default usermode option.
5683
5684         * doc/example.conf: Illustrate how to use the option.
5685
5686         * include/class.h (struct ConnectionClass): New "default_umode"
5687         field.
5688         (ConfUmode): New macro.
5689
5690         * include/client.h (client_get_default_umode): New function.
5691
5692         * ircd/client.c (client_get_default_umode): Implement it.
5693
5694         * ircd/ircd_lexer.l (usermode): New token.
5695
5696         * ircd/ircd_parser.y (classblock, etc): New syntax.
5697
5698         * ircd/s_user.c (register_user): Set default user modes for user.
5699         This sends the new mode to the user, so the explicit send later
5700         is no longer necessary.
5701
5702 2004-05-10  Michael Poole <mdpoole@troilus.org>
5703
5704         Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
5705         patch set.
5706
5707         * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
5708
5709         * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
5710         also send a TOPIC to the peer.
5711
5712         * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
5713         feature, defaulting to FALSE.
5714
5715         * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
5716         and allow F:HIS_BANWHO to hide the originator of the topic.
5717         (ms_topic): Parse optional timestamp arguments to TOPIC, and use
5718         them to decide whether to ignore the topic.
5719
5720 2004-05-10  Michael Poole <mdpoole@troilus.org>
5721
5722         Forward port of delayed-join.patch from Quakenet's "Asuka" patch
5723         set (which was a port of code I wrote for the other ircu).
5724
5725         * include/channel.h (CHFL_DELAYED): New membership flag.
5726         (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
5727         (infochanmodes): Add +D to list of supported channel modes.
5728         (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
5729         (member_can_send_to_channel, client_can_send_to_channel): Add
5730         "reveal" parameter to indicate whether a request should cause
5731         a join-delayed user to become visible.
5732         (RevealDelayedJoin, CheckDelayedJoins): New functions.
5733
5734         * include/numeric.h (RPL_DELNAMREPLY): New numeric.
5735         
5736         * include/s_user.h (NAMES_DEL): New flag for do_names().
5737
5738         * include/supported.h (FEATURESVALUES2): Add +D to list of
5739         supported channel modes.
5740
5741         * ircd/channel.c (remove_member_from_channel,
5742         member_can_send_to_channel, client_can_send_to_channel,
5743         joinbuf_join): Handle join-delayed users.
5744         (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
5745         modebuf_extract, mode_process_clients, mode_parse_mode,
5746         mode_parse): Handle delayed-join channels.
5747         (RevealDelayedJoin, CheckDelayedJoins): New functions.
5748
5749         * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
5750         server_relay_channel_message, server_relay_channel_notice): Add
5751         argument for "reveal" parameter to client_can_send_to_channel().
5752
5753         * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
5754
5755         * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
5756
5757         * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
5758         channel with JOIN 0.
5759
5760         * ircd/m_kick.c (m_kick): For join-delayed members, only send the
5761         KICK to the kicker and kickee.  Then check whether +d can be
5762         removed.
5763
5764         * ircd/m_names.c (do_names): Show join-delayed users if and only
5765         if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
5766         RPL_DELNAMREPLY instead of RPL_NAMREPLY.
5767         (m_names): If NAMES -D, pass NAMES_DEL to do_names().
5768
5769         * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
5770         member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
5771         the user is join-delayed.
5772
5773         * ircd/m_quit.c (m_quit): Handle join-delayed users and new
5774         argument for member_can_send_to_channel().
5775
5776         * ircd/m_topic.c (do_settopic): If a join-delayed channel member
5777         changes the topic, reveal the member.
5778
5779         * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
5780         "reveal" parameter to client_can_send_to_channel().
5781
5782         * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
5783
5784         * ircd/m_who.c (m_who): Skip join-delayed members where we skip
5785         zombies.
5786
5787         * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
5788         users.  Use slightly more efficient macros rather than function
5789         calls to test for ops and voice.
5790
5791         * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
5792
5793         * ircd/s_user.c (hide_hostmask): For users with no modes in a
5794         join-delayed channel, do not send JOIN to other members after the
5795         QUIT :Registered.
5796
5797         * ircd/send.c (sendcmdto_common_channels_butone): Skip
5798         join-delayed users where we skip zombies.
5799         
5800 2004-05-10  Michael Poole <mdpoole@troilus.org>
5801
5802         * ircd/ircd_events.c: Actually reference and try to use the epoll
5803         event engine.  Omitted from yesterday's commit.
5804
5805 2004-05-09  Michael Poole <mdpoole@troilus.org>
5806
5807         Forward port of Paul "Zoot" Chang's pseudo-command.patch and
5808         pseudo-support.patch.
5809
5810         * doc/example.conf: Illustrate how to use the feature.
5811
5812         * include/handlers.h (m_pseudo): Declare new handler function.
5813
5814         * include/ircd_features.h (HIS_STATS_R): Add a feature to control
5815         user visibility of the pseudo-commands.
5816
5817         * include/msg.h: Add flag and field for the extra information used
5818         to select a pseudo-command's target.
5819
5820         * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
5821         definitions.
5822
5823         * include/parse.h (register_mapping, unregister_mapping): Declare.
5824
5825         * include/s_conf.h (struct nick_host, struct s_map,
5826         GlobalServiceMapList): Define.
5827
5828         * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
5829         files to "make depend" dependency list.  Update dependencies.
5830
5831         * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
5832         default value.
5833
5834         * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
5835
5836         * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
5837
5838         * ircd/parse.c (msgtab): Add initializer for field "extra" to all
5839         commands.
5840         (msg_tree_insert, msg_tree_remove, register_mapping,
5841         unregister_mapping): New functions.
5842         (parse_client): Implement MFLG_EXTRA extra argument passing.
5843
5844         * ircd/s_conf.c (GlobalServiceMapList): New variable.
5845
5846         * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
5847         strings for new numeric responses.
5848
5849         * ircd/s_stats.c (stats_mapping): New function.
5850         (statsinfo): Add entry for /stats R and make old /stats r entry
5851         case-sensitive.
5852         
5853 2004-05-09  Michael Poole <mdpoole@troilus.org>
5854
5855         * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
5856         yyerror() so that configuration errors all go to the same place.
5857
5858         * ircd/s_conf.c: New variables conf_error and conf_already_read.
5859         conf_error is cleared by read_configuration_file() and set by
5860         yyerror(); conf_already_read is set by read_configuration_file()
5861         and never cleared.  Make yyerror() display error to stderr before
5862         conf_already_read is set.  Make configuration errors a fatal
5863         condition in init_conf().
5864
5865 2004-05-09  Michael Poole <mdpoole@troilus.org>
5866
5867         * ircd/Makefile.in: Pass the source directory as an argument to
5868         version.c.SH so it knows where to find the source files for an
5869         out-of-srcdir build.
5870
5871         * ircd/version.c.SH: Use that information.
5872
5873 2004-05-09  Michael Poole <mdpoole@troilus.org>
5874
5875         * Makefile.in: Ensure ${prefix}/include exists, since the adns
5876         install puts files in that directory.  (The adns Makefile does
5877         not use configure's ${includedir}.)
5878
5879 2004-05-09  Michael Poole <mdpoole@troilus.org>
5880
5881         * doc/readme.features: The logic for F:AUTOHIDE was removed, but
5882         not its documentation.  Fix that omission.
5883
5884         * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
5885         definitions for FEATURE_AUTOHIDE.
5886
5887 2004-05-09  Michael Poole <mdpoole@troilus.org>
5888
5889         * doc/readme.who: Document the support for account matching and
5890         display in the WHO command.
5891
5892 2004-05-09  Michael Poole <mdpoole@troilus.org>
5893
5894         * ircd/ircd.c (main): Move check_pid() call until after we read
5895         the configuration file so that F:PPATH works correctly.
5896
5897 2004-05-09  Michael Poole <mdpoole@troilus.org>
5898
5899         * ircd/match.c (match): Use ToLower() instead of tolower() for
5900         character comparisons.
5901
5902 2004-05-09  Michael Poole <mdpoole@troilus.org>
5903
5904         * ircd/s_user.c (register_user): Initialize "flag" (user's old
5905         modes) passed to send_umode() so that the real set of modes are
5906         sent to the user.
5907         
5908 2004-05-09  Michael Poole <mdpoole@troilus.org>
5909
5910         * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
5911         server, not to a hub between us and the new server.
5912
5913         * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
5914         on target server rather than FLAG_CHSERV (so that directed
5915         messages work at all).
5916
5917 2004-05-09  Michael Poole <mdpoole@troilus.org>
5918
5919         * configure.in: Add checks for epoll_* system call family.
5920
5921         * configure: Regenerate.
5922
5923         * ircd/engine_epoll.c: New file; forward ported from 2.10.11
5924         branch.
5925
5926 2004-05-09  Michael Poole <mdpoole@troilus.org>
5927
5928         * include/ircd_alloc.h: Add definitions for MyRealloc, since they
5929         are needed by kqueue and epoll event engines; kill #if 0'd block.
5930
5931         * include/memdebug.h: Declare dbg_realloc() helper function.
5932
5933         * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
5934
5935         * ircd/memdebug.c: Implement dbg_realloc() helper function.
5936
5937 2004-05-09  Michael Poole <mdpoole@troilus.org>
5938
5939         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
5940         changes on a moderated channel with neither ops nor voice.
5941
5942         * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
5943
5944 2004-01-20  Perry Lorier <isomer@undernet.org>
5945
5946         * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
5947
5948 2004-01-21 Gavin Grieve <hektik@dimebox.net>
5949
5950         * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
5951           code to resolve the multiple part messages bug written by Entrope.
5952
5953 2003-08-12 Timothy Vogelsang <net@astrolink.org>
5954
5955         * ircd/match.c: (match) rewrote function based on existing
5956           code from the hybrid ircd -- death to goto
5957
5958 2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
5959
5960         * ircd/s_user.c: invalidate ban cache for user on host hiding/account
5961
5962 2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
5963
5964         * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
5965         ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
5966         B is an oper", appeared in a lot of places. made it a define SeeOper.
5967
5968 2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
5969         * ircd/s_user.c: umode_str (user modes in N token) internal flags var
5970         was not initialized to the user's flags, returned a string with
5971         random modes set.
5972
5973 2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
5974
5975         * ircd/m_names.c: length counter being incremented one too many
5976         for each nick, resulting names reply messages are about 50 chars
5977         shorter than possible. fixed.
5978
5979 2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
5980
5981         * ircd/channel.c: don't ever send mode changes for local channels to
5982         servers.
5983
5984 2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
5985
5986         * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
5987         moved the supported channel/user mode strings of the 004 reply from
5988         s_err.c to the header files where the channels/user modes are
5989         defined, and show or hide +Au based on OPLEVELS setting.
5990
5991 2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
5992
5993         * ircd/m_burst.c: Clear topic set by netrider on burst.
5994
5995 2003-08-05 Diane Bruce  <db@db.net>
5996
5997         * ircd/parse.c: Fixed the typo the fix of the typo created
5998
5999 2003-08-01 Diane Bruce  <db@db.net>
6000
6001         * ircd/parse.c: Fixed typo
6002
6003 2003-06-22  Diane Bruce  <db@db.net>
6004
6005         * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
6006
6007 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
6008
6009         * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
6010         ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
6011         Make ability to create local channels a feature which can be disabled.
6012
6013 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
6014
6015         * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
6016         ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
6017         makes it possible to disable the +Au/oplevels functions.
6018
6019 2003-06-17  Alex Badea  <vampire@p16.pub.ro>
6020
6021         * ircd/res_adns.c: included sys/types.h, for non-Linux
6022         headers
6023
6024 2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
6025
6026         * libs/dbprim: database primitives library, including
6027         flexible linked lists, auto-resizing hash tables, and sparse
6028         matrices.  Has a test suite for everything but portions of
6029         the sparse matrix routines (I'm lazy; someone help me write
6030         them!).  Documentation generated by doxygen--feel free to
6031         critique, suggest phrasing improvements, etc.
6032
6033 2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
6034         * libs: put third-party libraries in this subdirectory.
6035         Started by copying adns into it--will fix the rest and remove
6036         the top-level copy later.
6037
6038 2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
6039         * ircd/m_settime.c: Fixed a minor format string issue.
6040         
6041 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
6042         * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
6043         ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
6044         bugs in transmit.c and m_opmode.c.
6045
6046 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
6047         * include/class.h, include/ircd_string.h, ircd/class.c,
6048         ircd/gline.c, ircd_string.c: Fix undefined order
6049         of evaluation bug in gline.c, add general purpose hasher for
6050         conf entries. 
6051
6052 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
6053         * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
6054         ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
6055         ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
6056         ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
6057         ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
6058         ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
6059         with g++ again, type safety, const correctness fixes,
6060         remove C++ keywords again :/
6061
6062 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
6063         * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
6064         table data was in a different order than the feature data
6065         structure, which resulted in a wild index being used in
6066         feature_bool. The feature_bool function didn't check it's
6067         index before indexing the features array resulting in
6068         a core dump on /oper.
6069
6070 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
6071         * include/client.h, include/res.h, include/s_bsd.h,
6072         ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
6073         ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
6074         Remove resolver cache wart, change hostent representation, cleanup
6075         resolver clients.
6076
6077 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
6078         * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
6079         HEAD_IN_SAND macros to get server to build, rebuild dependencies.
6080
6081 2003-01-08  Fredrik Soderblom <froo@quakenet.org>
6082         * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
6083         RPL_HOSTHIDDEN and the use of it.
6084
6085 2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
6086
6087         * BUGS: removed from distribution
6088
6089         * ChangeLog.07: moved into doc/history
6090
6091         * ChangeLog.10: moved into doc/history
6092
6093         * INSTALL: pulled up from u2.10.11.04
6094
6095         * README: pulled up from u2.10.11.04
6096
6097         * README.FreeBSD: pulled up from u2.10.11.04
6098
6099         * README.Solaris: pulled up from u2.10.11.04
6100
6101         * RELEASE.NOTES: add sysctl note from u2.10.11.04
6102
6103         * TODO: removed from distribution
6104
6105         * configure.in: add extra check for res_mkquery; remove
6106         --disable-headinsand since it no longer has any effect; pull up
6107         "Enable" vs. "Disable" changes from u2.10.11.04
6108
6109         * doc/readme.asll: pulled up from u2.10.11.04
6110
6111         * doc/readme.features: pull up missing documentation, including a
6112         couple of corrections
6113
6114         * doc/readme.log: correct text to read FACILITY instead of SYSLOG
6115         in the documentation for configuring syslog facility
6116
6117         * include/channel.h: declare IsInvited()
6118
6119         * include/handlers.h: do some minor reorderings
6120
6121         * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
6122         #define's
6123
6124         * include/ircd_policy.h: removed from the distribution
6125
6126         * include/jupe.h: declare jupe_memory_count()
6127
6128         * include/msgq.h: remove MsgCounts structure
6129
6130         * include/numeric.h: add a blank line after RPL_STATSQLINE; add
6131         RPL_HOSTHIDDEN
6132
6133         * include/s_stats.h: include ircd_features.h for definition of the
6134         enum; remove extraneous declarations
6135
6136         * ircd/Makefile.in: add LDFLAGS to table_gen
6137
6138         * ircd/engine_poll.c: remove commented-out assertion
6139
6140         * ircd/ircd.c: include s_stats.h and call stats_init()
6141
6142         * ircd/ircd_features.c: feature names have to be case-sensitive
6143         because of some of the HIS features
6144
6145         * ircd/ircd_relay.c: reorder includes
6146
6147         * ircd/m_account.c: include string.h for strlen()
6148
6149         * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
6150         sure to refer to chname, not parv[1]
6151
6152         * ircd/m_create.c: remove the broken code that squits servers that
6153         are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
6154         desyncs
6155
6156         * ircd/m_gline.c: if it's a server, force the gline; don't
6157         gline_find() before determining if the oper had the privilege
6158
6159         * ircd/m_kick.c: kicks by servers should appear to be from the
6160         local server thanks to HIS
6161
6162         * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
6163
6164         * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
6165
6166         * ircd/m_nick.c: added an assertion and some explanatory comments
6167         pulled up from u2.10.11.04
6168
6169         * ircd/m_opmode.c: no longer requiring oper to be on the channel;
6170         search for quarantines before allowing ops
6171
6172         * ircd/m_privmsg.c: one character typo that probably means nothing
6173
6174         * ircd/m_settime.c: add back comments I left in the code
6175
6176         * ircd/m_squit.c: remove protocol_violation() notices
6177
6178         * ircd/m_userhost.c: return realhost if user is an oper
6179
6180         * ircd/m_wallvoices.c: only m_wallvoices() should add a +
6181
6182         * ircd/m_who.c: add handling for the 'a' field
6183
6184         * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
6185         FEAT_HIS_SERVERINFO
6186
6187         * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
6188         ancient bug fixes from the u2.10.11 branch
6189
6190         * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
6191         call motd_memory_count(), gline_memory_count(), and
6192         jupe_memory_count() when reporting memory usage; add back a
6193         comment regarding "DBuf caveats"
6194
6195         * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
6196         change to ERR_NOPRIVILEGES wording
6197
6198         * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
6199
6200         * ircd/s_stats.c: count from 0 and not 1 when initializing the
6201         stats
6202
6203         * ircd/s_user.c: comment out assertion; remove extraneous
6204         definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
6205         hidden" reply; don't detach oper confs unless sptr is not an oper
6206
6207         * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
6208         change channel name character range to be from '\041' (!) to
6209         UCHAR_MAX
6210
6211         * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
6212
6213         * tools/linesync/linesync.conf: pull up from u2.10.11.04
6214
6215         * tools/linesync/linesync.sh: pull up from u2.10.11.04
6216
6217 2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
6218         * almost everything: Forward ported numerous changes from .11 to .12
6219         
6220 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
6221         * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
6222         when they become a server.
6223         * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
6224         packet is sent.
6225         * ircd/class.c(make_class): Fixed an assert to be more useful.
6226         
6227 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
6228         * ircd/packet.c
6229         * ircd/packet.h: (connect_dopacket): Made a dopacket function for
6230         connecting links which sends the messages through the correct message
6231         handler.
6232         * ircd/s_bsd.c(read_packet): Put packets through the correct handler
6233         for connecting links. Properly handle unknown links becoming
6234         connecting or servers.
6235
6236 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6237         * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
6238         with, this is used quite a lot.
6239         * ircd/class.c (make_class): Initialise the ref_count to 1 so that
6240         we don't leak.
6241         * ircd/class.c (add_class): When updating a class, free the old name
6242         first to prevent leakage.
6243         * ircd/class.c (class_delete_marked): Decrement the ref_count for the
6244         class after it is removed from the linked list.
6245         * ircd/ircd_parser.y: Changed a free to MyFree().
6246         * ircd/ircd_parser.y: Removed a few debugging messages.
6247
6248 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6249         * s_bsd.c (read_packet): Our daily addition to the list of entities to
6250         treat as servers - Connecting servers.
6251         
6252 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6253         * doc/debug_memleak_gc.patch,
6254         * include/ircd_ircd_alloc.h,
6255         * include/memdebug.h,
6256         * configure.in,
6257         * ircd/Makefile.in,
6258         * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
6259         and notify the operators.
6260         
6261 2002-06-29  Andrew Miller <a1kmm@mware.virtualave.net>
6262
6263         * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
6264         the dbufs.
6265         
6266 2002-06-18  Andrew Miller <a1kmm@mware.virtualave.net>
6267
6268         * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
6269         the server.
6270         
6271 2002-06-18  Alex Badea  <vampire@p16.pub.ro>
6272
6273         * ircd/m_burst.c (ms_burst): kick local members if the channel
6274         has a larger local TS and it's +i or +k remotely (anti net.ride)
6275
6276         * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
6277
6278         * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
6279
6280         * include/s_conf.h: externalized lookup_confhost
6281
6282         * adns/Makefile.in: compilation-outside-source-tree fix
6283
6284 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
6285
6286         * adns/*: added a slightly hacked copy of adns
6287
6288         * configure.in: added a --disable-adns switch if you want
6289         to use the old libresolv res.c
6290
6291         * configure: ran autoconf
6292
6293         * ircd/res_libresolv.c: renamed from res.c
6294
6295         * ircd/res_adns.c: added adns resolver
6296
6297 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
6298
6299         * ircd/ircd_parser.y: fixed 'Connect' block processing so now
6300         you can actually connect to other servers
6301
6302 2002-06-04  Alex Badea  <vampire@p16.pub.ro>
6303
6304         * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
6305         it displays all servers, not just local connects
6306
6307 2002-05-30  Jean-Edouard Babin  <Jeb@jeb.com.fr>
6308
6309         * ircd/m_server.c (mr_server): fixed core bug on insufficient
6310         arguments
6311
6312 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
6313         
6314         * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
6315
6316 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
6317  
6318         * ircd/m_join.c (m_join,HasControlChars): check if a channel
6319         name has any control chars (<=32) in it before allowing a
6320         local user to join.
6321  
6322 2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
6323         * ircd/ircd_relay.c: stop an information leak about the
6324         the network topography from relayed messages.
6325
6326 2002-04-19  Alex Badea  <vampire@p16.pub.ro>
6327
6328         * ircd/m_who.c (m_who): disallow non-opers to /who server.name
6329
6330 2002-04-18  Alex Badea  <vampire@p16.pub.ro>
6331
6332         * ircd/s_err.c (RPL_STATSILINE): connection classes are now
6333         strings
6334
6335 2002-04-17  beware <steendijk@tomaatnet.nl>
6336
6337         * m_whois.c (m_whois): disallow remote queries for non-existent
6338         local users when originated by a non-oper
6339
6340 2002-04-16  Alex Badea  <vampire@p16.pub.ro>
6341
6342         * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
6343         reply if the servername contains a '*' and it doesn't exist
6344
6345         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6346
6347 2002-04-16  beware <steendijk@tomaatnet.nl>
6348
6349         * ircd/m_whois.c: the previous patch broke whois, fixed it
6350         another way
6351
6352         * ircd/m_admin.c: cleaned up m_admin too while we're here,
6353         hunt_server_cmd can do all the work for us
6354
6355 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
6356
6357         * ircd/m_stats.c: added verbose server reporting (/stats v
6358         or /stats V for machine-readable format) (bugzilla bug 52)
6359
6360         * include/numeric.h: added RPL_STATSVERBOSE 236
6361
6362         * ircd/s_err.c: added RPL_STATSVERBOSE
6363
6364         * ircd/s_stats.c: added help for stats 'v'
6365
6366 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
6367
6368         * ircd/class.c (get_client_class): fixed typo which caused
6369         /trace (and perhaps motd) to core
6370
6371 2002-04-15  beware <steendijk@tomaatnet.nl>
6372
6373         * ircd/m_whois.c: Fixed /whois servermask nomatch bug
6374         where normal users could use the function to discover servers,
6375         also the NOSUCHSERVER check code was missing.
6376
6377 2002-04-14  Alex Badea  <vampire@p16.pub.ro>
6378
6379         * ircd/ircd_parser.y: fixed cli_info(&me) not being set
6380         from 'description' conf
6381
6382 2002-04-13  Stephane Thiell <mbuna@undernet.org>
6383
6384         * ircd/m_whois.c: removed FindUser() in ms_whois to fix
6385         remote whois relaying.
6386
6387         * ircd/class.c: removed unused (and duplicated) code
6388         get_client_ping().
6389         
6390         * include/class.h: removed unused function prototype.
6391         
6392         * config.guess: upgraded with latest
6393         
6394         * config.sub: upgraded with latest
6395
6396 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
6397
6398         * ircd-patch: report which files failed the dry run (so the
6399         user may force the patch if the rejects are in less-than-vital
6400         files, such as ChangeLog or documentation)
6401
6402 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
6403
6404         * ircd/m_invite.c: don't propagate invites for local channels
6405
6406         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6407
6408 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
6409
6410         * ircd/ircd.c: The last fix broke autoconnects completely.
6411         Fixed it another way.
6412         
6413 2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
6414
6415         * ircd/ircd.c (try_connections): To avoid problems with infinite event
6416         loops, don't try connecting to servers whose connect frequency is 0.
6417         
6418 2002-04-10  Alex Badea  <vampire@p16.pub.ro>
6419
6420         * ircd/ircd_parser.y: fixed a "features" block parse bug
6421
6422         * tools/convert-conf.py: added a configuration file converter
6423         from 2.10.11 to 2.10.12 format
6424
6425         * ircd-patch: added GPL information to top of file
6426
6427 2002-04-09  Alex Badea  <vampire@p16.pub.ro>
6428
6429         * configure.in: added a human-readable report of configured
6430         options at the end of the configure process
6431
6432         * configure: regenerated with autoconf
6433
6434 2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
6435
6436         * include/supported.h: change CHARSET to CASEMAPPING after
6437         discussions as to what would be the preferred name.
6438
6439 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
6440         * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
6441         specification.
6442         * Fix a minor parser bug that meant rehash didn't always
6443         work correctly.
6444
6445 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
6446
6447         * include/channel.h: fix compiler warnings (paratheses around &&)
6448
6449         * ircd/channel.c (modebuf_extract): fix compiler warnings
6450         (uninitialized variables)
6451
6452         * ircd/Makefile.in: make ircd properly compile outside the
6453         source tree
6454
6455 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
6456
6457         * include/s_user.h: added a sptr parameter to InfoFormatter
6458         function type
6459
6460         * ircd/m_who.c: don't match IPs for clients which have a hidden host,
6461         except when the inquiring user is an oper
6462
6463         * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
6464         target has a hidden host, but show real IP to opers
6465
6466         * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
6467         fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
6468         show real IP to opers
6469
6470         * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
6471
6472         * ircd/s_user.c (send_user_info): pass sptr to the formatting function
6473
6474         * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
6475         fake IP to show for clients with a hidden host)
6476
6477         * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
6478
6479         * doc/example.conf: default value for FEAT_HIDDEN_IP
6480
6481         * doc/readme.features: documented FEAT_HIDDEN_IP
6482
6483 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
6484         * doc/example.conf: Cleaned up some comments that ended up in
6485           strange places due to problems in the merge process.
6486         * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
6487           probably dates back to Jarkko code.
6488
6489 2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
6490
6491         * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
6492         from the path before calling do_kill(); add a msg argument to
6493         do_kill() and use it in preference to comment; remove all that old
6494         code that fiddled with the buf and the comment
6495
6496         * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
6497
6498         * include/ircd_log.h: add a seperate msg argument to
6499         log_write_kill()
6500
6501         * ircd/ircd.c: display event engine and MAXCONNECTIONS information
6502  
6503 2002-04-02  Alex Badea <vampire@p16.pub.ro>
6504
6505         * ircd-patch: Automatically generate a version string from patches
6506
6507 2002-04-02  Alex Badea <vampire@p16.pub.ro>
6508         
6509         * ircd-patch: Test before doing anything dangerous, provide -f to
6510                 to it anyway.  exit levels for easy scripting.
6511
6512 2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
6513
6514         * ircd/channel.c (joinbuf_join): don't add a channel to the list
6515         in the joinbuf unless when we flush it, we empty the list
6516
6517 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
6518         * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
6519           old configuration file format.
6520         * ircd/ircd_lexer.l
6521         * ircd/s_conf.c
6522         * doc/example.conf
6523
6524 2002-03-23 Bert Faes <bert.faes@pandora.be>
6525
6526         * s_misc.c made /trace reply always show the username
6527         
6528 2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
6529
6530         * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
6531         for setrlimit, getrusage, and times
6532
6533         * configure: rerun auto-conf
6534
6535         * config.h.in: rerun autoheader
6536
6537 2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
6538
6539         * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
6540         sending of the key to the channel
6541
6542         * ircd/channel.c (modebuf_flush_int): when processing keys, only
6543         include the actual key in the mode sent to the channel if
6544         MODEBUF_DEST_NOKEY is not set
6545
6546         * include/channel.h: needed more bits for MODEBUF_DEST_*,
6547         especially when adding MODEBUF_DEST_NOKEY to force keys in the
6548         BURST to be reported as "*" to the channel
6549
6550         * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
6551         inherited from the class associated with the O-line
6552
6553 2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
6554
6555         * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
6556         when a user changes his nickname so we can catch if he now matches
6557         a ban
6558
6559 2002-03-20 Reed Loden <reed@redmagnet.com>
6560         * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
6561
6562         * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
6563
6564 2002-03-20 LordLuke <lordluke@undernet.org>
6565         * ircd/client.c: Add LOCOP_LIST_CHAN feature.
6566
6567         * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
6568
6569 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
6570
6571         * ircd/m_links.c: Make /links behave like /map for head_in_sand.
6572         cleaned up excess code.
6573
6574         * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
6575         map_add() and map_update() for links changes.
6576
6577         * include/map.h: Added info and prot to struct Map
6578
6579         * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
6580         servers are cached in MapList
6581
6582         * ircd/s_misc.c: changed #ifdef for map_update()
6583
6584         * ircd/m_server.c: changed #ifdef for map_update()
6585
6586         * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
6587         hiding features.
6588
6589         * configure.in: add --disable-headinsand
6590
6591         * configure: Ran autoconf
6592
6593         * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
6594         connect limits
6595
6596         * ircd/s_stats.c: Made /stats i report connect limits
6597
6598         * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
6599         "*" for the password field.
6600         
6601 2002-03-19 LordLuke <lordluke@undernet.org>
6602
6603         * include/channel.h: Allow opers to view +s channels in /list
6604
6605         * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
6606
6607         * include/ircd_features.h: added "LIST_CHAN" feature
6608
6609         * ircd/channel.c: Allow opers to view +s channels in /list
6610
6611         * ircd/client.c: Add "PRIV_LIST_CHAN"
6612
6613         * ircd/ircd_features.c: Add "LIST_CHAN" feature
6614
6615 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
6616
6617         * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
6618         Must be more careful when forward porting by hand...
6619         
6620 2002-03-13  Carlo Wood  <run@alinoe.com>
6621
6622         * include/channel.h: CHFL_CHANNEL_MANAGER, new local
6623         channel flag set when someone creates a channel or joins
6624         using the Apass.  IsChannelManager(), SetChannelManager():
6625         macros to manipulate new channel flag.
6626         channel_modes: Added new argument to avoid calling
6627         find_member_link more often than needed.
6628
6629         * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
6630         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
6631         ERR_UPASSNOTSET: new numeric replies.
6632
6633         * ircd/channel.c: is_level0_op: removed.
6634         member_can_send_to_channel: disallow channel manager
6635         to talk.  channel_modes: show upass to level0 ops.
6636         mode_parse_upass: Only the channel manager is allowed
6637         to change the upass.  Only allow to set upass when apass
6638         is also set.  mode_parse_apass: Don't allow to change the
6639         Apass if the channel is older than 48 hours.  Only allow
6640         to remove the apass when upass is not set.  Send clear
6641         warnings regarding the importance of apass.
6642         mode_process_clients: Don't change the oplevel of an opped
6643         member in a channel where upass is not set.
6644
6645         * ircd/destruct_event.c: exec_expired_destruct_events:
6646         Bug fix: send DESTRUCT message when destructing a channel.
6647
6648         * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
6649         prefix for DESTRUCT message.
6650
6651         * ircd/m_join.c: m_join: Handle apass and upass.
6652
6653         * ircd/m_kick.c: m_kick: Don't allow to kick member with
6654         a higher or equal op-level.
6655
6656         * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
6657         ms_mode: Allow server to do modes on channels with apass
6658         set.
6659
6660         * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
6661         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
6662         ERR_UPASSNOTSET: new numeric replies.
6663
6664
6665 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
6666
6667         * ircd/m_kill.c: Last of the bug fixes for do_kill()
6668
6669         * ircd/list.c: Don't remove clients from the linked list
6670         that aren't actually in the list.
6671         
6672 2002-03-08  Carlo Wood  <run@alinoe.com>
6673         * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
6674         and CHFL_BURST_ALREADY_VOICED.
6675
6676         * ircd/m_burst.c: Allow BURST outside net-burst
6677         and take into account that users are already joined
6678         to the channel in that case.
6679
6680         * ircd/m_destruct.c: Implementation of DESTRUCT
6681         handling code.
6682
6683         * ircd/m_join.c: Set the channel creationtime to
6684         the timestamp of a message when that timestamp is
6685         smaller.
6686 2002-02-27 Reed Loden <reed@redmagnet.com>
6687        * tools/crypter: Updated some variables, added another notice,
6688        added CVS Id tag, and updated Perl location.
6689
6690        * tools/ringlog.c: Added IRC - Internet Relay Chat, 
6691        tools/ringlog.c
6692
6693        * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
6694        tools/ringlog.pl
6695
6696        * tools/wrapper.c: Added IRC - Internet Relay Chat, 
6697        tools/wrapper.c
6698
6699        * tools/mkpasswd.c: Added CVS Id tag
6700
6701        * tools/sums: Updated to comply with sums being moved to tools/
6702        and added CVS Id tag
6703
6704        * tools/README: Updated location of file and partly rewrote to fit 
6705        u2.10.11's Features
6706
6707        * tools/Makefile.crypt: Updated location of file and added CVS Id 
6708        tag
6709
6710        * acconfig.h: Updated location of file
6711
6712        * config.h.in: Updated location of file
6713
6714        * tools/Bounce/bounce.conf: Added CVS Id tag
6715
6716        * tools/Bounce/Bounce.cpp: Updated location of file
6717
6718        * tools/Bounce/Bounce.h: Updated location of file
6719
6720        * tools/hashtoy: Added CVS Id Tag
6721
6722 2002-02-27  Carlo Wood  <run@alinoe.com>
6723
6724         * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
6725
6726 2002-03-01  Carlo Wood  <run@alinoe.com>
6727
6728         * include/channel.h: struct Channel: new attribute destruct_event.
6729         Prototype for destruct_channel().
6730
6731         * include/destruct_event.h: new header file for destruct_event.c.
6732
6733         * ircd/Makefile.in: New source file: destruct_event.c.
6734
6735         * ircd/channel.c: sub1_from_channel: Don't destruct channel
6736         immedeately but instead schedule it for destruction after
6737         some time when a channel becomes empty (and clear invite
6738         only and limit in that case).
6739         destruct_channel: new function, was previously the destructing
6740         part of sub1_from_channel.
6741         add_user_to_channel: remove destruction request if any.
6742
6743         * ircd/destruct_event.c: New file.  Implementation of functions
6744         schedule_destruct_event_1m, schedule_destruct_event_48h,
6745         remove_destruct_event and exec_expired_destruct_events.
6746
6747         * ircd/ircd.c: destruct_event_timer: new timer.
6748         main: use destruct_event_timer to call exec_expired_destruct_events
6749         once per minute.
6750
6751         * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
6752         channels.  Schedule new empty channels for destruction.
6753
6754         * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
6755
6756 2002-03-01  Carlo Wood  <run@alinoe.com>
6757         * ircd/s_misc.c: exit_client: Only call map_update()
6758         for servers.
6759
6760 2002-02-28  Carlo Wood  <run@alinoe.com>
6761         * include/channel.h: New attribute 'oplevel' in struct Membership.
6762         Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
6763         New macros:  OpLevel(member): returns op-level of member and
6764         SetOpLevel(member, value): sets op-level of member.
6765         Prototype of add_user_to_channel: add oplevel to parameters.
6766         Prototype of mode_parse: add member to to parameters.
6767
6768         * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
6769
6770         * ircd/s_err.c: idem.
6771
6772         * ircd/channel.c: Removed unmatched '{' braces from comments
6773         (confuses vi).  add_user_to_channel: oplevel is passed to function
6774         and added in the created MemberShip structure.  send_channel_modes:
6775         Generate the nick:mode list of the BURST msg in the new style (with
6776         op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
6777         ParseState: New attribute: member.  mode_process_clients: Disallow
6778         deopping someone with an equal or higher op-level, take care of
6779         inheritance of op-level.  mode_parse: member is passed to function      
6780         and added in the created ParseState structure.  joinbuf_join: pass 0
6781         as oplevel to add_user_to_channel as needed initialization of oplevel
6782         in struct MemberShip.
6783
6784         * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
6785         decoding of a BURST message and passing on a BURST message.
6786         Renamed default_mode to current_mode.
6787
6788         * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
6789
6790         * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
6791         to mode_parse (causes opped member to get op-level 0).                  
6792
6793 2002-02-25  Carlo Wood  <run@alinoe.com>
6794         * include/channel.h: Added two new strings to struct Mode,
6795         upass and apass, both with maximum length PASSLEN (a new
6796         define in this file).  Two new mode defines MODE_UPASS and
6797         MODE_APASS.
6798
6799         * ircd/channel.c: is_level0_op: Added as dummy function.
6800         channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
6801         Added support for MODE_APASS (+A) and MODE_UPASS (+u).
6802         mode_parse_upass: New function to parse mode +u.
6803         mode_parse_apass: New function to parse mode +A.
6804
6805         * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
6806
6807 2002-02-25  Carlo Wood  <carlo@alinoe.com>
6808
6809         * ircd/m_server.c: remove unused variables
6810
6811 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
6812
6813         * ircd/m_map.c: Modified to show a useful output to non-opered
6814           clients when HEAD_IN_SAND_MAP is defined. Servers are added to
6815           the list when first seen (after receiving SERVER) and that list
6816           is sent to clients. Servers are excluded from the list if they are
6817           hubs, services, or have been missing for more than 1 week.
6818         
6819         * ircd/map.c: Created file for map_* functions
6820
6821         * include/map.h: Created file for map_* functions
6822
6823         * ircd/m_server.c: Added calls to map_update()
6824
6825         * ircd/s_misc.c: Added call to map_update()
6826
6827         * ircd/parse.c: Changed to use m_map() and mo_map()
6828         
6829 2002-02-22 Reed Loden <reed@redmagnet.com>
6830
6831        * ircd/m_connect.c: Removed an extra : in remote connect message.
6832
6833 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
6834
6835         * ircd/whocmds.c: Local opers should also be able to
6836         see servernames in /who
6837
6838         * ircd/gline.c: Fix core bug in gline_find()
6839
6840         * ircd/m_kill.c: Bug fix for HIS_KILLWHO
6841
6842 2002-02-19 John Buttery <john@io.com>
6843
6844         * ircd/ircd.c: Updated "No such file" error message.
6845         
6846 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
6847
6848         * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
6849         a message handler, and some general cleanups and bug fixes. 
6850
6851         * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
6852         kill source.
6853         
6854 2002-02-16  Tim Vogelsang <net@astrolink.org>
6855
6856         * ircd/m_kill.c: added a new static function, m_kill, which
6857         performs the actual kill.
6858         
6859 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
6860
6861         * Added support for LIST STOP
6862         
6863 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
6864
6865         * Merged changes from u2_10_11 to main branch.
6866         
6867 2002-02-08  Tim Vogelsang  <net@astrolink.org>
6868
6869        * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
6870        reason is supplied.
6871
6872 2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
6873
6874         * ircd/s_auth.c (read_auth_reply): left out an = in an
6875         assertion--shouldn't have had any impact, though
6876
6877         * ircd/Makefile.in: add a hook for using ringlog; run make depend
6878
6879         * tools/ringlog.c: for the heck of it, add a comment including
6880         rules for /etc/magic
6881
6882 2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
6883
6884         * tools/ringlog.pl: perl script to take output from ringlog and
6885         pass it to addr2line to get function, file, and line number
6886         information
6887
6888         * tools/ringlog.c: program/object to help in building function
6889         trace information
6890
6891 2002-02-04  Alex Badea  <vampire@p16.pub.ro>
6892
6893         * include/ircd_features.h: added new feature MOTD_BANNER
6894
6895         * ircd/ircd_features.c: added new feature MOTD_BANNER
6896
6897         * ircd/motd.c (motd_signon): send a one-line banner from
6898         FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
6899         is set
6900
6901         * doc/example.conf: default value for MOTD_BANNER feature
6902
6903         * doc/readme.features: documented the MOTD_BANNER feature
6904
6905 2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
6906
6907         * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
6908         check; added character 'A' to the server options string to
6909         indicate when assertion checking is enabled
6910
6911 2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
6912
6913         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6914
6915         * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
6916         event if the errno is EBADF, since the caller probably already
6917         knows about it and just hasn't gotten around to processing it yet
6918
6919         * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
6920         is generated; don't process socket_events() or socket_state() if
6921         an error occurred; add GEN_ERROR to list of flags in gen_flags()
6922
6923         * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
6924         clear it
6925
6926 2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
6927
6928         * ircd/channel.c: change make_nick_user_{ip,host} to not use a
6929         static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
6930         NUI_BUFSIZE--I confess they're not well-named) is allocated by the
6931         caller
6932
6933 2002-02-02  Alex Badea  <vampire@p16.pub.ro>
6934
6935         * include/client.h: added user flag FLAGS_HIDDENHOST
6936
6937         * include/ircd_features.h: added FEAT_HOST_HIDING and
6938         FEAT_HIDDEN_HOST
6939
6940         * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
6941         to report real hostnames and IPs to opers
6942
6943         * include/s_user.h: exported hide_hostmask()
6944
6945         * include/send.h: changed sendcmdto_channel_butserv to
6946         sendcmdto_channel_butserv_butone; ditto for
6947         sendcmdto_common_channels
6948
6949         * include/struct.h: added realhost to struct User
6950
6951         * include/whowas.h: added realhost to struct Whowas
6952
6953         * ircd/channel.c: match bans against both real and hidden
6954         hostmasks; moved some calls to use sendcmdto_*_butone
6955
6956         * ircd/gline.c: match glines agains real host
6957
6958         * ircd/ircd_features.c: added FEAT_HOST_HIDING and
6959         FEAT_HIDDEN_HOST
6960
6961         * ircd/m_account.c: call hide_hostmask() for possibly
6962         hiding the user's host
6963
6964         * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
6965
6966         * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
6967
6968         * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
6969         host
6970
6971         * ircd/m_who.c: match real hosts, if the query comes from an oper
6972
6973         * ircd/m_whois.c: report real hostname and IP to opers
6974
6975         * ircd/m_whowas.c: report real hostname to opers
6976
6977         * ircd/s_err.c: added user mode 'x' to the list of supported user
6978         modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
6979         real hostnames to opers
6980
6981         * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
6982
6983         * ircd/s_serv.c: send real hostname to servers
6984
6985         * ircd/s_user.c: send real hostname to servers; added processing
6986         of usermode 'x'; added hide_hostmask() which actually does the work
6987         of hiding a user's host; moved some calls to use sendcmdto_*_butone
6988
6989         * ircd/send.c: changed sendcmdto_channel_butserv to
6990         sendcmdto_channel_butserv_butone; ditto for
6991         sendcmdto_common_channels
6992
6993         * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
6994         it's host hidden
6995
6996         * ircd/whowas.c: if needed, store a user's real host so we can
6997         report it to opers later
6998
6999         * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
7000         features
7001
7002         * doc/example.conf: default values for HOST_HIDING and
7003         HIDDEN_HOST features
7004
7005 2002-02-01  Tim Vogelsang  <net@astrolink.org>
7006
7007         * ircd/send.c (sendwallto_group_butone): don't sent wallops to
7008         ordinary users
7009
7010 2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
7011
7012         * ircd/jupe.c (jupe_activate): remove a bogus assertion
7013
7014         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7015
7016         * ircd/s_err.c: added new channel mode 'r' to list of supported
7017         channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
7018         numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
7019         informing users why they can't join a +r channel
7020
7021         * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
7022         (+r) to do_clearmode(); note that it is *not* being added to the
7023         default clearmode mask!
7024
7025         * ircd/channel.c: don't allow non-+r users to send messages to +r
7026         channels from off the channel; add support for MODE_REGONLY (+r)
7027         to channel_modes(); don't allow non-+r users to join +r channels
7028         without an invite; add support for MODE_REGONLY to the modebuf_*()
7029         family of functions (changes in modebuf_flush_int(),
7030         modebuf_mode(), and modebuf_extract()); add support for
7031         MODE_REGONLY to mode_parse()
7032
7033         * include/supported.h (FEATURESVALUES2): added the new channel
7034         mode 'r' to the list of supported channel modes
7035
7036         * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
7037         conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
7038
7039         * include/channel.h: remove unused MODE_SENDTS; add new
7040         MODE_REGONLY
7041
7042         * ircd/s_bsd.c (read_packet): remove call to timer_verify()
7043
7044         * ircd/list.c: remove calls to timer_verify() from
7045         alloc_connection() and dealloc_connection()
7046
7047         * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
7048         from timer_run()
7049
7050 2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
7051
7052         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7053
7054         * ircd/ircd_events.c (timer_run): why did I ever use a next
7055         pointer when the algorithm guarantees that the head pointer will
7056         always be the next pointer?
7057
7058 2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
7059
7060         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7061
7062         * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
7063         client process timer to catch any list corruption
7064
7065         * ircd/list.c: surround alloc_connection() and
7066         dealloc_connection() with calls to timer_verify()
7067
7068         * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
7069         verify the timer list's structure; call it around timer_run()
7070
7071 2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
7072
7073         * ircd/send.c (sendcmdto_common_channels): don't send message to a
7074         channel that the source is a zombie on
7075
7076 2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
7077
7078         * ircd/ircd_events.c (timer_enqueue): one more assertion--make
7079         sure a timer has the ACTIVE flag set before enqueueing the timer
7080
7081         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7082
7083         * ircd/list.c (dealloc_connection): assert that the process timer
7084         has been removed from the timer queue before dealloc_connection()
7085         is called
7086
7087 2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
7088
7089         * ircd/res.c: don't accept T_A when we're looking for T_PTR
7090
7091         * ircd/channel.c (modebuf_flush_int): nuke the code that would
7092         send a HACK DESYNCH notice on a HACK(2)--it would be far too
7093         chatty
7094
7095         * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
7096
7097         * include/supported.h: add AWAYLEN to the list of supported
7098         features
7099
7100         * include/ircd_defs.h: add AWAYLEN to specify the maximum length
7101         of an away message
7102
7103         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7104
7105         * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
7106
7107         * ircd/channel.c: pass a buflen parameter to channel_modes() for
7108         pbuf--we were using sizeof(pbuf), which would always be
7109         sizeof(char*) before; change send_channel_modes() to pass extra
7110         parameter to channel_modes()
7111
7112         * include/channel.h: pass a buflen parameter to channel_modes()
7113         for pbuf
7114
7115         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7116
7117         * ircd/uping.c (uping_start): initialize some timers
7118
7119         * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
7120         out when we need to re-add the process timer
7121
7122         * ircd/s_auth.c (make_auth_request): initialize a timer
7123
7124         * ircd/res.c (init_resolver): initialize some timers
7125
7126         * ircd/list.c (alloc_connection): initialize the client process
7127         timer
7128
7129         * ircd/ircd_events.c: add a function, timer_init(), to initialize
7130         a struct Timer; recast timer_add() to catch when adding a marked
7131         timer and not re-enqueue it--but mark it for re-enqueuing; update
7132         timer_del() to turn off the GEN_READD flag and to ignore reference
7133         counts when destroying the timer--we're using GEN_MARKED as an
7134         ersatz referance count; changed timer_run() to work with the new
7135         way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
7136         map[]
7137
7138         * ircd/ircd.c: initialize some timers
7139
7140         * ircd/engine_select.c (engine_loop): initialize a timer
7141
7142         * ircd/engine_poll.c (engine_loop): initialize a timer
7143
7144         * ircd/engine_kqueue.c (engine_loop): initialize a timer
7145
7146         * ircd/engine_devpoll.c (engine_loop): initialize a timer
7147
7148         * ircd/IPcheck.c (IPcheck_init): initialize a timer
7149
7150         * include/ircd_events.h: add GEN_READD flag for timers to indicate
7151         that a timer must be readded; add t_onqueue() macro to check to
7152         see if a timer is on the queue (this is a hack, though); added
7153         timer_init() to initialize a struct Timer--we're no longer doing
7154         the initialization in timer_add()
7155
7156 2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
7157
7158         * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
7159         prevent a core bug *in* the assertion
7160
7161         * doc/readme.features: document new POLLS_PER_LOOP feature; change
7162         documentation to reflect that OPER_SET now defaults to FALSE
7163
7164         * doc/p10.html: documented the new ACCOUNT stuff
7165
7166         * doc/example.conf: document new POLLS_PER_LOOP default; change
7167         default for OPER_SET
7168
7169         * RELEASE.NOTES: changed documentation to reflect the fact that
7170         assertions are now enabled by default and do not cause memory
7171         leaks
7172
7173         * ircd/res.c (make_cache): removed a bogus assertion we probably
7174         never caught because assertions haven't been enabled on production
7175         servers for any length of time before
7176
7177         * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
7178
7179         * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
7180         instance of POLLS_PER_KQUEUE
7181
7182         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7183
7184         * ircd/s_bsd.c (client_timer_callback): only clear the
7185         FREEFLAG_TIMER flag when the timer is being destroyed
7186
7187         * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
7188         default it to 200; turn OPER_SET off by default
7189
7190         * ircd/engine_kqueue.c: dynamically allocate and reallocate the
7191         array of events to obtain from the kernel
7192
7193         * ircd/engine_devpoll.c: dynamically allocate and reallocate the
7194         array of events to obtain from the kernel
7195
7196         * include/ircd_features.h: add a new feature for tuning how many
7197         events to get from the kernel, for engines that support that
7198
7199         * ircd/Makefile.in: re-run make depend to correct dependancies
7200
7201         * ircd/m_who.c: remove unneeded inclusion of list.h
7202
7203         * ircd/ircd_events.c: remove unneeded inclusion of list.h
7204
7205         * ircd/whocmds.c (do_who): hide server name in /who unless
7206         requester is an operator; simplify hop count insertion
7207
7208         * ircd/s_misc.c (exit_one_client): make sure client's snomask is
7209         cleared
7210
7211         * ircd/parse.c: use mo_version and mo_admin when opers do /version
7212         or /admin
7213
7214         * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
7215         of the static string "*.undernet.org"
7216
7217         * ircd/m_version.c: only let ordinary users get version
7218         information for the server they are on
7219
7220         * ircd/m_admin.c: only let ordinary users get admin information
7221         for the server they are on
7222
7223         * ircd/channel.c (client_can_send_to_channel): check is_banned()
7224         before letting the client speak on a channel s/he is not on
7225
7226         * include/supported.h: add NETWORK to feature list
7227
7228         * include/handlers.h: declare mo_admin() and mo_version()
7229
7230 2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
7231
7232         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7233
7234         * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
7235         of !NDEBUG
7236
7237         * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
7238         !NDEBUG
7239
7240         * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
7241         !NDEBUG
7242
7243         * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
7244
7245         * ircd/Makefile.in: run make depend on chkconf.c as well
7246
7247         * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
7248         conditionalize on MDEBUG
7249
7250         * include/fda.h: instead of conditionalizing on !NDEBUG,
7251         conditionalize on MDEBUG
7252
7253         * configure: rebuild configure script
7254
7255         * configure.in: enable assertion checking by default, since we
7256         have now decoupled memory debugging from the NDEBUG macro
7257
7258         * ircd/s_user.c (set_nick_name): remove calls to
7259         verify_client_list()
7260
7261         * ircd/s_misc.c (exit_one_client): remove calls to
7262         verify_client_list()
7263
7264         * ircd/s_conf.c (rehash): remove calls to verify_client_list()
7265
7266         * ircd/m_who.c (m_who): remove calls to verify_client_list()
7267
7268         * ircd/list.c: remove calls to verify_client_list(); keep
7269         verify_client_list() around just in case we ever need it again,
7270         but never compile it in
7271
7272         * ircd/ircd_events.c (event_execute): remove calls to
7273         verify_client_list()
7274
7275         * ircd/client.c (client_get_ping): remove calls to
7276         verify_client_list()
7277
7278         * include/list.h (send_listinfo): remove temporary debugging
7279         function verify_client_list()
7280
7281         * ircd/uping.c: don't die if the event type is ET_ERROR in socket
7282         callback functions
7283
7284         * ircd/res.c (res_callback): don't die if the event type is
7285         ET_ERROR
7286
7287         * ircd/listener.c (accept_connection): don't die if the event type
7288         is ET_ERROR
7289
7290 2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
7291
7292         * ircd/s_user.c (set_nick_name): bracket call to
7293         add_client_to_list() with calls to verify_client_list()
7294
7295         * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
7296
7297         * ircd/list.c (verify_client_list): add a probabilistic loop
7298         detector: for every client added, there is a 2% probability that
7299         it will be used to replace the value of sentinel; if at any time,
7300         sentinel is found again, we know we're in a loop
7301
7302         * ircd/ircd_events.c (event_execute): add verify_client_list()
7303         calls wrapping event_execute; at the very least, I'll figure out
7304         what event the corruption occurred in
7305
7306         * ircd/list.c: moved verify_client_list() to try to keep it from
7307         being inlined
7308
7309         * ircd/Makefile.in (version.c): version.c wasn't dependant on
7310         version.h and patchlevel.h, like it was supposed to be
7311
7312         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7313
7314         * ircd/s_auth.c (destroy_auth_request): overload send_reports
7315         argument to also indicate whether or not to call
7316         release_auth_client() and thereby enter the client into the linked
7317         list
7318
7319         * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
7320
7321         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7322
7323         * ircd/list.c (free_client): verify that destroy_auth_request()
7324         didn't automagically re-add us to the list; we might have to think
7325         about this interaction more carefully, actually
7326
7327         * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
7328         calling free_client(); otherwise, free_client() will try to free
7329         the auth by calling destroy_auth_request(), which will call
7330         add_client_to_list()
7331
7332         * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
7333         verify_client_list() around to catch any corruption that might
7334         occur here
7335
7336         * ircd/s_conf.c (rehash): liberally sprinkle calls to
7337         verify_client_list() here, since this is about the only routine I
7338         can think of that could cause the "core on kill -HUP" bug
7339
7340         * ircd/m_who.c: sprinkle calls to verify_client_list() around
7341         liberally, since we've seen crashes here; temporarily include the
7342         otherwise unneeded list.h header
7343
7344         * ircd/list.c: sprinkle calls to verify_client_list() around quite
7345         liberally; add debugging asserts to list manipulation functions to
7346         catch strange settings for next and prev pointers; define
7347         verify_client_list(), which walks the client list and verifies
7348         that everything is as it's supposed to be
7349
7350         * ircd/client.c: wrap client_get_ping with calls to
7351         verify_client_list() to see if that's where we're dying
7352
7353         * include/patchlevel.h (PATCHLEVEL): bump to 03
7354
7355         * include/list.h: declare verify_client_list() if DEBUGMODE
7356         enabled; otherwise, define it to be empty
7357
7358 2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
7359
7360         * ircd/m_quit.c (m_quit): remove an unused variable
7361
7362         * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
7363
7364         * ircd/s_user.c: when building the user mode to send to the user,
7365         don't include +r; add an extra set of parens to squelch a warning
7366
7367         * ircd/m_quit.c (m_quit): use exit_client_msg()
7368
7369         * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
7370         keep track of who's running what version
7371
7372         * ircd/m_squit.c (ms_squit): remove debugging calls to
7373         protocol_violation()
7374
7375         * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
7376         new gmake "feature" (pull-up from trunk)
7377
7378         * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
7379         from trunk)
7380
7381 2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
7382
7383         * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
7384         list of user modes; process account name as part of user mode in
7385         NICK decoding (set_nick_name()); add account name to usermode when
7386         building the usermode to incorporate in outgoing NICK messages
7387
7388         * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
7389         user is logged in to
7390
7391         * ircd/parse.c: define the new ACCOUNT command, usable only by
7392         servers and ignored by everything else
7393
7394         * ircd/m_whois.c: report what account name is associated with a
7395         user, if any
7396
7397         * ircd/m_account.c: implement the ACCOUNT command
7398
7399         * ircd/Makefile.in: add m_account.c to the list of sources; ran
7400         make depend
7401
7402         * include/struct.h: add an account field to struct User
7403
7404         * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
7405         what username a user is logged in under
7406
7407         * include/msg.h: add ACCOUNT command and token (AC)
7408
7409         * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
7410         the maximum length of a username for X
7411
7412         * include/handlers.h: add declaration for ms_account()
7413
7414         * include/client.h: add FLAGS_ACCOUNT to flag when a user account
7415         name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
7416         IsAccount() and SetAccount() to manipulate the flag
7417
7418         * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
7419         name like "Amsterdam2.NL.EU.undernet.org", we get the struct
7420         Client for the server with numeric "Am", which happens to be
7421         stockholm!  To fix this, we look up the full name *first*; if that
7422         doesn't get it, *then* we look up by numeric.
7423
7424 2001-12-24  Perry Lorier <isomer@coders.net>
7425         * ircd/m_server.c: cleanups, maybe this will make the bug easier
7426         to find.
7427
7428         * ircd/m_stats.c: display maximum number of connects in an I:
7429
7430 2001-11-22  Perry Lorier  <isomer@coders.net>
7431         * ircd/m_squit.c: Bug fix in squit
7432
7433 2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7434         * ircd/parse.c, include/handlers.h: Give remote whois the correct
7435         handler.
7436         
7437 2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
7438
7439         * ircd/send.c: some minor white-space fiddling; recast selector
7440         test in sendwallto_group_butone() to remove a warning regarding
7441         putting & within parentheses
7442
7443         * ircd/m_create.c (ms_create): use time_t instead of int as a
7444         declaration for rate
7445
7446         * ircd/ircd_reply.c (protocol_violation): it's supposed to be
7447         WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
7448         wonder we weren't seeing any protocol violations!
7449
7450         * include/send.h: include time.h for time_t; move WALL_* closer to
7451         the function they're used in; some white-space fiddling; add
7452         declaration of sendto_opmask_butone_ratelimited()
7453
7454         * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
7455         cases where we ignore a squit, so we aren't taken by surprise, at
7456         least...
7457
7458         * ircd/m_create.c (ms_create): Display origin server, not origin
7459         user
7460
7461         * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
7462
7463 2001-10-31  Perry Lorier  <isomer@coders.net>
7464         * include/m_ping.c: Forward port ping bug
7465
7466 2001-10-31  Perry Lorier  <isomer@coders.net>
7467         * include/patchlevel.h: We're beta now
7468
7469 2001-10-31  Perry Lorier  <isomer@coders.net>
7470         * ircd/s_user.c: fixed hunt_server
7471
7472 2001-09-21  Perry Lorier  <isomer@coders.net>
7473         * ircd/send.c and various: replace sendcmdto_flag_butone with
7474         sendwallto_group_butone
7475
7476 2001-09-21  Vampire-  <unknown>
7477         * ircd/ircd_string.c: unique_name_vector round II.
7478
7479 2001-09-21  mbuna  <mbuna@undernet.org>
7480         * configure.in: Add support for darwin
7481
7482 2001-09-21  Perry Lorier  <isomer@coders.net>
7483         * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
7484
7485 2001-09-20  Perry Lorier  <isomer@coders.net>
7486
7487         * Pullups from 2.10.10.pl16
7488         * Added some warnings, and the concept of rate limited snotices
7489
7490 2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
7491
7492         * ircd/channel.c: use "%u" to format limit arguments; use
7493         strtoul() to process limit arguments in a /mode command--note:
7494         most clients seem to truncate the integer, probably because
7495         they're using atoi, and perhaps signed ints
7496
7497 2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
7498
7499         * ircd/numnicks.c: include stdlib.h for exit()
7500
7501         * ircd/ircd_log.c: include stdlib.h for exit()
7502
7503         * ircd/ircd_events.c: include stdlib.h for exit()
7504
7505         * ircd/s_stats.c: remove description of /stats v, since it's gone
7506
7507         * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
7508         /wallops to distinguish wallops from wallusers
7509
7510         * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
7511         in the "handshake" or "connecting" states--I think the latter will
7512         never happen, but...
7513
7514         * doc/Authors: apply delete's Authors patch
7515
7516         * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
7517         Braden's version
7518
7519         * README: rewrite README
7520
7521 2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
7522
7523         * ircd/s_serv.c (server_estab): remove unused variable split
7524
7525         * ircd/parse.c: add mr_error to the parse table
7526
7527         * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
7528         unregistered connections--if IsUserPort() is true, the ERROR is
7529         ignored, otherwise, the message is saved
7530
7531 2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
7532
7533         * ircd/m_kill.c (ms_kill): another minor typo *sigh*
7534
7535         * ircd/s_user.c (send_supported): oops, minor typo...
7536
7537         * ircd/s_user.c: implement send_supported() to send two ISUPPORT
7538         messages containing our feature buffers; make register_user() use
7539         send_supported()
7540
7541         * ircd/s_misc.c (exit_client): make sure not to give away a remote
7542         server in the ERROR message sent to the client; if the killer is a
7543         server, we substitute our name in its place
7544
7545         * ircd/m_version.c (m_version): use send_supported() to send the
7546         ISUPPORT values to the user
7547
7548         * ircd/m_nick.c: shave nick collision kills here a bit, too, for
7549         the same reasons as for m_kill.c
7550
7551         * ircd/m_kill.c: shave kills a bit so that the results look
7552         exactly the same no matter where you are; if we didn't do this, it
7553         would be possible to map the network by looking at the differences
7554         between kills originating under various circumstances
7555
7556         * include/supported.h: split the features into two, so as to not
7557         bust the parameter count when sending the features list
7558
7559         * include/s_user.h: declare new send_supported() function to send
7560         the ISUPPORT information
7561
7562 2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
7563
7564         * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
7565         source-routed spoofing attacks; this is only available under
7566         u2.10.11, so don't even bother, since no one but testers are using
7567         the source base
7568
7569 2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
7570
7571         * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
7572
7573         * ircd/s_err.c: put in a . for reporting link version on /trace,
7574         to match what /version does
7575
7576 2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
7577
7578         * ircd/s_misc.c (exit_client): servers don't understand what the
7579         numeric nick ERROR is supposed to mean, so they ignore error
7580         messages, resulting in not knowing why we were rejected; use
7581         sendcmdto_one for servers and sendrawto_one for clients
7582
7583 2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
7584
7585         * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
7586         a nick collide, a bare BURST may be propagated; adjust the
7587         enforced parameter count to accept the bare BURST
7588
7589 2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
7590
7591         * ircd/s_bsd.c: mark a client as having been IP checked
7592
7593         * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
7594         second call to SetIPChecked()
7595
7596 2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
7597
7598         * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
7599
7600         * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
7601
7602 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
7603
7604         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
7605         sections so that if neither is used, the declaration of buf will
7606         not elicit an "unused variable" warning under NetBSD
7607
7608         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
7609         on alpha)
7610
7611         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
7612         warnings on alpha)
7613
7614         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
7615         warnings on alpha)
7616
7617         * ircd/client.c: include string.h to declare memset (fix warnings
7618         on alpha)
7619
7620         * ircd/channel.c: remove unused functions next_overlapped_ban,
7621         del_banid, and is_deopped (fix warnings under -O1)
7622
7623         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
7624         warnings on alpha)
7625
7626 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
7627
7628         * ircd/s_user.c (set_user_mode): clear the snomask if the user
7629         isn't supposed to receive server notices anymore
7630
7631         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
7632
7633         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
7634         installation prefix; default devpoll and kqueue to on (they get
7635         turned off if the required headers aren't present)
7636
7637         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
7638         sprintf_irc(); it's a bit hackish, but it'll do for now
7639
7640         * ircd/support.c: remove unused #include
7641
7642         * ircd/send.c: remove unused #include
7643
7644         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
7645
7646         * ircd/s_serv.c: remove unused #include
7647
7648         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
7649         sprintf_irc() and friends
7650
7651         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
7652         ircd/s_err.c, which is the only other file to refer to it
7653
7654         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
7655         sprintf_irc()
7656
7657         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
7658         sprintf_irc()
7659
7660         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
7661
7662         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
7663
7664         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
7665
7666         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
7667
7668         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
7669
7670         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
7671
7672         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
7673         instead of sprintf_irc()
7674
7675         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
7676         make depend
7677
7678         * include/ircd_string.h: remove declaration of sprintf_irc() (what
7679         was it doing here anyway?)
7680
7681         * include/sprintf_irc.h: removed unneeded source file
7682
7683         * ircd/sprintf_irc.c: removed unneeded source file
7684
7685         * ircd/s_debug.c (count_memory): remove some dead code
7686
7687         * ircd/s_auth.c: remove some dead code
7688
7689         * ircd/res.c (update_list): remove some dead code
7690
7691         * ircd/m_whowas.c: remove some dead code
7692
7693         * ircd/m_whois.c: remove some dead code
7694
7695         * ircd/m_who.c: remove some dead code
7696
7697         * ircd/m_wallusers.c: remove some dead code
7698
7699         * ircd/m_wallops.c: remove some dead code
7700
7701         * ircd/m_wallchops.c: remove some dead code
7702
7703         * ircd/m_version.c: remove some dead code
7704
7705         * ircd/m_userip.c: remove some dead code
7706
7707         * ircd/m_userhost.c: remove some dead code
7708
7709         * ircd/m_uping.c: remove some dead code
7710
7711         * ircd/m_trace.c: remove some dead code
7712
7713         * ircd/m_topic.c: remove some dead code
7714
7715         * ircd/m_tmpl.c: remove some dead code
7716
7717         * ircd/m_time.c: remove some dead code
7718
7719         * ircd/m_squit.c: remove some dead code
7720
7721         * ircd/m_silence.c: remove some dead code
7722
7723         * ircd/m_settime.c: remove some dead code
7724
7725         * ircd/m_set.c: remove some dead code
7726
7727         * ircd/m_server.c: remove some dead code
7728
7729         * ircd/m_rpong.c: remove some dead code
7730
7731         * ircd/m_rping.c: remove some dead code
7732
7733         * ircd/m_restart.c: remove some dead code
7734
7735         * ircd/m_reset.c: remove some dead code
7736
7737         * ircd/m_rehash.c: remove some dead code
7738
7739         * ircd/m_quit.c: remove some dead code
7740
7741         * ircd/m_proto.c: remove some dead code
7742
7743         * ircd/m_privs.c: remove some dead code
7744
7745         * ircd/m_privmsg.c: remove some dead code
7746
7747         * ircd/m_pong.c: remove some dead code
7748
7749         * ircd/m_ping.c: remove some dead code
7750
7751         * ircd/m_pass.c: remove some dead code
7752
7753         * ircd/m_part.c: remove some dead code
7754
7755         * ircd/m_opmode.c: remove some dead code
7756
7757         * ircd/m_oper.c: remove some dead code
7758
7759         * ircd/m_notice.c: remove some dead code
7760
7761         * ircd/m_nick.c: remove some dead code
7762
7763         * ircd/m_map.c: remove some dead code
7764
7765         * ircd/m_lusers.c: remove some dead code
7766
7767         * ircd/m_list.c: remove some dead code
7768
7769         * ircd/m_links.c: remove some dead code
7770
7771         * ircd/m_kill.c: remove some dead code
7772
7773         * ircd/m_kick.c: remove some dead code
7774
7775         * ircd/m_jupe.c: remove some dead code
7776
7777         * ircd/m_join.c: remove some dead code
7778
7779         * ircd/m_ison.c: remove some dead code
7780
7781         * ircd/m_invite.c: remove some dead code
7782
7783         * ircd/m_info.c: remove some dead code
7784
7785         * ircd/m_help.c: remove some dead code
7786
7787         * ircd/m_gline.c: remove some dead code
7788
7789         * ircd/m_get.c: remove some dead code
7790
7791         * ircd/m_error.c: remove some dead code
7792
7793         * ircd/m_endburst.c: remove some dead code
7794
7795         * ircd/m_die.c: remove some dead code
7796
7797         * ircd/m_desynch.c: remove some dead code
7798
7799         * ircd/m_destruct.c: remove some dead code
7800
7801         * ircd/m_defaults.c: remove some dead code
7802
7803         * ircd/m_create.c: remove some dead code, along with an #if 1
7804
7805         * ircd/m_cprivmsg.c: remove some dead code
7806
7807         * ircd/m_connect.c: remove some dead code
7808
7809         * ircd/m_close.c: remove some dead code
7810
7811         * ircd/m_clearmode.c: remove some dead code
7812
7813         * ircd/m_burst.c: remove some dead code
7814
7815         * ircd/m_away.c: remove some dead code
7816
7817         * ircd/m_admin.c: remove some dead code
7818
7819         * ircd/listener.c (accept_connection): remove some dead code
7820
7821         * ircd/ircd_reply.c (need_more_params): remove some dead code
7822
7823         * ircd/channel.c (add_banid): remove some dead code
7824
7825         * include/support.h: remove some dead code
7826
7827         * include/querycmds.h: remove some dead code
7828
7829         * doc/readme.chroot: document how to do chroot operation
7830
7831 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
7832
7833         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
7834         force bin directory to be created if necessary prior to
7835         installation; run make depend
7836
7837         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
7838         the ${srcdir}
7839
7840         * Makefile.in: tune to detect Makefile.in changes in
7841         subdirectories and to create installation directory indicated by
7842         ${prefix}
7843
7844         * ircd/whocmds.c (count_users): routine to count the number of
7845         users matching a given user@host mask
7846
7847         * ircd/s_err.c: add error messages for ERR_LONGMASK,
7848         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
7849
7850         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
7851         from operators; only set GLINE_OPERFORCE flag if oper has the
7852         PRIV_WIDE_GLINE privilege
7853
7854         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
7855         maximum number of users a G-line can impact before it has to be
7856         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
7857         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
7858         operators to use ! to force a wide G-line to be set
7859
7860         * ircd/gline.c: make make_gline() be called with separate user and
7861         host arguments, and not call canon_userhost() directly; implement
7862         gline_checkmask() to verify that a host mask is acceptable; move
7863         BADCHAN check up in gline_add(), and check passed-in mask under
7864         certain circumstances for acceptability; fix call to
7865         sendto_opmask_butone() to handle separation of userhost into user
7866         and host in gline_add(); update call to make_gline()
7867
7868         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
7869         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
7870         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
7871
7872         * include/whocmds.h (count_users): declare routine to count users
7873         matching a given user@host mask
7874
7875         * include/numeric.h: added three new error returns: ERR_LONGMASK
7876         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
7877         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
7878         contains wildcards in the wrong places
7879
7880         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
7881         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
7882
7883         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
7884         to signal to gline_add() that the operator attempted to force the
7885         G-line to be set
7886
7887         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
7888
7889         * doc/readme.gline: update to document new "!" prefix to a G-line
7890         user@host mask
7891
7892         * doc/readme.features: document GLINEMAXUSERCOUNT,
7893         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
7894
7895         * doc/example.conf: update to mention new features along with
7896         their defaults
7897
7898 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
7899
7900         * doc/example.conf: updated example.conf from Braden
7901         <dbtem@yahoo.com>
7902
7903         * include/supported.h: forward-port from pl15
7904
7905 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
7906
7907         * ircd/whocmds.c: include ircd_policy.h and implement
7908         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
7909
7910         * ircd/m_whois.c: forward-port of the idle-time hiding code from
7911         pl15; this also required passing parc into do_whois(), which also
7912         meant passing parc into do_wilds()--*sigh*
7913
7914         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
7915         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
7916
7917 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
7918
7919         * tools/wrapper.c: add a wrapper program that can be used to
7920         adjust file descriptor limits and root directories; program must
7921         be run as root--NOT SETUID!--and given appropriate -u arguments
7922
7923         * doc/readme.log: documentation of how to configure logging
7924
7925         * doc/readme.features: documentation of each feature (except for
7926         logging)
7927
7928 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
7929
7930         * Makefile.in (config): add a deprecation notice with a pointer to
7931         tools/transition
7932
7933         * tools/transition: shell script to convert old compile-time
7934         options into new compile-time options and appropriate F-lines
7935
7936         * tools/mkchroot: shell-script to prepare the chroot area by
7937         copying over all the necessary libraries so they can be found
7938
7939 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
7940
7941         * INSTALL: partial update of INSTALL for u2.10.11 release...
7942
7943 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
7944
7945         * ircd/table_gen.c (makeTables): finally got tired of the
7946         "overflow in implicit conversion" warning, so just got rid of it
7947         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
7948         differences in the tables generated
7949
7950 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
7951
7952         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
7953         if a client is in the STAT_CONNECTING status
7954
7955 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
7956
7957         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
7958         into sendcmdto_one(); define new sendcmdto_prio_one(), which
7959         places the message into the priority queue
7960
7961         * ircd/s_user.c (hunt_server_prio_cmd): definition of
7962         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
7963         instead of sendcmdto_one()
7964
7965         * ircd/m_settime.c: use sendcmdto_prio_one() and
7966         hunt_server_prio_cmd() to send SETTIME
7967
7968         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
7969
7970         * include/send.h: removed declaration for unused vsendcmdto_one();
7971         added a declaration for sendcmdto_prio_one()
7972
7973         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
7974         sendcmdto_prio_one()
7975
7976         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
7977         put in the server's priority queue, too...
7978
7979         * ircd/ircd.c: don't check LPATH for accessibility at all
7980
7981 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
7982
7983         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
7984         command if we're configured as a hub; send individual server flags
7985         in SERVER commands
7986
7987         * ircd/s_bsd.c (completed_connection): send a +h flag in our
7988         SERVER command if we're configured as a hub
7989
7990         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
7991         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
7992         flag for a server; +hs sets both flags; also modify CMD_SERVER
7993         format string to send the flags
7994
7995         * include/client.h: define two new flags, FLAGS_HUB and
7996         FLAGS_SERVICE to mark services and hubs as such; define testing
7997         macros, setting macros
7998
7999         * ircd/s_user.c: remove deprecated struct Gline* argument to
8000         register_user(); remove GLINE rebroadcast; do not send GLINE
8001         acknowledgement parameter to NICK; do not look for GLINE
8002         acknowledgement parameter to NICK while parsing
8003
8004         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
8005         argument to server_estab(); do not send JUPE/GLINE acknowledgement
8006         parameters for SERVER or NICK
8007
8008         * ircd/m_user.c (m_user): remove deprecated argument to
8009         register_user()
8010
8011         * ircd/m_server.c: remove deprecated argument to server_estab();
8012         remove documentation comment regarding JUPE acknowledgement
8013         parameter to SERVER; remove JUPE rebroadcast
8014
8015         * ircd/m_pong.c (mr_pong): remove deprecated argument to
8016         register_user()
8017
8018         * ircd/m_nick.c: remove documentation comment regarding GLINE
8019         acknowledgement parameter to NICK
8020
8021         * ircd/jupe.c: use user's real name in JUPE server notices if
8022         HEAD_IN_SAND_SNOTICES is defined
8023
8024         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
8025         setuid code; correct ancient DEBUG vs DEBUGMODE typo
8026
8027         * ircd/gline.c: use user's real name in GLINE server notices if
8028         HEAD_IN_SAND_SNOTICES is defined
8029
8030         * ircd/channel.c (modebuf_flush_int): make apparent source be
8031         local server, not oper's server; use user's real name in hack
8032         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
8033
8034         * include/s_user.h: remove struct Gline pre-declaration; remove
8035         deprecated struct Gline argument from register_user()
8036
8037         * include/s_serv.h: remove struct Jupe pre-declaration; remove
8038         deprecated struct Jupe argument from server_estab()
8039
8040 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
8041
8042         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
8043         changes required to control remote stats
8044
8045         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
8046         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
8047         [forward-port from pl15]
8048
8049         * ircd/m_whowas.c (m_whowas): report server name only if requester
8050         is an operator [forward-port from pl15]
8051
8052         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
8053         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
8054         and obtain the report from the user's server [forward-port from
8055         pl15]
8056
8057         * ircd/m_who.c: add missing include for ircd_policy.h
8058         [forward-port from pl15]
8059
8060         * ircd/m_version.c (m_version): require oper access for remote
8061         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8062
8063         * ircd/m_time.c (m_time): require oper access for remote /time if
8064         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8065
8066         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
8067         missing semicolon [forward-port from pl15]
8068
8069         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
8070         kills [forward-port from pl15]
8071
8072         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
8073         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8074
8075         * ircd/m_lusers.c (m_lusers): require oper access for remote
8076         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8077
8078         * ircd/m_burst.c (ms_burst): server-added bans are stored using
8079         local server name, to hide remote server names; modes also are to
8080         originate from the local server [forward-port from pl15]
8081
8082         * ircd/m_admin.c (m_admin): require oper access for remote /admin
8083         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8084
8085         * ircd/channel.c (add_banid): if a server is adding a ban, use my
8086         server name to hide the remote server's name [forward-port from
8087         pl15]
8088
8089         * ircd/Makefile.in: ran make depend
8090
8091         * include/s_stats.h: hunt_stats() has to have an extra argument to
8092         support the forward-port from pl15
8093
8094         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
8095         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
8096
8097         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
8098         forgot to check in the events branch
8099
8100 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
8101
8102         * ircd/res.c (init_resolver): don't start DNS expires with a 0
8103         relative timeout--if the server starts slow, timeouts could be
8104         messy...there's probably a better solution, but this'll do for now
8105
8106         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
8107         headers very well; include stropts.h; define an os_set_tos()
8108
8109         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
8110         os_generic.c
8111
8112         * ircd/ircd.c: if there are no C-lines, we don't want to have a
8113         timer that expires at the absolute time of 0--it kinda blocks all
8114         the other timers!
8115
8116         * ircd/engine_devpoll.c: some includes for open(); declare errcode
8117         and codesize in engine_loop()
8118
8119         * ircd/list.c (free_client): remove bogus check on timer active
8120         flag
8121
8122         * ircd/s_auth.c: pull out destruction code in
8123         auth_timeout_request() into an externally-visible
8124         destroy_auth_request(); manage cli_auth pointer in client
8125         structure; use it for an extra assertion check
8126
8127         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
8128         debugging notices to show flow when deallocating
8129         connections/clients; call destroy_auth_request() when free'ing a
8130         client that has an auth outstanding; don't free the connection if
8131         the process timer is unmarked but still active
8132
8133         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
8134         and reset it before calling the event handler for an ET_DESTROY
8135         event
8136
8137         * include/s_auth.h (destroy_auth_request): declare
8138         destroy_auth_request(), which can be used to destroy an
8139         outstanding auth request if a client socket goes away before the
8140         auth exchange is completed
8141
8142         * include/ircd_events.h: add an active flag to keep track of
8143         whether or not particular generators are active, for the
8144         convenience of functions using the API
8145
8146         * include/client.h: add a pointer for auth requests to struct
8147         Connection so we can kill outstanding auth requests if a client
8148         socket closes unexpectedly
8149
8150         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
8151         the sock or timer callback; take that into account in the assert
8152
8153         * ircd/list.c: add magic number checking and setting--magic
8154         numbers are zero'd on frees to detect double-frees; add back
8155         setting of cli_from() to 0 to break the back-link from the struct
8156         Connection (duh)
8157
8158         * ircd/ircd.c: set me's magic number correctly
8159
8160         * include/client.h: define magic numbers and accessor/verifier
8161         macros
8162
8163         * ircd/list.c: assert that dealloc_client() is called with
8164         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
8165         dealloc_client(); don't mess with cli_from(cptr)
8166
8167         * ircd/s_bsd.c: only attempt to dealloc a connection if the
8168         associated client has already been destroyed, or at least delinked
8169
8170 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
8171
8172         * ircd/list.c (free_client): only try to delete the socket when
8173         the fd hasn't already been closed, avoiding a double-free
8174
8175         * ircd/list.c (free_connection): make sure the client is really
8176         gone before doing away with the connection
8177
8178         * ircd/s_bsd.c: record that socket has been added in con_freeflag
8179         field; queue a socket_del() as soon as the socket is close()'d;
8180         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
8181         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
8182         then dealloc the connection if safe; mark socket as dead when
8183         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
8184         to client_timer_callback(); dealloc connection if safe upon
8185         ET_DESTROY event in client_timer_callback()
8186
8187         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
8188         the connection if both socket and timer have been destroyed;
8189         destroy both socket and timer explicitly and carefully
8190
8191         * include/client.h: replace the con_timer field with a
8192         con_freeflag field, to indicate what still needs freeing; define
8193         the freeflags
8194
8195         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
8196         become 0
8197
8198         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
8199         become 0
8200
8201         * ircd/s_bsd.c: add some extra assertions to try to track down a
8202         corruption problem
8203
8204         * ircd/engine_select.c (engine_loop): add an extra assert to try
8205         to track down a corruption problem
8206
8207         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
8208         track down a corruption problem
8209
8210         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
8211         to track down a corruption problem
8212
8213         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
8214         empty during processing; add an extra assert to try to track down
8215         a corruption problem
8216
8217         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
8218         entries
8219
8220 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
8221
8222         * ircd/s_bsd.c (client_sock_callback): client is no longer
8223         blocked, so we must mark it as unblocked
8224
8225         * ircd/engine_select.c: add Debug() calls galore; add handling for
8226         SS_NOTSOCK; use a dummy sock variable to keep things from
8227         disappearing on us; correct timeout calculation; update nfds for
8228         efficiency
8229
8230         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
8231         remove a spurious "if (sock)" which will always be true; update
8232         nfds for efficiency
8233
8234         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
8235         SS_NOTSOCK (just in case); correct timeout calculation
8236
8237         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
8238         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
8239
8240         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
8241         pretty-indent numbers
8242
8243         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
8244         case--it's not a socket; the check for writability is most likely
8245         not needed, but present for completeness
8246
8247 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
8248
8249         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
8250         no newline flag is set; call read_packet() when the timer expires,
8251         regardless of what's in the buffer--read_packet() should be able
8252         to deal properly
8253
8254         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
8255         sent to clients to include the client nickname (duh)
8256
8257         * ircd/ircd_events.c: don't destroy a timer if it's already marked
8258         for destruction; replace a missing ! in socket_del()
8259
8260         * ircd/engine_poll.c (engine_loop): reference a temporary variable
8261         so we don't have to worry about sockList[i] going away
8262
8263         * ircd/s_bsd.c (client_sock_callback): add Debug messages
8264
8265         * ircd/s_auth.c: add Debug messages all over the place
8266
8267         * ircd/ircd_events.c: add and edit some Debug messages; add a list
8268         of routines to convert some of the enums and flags from numbers
8269         into human-readable strings for the Debug messages
8270
8271         * ircd/engine_poll.c: hack some Debug messages to use the new name
8272         conversion routines in ircd_events.c; add an extra assert for a
8273         condition that shouldn't ever happen; apparently recv() can return
8274         EAGAIN when poll() returns readable--I wonder why...
8275
8276         * include/ircd_events.h: declare some helper routines under
8277         DEBUGMODE
8278
8279 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
8280
8281         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
8282         check
8283
8284         * ircd/s_auth.c: add more Debug messages
8285
8286         * ircd/list.c (make_client): add an extra assertion check
8287
8288         * ircd/ircd_events.c (socket_events): don't call the engine events
8289         changer if we haven't actually made any changes to the event mask
8290
8291         * ircd/uping.c: add some Debug messages
8292
8293         * ircd/s_stats.c: document new /STATS e
8294
8295         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
8296
8297         * ircd/s_bsd.c: remove static client_timer variable; in
8298         read_packet(), if there's still data in the client's recvQ after
8299         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
8300         of client_sock_callback to handle destroying the timer properly;
8301         rewrote client_timer_callback from scratch to be called on an
8302         individual client
8303
8304         * ircd/m_stats.c: add /STATS e to report the engine name
8305
8306         * ircd/list.c: deal with con_timer field in struct Connection
8307         properly; correct a core-level bug in remove_client_from_list--if
8308         the client is the only one in the list, we try to update
8309         GlobalClientList's cli_prev pointer--not good
8310
8311         * ircd/ircd.c: remove call to init_client_timer()
8312
8313         * ircd/engine_poll.c: made Debug messages more uniform by
8314         prepending "poll:" to them all; corrected an off-by-one error that
8315         caused poll_count to be 1 less than the actual count and removed
8316         my work-around; added Debug messages to indicate which socket is
8317         being checked and what the results are
8318
8319         * ircd/Makefile.in: ran a make depend
8320
8321         * include/s_bsd.h: remove init_client_timer(), since we're doing
8322         it differently now
8323
8324         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
8325         engine name
8326
8327         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
8328         reports for non-opers
8329
8330         * include/client.h: add con_timer and con_proc fields to struct
8331         Connection and define accessor macros--con_timer marks that
8332         con_proc contains a valid timer, and con_proc is used to pace user
8333         data
8334
8335         * ircd/s_bsd.c (close_connection): let free_client() destroy the
8336         socket
8337
8338         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
8339         auth has begun on a client
8340
8341         * ircd/ircd_events.c: ensure that event_execute() is called with a
8342         non-NULL event; modify event_add() macro to properly zero list
8343         bits; modify gen_dequeue() to not try to clip it out of a list
8344         it's already been clipped out of; change signal socket
8345         initialization to use state SS_NOTSOCK; permit timeout values of
8346         0 in add_timer(); add many Debug calls; change socket_del() and
8347         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
8348         timer_run() instead of GEN_DESTROY so that event_generate() will
8349         pass on the events; remove the switch and replace with a simpler
8350         if-then-else tree in timer_run(); don't allow destroyed sockets to
8351         be destroyed again, nor their states or event masks to be changed
8352
8353         * ircd/ircd.c: initialize "running" to 1
8354
8355         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
8356         messages all over the place; fix a counting problem in
8357         engine_add(); turn wait into a signed integer and set it to -1
8358         only if timer_next() returns 0; adjust wait time to be relative;
8359         don't call gen_ref_dec() if socket disappeared while we were
8360         processing it
8361
8362         * include/ircd_events.h: the pipe for signals is not a socket, so
8363         we must mark it as such--added SS_NOTSOCK for that special socket;
8364         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
8365         for the benefit of timer_run()
8366
8367         * configure.in: add --enable-pedantic and --enable-warnings to
8368         turn on (and off) -Wall -pedantic in CFLAGS
8369
8370 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
8371
8372         * ircd/s_conf.c: change "s_addr" element accesses to "address"
8373         element accesses
8374
8375         * include/s_conf.h: on some systems, "s_addr" is a macro; use
8376         "address" instead
8377
8378 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
8379
8380         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
8381         void in this file; add a missing semi-colon; declare errcode,
8382         codesize
8383
8384         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
8385
8386         * ircd/s_user.c (register_user): comment out spurious reference to
8387         nextping
8388
8389         * ircd/s_serv.c (server_estab): comment out spurious reference to
8390         nextping
8391
8392         * ircd/s_conf.c (read_configuration_file): comment out spurious
8393         reference to nextping and nextconnect
8394
8395         * ircd/s_bsd.c: comment out some spurious references to formerly
8396         global (now non-existant) variables; correct a couple of typos
8397
8398         * ircd/s_auth.c: pre-declare some functions referenced in the
8399         callback; correct a typo
8400
8401         * ircd/res.c (start_resolver): pass errno value of ENFILE
8402
8403         * ircd/listener.c (accept_connection): you know your API is messed
8404         up when...variables that shouldn't have been global crop up in
8405         other files
8406
8407         * ircd/list.c (free_client): substitution of == for =
8408
8409         * ircd/ircd_signal.c: include assert.h for assertion checking;
8410         check ev_data() to find out what signal generated event
8411
8412         * ircd/ircd_events.c: some references to the variable "timer"
8413         should have been references to the variable "ptr"
8414
8415         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
8416         ev_timer(ev) is already a timer pointer; declare codesize as a
8417         size_t to correct signedness issue; use timer_next(), not
8418         time_next()
8419
8420         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
8421         select fd out of struct pollfd in assertion checking; declare
8422         errcode and codesize; use timer_next(), not time_next()
8423
8424         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
8425         use function timer_next(), not time_next()
8426
8427         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
8428         use function timer_next(), not time_next()
8429
8430         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
8431         compiled sources; do make depend
8432
8433         * include/list.h: pre-declare struct Connection
8434
8435         * include/ircd_events.h (gen_ref_inc): cast to the right structure
8436         name
8437
8438         * include/s_auth.h: duh; missing */
8439
8440 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
8441
8442         * ircd/send.c: update write events status after sending data or
8443         accumulating data to be sent
8444
8445         * ircd/m_list.c (m_list): update write events status after
8446         canceling a running /list
8447
8448         * ircd/channel.c (list_next_channels): update write events status
8449         after listing a few channels
8450
8451         * ircd/s_bsd.c: extensive changes to update to new events model;
8452         remove on_write_unblocked() and the two implementations of
8453         read_message(), which have been deprecated by this change
8454
8455         * ircd/s_auth.c: set the socket events we're interested in for
8456         clients; simplify some logic that does the connect_nonb followed
8457         by the socket_add
8458
8459         * ircd/list.c: define free_connection() to free a connection
8460         that's become freeable once the struct Socket has been
8461         deallocated; fix up free_client() to take this new behavior into
8462         account
8463
8464         * ircd/ircd.c: call init_client_timer()
8465
8466         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
8467         to register connect-in-progress with events system; declare
8468         init_client_timer() (HACK!) to preserve rate-limiting behavior
8469
8470         * include/list.h: declare new free_connection()
8471
8472         * include/client.h: add a struct Socket to struct Connection
8473
8474 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
8475
8476         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
8477         SIGTERM into event callbacks; perform the actions in the
8478         callbacks, since they're not called in the context of the signal;
8479         set up the signal callbacks in the event engine
8480
8481         * ircd/ircd_events.c (signal_callback): we're supposed to look for
8482         a specific signal; don't generate an event if there is no signal
8483         structure for it
8484
8485         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
8486         connect_timer and ping_timer; massage try_connections() and
8487         check_pings() into timer callbacks that re-add themselves at the
8488         right time; remove ircd.c's "event_loop()"; initialize the event
8489         system and the connect_timer and ping_timer
8490
8491         * ircd/uping.c: correct a couple more typos
8492
8493         * ircd/s_auth.c: rework to use new events system
8494
8495         * ircd/os_solaris.c (os_connect_nonb): update to new interface
8496
8497         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
8498
8499         * ircd/os_linux.c (os_connect_nonb): update to new interface
8500
8501         * ircd/os_generic.c (os_connect_nonb): update to new interface
8502
8503         * ircd/os_bsd.c (os_connect_nonb): update to new interface
8504
8505         * include/s_auth.h: remove deprecated members of struct
8506         AuthRequest, replacing them with struct Socket and struct Timer
8507         structures; add flags to indicate when these structures have been
8508         released by the event system; remove the deprecated
8509         timeout_auth_queries()
8510
8511         * include/ircd_osdep.h (os_connect_nonb): connect could complete
8512         immediately, so change the interface to handle that possibility
8513
8514         * ircd/uping.c (uping_server): noticed and corrected a typo
8515
8516         * ircd/listener.c: set up to use ircd_event's struct Socket by
8517         adding an socket_add() call to inetport(), replacing
8518         free_listener() with socket_del() in close_listener(), and
8519         reworking accept_connection to be called as the callback
8520
8521         * ircd/ircd.c: add a call to IPcheck_init()
8522
8523         * ircd/IPcheck.c: remove IPcheck_expire(); rework
8524         ip_registry_expire() to be called from a timer; write
8525         IPcheck_init() to set up the expiration timer (hard-coded for a
8526         60-second expiration time)
8527
8528         * include/listener.h: add a struct Socket to the struct Listener;
8529         remove accept_connection()
8530
8531         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
8532
8533 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
8534
8535         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
8536         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
8537
8538         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
8539         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
8540
8541         * ircd/engine_poll.c: include config.h
8542
8543         * ircd/engine_kqueue.c: include config.h
8544
8545         * ircd/engine_devpoll.c: include config.h
8546
8547         * ircd/Makefile.in: include engine sources in compilation and make
8548         depend steps
8549
8550         * configure.in: add checks for enabling the /dev/poll- and
8551         kqueue-based engines
8552
8553         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
8554
8555         * ircd/Makefile.in: work in the engine sources
8556
8557 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
8558
8559         * ircd/m_settime.c: include ircd_snprintf.h
8560
8561         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
8562         parens around a construct that had both || and &&
8563
8564         * ircd/chkconf.c: #include "config.h" to get some important
8565         definitions
8566
8567         * ircd/Makefile.in: revamp ircd makefile for new build system
8568
8569         * doc/Makefile.in: revamp doc makefile for new build system
8570
8571         * config/*: Removed old build system files
8572
8573         * stamp-h.in: a stamp file
8574
8575         * install-sh: install-sh for new build system
8576
8577         * configure.in: configure.in for new build system
8578
8579         * configure: configure script for new build system (built by
8580         autoconf)
8581
8582         * config.sub: config.sub for new build system
8583
8584         * config.h.in: config.h.in for new build system (built by
8585         autoheader)
8586
8587         * config.guess: config.guess for new build system
8588
8589         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
8590         1.4)
8591
8592         * acinclude.m4: aclocal.m4 macros for new build system
8593
8594         * acconfig.h: config.h skeleton for new build system
8595
8596         * Makefile.in: modify for new build system
8597
8598 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
8599
8600         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
8601
8602         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
8603
8604         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
8605
8606 2001-05-01  Perry Lorier       <Isomer@coders.net>
8607         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
8608         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
8609                 when you have far far too many sockets in use.
8610         * {include,ircd}/iauth.c: A start on iauth support.
8611
8612 2001-05-01  Perry Lorier       <Isomer@coders.net>
8613         * ircd/s_err.c: Suggested wording change.
8614         * ircd/s_user.c: Users aren't target limited against +k users.
8615         * ircd/chkconf.c: Made it compile again, who knows if it works, but
8616                 now I can at least make install
8617         * various: Cleanups on m_*.c files.
8618
8619
8620 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
8621
8622         * ircd/s_misc.c (exit_client): make netsplit server notice say the
8623         right thing
8624
8625         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
8626         change to make Khaled happy...
8627
8628         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
8629         (do_whois): duh...
8630
8631 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
8632
8633         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
8634         turned up no more bugs
8635
8636         * ircd/ircd.c: use /* */ comments instead of // comments--all the
8637         world's not gcc :(
8638
8639         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
8640         // comments--all the world's not gcc :(
8641
8642         * ircd/runmalloc.c: finally garbage-collect unused file
8643
8644         * include/runmalloc.h: finally garbage-collect unused file
8645
8646         * ircd/<multiple files>: addition of '#include "config.h"' before
8647         all other includes in most .c files
8648
8649         * include/<multiple files>: remove includes of config.h, which are
8650         now going into the raw .c files
8651
8652 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
8653
8654         * ircd/m_whois.c (do_whois): display proper server name if the
8655         user is looking up himself
8656
8657         * ircd/m_who.c (m_who): disable match by servername or display of
8658         server names by non-opers
8659
8660         * include/ircd_policy.h: add define for
8661         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
8662         of CFV 165
8663
8664 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
8665
8666         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
8667         when we do a /stats k
8668
8669         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
8670         users from turning on +s and +g
8671
8672         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
8673         net.split notice
8674
8675         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
8676         /map for users
8677
8678         * ircd/m_whois.c (do_whois): pull-up of server name masking for
8679         /whois
8680
8681         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
8682         functions, pull-up
8683
8684         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
8685
8686         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
8687
8688         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
8689
8690         * ircd/channel.c (channel_modes): pull-up of channel key display
8691         as *
8692
8693         * include/ircd_policy.h: pull-up of ircd_policy.h
8694
8695         * include/client.h: pull-up of Set/ClearServNotice()
8696
8697         * ircd/gline.c (do_gline): report client name in G-line message
8698         (pull-up)
8699
8700         * ircd/s_user.c (register_user): pull-up--show IP address in some
8701         server notices dealing only with users; report which connection
8702         class has filled up
8703
8704         * ircd/s_stats.c (report_deny_list): use conf->flags &
8705         DENY_FLAGS_IP insteaf of conf->ip_kill
8706
8707         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
8708         insteaf of conf->ip_kill
8709
8710         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
8711         K-line by real name
8712
8713         * include/s_conf.h: use a flags field in struct DenyConf; define
8714         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
8715         pull-up of K-line by real name
8716
8717         * ircd/m_trace.c: pull-up of IP show for user connections
8718
8719         * doc/example.conf: pull-up of the realname K-line documentation
8720
8721         * ircd/ircd.c: forward port of pid file advisory locking mechanism
8722
8723 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
8724
8725         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
8726         all servers, rather than to only servers that have +w/+g/whatever
8727         users on them; among other things, this removes that atrocity
8728         known as sentalong[] from this function
8729
8730         * ircd/m_admin.c: must include ircd.h to declare "me"; must
8731         include hash.h to declare FindUser()
8732
8733         * ircd/m_wallusers.c: implementation of WALLUSERS
8734
8735         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
8736
8737         * ircd/m_wallops.c: only send WALLOPS to opers
8738
8739         * ircd/parse.c: add WALLUSERS command to parser table
8740
8741         * include/handlers.h: declare wallusers handlers
8742
8743         * include/msg.h: add WALLUSERS command
8744
8745         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
8746         flag, send only to appropriate opers
8747
8748 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
8749
8750         * ircd/uping.c: refit to use the new events interface
8751
8752         * ircd/res.c: refit to use the new events interface
8753
8754         * ircd/ircd_events.c: create timer_chg(), which permits a
8755         (non-periodic) timer's expire time to be modified; change the
8756         logic in timer_run() so that timers that were re-added while the
8757         event was being processed will not be destroyed prematurely
8758
8759         * include/uping.h: include the events header, declare some extra
8760         fields in struct UPing, remove timeout value, and define some
8761         flags for marking which cleanup items have yet to be done
8762
8763         * include/ircd_events.h: add a prototype for timer_chg() to change
8764         the expire time of a running timer
8765
8766 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
8767         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
8768         
8769 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
8770
8771         * config/configure.in: Add check for OpenBSD
8772
8773         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
8774         differs from generic BSD, particularly in its handling of
8775         _XOPEN_SOURCE.
8776         
8777 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
8778
8779         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
8780         have been added by a U-lined server, rather than going through the
8781         activate/deactivate logic; propagate G-line removals by U-lined
8782         servers as well
8783
8784         * ircd/gline.c: rename propagate_gline() to gline_propagate();
8785         make gline_propagate() return an int 0 (convenience return); only
8786         update lastmod in gline_activate() and gline_deactivate() if the
8787         current lastmod is non-zero, since 0 lastmod is our flag of a
8788         U-lined server having added a G-line
8789
8790         * include/gline.h (gline_propagate): exporting the G-line
8791         propagation function
8792
8793         * ircd/m_list.c (m_list): duh; permit explicit channel name
8794         specification only when /list gets two arguments ("Kev
8795         #wasteland") rather than when /list gets more than two
8796         arguments--nice braino
8797
8798 2001-01-29  Thomas Helvey <twhelvey1@home.com>
8799
8800         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
8801         unregistered clients to spam opers with protocol violation
8802         messages. Note: the bugfix may have eliminated some useful
8803         protocol violation messages.
8804         Please send protocol violation messages explicitly from the
8805         functions they are discovered in, you have much better context
8806         for the error there and it helps to document the behavior of the
8807         server. This was also a design bug in that it violated the
8808         "A function should do one thing" heuristic. Patching this one
8809         would have resulted in a continuous spawning of other bugs over
8810         the next 3 years, so I killed it. Check around for stuff this
8811         broke and readd the calls to protocol_violation in the functions
8812         that need to send the message.
8813
8814 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
8815
8816         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
8817         already existed, then the logic would (attempt to) skip it, but
8818         would not free the ban string; now the ban string is free'd and
8819         the ban count is decremented, releasing the ban for use
8820
8821         * ircd/s_user.c: make send_umode_out() take a prop argument
8822         instead of testing for the PRIV_PROPAGATE privilege itself; fix
8823         set_umode() to use this new argument, calculating it before
8824         calculating the new privileges for a -o'd user
8825
8826         * ircd/m_oper.c (m_oper): pass the new prop argument to
8827         send_umode_out()
8828
8829         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
8830         that we're not actually going to add because they already exist;
8831         test that particular bit before adding to the linked list
8832
8833         * include/s_user.h: add a prop argument to send_umode_out() to
8834         indicate whether or not to propagate the user mode
8835
8836 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
8837
8838         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
8839         it would have written; upper-bound the number to prevent overflows
8840         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
8841         into account the fact that ircd_vsnprintf() already takes the
8842         terminal \0 into account
8843
8844 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
8845
8846         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
8847         down an apparent buffer overflow; remove msgq_map(), since it's no
8848         longer used anywhere; slight tweaks to prevent off-by-one errors,
8849         but these can't explain the problems we've seen
8850
8851         * include/msgq.h: remove msgq_map(), since it's no longer used
8852         anywhere
8853
8854 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
8855
8856         * ircd/s_user.c (set_nick_name): call client_set_privs() after
8857         parsing user modes
8858
8859 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
8860
8861         * ircd/s_bsd.c (read_message): fix a typo in the select version of
8862         read_message()
8863
8864         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
8865         its argument to be an lvalue, which means we can't use
8866         whowas_clean()'s handy-dandy "return ww" feature
8867
8868         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
8869
8870 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
8871
8872         * ircd/ircd_events.c (timer_run): it's possible that the timer got
8873         deleted during the callback processing, so don't go to the bother
8874         of requeuing it if the destroy flag is set
8875
8876         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
8877         out of config.h if this is a *BSD; include errno.h (oops);
8878         decrement error count after an hour using a timer; use FD_SETSIZE
8879         constant instead of IRCD_FD_SETSIZE constant; fill in event
8880         processing code
8881
8882         * ircd/engine_poll.c: include errno.h (oops); decrement error
8883         count after an hour using a timer; fill in event processing code
8884
8885         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
8886         count after an hour using a timer; assert events filter is either
8887         EVFILT_READ or EVFILT_WRITE; fill in event processing code
8888
8889         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
8890         count after an hour using a timer; fill in event processing code
8891
8892 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
8893
8894         * ircd/client.c: fixed feattab; basically, when I changed features
8895         to use small integers specifying bit positions, instead of the
8896         bits themselves, I forgot to update feattab to not | these
8897         privileges together; also fixed a bug in the antiprivs masking
8898         loop in client_set_privs()--last index wouldn't get parsed
8899
8900 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
8901
8902         * ircd/ircd_events.c: call event_generate() with new data
8903         argument; make it set that field in struct Event; make
8904         socket_add() return the value of the eng_add callback
8905
8906         * ircd/engine_select.c: make engine_add() return a
8907         successful/unsuccessful status; add bounds-checking outside of an
8908         assert; use accessor macros; use log_write(), not the deprecated
8909         ircd_log(); add an assert to engine_loop() to double-check for
8910         data structure corruption
8911
8912         * ircd/engine_poll.c: make engine_add() return a
8913         successful/unsuccessful status; add bounds-checking outside of an
8914         assert; use accessor macros; use log_write(), not the deprecated
8915         ircd_log(); add an assert to engine_loop() to double-check for
8916         data structure corruption
8917
8918         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
8919
8920         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
8921
8922         * include/ircd_events.h: define some accessor macros; add ev_data
8923         to struct Event for certain important data--errno values, for
8924         instance; make EngineAdd callback tell us if it was successful or
8925         not; add extra argument to event_generate(); make socket_add()
8926         return the status from EngineAdd
8927
8928 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
8929
8930         * ircd/ircd_events.c: pass initializer information about how many
8931         total _filedescriptors_ may be opened at once
8932
8933         * ircd/ircd.c: use exported "running" instead of unexported
8934         thisServer.running
8935
8936         * ircd/engine_select.c: implementation of an event engine based on
8937         select()
8938
8939         * ircd/engine_poll.c: implementation of an event engine based on
8940         poll()
8941
8942         * include/ircd_events.h: pass the engine initializer an integer
8943         specifing how many _filedescriptors_ may be opened at once
8944
8945         * include/ircd.h: running has to be exported for the engine_*
8946         event loops
8947
8948 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
8949
8950         * ircd/ircd_events.c: include some needed headers; add some
8951         comments; make evEngines[] const; bundle sig_sock and sig_fd into
8952         a struct named sigInfo; rework struct evInfo to have a queue of
8953         _generators_, and only when threaded; added a gen_init() function
8954         to centralize generator initialization; fix various compile-time
8955         errors; rework event_add() for new queueing scheme and checked for
8956         compile-time errors; add casts where needed; spell evEngines[]
8957         correctly; make engine_name() return const char*
8958
8959         * include/ircd_events.h: type EventCallBack depends on struct
8960         Event, so pre-declare it; put _event_ queue into generators, and
8961         only when threaded; give engine data a union to store both ints
8962         and pointers; make engine name a const; fix gen_ref_dec() macro;
8963         make engine_name() return a const char*
8964
8965         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
8966         down with the non-static functions; modify event_execute() to use
8967         the new gen_ref_dec() to simplify code; make sure event_generate()
8968         does not generate new events for generators marked for destruction
8969
8970         * include/ircd_events.h: the engines, at least, may need to modify
8971         reference counts to keep generators from going away while
8972         something still points at them, so add reference counter
8973         manipulators and export gen_dequeue() for them
8974
8975         * ircd/ircd_events.c: set up the list of engines to try; set up
8976         the signal struct Socket; rename netInfo to evInfo; move static
8977         functions near the beginning of the file; do away with
8978         signal_signal() (since we no longer keep a signal count ourselves)
8979         and call event_generate() directly from signal_callback--also
8980         renamed some functions; allow signal_callback() to read up to
8981         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
8982         initialize the entire event system; add event_loop() to call the
8983         engine's event loop; initialize new struct GenHeader member,
8984         gh_engdata; remove timer_next(); add socket_add() function to add
8985         a socket; add socket_del() to mark a socket for deletion; add
8986         socket_state() to transition a socket between states; add
8987         socket_events() to set what events we're interested in on the
8988         socket; add engine_name() to retrieve event engine's name
8989
8990         * include/ircd_events.h: add engine data field to struct
8991         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
8992         note about states vs s_events; remove signal count; fold union
8993         Generator back into struct Event; remove count members from struct
8994         Generators; redefine engine callbacks to not take a struct
8995         Engine*; add explanatory comments to callback definitions; add
8996         some engine callbacks to handle operations; remove struct Engine
8997         flag member--can detect single flag from eng_signal member; add
8998         event_init(), event_loop(), engine_name(), and the socket_*()
8999         functions; make timer_next() a macro to avoid a function call
9000
9001 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
9002
9003         * include/ircd_events.h: rename to ircd_events.h, since it handles
9004         events, not just networking stuff; add signal support; more
9005         structural rearrangement
9006
9007         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
9008         events, not just networking stuff; add signal support; more
9009         structural rearrangement
9010
9011 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
9012
9013         * ircd/ircd_network.c: implement timer API; add reference counts
9014         appropriately
9015
9016         * include/ircd_network.h: firm up some pieces of the interface;
9017         split out members everything has into a separate structure; add
9018         reference counts; add timer API
9019
9020 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
9021
9022         * ircd/ircd_network.c: static data and event manipulation
9023         functions for new event processing system
9024
9025         * include/ircd_network.h: data structures for new event processing
9026         system
9027
9028 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
9029
9030         * ircd/whowas.c: Completely re-did the old allocation scheme by
9031         turning it into a linked list, permitting the
9032         NICKNAMEHISTORYLENGTH feature to be changed on the fly
9033
9034         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
9035         feature instead of old #define
9036
9037         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
9038         integer feature with a notify callback (whowas_realloc)
9039
9040         * ircd/client.c (client_set_privs): second memset was supposed to
9041         be over antiprivs, not privs; thanks, Chris Behrens
9042         <cbehrens@xo.com> for pointing that out...
9043
9044         * include/whowas.h: new elements for an extra linked list in
9045         struct Whowas; a notify function for feature value changes
9046
9047         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
9048
9049         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
9050
9051 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
9052
9053         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
9054         compile-time option--now in features subsystem
9055
9056         * ircd/motd.c (motd_init): rework motd_init() to be called as the
9057         notify function for MPATH and RPATH features (should probably
9058         split it up a bit, though...)
9059
9060         * ircd/m_privs.c (mo_privs): if called with no parameters, return
9061         privs of the caller, rather than an error
9062
9063         * ircd/m_list.c: pull usage message into its own function; pull
9064         list parameter processing into its own function that does not
9065         modify the contents of the parameter; add list_set_default() to
9066         set the default list parameter (uses the notify hook); rework
9067         m_list() to make use of these functions; removed dead code
9068
9069         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
9070         we have no notify handler
9071
9072         * ircd/ircd_features.c: add notify callback for notification of
9073         value changes; give mark callback an int return value to indicate
9074         whether or not to call the notify callback; fix up feature macros
9075         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
9076         string handling in feature_set() to deal with def_str being a null
9077         pointer; wrote feature_init() to set up all defaults appropriately
9078
9079         * ircd/ircd.c (main): call feature_init() instead of
9080         feature_mark(), to avoid calling notify functions while setting up
9081         defaults
9082
9083         * ircd/client.c: updated to deal with new privileges structure
9084
9085         * ircd/class.c: updated so init_class() can be called should one
9086         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
9087         DEFAULTMAXSENDQLENGTH be changed
9088
9089         * include/ircd_log.h: log_feature_mark() updated to fit with new
9090         API changes
9091
9092         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
9093         feature_init() function (found necessary since adding the notify
9094         stuff and notifying motd.c during start-up...before we defined
9095         RPATH!)
9096
9097         * include/client.h: move privs around to enable addition of more
9098         bits if necessary; based on the FD_* macros
9099
9100         * include/channel.h: declare list_set_default (actually located in
9101         m_list.c *blanche*)
9102
9103         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
9104         AVBANLEN*MAXSILES) from features subsystem
9105
9106         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
9107         anything anymore
9108
9109         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
9110         the features subsystem
9111
9112         * ircd/s_auth.c (start_auth): NODNS migrated to the features
9113         subsystem
9114
9115         * ircd/random.c: created random_seed_set() function to set seed
9116         value, along with some stuff to make ircrandom() a little more
9117         random--state preserving, xor of time instead of direct usage,
9118         etc.; it's still a pseudo-random number generator, though, and
9119         hopefully I haven't broken the randomness
9120
9121         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
9122
9123         * ircd/m_join.c: use features interface to retrieve
9124         MAXCHANNELSPERUSER
9125
9126         * ircd/ircd_features.c: add NODISP flag for super-secret features;
9127         add a whole bunch of new features migrated over from make config
9128
9129         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
9130         CONNECTTIMEOUT, and TIMESEC
9131
9132         * ircd/client.c (client_get_ping): use features interface to
9133         retrieve PINGFREQUENCY
9134
9135         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
9136         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
9137
9138         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
9139         features subsystem, we have to add something explicit
9140
9141         * ircd/channel.c: use features interface to retrieve
9142         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
9143         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
9144         and AVBANLEN
9145
9146         * ircd/Makefile.in: run make depend
9147
9148         * include/supported.h (FEATURESVALUES): update to reference
9149         feature settings
9150
9151         * include/random.h: add prototype for random_seed_set
9152
9153         * include/ircd_features.h: add several more features
9154
9155         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
9156         subsystem
9157
9158         * config/config-sh.in: feature-ized some more stuff
9159
9160         * include/motd.h: some new elements in motd.h for motd.c changes
9161
9162         * ircd/motd.c: motd_cache() now searches a list of already cached
9163         MOTD files; saves us from having duplicate caches in memory if
9164         there are two identical T-lines for two different sites...
9165
9166 2001-01-02  Perry Lorier <isomer@coders.net>
9167         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
9168         Amarande.
9169
9170 2001-01-02  Perry Lorier <isomer@coders.net>
9171         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
9172         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
9173                 to guppy for noticing, and hektik for providing the fix.
9174         * misc others: Minor cleanups, added more protocol_violations, ripped
9175                 out more P09 stuffs, bit more protocol neg stuff.
9176
9177 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
9178
9179         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
9180         space (*sigh* stupid clients...)
9181
9182         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
9183         ircd_features.[ch]
9184
9185         * ircd/s_err.c: get rid of GODMODE conditionals
9186
9187         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
9188         calls into the features subsystem for various serveropts
9189         characters
9190
9191         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
9192
9193         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
9194         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
9195         NOFLOWCONTROL conditional
9196
9197         * ircd/s_auth.c: use features subsystem to determine value of
9198         KILL_IPMISMATCH
9199
9200         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
9201         features subsystem to determine the setting of IDLE_FROM_MSG
9202
9203         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
9204
9205         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
9206         use features subsystem to get motd file names
9207
9208         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
9209         subsystem
9210
9211         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
9212         us no good; use features subsystem to figure out if we need to do
9213         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
9214         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
9215         features subsystem
9216
9217         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
9218
9219         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
9220         subsystem
9221
9222         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
9223
9224         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
9225         from getting marked if they were already set to something...
9226
9227         * ircd/ircd_features.c: add a flag to indicates read-only access;
9228         add several new features that used to be compile-time selected
9229
9230         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
9231         access to motd files (what the heck?); make sure to initialize the
9232         feature subsystem before trying to write the config file
9233
9234         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
9235         use feature_bool() to figure out if we're using the FERGUSON
9236         flusher
9237
9238         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
9239         remove the clause that creates empty files of that name; also ran
9240         make depend
9241
9242         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
9243         there is no easy way to bounds-check it at present
9244
9245         * include/querycmds.h: make sure ircd_features.h is included; use
9246         feature_str(FEAT_DOMAINNAME) in calls to match()
9247
9248         * include/ircd_features.h: many new features that used to be
9249         compile-time selected
9250
9251         * config/config-sh.in: add * to DOMAINNAME; try also using first
9252         argument to search in /etc/resolv.conf; removed many compile-time
9253         options that now can be configured through the features system
9254
9255 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
9256
9257         * doc/api/log.txt: how to use the logging API
9258
9259         * doc/api/features.txt: how to use the features API
9260
9261         * doc/api/api.txt: how to write API documentation
9262
9263         * include/ircd_features.h: rearranged a couple of features for
9264         neatness purposes
9265
9266         * ircd/ircd_features.c: cleaned up the macros some; rearranged
9267         some code to all go into the switch; rearranged a couple of
9268         features for neatness purposes
9269
9270 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9271         * ircd/os_bsd.c: Added os_set_tos for BSD users.
9272
9273 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
9274
9275         * ircd/ircd_features.c: Isomer almost got it right; you need to
9276         use F_I(), since it's an integer value, not a boolean value.  The
9277         asserts in feature_int would catch you out...  Also made the F_*
9278         macros take flags
9279
9280         * ircd/s_err.c: define RPL_PRIVS reply
9281
9282         * ircd/parse.c: put new PRIVS command into command table
9283
9284         * ircd/m_privs.c (mo_privs): message handler to report operator
9285         privileges
9286
9287         * ircd/ircd_features.c: declare new features OPER_SET and
9288         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
9289         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
9290
9291         * ircd/client.c: simplify client_set_privs() with a table that
9292         defines what features to test for; add new client_report_privs()
9293
9294         * ircd/Makefile.in: compile new m_privs.c; run make depend
9295
9296         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
9297         an operator's privileges
9298
9299         * include/msg.h: define new command: PRIVS
9300
9301         * include/ircd_features.h: create new features OPER_SET and
9302         LOCOP_SET for controlling access to /set
9303
9304         * include/handlers.h (mo_privs): declare message handler for
9305         reporting oper privileges
9306
9307         * include/client.h (client_report_privs): declare function to
9308         report what privileges an oper has
9309
9310         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
9311         report that a user is an oper if the oper doing the /whois had
9312         PRIV_SEE_OPERS
9313
9314 2000-12-17  Isomer <Isomer@coders.net>
9315         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
9316
9317 2000-12-17  Isomer <Isomer@coders.net>
9318         * ircd/os_linux.c: add TOS stuffs
9319
9320         * ircd/listener.c: add TOS stuffs
9321
9322 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
9323
9324         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
9325         to indicate a user is an oper
9326
9327         * ircd/s_user.c: clear privileges setting when deopping; don't
9328         propagate +o unless user has PRIV_PROPAGATE privilege
9329
9330         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
9331         function and replaced how the server option string is generated
9332
9333         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
9334
9335         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
9336         not to indicate the user is an operator
9337
9338         * ircd/m_who.c: use HasPriv to determine whether or not a user
9339         should be displayed in the list of opers
9340
9341         * ircd/m_version.c: call debug_serveropts() to get server option
9342         string
9343
9344         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
9345         whether or not to show oper status
9346
9347         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
9348         whether or not to show oper status
9349
9350         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
9351         checks with HasPriv check; remove dead code
9352
9353         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
9354         checks with HasPriv check
9355
9356         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
9357         use feature_bool to check if disabled
9358
9359         * ircd/m_oper.c (m_oper): set oper priviliges
9360
9361         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
9362         check
9363
9364         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
9365         can kill
9366
9367         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
9368         check
9369
9370         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
9371         use feature_bool to check if disabled
9372
9373         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
9374         #ifdef conditional with a HasPriv check
9375
9376         * ircd/m_gline.c (mo_gline): rework permissions checking
9377         structure; use feature_bool to check if any part is disabled
9378
9379         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
9380         check; remove dead code
9381
9382         * ircd/m_clearmode.c: use feature_bool() to detect if we're
9383         disabled; use HasPriv to figure out what we're permitted to do;
9384         only allow clearmode on moded channels
9385
9386         * ircd/ircd_features.c: define various features; use HasPriv to
9387         verify permissions to set/reset
9388
9389         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
9390         conditionals
9391
9392         * ircd/client.c (client_set_privs): function to set an oper's
9393         privileges
9394
9395         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
9396
9397         * include/whocmds.h: deconditionalize several macros and
9398         substitute appropriate calls to HasPriv()
9399
9400         * include/s_debug.h: get rid of global serveropts[]; define new
9401         function debug_serveropts() to build that string on the fly
9402
9403         * include/ircd_features.h: define some features
9404
9405         * include/client.h: add privs member to struct Connection; define
9406         various priviledges
9407
9408         * include/channel.h: no longer using IsOperOnLocalChannel; remove
9409         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
9410
9411         * doc/Configure.help: remove help information for deprecated
9412         options
9413
9414         * config/config-sh.in: remove certain deprecated options having to
9415         do with what opers can and cannot do--first stage in moving
9416         compile-time constants into the .conf
9417
9418 2000-12-16  Isomer <Isomer@coders.net>
9419         * ircd/parse.c: detect if the prefix is missing and try and recover
9420         instead of coring.
9421
9422 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
9423
9424         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
9425         code that would sometimes result in the log file not being
9426         reopened--which meant that a user could connect and get the
9427         logging output--oops
9428
9429         * ircd/Makefile.in: run make depend...
9430
9431         * ircd/s_stats.c: get rid of report_feature_list()
9432
9433         * ircd/s_err.c: add the 'bad value' error message, shift error
9434         messages over somewhat
9435
9436         * ircd/s_debug.c (debug_init): call log_debug_init with the
9437         use_tty flag
9438
9439         * ircd/s_conf.c (read_configuration_file): unmark features before
9440         reading the config file, then reset unmarked features after
9441         reading the config file
9442
9443         * ircd/m_stats.c: use feature_report() instead of
9444         report_feature_list()
9445
9446         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
9447         special 'mark' flags and use them; add the stuff needed by the
9448         features API
9449
9450         * ircd/ircd_features.c: rework the features API and add gobs of
9451         comments to try to explain what some of these complex functions
9452         are actually doing
9453
9454         * include/s_stats.h: get rid of report_feature_list(); use
9455         feature_report() instead
9456
9457         * include/numeric.h: added a new error message and shifted old
9458         values over some--this is, after all, an alpha
9459
9460         * include/ircd_log.h: log_debug_init now takes an integer to tell
9461         it if it should be using the tty; added a couple of functions
9462         required by the features API
9463
9464         * include/ircd_features.h: add an enum and some more functions to
9465         flesh out the feature API--it should now be possible to put all
9466         those compile-time constants in the config file!
9467
9468         * ircd/send.c: got the direction of the assert incorrect...
9469
9470         * ircd/send.c: implement the efficiency of flush_connections by
9471         creating a linked list of struct Connection's with queued data;
9472         also get rid of flush_sendq_except and make sure to yank
9473         connections out of the list when their sendQs become empty (notice
9474         the assertion in flush_connections!)
9475
9476         * ircd/s_bsd.c (close_connection): must yank the Connection out of
9477         the sendq list
9478
9479         * ircd/list.c (dealloc_connection): must yank the Connection out
9480         of the sendq list
9481
9482         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
9483         deprecated flush_sendq_except
9484
9485         * ircd/client.c: define a couple new helper functions for sendq
9486         threading--this will make the flush_connections function in send.c
9487         considerably more efficient by creating a linked list of
9488         Connections that have queued data to send
9489
9490         * include/send.h: remove flush_sendq_except, as it's not used
9491         anymore
9492
9493         * include/client.h: declare a couple new helper functions for the
9494         sendq threading system
9495
9496 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
9497
9498         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
9499         parse all arguments
9500
9501         * ircd/s_debug.c (count_memory): modify to report for clients and
9502         connections, not local clients and remote clients
9503
9504         * ircd/list.c: fiddle with the client-fiddling functions to take
9505         into account the divorce of struct Connection from struct Client
9506
9507         * ircd/ircd.c: define a struct Connection for me, initialize it,
9508         and link it into the right place (ewww, globals!)
9509
9510         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
9511         struct Client into struct Client and struct Connection; redefine
9512         local-portion accessor macros to go through struct Client to the
9513         struct Connection; define struct Connection accessor macros
9514
9515 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
9516
9517         * ircd/whowas.c: missed a couple of accesses to a struct Client
9518
9519         * ircd/uping.c: missed a couple of accesses to a struct Client
9520
9521         * ircd/send.c: missed a couple of accesses to a struct Client
9522
9523         * ircd/s_user.c: missed a couple of accesses to a struct Client
9524
9525         * ircd/s_misc.c: missed a couple of accesses to a struct Client
9526
9527         * ircd/s_conf.c: missed a couple of accesses to a struct Client
9528
9529         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
9530
9531         * ircd/s_auth.c: missed a couple of accesses to a struct Client
9532
9533         * ircd/res.c: missed a couple of accesses to a struct Client
9534
9535         * ircd/parse.c: missed a couple of accesses to a struct Client
9536
9537         * ircd/m_whois.c: use new accessor macros for struct Client
9538
9539         * ircd/m_who.c: use new accessor macros for struct Client
9540
9541         * ircd/m_wallchops.c: use new accessor macros for struct Client
9542
9543         * ircd/m_version.c: use new accessor macros for struct Client
9544
9545         * ircd/m_userip.c: use new accessor macros for struct Client
9546
9547         * ircd/m_userhost.c: use new accessor macros for struct Client
9548
9549         * ircd/m_user.c: use new accessor macros for struct Client
9550
9551         * ircd/m_uping.c: use new accessor macros for struct Client
9552
9553         * ircd/m_trace.c: use new accessor macros for struct Client
9554
9555         * ircd/m_topic.c: use new accessor macros for struct Client
9556
9557         * ircd/m_time.c: use new accessor macros for struct Client
9558
9559         * ircd/m_stats.c: use new accessor macros for struct Client
9560
9561         * ircd/m_squit.c: use new accessor macros for struct Client
9562
9563         * ircd/m_silence.c: use new accessor macros for struct Client
9564
9565         * ircd/m_server.c: use new accessor macros for struct Client;
9566         remove dead code
9567
9568         * ircd/m_rpong.c: use new accessor macros for struct Client
9569
9570         * ircd/m_rping.c: use new accessor macros for struct Client
9571
9572         * ircd/m_quit.c: use new accessor macros for struct Client
9573
9574         * ircd/m_privmsg.c: use new accessor macros for struct Client
9575
9576         * ircd/m_pong.c: use new accessor macros for struct Client; remove
9577         dead code
9578
9579         * ircd/m_ping.c: use new accessor macros for struct Client
9580
9581         * ircd/m_pass.c: use new accessor macros for struct Client
9582
9583         * ircd/m_part.c: use new accessor macros for struct Client
9584
9585         * ircd/m_oper.c: use new accessor macros for struct Client
9586
9587         * ircd/m_notice.c: use new accessor macros for struct Client
9588
9589         * ircd/m_nick.c: use new accessor macros for struct Client
9590
9591         * ircd/m_names.c: use new accessor macros for struct Client
9592
9593         * ircd/m_mode.c: use new accessor macros for struct Client
9594
9595         * ircd/m_map.c: use new accessor macros for struct Client
9596
9597         * ircd/m_list.c: use new accessor macros for struct Client
9598
9599         * ircd/m_links.c: use new accessor macros for struct Client;
9600         remove some dead code
9601
9602         * ircd/m_kill.c: use new accessor macros for struct Client; remove
9603         some dead code
9604
9605         * ircd/m_kick.c: use new accessor macros for struct Client
9606
9607         * ircd/m_join.c: use new accessor macros for struct Client; remove
9608         some dead code
9609
9610         * ircd/m_ison.c: use new accessor macros for struct Client
9611
9612         * ircd/m_invite.c: use new accessor macros for struct Client
9613
9614         * ircd/m_info.c: use new accessor macros for struct Client
9615
9616         * ircd/m_gline.c: use new accessor macros for struct Client
9617
9618         * ircd/m_error.c: use new accessor macros for struct Client
9619
9620         * ircd/m_create.c: use new accessor macros for struct Client
9621
9622         * ircd/m_connect.c: use new accessor macros for struct Client;
9623         removed some dead code
9624
9625         * ircd/m_burst.c: use new accessor macros for struct Client
9626
9627         * ircd/m_away.c: use new accessor macros for struct Client
9628
9629         * ircd/m_admin.c: use new accessor macros for struct Client
9630
9631         * ircd/hash.c: missed a couple of accesses to a struct Client
9632
9633         * ircd/gline.c: missed a couple of accesses to a struct Client
9634
9635         * ircd/crule.c: missed a couple of accesses to a struct Client
9636
9637         * ircd/class.c: missed an access to a struct Client
9638
9639         * ircd/channel.c: missed a couple of accesses to a struct Client
9640
9641         * ircd/IPcheck.c: missed an access to a struct Client
9642
9643         * include/querycmds.h: fix a couple of stats macros to use
9644         structure accessor macros
9645
9646         * include/client.h: change structure member names to highlight any
9647         places in the code I've missed
9648
9649 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
9650
9651         * ircd/whowas.c: use new struct Client accessor macros
9652
9653         * ircd/whocmds.c: use new struct Client accessor macros
9654
9655         * ircd/send.c: use new struct Client accessor macros
9656
9657         * ircd/s_user.c: use new struct Client accessor macros; removed
9658         some dead code
9659
9660         * ircd/s_serv.c: use new struct Client accessor macros; removed
9661         some dead code
9662
9663         * ircd/s_numeric.c: use new struct Client accessor macros
9664
9665         * ircd/s_misc.c: use new struct Client accessor macros
9666
9667         * ircd/s_debug.c: use new struct Client accessor macros
9668
9669         * ircd/s_conf.c: use new struct Client accessor macros
9670
9671         * ircd/s_bsd.c: use new struct Client accessor macros
9672
9673         * ircd/s_auth.c: use new struct Client accessor macros
9674
9675         * ircd/parse.c: use new struct Client accessor macros
9676
9677         * ircd/packet.c: use new struct Client accessor macros
9678
9679         * ircd/numnicks.c: use new struct Client accessor macros
9680
9681         * ircd/motd.c: use new struct Client accessor macros
9682
9683         * ircd/listener.c: use new struct Client accessor macros
9684
9685         * ircd/list.c: use new struct Client accessor macros
9686
9687         * ircd/jupe.c: use new struct Client accessor macros
9688
9689         * ircd/ircd_snprintf.c: use new struct Client accessor macros
9690
9691         * ircd/ircd_reply.c: use new struct Client accessor macros
9692
9693         * ircd/ircd_relay.c: use new struct Client accessor macros
9694
9695         * ircd/ircd.c: use new struct Client accessor macros
9696
9697         * ircd/gline.c: catch some instances of me.<stuff> I missed
9698         previously
9699
9700         * ircd/client.c: use cli_ instead of con_
9701
9702         * ircd/class.c: use cli_ instead of con_
9703
9704         * ircd/channel.c: use cli_ instead of con_
9705
9706         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
9707         of me.<stuff> I missed previously
9708
9709         * include/client.h: use cli_ instead of con_...seemed like a good
9710         idea at the time *shrug*
9711
9712 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
9713
9714         * ircd/hash.c: use struct Client accessor macros
9715
9716         * ircd/gline.c: use struct Client accessor macros
9717
9718         * ircd/crule.c: use struct Client accessor macros
9719
9720         * ircd/client.c: use struct Client accessor macros; remove some
9721         dead code
9722
9723         * ircd/class.c: use struct Client accessor macros
9724
9725         * ircd/channel.c: use struct Client accessor macros; remove some
9726         dead code
9727
9728         * ircd/IPcheck.c: use struct Client accessor macros
9729
9730         * include/numnicks.h: use struct Client accessor macros
9731
9732         * include/client.h: first step to divorcing struct Client and
9733         struct Connection--define accessor macros and use them
9734
9735         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
9736         uplink would remove them.  This is because the removal protocol
9737         message wasn't being sent to the uplinks.  This is fixed by fixing
9738         propagate_gline() to send the proper number of arguments depending
9739         on whether or not we're adding or deleting the Uworld gline, and
9740         by having gline_deactivate() make sure to turn off the active bit
9741         and call propagate_gline() if it's a Uworld gline
9742
9743 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
9744
9745         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
9746
9747         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
9748         anywhere intelligent...
9749
9750 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
9751
9752         * ircd/send.c (send_queued): call deliver_it with appropriate
9753         arguments
9754
9755         * ircd/s_serv.c: reorder a couple of headers--cosmetic
9756
9757         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
9758         MsgQ
9759
9760         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
9761         with appropriate iovec
9762
9763         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
9764         with appropriate iovec
9765
9766         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
9767         with appropriate iovec
9768
9769         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
9770         appropriate iovec
9771
9772         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
9773         exactly how much we're trying to write out to the fd
9774
9775         * include/s_bsd.h: make deliver_it take a struct MsgQ
9776
9777         * include/msgq.h: add a len_p argument to msgq_mapiov to help
9778         detect short writes that indicate possible socket blocking
9779
9780         * include/ircd_osdep.h: declare os_sendv_nonb()
9781
9782         * ircd/channel.c (modebuf_mode): don't add empty modes...
9783
9784 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
9785
9786         * include/send.h: add prio argument to send_buffer to select
9787         between normal and priority queues
9788
9789         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
9790         call
9791
9792         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
9793
9794         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
9795         call
9796
9797         * ircd/channel.c (send_channel_modes): add prio argument to
9798         send_buffer call
9799
9800         * ircd/send.c (send_buffer): add a prio argument to select the
9801         priority queue; update send.c functions to use it
9802
9803         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
9804         msgq_add; add a prio argument to msgq_add to select the priority
9805         queue
9806
9807         * include/msgq.h: remove msgq_prio; add a prio argument to
9808         msgq_add
9809
9810         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
9811         using msgq functions instead of dbuf functions; remove old, dead
9812         sendto_* functions; redo send_buffer to take a struct MsgBuf;
9813         rework sendcmdto_* functions to make use of the new struct MsgBuf
9814
9815         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
9816         make appropriate use of struct MsgBuf
9817
9818         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
9819         system and report it
9820
9821         * ircd/s_conf.c (read_configuration_file): use
9822         sendto_opmask_butone instead of the now dead sendto_op_mask
9823
9824         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
9825         calls on sendQ
9826
9827         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
9828
9829         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
9830         msgq_clean
9831
9832         * ircd/m_version.c: fix spelling in comments marking dead code
9833
9834         * ircd/m_userip.c (userip_formatter): restructure to make use of
9835         struct MsgBuf
9836
9837         * ircd/m_userhost.c (userhost_formatter): restructure to make use
9838         of struct MsgBuf
9839
9840         * ircd/m_stats.c: use MsgQLength on a sendQ
9841
9842         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
9843         sendQ; mark a piece of dead code
9844
9845         * ircd/m_names.c: use send_reply instead of sendto_one
9846
9847         * ircd/m_mode.c: use new mode; remove old dead code
9848
9849         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
9850
9851         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
9852         dead code
9853
9854         * ircd/listener.c (accept_connection): use sendto_opmask_butone
9855         instead of sendto_op_mask
9856
9857         * ircd/list.c (free_client): use MsgQClear to clear sendQ
9858
9859         * ircd/ircd_reply.c: remove send_error_to_client; restructure
9860         send_reply to make use of struct MsgBuf
9861
9862         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
9863         since its no longer used (at least currently)
9864
9865         * ircd/channel.c: restructure send_channel_modes to make use of
9866         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
9867         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
9868
9869         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
9870
9871         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
9872
9873         * include/send.h: send_buffer now takes a struct MsgBuf * instead
9874         of a char *; flush_sendq_except now takes no arguments, as sendq
9875         flushing currently only happens in dbuf.h and sendQ is a struct
9876         MsgQ; remove prototypes for a lot of old sendto_* functions that
9877         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
9878         no longer needed, and the latter is identical to BUFSIZE in
9879         ircd_defs.h
9880
9881         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
9882         instead of a char *; also make it return void, instead of char *
9883
9884         * include/msgq.h: add msgq_append and msgq_bufleft functions
9885
9886         * include/client.h: use a struct MsgQ instead of a struct DBuf for
9887         sendq
9888
9889         * doc/Configure.help: Remove help for compile-time options that
9890         have gone away
9891
9892         * config/config-sh.in: remove CONFIG_NEWMODE
9893
9894         * ircd/m_server.c (mr_server): don't send server IPs in any server
9895         notices
9896
9897         * ircd/msgq.c (msgq_vmake): add \r\n to messages
9898
9899 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
9900
9901         * include/msgq.h: declare the MsgQ API
9902
9903         * ircd/msgq.c: implementation of new MsgQ system
9904
9905 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
9906
9907         * ircd/ircd_features.c: #include was supposed to be for
9908           ircd_features.h, not features.h--missed when I had to do a
9909           rename because of namespace collision
9910
9911 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9912         * ircd/m_topic.c: Added missing braces that caused all remote
9913           topics to be ignored.
9914
9915 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
9916
9917         * ircd/m_create.c: I'm tired of the exit_client warning :)
9918         (ms_create): discovered that exit_client() was being called with
9919         too few arguments
9920
9921         * ircd/s_misc.c (exit_client): remove all dependance on
9922         FNAME_USERLOG, since that's now gone; log only to LS_USER
9923
9924         * ircd/s_debug.c: USE_SYSLOG no longer means anything
9925
9926         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
9927         log to LS_OPER
9928
9929         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
9930
9931         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
9932
9933         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
9934         the same purpose as LS_USER and LS_OPER
9935
9936         * config/config-sh.in: remove no longer relevant log config
9937         variables
9938
9939         * ircd/uping.c (uping_init): use log_write instead of ircd_log
9940
9941         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
9942
9943         * ircd/s_conf.c: use log_write instead of ircd_log
9944
9945         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
9946
9947         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
9948         ircd_log
9949
9950         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
9951
9952         * ircd/m_who.c: use log_write instead of write_log; no longer
9953         conditionalize on WPATH; mark dead ircd_log calls
9954
9955         * ircd/m_uping.c: mark dead ircd_log call
9956
9957         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
9958
9959         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
9960         ircd_log calls
9961
9962         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
9963
9964         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
9965         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
9966
9967         * ircd/m_kill.c: mark dead ircd_log calls
9968
9969         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
9970         ircd_log
9971
9972         * ircd/m_clearmode.c: use log_write instead of write_log; no
9973         longer conditionalize on OPATH
9974
9975         * ircd/jupe.c: use log_write instead of write_log; no longer
9976         conditionalize on JPATH
9977
9978         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
9979         function; fix a couple of bugs
9980
9981         * ircd/ircd_alloc.c: fixed a comment
9982
9983         * ircd/ircd.c: use log_write instead of ircd_log; fold server
9984         notice generation in a couple of cases
9985
9986         * ircd/gline.c: use log_write instead of write_log; no longer
9987         conditionalize on GPATH
9988
9989         * ircd/channel.c (modebuf_flush_int): use log_write instead of
9990         write_log; no longer conditionalize on OPATH
9991
9992         * ircd/Makefile.in: run make depend, since dependencies have
9993         changed
9994
9995         * doc/example.conf: add system USER to documentation
9996
9997         * include/ircd_log.h: add system USER; remove old ircd_log()
9998         declarations
9999
10000 2000-12-04  Isomer <isomer@coders.net>
10001         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
10002         'end_of_names' reply when done.
10003         * ircd/m_join.c: use NAMES_EON as mentioned above
10004
10005 2000-12-01  net  <simms@LUCIDA.QC.CA>
10006
10007         * ircd/motd.c: add a freelist for struct Motds
10008
10009 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
10010
10011         * ircd/s_stats.c (report_feature_list): report features--only
10012         local opers can see logging configuration, since it doesn't really
10013         mean anything to users
10014
10015         * ircd/s_err.c: add reply messages for new feature subsystem
10016
10017         * ircd/s_conf.c: add F lines to .conf
10018
10019         * ircd/parse.c: add the message descriptions for /set, /reset, and
10020         /get
10021
10022         * ircd/m_stats.c: add /stats f
10023
10024         * ircd/m_set.c (mo_set): implement /set
10025
10026         * ircd/m_reset.c (mo_reset): implement /reset
10027
10028         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
10029         reopens log files (for log file rotation)
10030
10031         * ircd/m_get.c (mo_get): implement /get
10032
10033         * ircd/ircd_log.c: use int instead of void return value; add
10034         log_report_features() and log_canon(); fix a function that
10035         disappears if DEBUGMODE not #define'd
10036
10037         * ircd/ircd_features.c: functions to manipulate feature settings
10038         either from the config file or with the new /set, /reset, and /get
10039         commands
10040
10041         * ircd/Makefile.in: add new .c files, run make depend
10042
10043         * include/s_stats.h: declare report_feature_list() (/stats f
10044         handler)
10045
10046         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
10047         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
10048         reply numerics
10049
10050         * include/msg.h: add defines for SET, RESET, and GET
10051
10052         * include/ircd_log.h: add a function to canonicalize subsystem
10053         names; change some void return values to int
10054
10055         * include/ircd_features.h: new features subsystem handles all the
10056         manipulation of special features, like log files
10057
10058         * include/handlers.h: declare new mo_{s,res,g}et message handlers
10059         for fiddling with features run-time
10060
10061         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
10062         seemed like a good idea at the time...
10063
10064         * doc/example.conf: document new F lines
10065
10066 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
10067
10068         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
10069         new logging functions, which have special support for the debug
10070         log; added loop detection to vdebug(), so that I can
10071         sendto_opmask_butone() from log_vwrite() without incurring another
10072         call to vdebug()
10073
10074         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
10075         this allows log file rotations
10076
10077         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
10078
10079         * ircd/ircd_log.c: much more work fleshing out the interface;
10080         removed old interface; included backwards-compat ircd_log()
10081         function that logs to subsystem LS_OLDLOG
10082
10083         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
10084         functions
10085
10086         * include/ircd_log.h: include stdarg.h for va_list; move ordering
10087         warning to top of file; fill out LogSys enum; declare new
10088         log_debug_init(), log_vwrite(), log_write_kill(), and
10089         log_[sg]et_*() functions; add flags argument to log_write();
10090         defined flags to inhibit various logging actions
10091
10092         * include/client.h: added support for new SNO_DEBUG, enabled only
10093         if DEBUGMODE is defined
10094
10095 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
10096
10097         * ircd/ircd_log.c: make sure the various LOG_* constants are
10098         defined (probably not needed, since #include <syslog.h> isn't
10099         conditional); various static data needed for the new logging
10100         functions; definitions of new logging functions
10101
10102         * include/ircd_log.h: new LogSys enum, declarations for part of
10103         new logging API
10104
10105         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
10106         which was of course stupid; switched to using switch/case in
10107         initialization in motd_create(); zero the MotdList.other pointer
10108         from motd_clear()
10109
10110         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
10111         or we overwrite init_conf()'s hard work with respect to T-lines
10112
10113 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
10114
10115         * ircd/s_stats.c: comment out report_motd_list and include a
10116         reference to motd_report()
10117
10118         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
10119         motd_add() from the conf parser; call motd_clear() from the rehash
10120         routine; remove the no longer needed memory clearing and reloading
10121         stuff from the rehash service routine
10122
10123         * ircd/motd.c: loads new API, including static internal functions
10124         to do allocation/deallocation, etc.
10125
10126         * ircd/m_stats.c: use new motd_report() instead of
10127         report_motd_list()
10128
10129         * ircd/m_motd.c: use new syntax for motd_send()
10130
10131         * ircd/ircd.c: use new motd_init() function
10132
10133         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
10134         Makefile.(in); also ran make depend
10135
10136         * include/motd.h: don't need config.h, but now do need time.h;
10137         define new structures and constants; redefine old API and define
10138         new functions
10139
10140 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
10141
10142         * ircd/s_user.c (register_user): use motd_signon() instead of
10143         calling m_motd; much cleaner this way
10144
10145         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
10146         less of a crock
10147
10148         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
10149         functions
10150
10151         * include/motd.h: define new MOTD API stuff
10152
10153 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
10154
10155         * ircd/ircd_reply.c (protocol_violation): rewrite
10156         protocol_violation so it'll actually work
10157
10158         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
10159         the client's real name in there.
10160
10161         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
10162         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
10163         gets called from register_user with a NULL sptr.  This is probably
10164         a design problem, but this bandaid will do for now...
10165
10166 2000-11-19  Isomer <isomer@coders.net>
10167         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
10168         to problems in the server<->server protocol.
10169
10170         * ircd/m_connect.c: allow remote connects with a port of '0'
10171         meaning to use the port in the config file.
10172
10173         * ircd/m_create.c: Enable hacking protection, lets see how far we
10174         get.
10175
10176         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
10177         clients, so we don't any more.
10178
10179         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
10180         and the user@host is displayed of the victim.
10181
10182         * ircd/m_map.c: reloaded 'dump_map'.
10183
10184         * ircd/m_trace.c: allow per class T:
10185
10186         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
10187
10188 2000-11-17  Isomer <isomer@coders.net>
10189
10190         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
10191         that were the *same* instead of different.  Oh the embarrasment!
10192
10193         * ircd/IPcheck.c: Merged net's fix.
10194
10195 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
10196
10197         * ircd/m_whois.c: remove compiler warning by adding a newline to
10198         end of file
10199
10200         * ircd/m_names.c: moved the flags up to s_user.h
10201
10202         * ircd/m_join.c: call do_names instead of m_names; restructure
10203         ms_join to never transmute a JOIN into a CREATE, but use the TS in
10204         the JOIN (if present) to timestamp the channel
10205
10206         * ircd/channel.c: send JOINs individually, instead of grouping
10207         them, so that we can send the channel's creation time
10208
10209         * include/s_user.h: declare do_names()
10210
10211 2000-10-30  Isomer <isomer@coders.net>
10212         * ircd/m_oper.c: Fixed warning
10213
10214 2000-10-30  Isomer <isomer@coders.net>
10215         * ircd/m_oper.c: Fixed over agressive cut and no paste
10216
10217 2000-10-30  Isomer <isomer@coders.net>
10218
10219         * ircd/m_topic.c: Restructured, fixed bug where topics on local
10220         channels are propergated (I forget who pointed this out to me, but
10221         thanks anyway).  Also to save bandwidth don't send the topic to
10222         users if the topic is already the same on the server (but still
10223         propergate to other servers).  X/W's "autotopic" feature must
10224         chew a lot of bandwidth, hopefully this will help reduce this.
10225
10226         * doc/rfc1459.rfc: Updated documentation on /topic.
10227
10228         * ircd/listener.c: snotice warnings about failed accept()'s
10229         potentially warning admins that they're running out of fd's.
10230
10231         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
10232         people in a class in /stats y
10233
10234         * ircd/m_create.c: Checks for timewarp hacking and squit's
10235         evil servers. (currently disabled)
10236         
10237
10238 2000-10-30  net <simms@lucida.qc.ca>
10239         
10240         * ircd/gline.c: Fixed various bugs Isomer left behind.
10241
10242 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
10243
10244         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
10245         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
10246
10247 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
10248
10249         * ircd/channel.c: ok, now last mode rules; mode +ps will always
10250         result in +s (and won't send a mode if the channel is already +s);
10251         mode +sp will always result in +p; -n+n on a +n channel results in
10252         no mode change; -n+n on a -n channel results in a +n mode change;
10253         etc.
10254
10255 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
10256
10257         * ircd/channel.c: add "add" and "del" elements to ParseState to
10258         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
10259         mode_parse_limit that caused it to clear all channel modes
10260         prematurely; restructure mode_parse_mode to avoid calling
10261         modebuf_mode too early (ties in with first mentioned change);
10262         better logic for +p/+s mutual exclusivity; initialize "add" and
10263         "del" elements in mode_parse; send simple modes down to
10264         modebuf_mode after the loop in mode_parse
10265
10266 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10267         * ircd/m_names.c: Fixed a non-lethal logic error that 
10268         triggers an assert() in find_member_link while debugging.
10269         (Spotted by Maniac-).
10270 2000-09-19  Thomas Helvey <helveytw@home.com>
10271         * ircd/s_conf.c: move K:lines to their own list and data
10272         structures, add supporting code.
10273         * ircd/m_stats.c: cleanup stats processing a bit move
10274         kline listing code to a new function, haven't figured
10275         out where it goes yet tho'
10276         * ircd/s_stats.c: added K:line bulk lister
10277         * include/s_conf.h: added new DenyConf struct
10278         * *[ch]: fixeup code that depended on changes
10279
10280 2000-09-17  Thomas Helvey <helveytw@home.com>
10281         * ircd/class.c: encapsulate class list
10282         * include/class.h: clean up classes
10283         * * fixup code that depended on changes
10284
10285 2000-09-17  Thomas Helvey <helveytw@home.com>
10286         * ircd/s_conf.c: add me to local conf
10287         * include/s_conf.h: move CONF_ME macro to chkconf.c
10288         * ircd/s_bsd.c: cleanup initialization, allow virtual host
10289         to be changed by rehash
10290
10291 2000-09-17  Thomas Helvey <helveytw@home.com>
10292         * include/class.h: add missing prototype
10293         * ircd/class.c: make argument to get_conf_class const
10294
10295 2000-09-17  Thomas Helvey <helveytw@home.com>
10296         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
10297         merge conflicts.
10298         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
10299         merge conflicts
10300
10301 2000-09-16  Thomas Helvey <helveytw@home.com>
10302         * ircd/s_conf.c: add code for server struct
10303         * ircd/client.c: copy of class.c sort of, new file for client
10304         specific operations, will move things here as appropriate,
10305         currently only one function is exported from here.
10306         * ircd/*.c: general logic cleanups, convert negatives to
10307         positives in places.
10308
10309 2000-09-16  Thomas Helvey <helveytw@home.com>
10310         * ircd/s_conf.c: add code for new crule data structs, strip quotes
10311         * ircd/crule.c: clean up scary casting a bit, type safety stuff
10312         * include/s_conf.h: add CRuleConf struct and support, remove
10313         unused constants
10314         * include/crule.h: type safety cleanups
10315         * ircd/*.c: fixup code that depended on stuff I changed
10316
10317 2000-09-15  Thomas Helvey <helveytw@home.com>
10318         * ircd/s_conf.c: start adding code for new conf data structs, changed
10319         listeners, admin line, motd lines, class lines. Move validate_hostent
10320         to resolver. General mayhem.
10321         * include/s_conf.h: new data structs and accessors
10322         * ircd/res.c: move validate_hostent here, rewrite, use regular
10323         expression for validation.
10324         * doc/example.conf: update docs for port
10325
10326 2000-09-14  Thomas Helvey <helveytw@home.com>
10327         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
10328         up conf_init into managable chunks.
10329         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
10330         * include/s_conf.h: add new data struct for local info (unwinding the mess).
10331
10332 2000-09-13  Thomas Helvey <helveytw@home.com>
10333         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
10334         local clients.
10335         * ircd/list.c: put SLinks in free lists
10336         * ircd/channel.c: put Memberships in free lists
10337         * ircd/ircd.c: rearrange initializations a bit in main
10338         Note: With these changes, ircd NEVER frees Clients, SLinks or
10339         Memberships. It will also rarely need to allocate new
10340         ones during net bursts and other disruptions. This should
10341         cut down on memory fragmentation a bit as well.
10342
10343 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
10344
10345         * ircd/m_names.c (do_names): pull-up from do_names fix in
10346         u2.10.10.pl11
10347
10348 2000-07-15  Perry Lorier       <Isomer@coders.net>
10349         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
10350                  match()'s.  Major Major cpu savings.  Also speed up the
10351                  other case slightly.  As a side effect you can now
10352                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
10353                  3am.
10354
10355 2000-07-15  Perry Lorier       <Isomer@coders.net>
10356         * various: Fixed warnings after compiling on an alpha.
10357 2000-07-09  Perry Lorier       <Isomer@coders.net>
10358         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
10359                       changes suggested by various other people.
10360         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
10361                         that it gets a corrupt entry somehow.
10362 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10363         * ircd/m_oper.c: Clean up compiler warning.
10364
10365 2000-07-08  Perry Lorier       <Isomer@coders.net>
10366         * doc/ircd.8: Updated the documentation, it was slightly out of date
10367                       being updated around 1989.
10368         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
10369                           fixed a few minor glitches.
10370         * doc/rfc1459.unet: Updated.
10371         * ircd/IPcheck.c: Fixed more bugs.
10372         * ircd/s_bsd.c: We now keep track of servers we've conected.
10373
10374 2000-07-02  Perry Lorier       <Isomer@coders.net>
10375         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
10376                         me.  Thanks to Hektik, thanks thanks thanks thanks
10377                         thanks thanks thanks thanks thank thanks thank thanks
10378
10379 2000-07-01  Perry Lorier       <Isomer@coders.net>
10380         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
10381         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
10382
10383 2000-06-22  Perry Lorier       <Isomer@coders.net>
10384         * ircd/IPcheck.c: Large chunks redone.
10385         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
10386                         single AND double digit limits are allowed now.
10387         * misc other: Changes to IPcheck.
10388
10389 2000-06-30  Perry Lorier       <Isomer@coders.net>
10390         * ircd/ircd.c: Fix command line parameter bugs.
10391
10392 2000-06-30  Perry Lorier       <Isomer@coders.net>
10393         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
10394         * ircd/m_nick.c: Tidied things up.
10395
10396 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
10397         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
10398         
10399 2000-05-29  Perry Lorier       <Isomer@coders.net>
10400         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
10401         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
10402                         you think it'll get bored and fix itself?
10403
10404 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10405
10406         * ircd/m_names.c: Clean up compiler warnings.
10407
10408 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
10409
10410         * ircd/channel.c (mode_parse_client): don't send warning if
10411         there's not enough arguments for a +/-o/v; means the habit of
10412         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
10413         error messages
10414
10415 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10416
10417         * ircd/m_names.c: Re-factor code to remove unneccessary
10418         GlobalChannelList iteration every time someone joins a channel.
10419
10420 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
10421
10422         * ircd/s_user.c: add struct Gline * argument to register_user;
10423         look up global glines and repropagate them if necessary; send
10424         acknowledgement of gline to remote servers when registering users
10425
10426         * ircd/s_serv.c (server_estab): don't send acknowledgement of
10427         local glines to remote servers; do send gline acknowledgement of
10428         bursted users
10429
10430         * ircd/m_user.c (m_user): pass new struct Gline * argument to
10431         register_user
10432
10433         * ircd/m_pong.c: pass new struct Gline * argument to register_user
10434
10435         * ircd/m_nick.c (ms_nick): document protocol change
10436
10437         * ircd/gline.c: support GLINE_LASTMOD
10438
10439         * include/s_user.h: add struct Gline * argument to register_user
10440
10441         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
10442
10443         * ircd/s_conf.c (find_kill): add unsigned int argument to
10444         gline_lookup()
10445
10446         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
10447         glines; add unsigned int argument to gline_lookup()
10448
10449         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
10450         argument to gline_lookup()
10451
10452         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
10453         parameter, or when it falls out of bounds: see comments prior to
10454         call to jupe_resend(); call server_estab with struct Jupe
10455         parameter, so that we place the appropriate %<lastmod> in the
10456         appropriate place.
10457
10458         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
10459         server, as well as for servers when we're sending the BURST
10460
10461         * include/s_serv.h: add a struct Jupe * to the arguments for
10462         server_estab() so that we can send the appropriate lastmod
10463         parameter
10464
10465         * ircd/m_gline.c (ms_gline): actually, this should be the
10466         slightest bit more efficient...
10467
10468         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
10469         bit more efficient...
10470
10471         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
10472         during netburst
10473
10474         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
10475         netburst
10476
10477         * ircd/channel.c (joinbuf_join): really remove user from local
10478         channels
10479
10480 2000-05-29  Perry Lorier       <Isomer@coders.net>
10481         * ircd/m_names.c: Removed redundant space. 
10482         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
10483
10484 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
10485
10486         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
10487         a " "
10488
10489 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
10490
10491         * ircd/channel.c: replace bogus assertions with returns, which is
10492         logically correct; only wipe out limit/key if they were originally
10493         set in the first place; remove user from channel when doing a
10494         PARTALL; only send MODE +o for user CREATEing channel if user is
10495         not MyUser--CREATE will only be used if the channel did not
10496         originally exist, therefore we can assume no one local is on the
10497         channel anyway, and we don't exactly need for the user to see an
10498         explicit +o for themselves
10499
10500         * doc/readme.gline: describe the syntax of the GLINE command
10501
10502         * doc/readme.jupe: update to reflect a couple of changes to JUPE
10503
10504         * ircd/gline.c: don't propagate local changes
10505
10506         * ircd/jupe.c: don't propagate local changes
10507
10508         * ircd/m_gline.c (mo_gline): force local flag when deactivating
10509         glines with 0 lastmod
10510
10511         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
10512         are now removed instead of being deactivated
10513
10514         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
10515         -<mask>" be accepted
10516
10517         * ircd/channel.c (send_channel_modes): deal with one of the last
10518         vestiges of sendbuf
10519
10520         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
10521         debugging hooks
10522
10523         * ircd/channel.c (modebuf_extract): remove debugging
10524         sendto_opmask_butone calls
10525
10526 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
10527
10528         * ircd/channel.c: support a couple of new flags to support using
10529         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
10530         of modebuf_extract to extract added flags for use by ms_burst
10531
10532         * include/channel.h: a couple of new flags to support using
10533         mode_parse inside ms_burst
10534
10535         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
10536
10537         * ircd/m_endburst.c: add loop to processing of end_of_burst to
10538         free empty channels after the BURST is over.
10539
10540         * ircd/m_server.c: convert to use new send.c functions--I wanted
10541         to rewrite it from scratch, but the logic's pretty complex; I may
10542         still rewrite it, though...
10543
10544 2000-05-02  Thomas Helvey <tomh@inxpress.net>
10545
10546         * ircd/ircd.c: fix broken header include ordering
10547
10548 2000-05-02  Thomas Helvey <tomh@inxpress.net>
10549         
10550         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
10551         review emailed privately
10552
10553         * include/IPcheck.h: removed unneeded include
10554
10555 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
10556
10557         * ircd/s_user.c (hunt_server): throw in a comment so I know what
10558         the sendto_one is for
10559
10560         * include/querycmds.h (Count_unknownbecomesclient): convert to
10561         sendto_opmask_butone
10562
10563         * ircd/send.c: start removing dead code
10564
10565         * include/send.h: start removing dead code
10566
10567         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
10568         hunt_server_cmd
10569
10570         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
10571
10572 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
10573
10574         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
10575
10576         * ircd/m_kick.c: Completely reimplement m_kick
10577
10578         * ircd/channel.c: send_user_joins removed; it was dead code,
10579         anyway...
10580
10581 2000-05-01  Perry Lorier <isomer@coders.net>
10582         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
10583         * ircd/channels.c: My fix for the part problem.  Untested, probably
10584                 won't work.  Can't be much worse than the current problem.
10585                 it'll either work or core, take your pick.
10586
10587
10588 2000-04-30  Perry Lorier <isomer@coders.net>
10589         * config/config-sh.in: Fix for CONNEXIT
10590         * ircd/s_{user,misc}.c: Fix for CONNEXIT
10591         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
10592                         (Kev: Want to come talk to me about this?)
10593
10594 2000-04-30  Steven M. Doyle <steven@doyle.net>
10595         * ircd/ircd.c
10596           - general cleanups and readability enhancements
10597           - rewrite of setuid/chroot code.
10598           - server will no longer run as root
10599           - -DPROFIL compile option removed
10600           - Fixed IPcheck API calls
10601  
10602         * config/config-sh.in
10603           - Fixed up chroot compile options
10604           - Added options for debug and profile compiles
10605  
10606         * config/gen.ircd.Makefile
10607           - Support for new debug/profile options
10608  
10609         * ircd/Makefile.in
10610           - Support for new debug/profile options
10611  
10612         * ircd/ircd_signal.c
10613           - Removed -DPROFIL
10614
10615         * include/IPcheck.h
10616           - Removed old API prototypes, added new ones
10617         
10618         * ircd/IPcheck.c
10619           - Readability cleanups (well, I -think-...)
10620           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
10621             used unsigned short was probably causing interesting things after
10622             a client had been connected longer than about 65,535 seconds...
10623           - Removed old API functions.
10624
10625         * ircd/whocmds.c
10626           - Removed IPcheck.h include
10627         
10628         * Additionally modified IPcheck API calls in:
10629           - ircd/m_nick.c
10630           - ircd/m_auth.c
10631           - ircd/s_bsd.c
10632           - ircd/s_conf.c
10633           - ircd/s_misc.c
10634           - ircd/s_serv.c
10635           - ircd/s_user.c
10636         
10637         
10638 2000-04-30  Perry Lorier <isomer@coders.net>
10639         * ircd/s_bsd.c: Sigh. :)
10640         * ircd/m_mode.c: fix for modeless channels by poptix.
10641
10642 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
10643
10644         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
10645
10646         * ircd/channel.c (clean_channelname): make clean_channelname also
10647         truncate long channel names
10648
10649 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
10650
10651         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
10652
10653         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
10654         joinbuf_flush
10655
10656         * include/channel.h: definitions and declarations for the struct
10657         JoinBuf abstraction
10658
10659 2000-04-29  Perry Lorier <isomer@coders.net>
10660         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
10661
10662 2000-04-29  Perry Lorier <isomer@coders.net>
10663         * ircd/s_bsd.c: Add debugging code to IPcheck
10664
10665 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
10666
10667         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
10668
10669         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
10670         RPL_EXPLICIT
10671
10672         * ircd/m_userhost.c (m_userhost): add a dead code comment
10673
10674         * ircd/m_desynch.c: forgot one...
10675
10676         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
10677
10678         * ircd/m_proto.c (proto_send_supported): just change a comment so
10679         it doesn't show up in my scans
10680
10681         * ircd/ircd_reply.c (send_reply): fix a slight bug...
10682
10683         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
10684         kinda hackish...
10685
10686         * ircd/parse.c (parse_server): argument wrangling to make
10687         processing in do_numeric a little easier to deal with
10688
10689         * ircd/s_serv.c (server_estab): SERVER should come from
10690         acptr->serv->up, not &me
10691
10692         * ircd/m_lusers.c: accidentally left out sptr for a %C
10693
10694         * ircd/send.c: hack to support doing wallchops...
10695
10696         * ircd/m_whowas.c: convert to new send functions
10697
10698         * ircd/m_whois.c: convert to new send functions
10699
10700         * ircd/m_who.c: convert to new send functions
10701
10702         * ircd/m_wallops.c: convert to new send functions
10703
10704         * ircd/m_wallchops.c: convert to new send functions
10705
10706         * ircd/m_version.c: convert to new send functions
10707
10708         * ircd/m_userip.c: convert to new send functions
10709
10710         * ircd/m_userhost.c: convert to new send functions
10711
10712         * ircd/m_uping.c: convert to new send functions
10713
10714         * ircd/m_trace.c: convert to new send functions
10715
10716         * ircd/m_topic.c: convert to new send functions
10717
10718         * ircd/m_time.c: convert to new send functions
10719
10720         * ircd/m_squit.c: convert to new send functions
10721
10722         * ircd/m_silence.c: convert to new send functions
10723
10724         * ircd/m_settime.c: convert to new send functions
10725
10726         * ircd/m_restart.c: convert to new send functions
10727
10728         * ircd/m_rehash.c: convert to new send functions
10729
10730         * ircd/m_privmsg.c: convert to new send functions
10731
10732         * ircd/m_pong.c: convert to new send functions
10733
10734         * ircd/m_ping.c: convert to new send functions
10735
10736         * ircd/m_pass.c: convert to new send functions
10737
10738         * ircd/m_opmode.c: convert to new send functions
10739
10740         * ircd/m_oper.c: convert to new send functions
10741
10742         * ircd/m_notice.c: convert to new send functions
10743
10744         * ircd/m_nick.c: convert to new send functions
10745
10746         * ircd/m_names.c: convert to new send functions
10747
10748         * ircd/m_motd.c: convert to new send functions
10749
10750         * ircd/m_mode.c: convert to new send functions
10751
10752         * ircd/m_map.c: convert to new send functions
10753
10754         * ircd/m_lusers.c: convert to new send functions
10755
10756         * ircd/m_list.c: convert to new send functions
10757
10758         * ircd/m_links.c: convert to new send functions
10759
10760         * ircd/m_kill.c: convert to new send functions
10761
10762         * ircd/m_jupe.c: convert to new send functions
10763
10764         * ircd/m_invite.c: convert to new send functions
10765
10766         * ircd/m_info.c: convert to new send functions
10767
10768         * ircd/m_help.c: convert to new send functions
10769
10770         * ircd/m_gline.c: convert to new send functions
10771
10772         * ircd/m_error.c: convert to new send functions
10773
10774         * ircd/m_endburst.c: convert to new send functions
10775
10776         * ircd/m_die.c: convert to new send functions
10777
10778         * ircd/m_destruct.c: convert to new send functions
10779
10780         * ircd/m_defaults.c: convert to new send functions
10781
10782         * ircd/m_connect.c: convert to new send functions
10783
10784 2000-04-28  Perry Lorier <isomer@coders.net>
10785         * RELEASE.NOTES: Describe a few more undocumented features.
10786         * config/config-sh.in: change the default paths for logging
10787         and the recommended number of channels.
10788         * include/supported.h: Rearrange slightly, added CHANTYPE's
10789
10790 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
10791
10792         * ircd/m_close.c: convert to send_reply
10793
10794         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
10795
10796         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
10797
10798         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
10799
10800         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
10801         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
10802         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
10803         carefully rethought...
10804
10805         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
10806
10807         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
10808
10809         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
10810         numeric nick; therefore, we have to use the server name
10811
10812         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
10813
10814         * ircd/send.c: fix minor bugs
10815
10816         * ircd/s_user.c (check_target_limit): mark dead code so I filter
10817         it when I grep
10818
10819         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
10820         when I grep
10821
10822         * ircd/parse.c: mark dead code so I filter it when I grep
10823
10824         * ircd/map.c: mark dead code so I filter it when I grep
10825
10826         * ircd/ircd.c: mark dead code so I filter it when I grep
10827
10828         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
10829         functions
10830
10831         * ircd/channel.c: mark dead code so I filter it when I grep
10832
10833         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
10834         hope I'm not stepping on toes...
10835
10836         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
10837         conversions; use ircd_snprintf in a couple of cases to negate the
10838         possibility of buffer overflow
10839
10840 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
10841
10842         * ircd/channel.c: convert as much as possible to new send
10843         semantics
10844
10845         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
10846         test member->user->from->fd, not from->fd
10847
10848         * ircd/gline.c (gline_add): go ahead and add badchans; we just
10849         won't look for them in m_gline; this way, they always work...
10850
10851         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
10852
10853         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
10854         ircd_vsnprintf conversion specifiers
10855
10856         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
10857         I have my conversion specifiers
10858
10859         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
10860
10861         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
10862         local users
10863
10864         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
10865         little less brain-dead
10866
10867         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
10868
10869         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
10870         RPL_STATSDEBUG
10871
10872         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
10873         RPL_STATSDEBUG
10874
10875         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
10876         for RPL_STATSDEBUG
10877
10878         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
10879
10880         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
10881
10882         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
10883         ERR_INVALIDUSERNAME
10884
10885         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
10886
10887         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
10888         a numeric as needing to use an explicit pattern, which will be the
10889         first argument in the variable argument list
10890
10891         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
10892         non-prefixed nospoof PING
10893
10894         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
10895         non-prefixed SERVER login
10896
10897         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
10898         a numeric usage further up)
10899
10900         * include/send.h: declare sendrawto_one
10901
10902         * ircd/send.c (sendrawto_one): new function to use ONLY for
10903         non-prefixed commands, like PING to client, or PASS/SERVER on
10904         server registration
10905
10906 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
10907
10908         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
10909         future expansion (channel numerics?)
10910
10911         * include/ircd_snprintf.h: added documentation to # to explain use
10912         with %C; added documentation for : to explain use with %C; added
10913         documentation for %H for channels
10914
10915         * ircd/whocmds.c: use send_reply
10916
10917         * ircd/userload.c: use sendcmdto_one
10918
10919         * ircd/uping.c: use sendcmdto_one
10920
10921         * ircd/send.c: use new flags to %C format string; ':' prefixes
10922         client name with a colon for local connects, '#' uses
10923         nick!user@host form for local connects
10924
10925         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
10926         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
10927
10928         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
10929
10930         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
10931         sendcmdto_one
10932
10933         * ircd/s_auth.c: use sendto_opmask_butone
10934
10935         * ircd/res.c: use sendcmdto_one
10936
10937         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
10938         debugging assertions
10939
10940 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
10941
10942         * ircd/support.c: dumpcore is no longer used, so get rid of it
10943
10944         * ircd/parse.c: use send_reply, sendcmdto_one
10945
10946         * ircd/map.c: use send_reply
10947
10948         * ircd/listener.c: use send_reply
10949
10950         * ircd/jupe.c: use sendto_opmask_butone, send_reply
10951
10952         * ircd/ircd_reply.c: use send_reply
10953
10954         * ircd/ircd.c: use sendto_opmask_butone
10955
10956         * ircd/gline.c: use sendto_opmask_butone, send_reply
10957
10958         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
10959         registered clients; make FLAG_ALT print nick!user@host; make
10960         FLAG_COLON print :blah
10961
10962         * ircd/class.c (report_classes): use send_reply instead of
10963         sendto_one
10964
10965         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
10966
10967         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
10968         sendto_one with sendcmdto_one
10969
10970 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
10971
10972         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
10973         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
10974         sendcmdto_match_butone
10975
10976         * include/send.h: declare sendcmdto_match_butone
10977
10978 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
10979
10980         * ircd/jupe.c: update to use send_reply()
10981
10982         * ircd/gline.c: update to use send_reply()
10983
10984         * include/ircd_reply.h: declare send_reply
10985
10986         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
10987         replies; uses ircd_snprintf
10988
10989         * ircd/send.c: added comments to redirect searchers to appropriate
10990         sendcmdto_* function; moved new functions to end of file; added
10991         explanatory comments; reordered arguments; defined new functions
10992         mentioned below
10993
10994         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
10995
10996         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
10997
10998         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
10999
11000         * ircd/gline.c: reorder arguments to sendcmdto_* functions
11001
11002         * include/send.h: reorder arguments, add explanatory comments,
11003         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
11004         and vsendto_opmask_butone
11005
11006 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
11007
11008         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
11009         vsendto_op_mask that uses '*' instead of the receiving client
11010         nickname
11011
11012         * include/send.h: declare sendcmdto_channel_butone; takes a skip
11013         argument that allows you to skip (or not to skip) deaf users,
11014         users behind bursting servers, and non channel operators
11015
11016 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
11017
11018         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
11019         sendto_channel_butserv has a subtle bug; also wrote
11020         sendcmdto_common_channels.
11021
11022         * include/send.h: declare new sendcmdto_* functions
11023
11024         * ircd/jupe.c: support local deactivations of jupes
11025
11026         * ircd/gline.c: support local deactivations of glines
11027
11028         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
11029         deactivated; if they aren't locally deactivated, then it slaves to
11030         the net-wide activation status; JupeIsRemActive() tests only
11031         whether the jupe is active everywhere else
11032
11033         * include/gline.h: GLINE_LDEACT allows glines to be locally
11034         deactivated; if they aren't locally deactivated, then it slaves to
11035         the net-wide activation status; GlineIsRemActive() tests only
11036         whether the gline is active everywhere else
11037
11038         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
11039         gline expires after the new one will, we drop the new one,
11040         otherwise we add the G-line after that one (so the wide one will
11041         apply first); if the new one contains an existing G-line and if it
11042         will expire after the existing one, we drop the existing one to
11043         save memory
11044
11045         * ircd/m_gline.c (mo_gline): opers could issue remote local
11046         glines when CONFIG_OPERCMDS was off; fixed
11047
11048 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
11049
11050         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
11051         this is a local JUPE
11052
11053         * ircd/gline.c: add flags argument to gline_activate and
11054         gline_deactivate for future expansion
11055
11056         * ircd/m_gline.c: pass flags to gline_activate and
11057         gline_deactivate
11058
11059         * include/gline.h: add flags argument to gline_activate and
11060         gline_deactivate
11061
11062         * ircd/jupe.c: add flags argument to jupe_activate and
11063         jupe_deactivate for future expansion
11064
11065         * include/jupe.h: add flags argument to jupe_activate and
11066         jupe_deactivate
11067
11068         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
11069         local, active; pass flags to jupe_activate and jupe_deactivate
11070
11071         * include/gline.h: remove dead code
11072
11073         * ircd/gline.c: make gline expire times relative to CurrentTime,
11074         since that should be monotonically increasing, instead of
11075         TStime(), which can be set backwards, and which can therefore
11076         cause an expire time to increase; make local glines be removed
11077         instead of just deactivated; don't let gline_find() look for
11078         user@host glines if the mask being looked up is a channel mask
11079
11080         * ircd/send.c (vsendcmdto_one): forgot to account for the case
11081         where origin is a server and destination is a user
11082
11083         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
11084         since that should be monotonically increasing, instead of
11085         TStime(), which can be set backwards, and which can therefore
11086         cause an expire time to increase; make local jupes be removed
11087         instead of just deactivated
11088
11089         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
11090         limit is fine.  any other warnings I should know about?
11091
11092 2000-04-15  Thomas Helvey <tomh@inxpress.net>
11093
11094         * ircd/*.c: const correctness and type safety cleanups to
11095         get code to compile with C++ compiler. Still has
11096         signed/unsigned comparison warnings.
11097
11098 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11099
11100         * ircd/userload.c: change <sys/time.h> include to <time.h> for
11101           portability.
11102
11103 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
11104
11105         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
11106         and convert acptr...
11107
11108         * ircd/s_user.c: move gline_lookup function call into
11109         register_user, where it'll have a username to lookup!
11110
11111         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
11112         functions; also stuff send_error_to_client into return clauses
11113
11114         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
11115         functions; also use send_error_to_client where that makes sense
11116
11117         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
11118         functions; also use send_error_to_client where that makes sense
11119
11120         * ircd/gline.c: modify to utilize new sendcmdto_* series of
11121         functions; also fix gline_lookup() to deal properly with remote
11122         clients--boy, do struct Client and struct User need to be cleaned
11123         up!
11124
11125         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
11126         too...
11127
11128         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
11129         sendcmdto_serv_butone(), all utilizing the %v conversion of
11130         ircd_snprintf()
11131
11132         * include/send.h: define IRC_BUFSIZE, max size of a message;
11133         declare sendcmdto_one(), vsendcmdto_one(), and
11134         sendcmdto_serv_butone()
11135
11136         * include/msg.h: define all the CMD_* constants needed to utilize
11137         the new sendcmdto_* series of functions
11138
11139         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
11140
11141         * ircd/gline.c: remove old, dead code.
11142
11143         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
11144         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
11145         (don't advertise proxies); remove dead code
11146
11147         * ircd/parse.c: oper handler for JUPE only lists jupes unless
11148         CONFIG_OPERCMDS is enabled
11149
11150         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
11151         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
11152
11153         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
11154         always return ERR_DISABLED
11155
11156         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
11157         enabled, always return ERR_DISABLED
11158
11159         * ircd/s_err.c: add error message to indicate disabled commands
11160
11161         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
11162
11163         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
11164
11165         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
11166         CONFIG_NEW_MODE to 'y' for now
11167
11168         * ircd/gline.c (gline_list): fix a minor formatting bogon
11169
11170         * BUGS: since I fixed that bug, might as well mark it fixed.
11171
11172         * ircd/m_join.c: look up badchans with GLINE_EXACT
11173
11174         * ircd/m_gline.c: fix parc count problems; look up existing
11175         G-lines with GLINE_EXACT; only set new lastmod when
11176         activating/deactivating existing glines if old lastmod was not 0
11177
11178         * ircd/gline.c: forgot to copy the gline reason over; don't
11179         propagate a gline with 0 lastmod if origin is user; add
11180         GLINE_EXACT to force exact matching of gline mask
11181
11182         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
11183         flag properly
11184
11185         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
11186         but gline_lookup() actually takes a client--d'oh.
11187
11188 2000-04-13  Thomas Helvey <tomh@inxpress.net>
11189         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
11190
11191 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11192
11193         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
11194           "/who * x"
11195           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
11196           (Found by Plexus).
11197
11198         * ircd/whocmds.c: Change idle time calc from socket idle to user
11199           idle.
11200
11201 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
11202
11203         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
11204         too, for ircd_snprintf.c
11205
11206         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
11207         comments; mostly descended from the Linux manpage for printf, but
11208         also documenting the extensions.
11209
11210         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
11211         client; make 'q' be the same as 'L'; remove __inline__; only
11212         define EXTENSION if HAVE_LONG_LONG is defined
11213
11214         * include/handlers.h: declare m_gline()
11215
11216         * ircd/parse.c: gline can be called by users, but it only lists
11217         the glines.
11218
11219         * ircd/s_user.c (set_nick_name): resend gline if a remote server
11220         introduces a glined client
11221
11222         * ircd/s_serv.c (server_estab): burst glines, too
11223
11224         * ircd/gline.c: fix up all the expire times to be offsets;
11225         simplify gline_resend()
11226
11227         * ircd/m_gline.c: begin coding replacements for ms_gline(),
11228         mo_gline(), and m_gline()
11229
11230         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
11231         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
11232
11233 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11234
11235         * tools/Bouncer/*: Add comments/documentation/tags.
11236         * tools/Bouncer/*: Add debug defines, make task fork().
11237
11238 2000-04-12  Thomas Helvey <tomh@inxpress.net>
11239         * ircd/s_err.c: Cleanup s_err.c make one table so we
11240         don't have to do anything tricky to get an error string.
11241
11242 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11243         * Add port bouncer for http (x/w)
11244
11245 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
11246
11247         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
11248         call to gline_find(); also used GlineReason() instead of direct
11249         reference to structure member
11250
11251         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
11252         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
11253         is active
11254
11255         * ircd/channel.c: nothing seems to be called anywhere...
11256
11257         * ircd/s_err.c: update a couple of replies to dovetail with new
11258         semantics
11259
11260         * ircd/gline.c: begin complete re-implementation of gline.c along
11261         the lines of the final design of jupe.c
11262
11263         * include/gline.h: begin complete re-implementation of gline.c
11264         along the lines of the final design of jupe.c
11265
11266         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
11267         %s by %s" message...
11268
11269         * ircd/ircd_snprintf.c: my new snprintf()-like functions
11270
11271         * include/ircd_snprintf.h: my new snprintf()-like functions
11272
11273 2000-04-11  Thomas Helvey <tomh@inxpress.net>
11274         * ircd/IPcheck.c: removed old dead code
11275         * ircd/s_user.c (send_user_info): removed non-standard
11276           user not found message for userhost/userip
11277
11278 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11279
11280         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
11281         * doc/p10.html: Work on chapter 4.
11282
11283 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
11284
11285         * ircd/channel.c (mode_parse_client): fix coredump on /mode
11286         #foobar +o nosuchnick
11287
11288 2000-04-10  Perry Lorier  <Isomer@coders.net>
11289         * BUGS: Added bug.
11290
11291 2000-04-09  Thomas Helvey <tomh@inxpress.net>
11292         * include/IPcheck.h: fix prototype
11293         * ircd/s_user.c: fix usage of IPcheck_remote_connect
11294         * ircd/IPcheck.c: removed unused args
11295
11296 2000-04-09  Thomas Helvey <tomh@inxpress.net>
11297         * include/IPcheck.h: add proto for IPcheck_expire
11298
11299         * ircd/IPcheck.c: Rewrote
11300
11301         * ircd/ircd.c: Add IPcheck_expire to main message loop
11302
11303         * ircd/s_user.c: Redo target hashing, refactor target code
11304
11305         * include/numeric.h: Cleaned up numerics, added which ones are
11306         in use by other networks and what they are in use for.
11307
11308         * ircd/channel.c: cleaned can_join(), allow anyone through anything
11309         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
11310         will get a message explaining to them not to cheat.
11311
11312         * ircd/m_join.c: cleaned up the various join functions, should be
11313         a lot more efficient.  Still needs work.  Now assumes that s<->s
11314         won't send it a JOIN 0.  Service coders - note this and tread with
11315         care.
11316
11317         * ircd/m_stats.c: added Gte-'s stats doc patch.
11318
11319         * ircd/m_version.c: /version now returns the 005 numeric as well.
11320         as requested by Liandrin.
11321
11322
11323 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
11324
11325         * ircd/m_clearmode.c: add include for support.h for write_log()
11326
11327         * configure: move ircd/crypt/* to tools/*
11328
11329 2000-04-06  Thomas Helvey <tomh@inxpress.net>
11330         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
11331           set client host to server alias if connection from localhost
11332
11333 2000-04-06  Perry Lorier <isomer@coders.net>
11334         * ircd/ircd.c: Fix core during pinging (oops)
11335         
11336 2000-04-06  Perry Lorier <isomer@coders.net>
11337         * ircd/send.c: fixed wrong ident being sent to channels bug.
11338         * include/numerics.h: Updated some of the numerics from other
11339         networks.  Flagged some as 'unused' by undernet.
11340
11341 2000-03-30  Perry Lorier <isomer@coders.net>
11342         * ircd/ircd.c: Lets see if this helps the ping problem at all.
11343         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
11344         time for local clients. (as requested), extended who now returns all
11345         the flags (@+!) so you can tell the complete state of a client.
11346
11347 2000-03-30  Thomas Helvey <tomh@inxpress.net>
11348         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
11349
11350 2000-03-30  Perry Lorier <isomer@coders.net>
11351         * ircd/parse.c: oops, missed opers.
11352
11353 2000-03-30  Perry Lorier <isomer@coders.net>
11354         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
11355         for so long.  Remember: m_ping MUST be in the parse array. :)
11356
11357 2000-03-30  Perry Lorier <isomer@coders.net>
11358         * ircd/ircd.c: test in check_pings was wrong.  I move that we
11359         disallow cvs commit after 10pm localtime....
11360
11361 2000-03-30  Perry Lorier <isomer@coders.net>
11362         * ircd/m_pong.c: Fix it for servers too.
11363
11364 2000-03-30  Perry Lorier <isomer@coders.net>
11365         * ircd/m_pong.c: Fix ping timeout bugs
11366
11367 2000-03-30  Perry Lorier <isomer@coders.net>
11368         * ircd/channel.c: Bans had CurrentTime in their when field instead
11369         of TStime()
11370
11371 2000-03-31  Thomas Helvey <tomh@ixpress.net>
11372         * ircd/numnicks.c (SetXYYCapacity): fix for extended
11373         numerics.
11374
11375 2000-03-30  Perry Lorier <isomer@coders.net>
11376         * ircd/m_nick.c: send kills both ways so when we add nick change
11377         on collision we don't desync the network.
11378
11379         * ircd/map.c: Fixup the map a bit more.
11380
11381 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
11382
11383         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
11384
11385         * ircd/m_opmode.c: Log the mode changes to OPATH
11386
11387         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
11388         OPATH
11389
11390         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
11391         OPATH
11392
11393         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
11394
11395         * config/config-sh.in: added OPATH for opmode log file
11396
11397         * ircd/m_clearmode.c (do_clearmode): updated uses of
11398         modebuf_mode_string() for the new usage
11399
11400         * ircd/channel.c: added flag MODE_FREE and an int argument to
11401         modebuf_mode_string() to indicate that the string must be free'd;
11402         updated calls to modebuf_mode_string() for the new usage; called
11403         collapse(pretty_mask()) on the ban string and use allocated memory
11404         for it; added ban list length accounting; fixed a number of small
11405         bugs in ban processing
11406
11407         * include/channel.h: added flag MODE_FREE and an int argument to
11408         modebuf_mode_string() to indicate that the string must be free'd
11409
11410         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
11411         keys and limits that are set
11412
11413 2000-03-30  Perry Lorier <isomer@coders.net>
11414         * ircd/ircd.c: rewrote check_pings() for maintainability
11415         and speed.  Also changed quit msg's so they don't have
11416         redundant nick[host] info in them.
11417
11418         * ircd/send.c: Changed write errors to report what error
11419         occured (if possible).
11420
11421         * ircd/gline.c: added gline comment to the quit.
11422
11423         * ircd/m_server.c: Added suggestions to server quits mentioning
11424         what went wrong so the admin can fix it earlier instead of asking
11425         questions...
11426
11427         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
11428         servers that aren't fully burst yet.  And show '(--s)' for servers
11429         where its not sure.
11430
11431         * doc/example.conf: Fixed wrapped U:
11432
11433 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
11434
11435         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
11436         mode_parse() (version selectable at compile time)
11437
11438         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
11439
11440         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
11441
11442         * config/config-sh.in: add new config option to enable new m_mode
11443         implementation
11444
11445         * doc/Configure.help: add documentation for new config option
11446         CONFIG_NEW_MODE
11447
11448         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
11449         MODE -v : Not enough parameters
11450
11451         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
11452         +k and +l even if they weren't set...
11453
11454         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
11455
11456         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
11457         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
11458         for; test the 0-th member, not the i-th member, of the client
11459         change state stuff
11460
11461         * ircd/m_clearmode.c (do_clearmode): use the new
11462         mode_invite_clear() function
11463
11464         * ircd/channel.c: cleared up all the compile-time warnings and
11465         errors
11466
11467         * include/channel.h: added declarations for mode_ban_invalidate()
11468         and mode_invite_clear()
11469
11470         * ircd/channel.c: finished mode_parse(), then broke it up into a
11471         dozen or so helper functions to make the code easier to read
11472
11473 2000-03-29  Thomas Helvey <tomh@inxpress.net>
11474         * ircd/ircd.c: refactor server initialization a bit, use
11475         getopt for parsing command line, refactor init_sys, main,
11476         and other bits.
11477
11478         * ircd/s_bsd.c: add functions for initialization to clean
11479         up logic a bit and remove duplicated code.
11480
11481         * include/ircd.h: add struct for server process related
11482         variables.
11483
11484 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
11485
11486         * ircd/channel.c: initial definition of mode_parse(); flags to
11487         prevent doing the same thing multiple times; helper method
11488         send_notoper() to send a "Not oper"/"Not on channel" notice
11489
11490         * include/channel.h: declare mode_parse() and helper flags
11491
11492         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
11493         sending to match the current action of set_mode() closely enough
11494         that hopefully there won't be major conflicts
11495
11496         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
11497         building logic, reversed the order of the arguments to mode
11498         commands to have '-' preceed '+'
11499
11500 2000-03-29  Thomas Helvey <tomh@inxpress.net>
11501         * ircd/s_bsd.c (add_connection): don't disable socket options
11502         let OS tune itself and allow important performance tweaks to 
11503         work.
11504
11505 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
11506
11507         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
11508         confused by set_mode, which is doing some really weird logic;
11509         guess what I'm going to rewrite next?  ;)
11510
11511 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
11512
11513         * include/channel.h: added MODE_SAVE for the bounds checking stuff
11514         in modebuf_flush
11515
11516         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
11517         make it do bounds checking on the buffer; all modes are sent only
11518         if the all parameter is 1; modebuf_flush is the exported wrapper
11519
11520         * include/channel.h: add BOUNCE, renumber flags to get a little
11521         more space
11522
11523         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
11524         BOUNCE; send DESYNCH message
11525
11526 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
11527
11528         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
11529         channel actually has in effect for deletion
11530
11531         * ircd/channel.c: added explanatory comments to all added
11532         functions; made flushing take place at the correct place even if
11533         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
11534         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
11535         is empty, fixed the apparent source, removed some bogus string
11536         termination code, properly terminate the mode strings, add support
11537         for HACK2 and HACK3, made limit strings not be sent if the limit
11538         is being removed, changed where '+' and '-' come from in sent
11539         strings, added support for DEOP flag, set up bouncing code for
11540         HACK2
11541
11542         * ircd/Makefile.in: ran make depend
11543
11544         * include/channel.h: added new defines for future functionality,
11545         made modebuf_flush() return int so I can use tail recursion
11546
11547         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
11548         to make it all compile
11549
11550         * ircd/m_opmode.c: add msg.h to includes...
11551
11552         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
11553
11554         * ircd/channel.c (modebuf_flush): realized I forgot to
11555         nul-terminate addbuf/rembuf properly...
11556
11557         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
11558
11559         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
11560         sendto_serv_butone--blah^2
11561
11562         * ircd/send.c (sendto_serv_butone): stupid comments confused me
11563
11564         * ircd/channel.c (modebuf_flush): if there are no mode changes to
11565         propagate, we're done...
11566
11567         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
11568         not sendto_all_butone
11569
11570         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
11571
11572         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
11573
11574         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
11575         the list
11576
11577         * ircd/parse.c: added messages for opmode and clearmode
11578
11579         * include/handlers.h: added declarations for mo_opmode(),
11580         ms_opmode(), mo_clearmode(), and ms_clearmode()
11581
11582         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
11583         TOK_CLEARMODE
11584
11585         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
11586         MODEBUF_DEST_OPMODE flag
11587
11588         * ircd/channel.c (modebuf_flush): added new flag,
11589         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
11590         to originate from source's server (or source itself, if
11591         IsServer(source)); also causes a server-level MODE to be sent as
11592         OPMODE instead
11593
11594         * include/channel.h: defined MODEBUF_DEST_SERVER,
11595         MODEBUF_DEST_HACK4
11596
11597         * ircd/channel.c: Add another argument to build_string() to handle
11598         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
11599         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
11600         to be sent out
11601
11602 2000-03-27  Perry Lorier <isomer@coders.net>
11603
11604         * ircd/s_bsd.c: fixed missing 'u' typo.
11605
11606 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
11607
11608         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
11609         _mode_string(), _mode_client(), _flush(); also implemented a
11610         simple build_string()
11611
11612         * include/channel.h: added definition of ModeBuf, modebuf_*
11613         manipulation functions, and a couple of helper macros
11614