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