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