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