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