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