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