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