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