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