Improve ipmask_parse()'s handling of invalid IPv6 inputs.
[ircu2.10.12-pk.git] / ChangeLog
1 2012-06-20  Michael Poole <mdpoole@troilus.org>
2
3         * ircd/ircd_string.c (ipmask_parse): Return zero if there is junk
4         after eight valid IPv6 address elements.
5
6 2012-06-13  Michael Poole <mdpoole@troilus.org>
7
8         * ircd/s_stats.c (stats_configured_links): Correctly distinguish
9         local Operator blocks from global Operator blocks.
10
11 2012-05-31  Michael Poole <mdpoole@troilus.org>
12
13         * ircd/m_gline.c (ms_gline): If the mask was empty after removing
14         the command character(s), reject the command.
15         (mo_gline): Likewise.
16
17 2012-05-31  Michael Poole <mdpoole@troilus.org>
18
19         * include/channel.h (infochanmodes): Add +d channel mode.
20
21         * include/client.h (infousermodes): Add +O user mode.
22
23 2012-05-31  Michael Poole <mdpoole@troilus.org>
24
25         * ircd/gline.c (gline_add): Add length checks for badchan and
26         realname G-lines, comparable to the existing check for traditional
27         G-lines.
28
29         * ircd/s_err.c (ERR_LONGMASK): Remove extra space in format string.
30
31 2012-05-31  Michael Poole <mdpoole@troilus.org>
32
33         * ircd/m_server.c (check_loop_and_lh): Mention the mechanism used
34         to control HUB.
35
36 2012-05-09  Michael Poole <mdpoole@troilus.org>
37
38         * ircd/s_user.c (set_user_mode): When a user deopers, revoke their
39         oper privileges in addition to their oper user mode.
40
41 2012-05-09  Michael Poole <mdpoole@troilus.org>
42
43         * ircd/m_who.c (m_who): Only set WHOSELECT_EXTRA for current
44         opers.  Because privileges are kept after -o, this would let
45         de-opered clients use WHOX.
46
47 2012-05-07  Michael Poole <mdpoole@troilus.org>
48
49         * include/client.h (cli_account): New helper macro to return the
50         client's account name, or "0" for unstamped clients.
51
52         * ircd/s_misc.c (exit_client): Use that when logging the client's
53         exit.
54
55 2012-05-07  Michael Poole <mdpoole@troilus.org>
56
57         * ircd/gline.c (count_users): Use the client's real host, rather
58         than their masked host, for +x users.
59
60 2012-04-29  Michael Poole <mdpoole@troilus.org>
61
62         * ircd/crule.c (crule_connected): Fix logic for ignoring
63         non-server Client structures.
64         (crule_via): Likewise.
65
66 2012-04-29  Michael Poole <mdpoole@troilus.org>
67
68         * */.cvsignore: Rename to .gitignore.
69
70         * ircd/.cvsignore: Likewise, and add *.o because git does not
71         ignore any patterns by default.
72
73 2012-01-23  Michael Poole <mdpoole@troilus.org>
74
75         * ircd/ircd_res.c (proc_answer): Delete unread variable
76         query_class.
77
78         * ircd/m_nick.c (m_nick): Delete unread variable client_name.
79
80         * ircd/m_ping.c (m_ping): Delete unread variable origin.
81
82         * ircd/m_whois.c (do_whois): Delete unread variable name.
83
84         * ircd/parse.c (parse_client): Delete unread variable noprefix.
85
86         * ircd/s_conf.c (killcomment): Delete unread variable tm.
87
88         * ircd/s_stats.c (stats_configured_links): Delete unread variable
89         pass.
90
91 2012-01-23  Michael Poole <mdpoole@troilus.org>
92
93         * ircd/gline.c (gline_modify): Notify opers using SNO_AUTO rather
94         than SNO_GLINE if a G-line had, and still has, an AUTO prefix.
95
96 2012-01-19  Michael Poole <mdpoole@troilus.org>
97
98         * doc/readme.iauth: Document the new 'd' IAuth command.
99
100         * ircd/s_auth.c (AuthRequestFlag): Add "soft done" flag.
101         (auth_ping_timeout): Do not impose Authorization Timeout on
102         clients with the "soft done" flag set.
103         (iauth_cmd_soft_done): New IAuth command handler.
104         (iauth_parse): Call it.
105
106 2012-01-19  Michael Poole <mdpoole@troilus.org>
107
108         * ircd/s_auth.c (start_auth): Call start_dns_query() and
109         start_auth_query() after start_iauth_query() rather than
110         before.
111
112 2011-08-17  Kevin L. Mitchell <klmitch@mit.edu>
113
114         * include/client.h: Fix minor issue in IsLocOp() test
115
116         * include/patchlevel.h (PATCHLEVEL): bump patchlevel to 14
117
118 2011-05-15  Michael Poole  <mdpoole@troilus.org>
119
120         * ircd/s_auth.c (iauth_cmd_done_account): Do not copy the
121         account's creation timestamp into the account name.
122
123 2010-07-05  Kevin L. Mitchell  <klmitch@mit.edu>
124
125         * include/patchlevel.h (PATCHLEVEL): bump patchlevel from -rc2 to
126         actual 13
127
128         * ircd/ircd_features.c: bump MAXBANS from 45 to 50, and MAXSILES
129         from 15 to 25
130
131 2010-03-28  Michael Poole <mdpoole@troilus.org>
132
133         * ircd/gline.c: Replace CurrentTime with TStime(), and remove the
134         uses of TSoffset, so that all G-line-related times are assumed to
135         be in network time.
136
137         * ircd/m_gline.c: Likewise.
138
139 2010-03-08  Michael Poole <mdpoole@troilus.org>
140
141         * ircd/m_server.c (enum lh_type): New type.
142         (check_loop_and_lh): Use the enum instead of magic integers.
143         Make the error message a little clearer when neither "hub" nor
144         "maxhops" is specified for a server.  Clean up the control flow
145         when we decide to reject the link.
146
147 2010-03-08  Michael Poole <mdpoole@troilus.org>
148
149         * ircd/test/ircd_match_t.c (_SC_PAGE_SIZE): Default to
150         _SC_PAGESIZE if that is defined (as it is on some Unixes).
151
152 2010-03-04  Kevin L. Mitchell  <klmitch@mit.edu>
153
154         * ircd/s_bsd.c: use feature_int() to get the integer value of the
155         feature...and don't try to set the TOS to its index!
156
157 2010-02-02  Michael Poole <mdpoole@troilus.org>
158
159         * include/patchlevel.h (PATCHLEVEL): Bump to (u2.10.12.)13-rc2.
160
161 2010-01-13  Michael Poole <mdpoole@troilus.org>
162
163         * ircd/m_burst.c (ms_burst): Do not clear keys or limit here --
164         MODE_PARSE_WIPEOUT gets modebuf_flush() to do that for us.
165
166 2010-01-06  Michael Poole <mdpoole@troilus.org>
167
168         * Makefile.in: Remove doc/Makefile from the build.
169
170         * configure.in: Do not generate doc/Makefile.
171
172         * configure: Regenerate.
173
174         * doc/Makefile.in: Delete.
175
176         * doc/irc.1: Delete.
177
178         * doc/ircd.8: Delete.
179
180         * libs: Delete.
181
182 2010-01-06  Michael Poole <mdpoole@troilus.org>
183
184         * ircd/m_topic.c (ms_topic): When no topic timestamp is passed,
185         use the current time instead of the channel creation time.
186
187 2010-01-06  Michael Poole <mdpoole@troilus.org>
188
189         * ircd/m_silence.c (m_silence): Only show the silence list for the
190         requesting client and for channel services, to help keep other
191         clients' servers hidden.
192
193 2010-01-06  Michael Poole <mdpoole@troilus.org>
194
195         * ircd/gline.c (gline_add): If a forced G-line has already
196         expired, create it in a deactivated state.
197
198 2010-01-06  Michael Poole <mdpoole@troilus.org>
199
200         * ircd/m_burst.c (ms_burst): Gracefully handle the case where a
201         server sends us a too-large oplevel.  Forward oplevels whenever
202         they are in use, not just when the channel is +A.
203
204 2010-01-04  Kevin L. Mitchell  <klmitch@mit.edu>
205
206         * ircd/m_xquery.c (ms_xquery): Resolving my patches with
207         Entrope's--log extension queries sent to us
208
209         * ircd/m_xreply.c (ms_xreply): Resolving my patches with
210         Entrope's--swap order of findNUser() and FindNServer()
211
212         * ircd/Makefile.in (IRCD_SRC): Resolving my patches with
213         Entrope's--swap order of m_xquery.c and m_xreply.c to maintain
214         alphabetic ordering
215
216 2010-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
217
218         * ircd/m_xreply.c (ms_xreply): swap order of numeric resolution so
219         we can deal with XR directed to users
220
221         * configure: auto-rebuilt with Autoconf 2.63 (was 2.59)
222
223         * ircd/m_xquery.c: need ircd_reply.h; fix a couple of
224         capitalization errors; log XQUERY directed to "me"
225
226         * ircd/m_xreply.c: need ircd_reply.h and numnicks.h (how'd I miss
227         the latter??); fix a couple of capitalization errors
228
229         * ircd/Makefile.in (IRCD_SRC): it'd be nice if we actually tried
230         to compile the two new commands...
231
232         * ircd/s_auth.c: "serv" is passed to find_match_server(), which
233         does a collapse on the pattern, so it can't be const
234
235 2010-01-03  Michael Poole <mdpoole@troilus.org>
236
237         * ircd/engine_devpoll.c: Make some variables that were local to
238         engine_loop() file-scoped so engine_delete() can see them.
239         (engine_delete): Discard unprocessed events for the deleted
240         socket.
241         (engine_loop): Update to use the new variable names.  Change a
242         frequent debug statement to DEBUG_ENGINE.  Fix the type of the
243         codesize variable.
244
245         * ircd/engine_epoll.c: Same as ircd/engine_devpoll.c, but the
246         debug statement and codesize variable were already fixed.
247
248         * ircd/engine_kqueue.c: Same as ircd/engine_devpoll.c, but also
249         fix a typo in an engine_signal() assertion, and get rid of dead
250         variables in engine_delete().
251
252 2010-01-03  Michael Poole <mdpoole@troilus.org>
253
254         * ircd/s_bsd.c (client_sock_callback): Invalidate cli_fd() when we
255         receive an EBADF error.
256
257 2010-01-03  Michael Poole <mdpoole@troilus.org>
258
259         * ircd/engine_select.c (engine_loop): Remove a bogus assert() that
260         the structure's FD is correct after the event-handling callback
261         returns.  Also fix a warning about the type of the last parameter
262         passed to getsockopt().
263
264 2010-01-03  Michael Poole <mdpoole@troilus.org>
265
266         * ircd/m_names.c (m_names): Terminate the buffer used for listing
267         clients who are not in any channel.
268
269 2010-01-03  Michael Poole <mdpoole@troilus.org>
270
271         * ircd/channel.c (find_delayed_joins): Move earlier in the file.
272         (modebuf_flush_int): Move the checks for changing between +D and
273         +d to here...
274         (modebuf_flush): ... from here.
275
276 2010-01-03  Michael Poole <mdpoole@troilus.org>
277
278         * ircd/m_server.c (check_loop_and_lh): Never return 1 when we kill
279         another server.  Update the squit message text for maxhops and hub
280         violations.
281
282 2010-01-03  Michael Poole <mdpoole@troilus.org>
283
284         * ircd/Makefile.in (IRCD_SRC): Add m_xquery.c and m_xreply.c to
285         the build.
286
287         * ircd/m_xquery.c: Add missing include.
288         (mo_xquery): Fix spelling of struct Client.
289         (ms_xquery): Likewise.
290
291         * ircd/m_xreply.c: Add missing includes.
292         (ms_xreply): Fix spelling of struct Client and findNUser().
293
294 2010-01-01  Kevin L. Mitchell  <klmitch@mit.edu>
295
296         * doc/readme.xquery: documentation for design and use of the
297         extension query mechanism
298
299         * doc/readme.iauth: document X iauth message and X and x server
300         messages
301
302         * include/msg.h: declare XQUERY/XQ and XREPLY/XR commands/tokens
303
304         * include/handlers.h: declare mo_xquery(), ms_xquery(), and
305         ms_xreply() message handlers
306
307         * include/s_auth.h: declare auth_send_xreply() to forward replies
308         to extension queries to the iauth instance
309
310         * ircd/m_xquery.c: process extension queries
311
312         * ircd/m_xreply.c: process replies to extension queries
313
314         * ircd/parse.c: add XQUERY and XREPLY commands to the list
315
316         * ircd/s_auth.c: add support for extension queries to iauth
317         protocol
318
319 2010-01-01  Michael Poole <mdpoole@troilus.org>
320
321         * ircd/s_auth.c (iauth_do_spawn): Add debug output to diagnose
322         which system call might be failing.
323         (auth_spawn): Avoid reading past the end of iauth->i_argv[].  When
324         discarding an existing IAuth instance, use auth_close_unused() to
325         close the sockets and avoid leaking memory.
326
327 2010-01-01  Michael Poole <mdpoole@troilus.org>
328
329         * ircd/channel.c (mode_process_bans): Bypass total ban count and
330         length checks for OPMODEs.
331
332 2010-01-01  Michael Poole <mdpoole@troilus.org>
333
334         * ircd/ircd_features.c (feature_report): If sd->sd_funcdata is
335         non-zero, report even unchanged features (using prefix 'f').
336
337         * ircd/s_stats.c (statsinfo): Make "/stats f" case-sensitive, and
338         use the upper case variant to report all features.
339
340 2009-07-30  Michael Poole <mdpoole@troilus.org>
341
342         * ircd/s_user.c (register_user): Move the default-usermodes call
343         to set_user_mode() to before SetUser(), so that the former does
344         not increment the UserStats fields.  Add back the explicit
345         adjustments to UserStats for invisible and opered clients.
346
347 2009-07-05  Michael Poole <mdpoole@troilus.org>
348
349         * ircd/s_user.c (register_user): Use correct parc for
350         set_user_mode().  Do not increment UserStats fields here, because
351         set_user_mode() handles that.
352
353 2009-07-05  Michael Poole <mdpoole@troilus.org>
354
355         * ircd/m_gline.c (ms_gline): Fix the sense of the test for
356         strtoul() when parsing G-line lifetimes -- zero indicates failure.
357
358 2009-07-05  Michael Poole <mdpoole@troilus.org>
359
360         * ircd/channel.c (mode_parse_client): Ignore anything after a
361         colon when the mode is CHFL_VOICE or the mode is being removed.
362
363 2009-07-04  Michael Poole <mdpoole@troilus.org>
364
365         * ircd/s_auth.c (find_conf_client): New function.
366         (preregister_user): Use it to avoid assigning a second conf class
367         on client connection.
368         (auth_ping_timeout): Send the "T" message only if we do not kill
369         the client (and thus send a "D" message).
370         (auth_find_classs_conf): Do not allow IAuth to select a disabled
371         class.  Unlink new conf items from GlobalConfList.
372         (iauth_cmd_done_client): Handle failures from attach_conf().
373         (iauth_parse): Behave decently when a client is killed by the
374         message handler.
375
376         * tools/iauth-test (%handlers): Add entries to help test this.
377
378 2009-07-04  Michael Poole <mdpoole@troilus.org>
379
380         * include/channel.h (RevealDelayedJoinIfNeeded): Declare.
381
382         * ircd/channel.c (RevealDelayedJoinIfNeeded): Implement.
383
384         * ircd/ircd_relay.c (relay_channel_message): Only reveal the user
385         if he passes the check_target_limit() test.
386         (relay_channel_notice): Likewise.
387
388         * ircd/m_wallchops.c (m_wallchops): Likewise.
389
390         * ircd/m_wallvoices.c (m_wallvoices): Likewise.
391
392         * ircd/s_user.c (check_target_limit): Micro-optimize to only check
393         the user's channel list for invites if we are about to deny it.
394
395 2009-03-25  Michael Poole <mdpoole@troilus.org>
396
397         * ircd/ircd.c (main): Unconditionally set +6 flag on self.
398
399 2009-03-25  Michael Poole <mdpoole@troilus.org>
400
401         * ircd/s_auth.c (iauth_cmd_hostname): Properly assign the spoofed
402         hostname (yea, even as the "real" host) in the hurry state.
403
404         * tools/iauth-test: Add reminder about perl's RTMIN signal and a
405         new handler to exercise the N command in the hurry state.
406
407 2009-03-25  Michael Poole <mdpoole@troilus.org>
408
409         * ircd/channel.c (mode_parse): Add Doxygen comment.  When bouncing
410         a mode from a desynced U-lined server, do not set the modes or
411         send the change as a HACK(4) message.
412
413 2009-03-17  Michael Poole <mdpoole@troilus.org>
414
415         * ircd/send.c (sendcmdto_match_butone): Move match_it() to the end
416         of the if() to minimize the number of expensive function calls.
417
418 2009-03-17  Michael Poole <mdpoole@troilus.org>
419
420         * patches/diffs/antispambot.diff: Forward port a patch by Dianora
421         to add rudimentary spam bot detection to ircu.
422
423 2009-02-08  Michael Poole <mdpoole@troilus.org>
424
425         * include/client.h (ClearHub): New macro.
426
427         * ircd/ircd.c (main): Set IPv6 flag on &me if appropriate.
428
429         * ircd/ircd_features.c (feature_notify_hub): New function.
430         (features[]): Register it for FEAT_HUB.
431
432         * ircd/ircd_parser.y (connectblock): Do not default maxlinks to
433         65535 unless "hub" is specified.
434         (clientblock): Reset maxlinks on cleanup.
435
436 2009-02-08  Michael Poole <mdpoole@troilus.org>
437
438         * ircd/channel.c (clean_channelname): Delete this function; it is
439         no longer used, and had the same length-off-by-one bug.
440
441         * ircd/m_join.c (m_join): Use > instead of >= with CHANNELLEN.
442
443         * tests/ircd.conf: Set CHANNELLEN to make it easier to test this.
444
445         * tests/bug-2328334.cmd: New file for regression testing.
446
447 2009-02-08  Michael Poole <mdpoole@troilus.org>
448
449         * include/numeric.h (ERR_INVALIDKEY): Define new numeric.
450
451         * ircd/s_err.c (ERR_INVALIDKEY): Give it a text string.
452
453         * ircd/channel.c (is_clean_key): Rename from clean_key(), and make
454         this function responsible for sending error messages to the client
455         when necessary.
456         (mode_parse_key): Update to match the new is_clean_key() behavior.
457         (mode_parse_upass): Likewise.
458         (mode_parse_apass): Likewise.
459
460         * tests/channel-keys.cmd: New file for regression testing.
461
462 2009-02-08  Michael Poole <mdpoole@troilus.org>
463
464         * include/gline.h (gline_forward_deactivation): Undeclare.
465
466         * ircd/m_gline.c (mo_gline): Remove the special case to call
467         gline_forward_deactivation().
468
469         * ircd/gline.c (gline_add): Mention if the new G-line is already
470         deactivated.
471         (gline_forward_deactivation): Delete implementation.
472
473         * tests/glines.cmd: Update the expected output to match.
474
475 2009-01-12  Michael Poole <mdpoole@troilus.org>
476
477         * ircd/m_topic.c (do_settopic): Just before sending the topic out,
478         check to see if the user is join-delayed and should be shown.
479
480         * ircd/m_wallchops.c (m_wallchops): Allow this command to expose
481         join-delayed users.
482         (ms_wallchops): Likewise.
483
484         * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose
485         join-delayed users.
486         (ms_wallvoices): Likewise.
487
488 2009-01-12  Michael Poole <mdpoole@troilus.org>
489
490         * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
491
492 2009-01-12  Michael Poole <mdpoole@troilus.org>
493
494         * ircd/gline.c (count_users): Accept "flags" mask to limit count
495         to local users.
496         (gline_add): Pass the flags to count_users().
497
498 2009-01-12  Michael Poole <mdpoole@troilus.org>
499
500         * include/gline.h (gline_forward_deactivation): Declare.
501
502         * ircd/gline.c (count_users): Use ipmask-based checks too.
503         (gline_add): Require flags to have exactly one of the GLINE_GLOBAL
504         and GLINE_LOCAL bits set.
505         (gline_forward_deactivation): Implement new function.
506         (gline_find): Only require the GLINE_LOCAL flag to be set in the
507         gline structure; infer GLINE_GLOBAL when it is cleared.  (This
508         matches the value and usage of GLINE_MASK.)
509
510         * ircd/m_gline.c (ms_gline): Default lastmod to the known lastmod
511         time for GLINE_LOCAL_{DE,}ACTIVATE.
512         (mo_gline): Check that expiration times parse as expected.  Reject
513         "*" as a target for GLINE_LOCAL_{DE,}ACTIVATE.  Require reason and
514         expiration time for new G-lines.  Allow deactivation of an unknown
515         G-line without creating it ("so-and-so ... creating new G-line" is
516         a confusing message for a deactivation).
517
518         * tests/glines.cmd: New test script for G-line parsing tests.
519
520         * tests/ircd.conf: Enable CONFIG_OPERCMDS for glines.cmd.
521
522         * tests/ircd-2.conf: Likewise.
523
524         * tests/readme.txt: Add section on command syntax.
525
526         * tests/test-driver.pl: Report line numbers more clearly.
527         Fix (somewhat kludgily) the brokenness of consecutive "expect"
528         lines, as demonstrated by the numeric 219 and 281 expects in
529         glines.cmd.
530
531 2008-11-17  Michael Poole <mdpoole@troilus.org>
532
533         * ircd/m_kick.c (ms_kick): Properly handle crossing net rider and
534         normal KICKs (in the case where we get the normal kick first).
535
536 2008-11-17  Michael Poole <mdpoole@troilus.org>
537
538         * ircd/match.c (match): Fix an error in backtracking (apparently
539         exacerbated by escapes).
540
541         * ircd/test/ircd_match_t.c: Update headers and make sure we have a
542         mmap() anonymous request flag.
543         (test_match): New function.
544         (do_match_test): Use it instead of calling match() directly.
545
546 2008-09-07  Perry Lorier <isomer@undernet.org>
547         
548         * ircd/m_kill.c: Remove the . from the end of the nickname in kill
549         messages to make cut and pasting easier.
550
551 2008-03-20  Michael Poole <mdpoole@troilus.org>
552
553         * ircd/ircd_string.c (ircd_aton_ip4): Reject strings with more
554         than 3 dots in them.
555
556         * ircd/test/ircd_in_addr_t.c (test_addrs): Update the expected
557         parsing for a bare IPv4 address to a IPv4-mapped address.
558         (test_masks): Add a test for the ircd_string.c change.
559
560 2008-03-20  Kevin L. Mitchell  <klmitch@mit.edu>
561
562         * include/client.h: IsLocOp() now checks to see if its MyUser() as
563         well; IsAnOper() uses IsOper() and IsLocOp() instead of directly
564         testing the flags
565
566 2008-03-15  Michael Poole <mdpoole@troilus.org>
567
568         * ircd/s_bsd.c (init_connection_limits): Remove errant apostrophe.
569         Print text error message when unable to set max FDs.
570
571 2008-03-15  Michael Poole <mdpoole@troilus.org>
572
573         * ircd/s_user.c (set_user_mode): Check for end of argument list
574         when processing 'r' modes.
575
576 2008-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
577
578         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
579
580 2008-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
581
582         * ircd/m_burst.c (ms_burst): surround protocol_violation() and
583         break in braces to do what Jan Krueger was trying to do...
584
585 2008-01-03  Jan Krueger  <jast@heapsort.de>
586
587        * ircd/m_burst.c: prevent leaking the next nick into the current one's
588        oplevel. Add protocol_violation when an invalid nick flag appears.
589
590 2007-12-28  Kevin L. Mitchell  <klmitch@mit.edu>
591
592         * ircd/channel.c: add MODE_REGISTERED, mapped to +R; arrange to
593         only have it settable or clearable by remote users or /opmode
594
595         * include/supported.h (FEATURESVALUES2): update to include 'R'
596         channel mode
597
598         * include/channel.h: add MODE_REGISTERED, update infochanmodes to
599         include 'R' channel mode
600
601 2007-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
602
603         * ircd/m_gline.c (ms_gline): if we got an activate or deactivate
604         for a global G-line we never heard of, and we cannot create it
605         because no expire time was sent, manually propagate the G-line
606         instead of trying to call gline_add()
607
608         * ircd/gline.c (make_gline): never allow a G-line to be created
609         with a 0 expire time
610
611 2007-12-03  Michael Poole <mdpoole@troilus.org>
612
613         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.12 release.
614
615 2007-12-03  Michael Poole <mdpoole@troilus.org>
616
617         * doc/Makefile.in (DATAROOTDIR): Define.
618         (DATADIR): Likewise.
619         
620 2007-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
621
622         * ircd/version.c.SH: correct invalid syntax in shell case/esac
623
624         * ircd/ircd_lexer.l: provide an implementation of yywrap() so we
625         no longer have to link against -lfl
626
627         * configure.in: drop tests on LEXLIB and don't add it to the list
628         of libs
629
630         * ircd/gline.c (gline_add): apply too-many-users test to realname
631         G-lines *only* when the origin is my user (or a user, for
632         remote-local G-lines)
633
634 2007-11-28  Michael Poole <mdpoole@troilus.org>
635
636         * include/patchlevel.h (PATCHLEVEL): Bump for pre12 development.
637
638 2007-11-28  Michael Poole <mdpoole@troilus.org>
639
640         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.11 release.
641
642 2007-11-28  Michael Poole <mdpoole@troilus.org>
643
644         * tests/test-driver.pl (drv_default): Fix expect for numeric
645         responses that have non-trivial parameters.
646         (check_expect): Simplify (and fix) sender name check.
647
648         * tests/bug-1640796.cmd: Update expect NNN for new POE behavior
649         and part to not try to part the channel named "leaving".
650
651         * tests/bug-1674539.cmd: Update expect NNN for new POE behavior.
652
653         * tests/bug-1840011.cmd: New test script.
654         
655 2007-11-28  Michael Poole <mdpoole@troilus.org>
656
657         * ircd/channel.c (mode_ban_invalidate): Clarify Doxygen comments.
658         (apply_ban): Only block narrower bans if the wider ban is active.
659
660 2007-11-24  Michael Poole <mdpoole@troilus.org>
661
662         * ircd/m_names.c (do_names): Don't try to re-initialize the start
663         of buf[] for each line.  It's done the first time around and that
664         can be reused safely.
665
666 2007-11-17  Michael Poole <mdpoole@troilus.org>
667
668         * ircd/m_stats.c (m_stats): Properly assign param before it is
669         used in the hunt_server_cmd() call.
670         
671 2007-11-17  Michael Poole <mdpoole@troilus.org>
672
673         * ircd/s_auth.c (iauth_disconnect): Avoid destroying invalid
674         sockets.
675         (iauth_stderr_callback): Disconnect iauth child if stderr has
676         EOF (in case stdin notification is delayed somehow).
677         
678 2007-11-04  Michael Poole <mdpoole@troilus.org>
679
680         * ircd/umkpasswd.c (sum): Typecast buffer to avoid a warning about
681         the parameter type being passed to strlen().
682         
683 2007-11-04  Michael Poole <mdpoole@troilus.org>
684
685         * doc/example.conf: Document /LIST M as controlled by list_chan.
686
687         * include/channel.h (LISTARG_SHOWMODES): Define.
688
689         * ircd/hash.c (list_next_channels): Handle it.
690
691         * ircd/m_list.c (show_usage): Document 'M' flag.
692         (param_parse): Recognize 'M' as LISTARGS_SHOWMODES.
693
694 2007-11-04  Michael Poole <mdpoole@troilus.org>
695
696         * ircd/m_list.c (param_parse): Reverse comparison direction when
697         converting from minutes to time_t, and which bound is set (so that
698         T<time_t works correctly).  Also switch is_time cases so that 'T'
699         and 'C' work as documented.  Remove a "break" after a "return".
700
701         (m_list): Remove a "break" after a "return".
702
703 2007-10-29  Michael Poole <mdpoole@troilus.org>
704
705         * ircd/ircd_lexer.l (YY_INPUT): Redefine to use fbgets().
706         (init_lexer): Return a value to indicate failure.  Use fbopen().
707         (deinit_lexer): New function.
708
709         * ircd/s_conf.c (read_configuration_file): Update extern
710         declarations.  Bail if init_lexer() fails.  Call deinit_lexer()
711         rather than directly munging yyin.
712
713 2007-10-29  Michael Poole <mdpoole@troilus.org>
714
715         * include/gline.h: Delete declaration of gline_propagate().
716
717         * include/whocmds.h: Delete declaration of count_users().
718
719         * ircd/whocmds.c (count_users): Move to gline.c as a static.
720
721         * ircd/gline.c (whocmds.h): Remove #include.
722         (gliter): Document boolean trickiness.  Add missing trickiness
723         when gl_flags has bits set besides GLINE_ACTIVE.
724         (make_gline): Get rid of now-unused "after" variable and the
725         comments related to overlapping G-lines.
726         (gline_propagate): Make static.
727         (count_users): Move from whocmds.c as a static function.
728         (count_realnames): New function.
729         (gline_add): Require a force to hit lots of users with a realname
730         G-line.
731
732 2007-09-05  Michael Poole <mdpoole@troilus.org>
733
734         * ircd/m_gline.c (ms_gline): Remove dead branch when 4 < parc < 5.
735         (mo_gline): Consistently use the last argument as the reason.
736
737 2007-09-05  Michael Poole <mdpoole@troilus.org>
738
739         * ircd/Makefile.in: Fix dependencies for version.h generation.
740
741 2007-08-20  Michael Poole <mdpoole@troilus.org>
742
743         * ircd/send.c (sendwallto_group_butone): Move a feature_bool()
744         call out of a loop.  Convert HasFlag() uses to appropriate macros
745         from client.h.
746
747 2007-08-20  Michael Poole <mdpoole@troilus.org>
748
749         * ircd/ircd_string.c (ircd_aton_ip4): Allow a sequence of *.* at
750         the end of an IPv4 mask.
751         (ipmask_parse): Likewise for *:* at the end of IPv6 masks.
752
753         * ircd/test/ircd_in_addr_t.c (test_masks): Add tests for this.
754
755 2007-08-20  Michael Poole <mdpoole@troilus.org>
756
757         * ircd/s_user.c (register_user): Update inv_clients and opers
758         counts.  Call client_set_privs() for local users.
759         (set_nick_name): Do not call client_set_privs() for remote users.
760         (set_user_mode): Move oper and invisible client checks inside the
761         IsRegistered() section.
762
763 2007-08-14  Michael Poole <mdpoole@troilus.org>
764
765         * ircd/channel.c (DONE_*): Split key changes into _ADD and _DEL.
766         (mode_parse_key): Check both, to properly handle -k+k changes.
767         (mode_parse_upass): Likewise, for -U+U.
768         (mode_parse_apass): Liekwise, for -A+A (in case that ever happens).
769         (mode_parse): Update which "done" flag is checked during a wipeout.
770
771 2007-08-13  Michael Poole <mdpoole@troilus.org>
772
773         * ircd/s_user.c (whipser): CNOTICEs should not trigger away
774         messages, only CPRIVMSGs.
775
776 2007-08-13  Michael Poole <mdpoole@troilus.org>
777
778         * ircd/m_who.c (m_who): Reorder responses and change the
779         ERR_QUERYTOOLONG parameter to be consistent with m_whois().
780         
781 2007-08-13  Michael Poole <mdpoole@troilus.org>
782
783         * ircd/s_user.c (register_user): Initialize umodev[] in a
784         C89-compatible way.  (gcc 4.1.2 warned about it.)
785
786 2007-08-13  Michael Poole <mdpoole@troilus.org>
787
788         * ircd/m_names.c (do_names): Add NAMES_DEL to comment.  Avoid use
789         of strcat().  Get rid of ms_names(), which was basically a copy of
790         m_names(), and merge the "showingdelayed" changes into m_names().
791         Replace the recursion with iteration.
792
793         * ircd/parse.c (msgtab): Use m_names(), not ms_names().
794
795 2007-08-08  Michael Poole <mdpoole@troilus.org>
796
797         * ircd/s_auth.c (report_iauth_conf): Remove end-of-stats message;
798         m_stats() already does that.
799
800         (report_iauth_stats): Likewise.
801
802 2007-08-08  Michael Poole <mdpoole@troilus.org>
803
804         * include/res.h (irc_in_addr_is_ipv4): Fix classification of
805         addresses like 0.0.0.0.
806
807 2007-07-21  Perry Lorier <isomer@undernet.org>
808
809         * ircd/s_user.c: Move set_nick_name() to use set_user_mode(),
810         set_user_mode() now interprets +r usermodes properly (and ignores
811         them from non servers).  This fixes a problem where remote users
812         weren't being counted properly anymore.
813
814 2007-07-20  Kevin L. Mitchell  <klmitch@mit.edu>
815
816         * ircd/m_gline.c: create abs_expire() macro to convert an expire
817         timestamp from the network into an absolute time, if needed;
818         rename expire_off to expire globally, since it now represents an
819         absolute expiration time; use expire - CurrentTime in gline
820         forwarding statements; in ms_gline(), use abs_expire() to convert
821         network expiration timestamp into absolute timestamp; in
822         mo_gline(), add CurrentTime to oper-provided expiration offset to
823         convert to absolute timestamp
824
825         * ircd/gline.c: assume expire and lifetime arguments to
826         gline_add() and gline_modify() are already absolute timestamps;
827         send lifetime parameter as an absolute timestamp, but leave expire
828         timestamp as relative as first part of a 2-phase update
829
830 2007-07-12  Perry Lorier <isomer@undernet.org>
831         Reconsider how we manage modes before registration, to avoid stats
832         getting out of sync.
833
834         * ircd/s_user.c (set_user_mode): Add new parameter to set_user_mode to
835         ignore some modes.
836         (register_user): Use set_user_mode to parse default usermode for
837         users.
838
839         * ircd/m_user.c: Add extra parameter to set_user_mode call
840
841         * ircd/s_auth.c: Add extra parameter to set_user_mode call
842
843         * ircd/m_mode.c: Add extra parameter to set_user_mode call
844
845         * ircd/s_misc.c: Verify stats are consistant.
846
847         * include/s_user.h: Change prototype, add flag definitions.
848
849         * ircd/m_lusers.c (m_users): Assert that we're generating sane stats,
850         include "unknowns" in the total user connections to avoid negative
851         wrap arounds.
852
853 2007-07-12  Perry Lorier <isomer@undernet.org>
854         
855         * ircd/m_user.c (m_luser): Fix broken RFC 2812 on connect user mode 
856         setting
857
858 2007-05-28  Michael Poole <mdpoole@troilus.org>
859
860         * include/numeric.h (ERR_INPUTTOOLONG): New numeric.
861
862         * ircd/s_bsd.c (read_packet): Use it.
863
864         * ircd/s_err.c (replyTable): Give it a format string.
865
866 2007-05-20  Michael Poole <mdpoole@troilus.org>
867
868         * ircd/m_burst.c (ms_burst): Do not let bursting servers join a
869         user to a channel more than once.
870
871 2007-05-20  Michael Poole <mdpoole@troilus.org>
872
873         * ircd/ircd_features.c (feature_set): Report new value of feature
874         for /set.
875         (feature_reset): Likewise, for /reset.
876
877 2007-05-20  Michael Poole <mdpoole@troilus.org>
878
879         * ircd/m_burst.c (netride_modes): Return -1 if someone tries to
880         remove modes in the burst.
881         (ms_burst): Check for, and handle, that protocol violation.
882
883 2007-05-20  Michael Poole <mdpoole@troilus.org>
884
885         * ircd/m_privs.c (mo_privs): Report "no such nickname" for unknown
886         nicks in the list.  (Unfortunately, the nick is lost before ms_privs.)
887
888 2007-05-20  Michael Poole <mdpoole@troilus.org>
889
890         * ircd/listener.c (show_ports): Actually hide hidden ports from
891         clients that should not see them.
892
893 2007-05-20  Michael Poole <mdpoole@troilus.org>
894
895         * ircd/s_err.c (ERR_DONTCHEAT): Add apparently missing %s.
896         
897 2007-05-20  Michael Poole <mdpoole@troilus.org>
898
899         * ircd/m_connect.c (mo_connect): Return an error to a locop who
900         tries to do a remote connect.
901
902 2007-05-20  Michael Poole <mdpoole@troilus.org>
903
904         * ircd/parse.c (msgtab): Make SETTIME consistent with other
905         oper commands, in using m_not_oper for non-opered clients.
906
907 2007-05-20  Michael Poole <mdpoole@troilus.org>
908
909         * ircd/ircd_parser.y (pseudoblock): Forbid pseudo commands that
910         are not all alphabetic characters.
911
912 2007-05-20  Michael Poole <mdpoole@troilus.org>
913
914         * configure.in (maxcon): Check that maximum connections is
915         sufficiently large to avoid underflow in MAXCLIENTS.
916         
917 2007-05-20  Michael Poole <mdpoole@troilus.org>
918
919         * include/supported.h (FEATURES2): Remove extra space.
920
921         * ircd/m_admin.c (m_admin): Only check server mask against our
922         name, so that it cannot leak information about other linked
923         servers.
924
925         * ircd/m_version.c (m_version): Likewise.
926         
927 2007-04-15  Kevin L. Mitchell  <klmitch@mit.edu>
928
929         * ircd/m_gline.c: fix minor typo in code that forwards remote
930         local activations/deactivations: %c takes characters, not
931         pointers!
932         (mo_gline): fix similar typo in code forwarding remote local
933         G-lines by opers
934
935 2007-04-10  Michael Poole <mdpoole@troilus.org>
936
937         * ircd/ircd_parser.y (iauth): Avoid problems related to MyFree's
938         multiple evaluation of its argument.
939
940 2007-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
941
942         * ircd/m_gline.c (ms_gline): lastmod must be non-zero
943
944 2007-04-04  Michael Poole <mdpoole@troilus.org>
945
946         * ircd/s_conf.c (rehash): Restart resolver after reading the
947         config file; this un-breaks the resolver after /rehash if the
948         ircd.conf contains no "dns server = <ipstring>;" lines.
949
950 2007-04-01  J. R. Lenz <ralf@starshadow.com>
951
952         * ircd/s_user.c (register_user): Check for host-hiding when fully
953         registering a user.  [Comment added by Entrope.]
954
955 2007-03-31  Michael Poole <mdpoole@troilus.org>
956
957         * doc/readme.iauth (IAuth M): Document new command.
958
959         * ircd/m_user.c (m_user): Recognize RFC 2812 mode request and a
960         saner usermode request.
961
962         * ircd/s_auth.c (iauth_cmd_usermode): New command.
963         (iauth_parse): Dispatch to it.
964
965         * ircd/s_user.c (set_user_mode): Only broadcast usermode changes
966         for registered clients.
967
968         * tools/iauth-test (127.0.1.3): Test the new M command.
969
970 2007-03-31  Michael Poole <mdpoole@troilus.org>
971
972         * ircd/m_mode.c (m_mode): Check and report target/source
973         violations before calling set_user_mode().
974         (ms_mode): Likewise.
975
976         * ircd/s_user.c (set_user_mode): Remove those checks from here.
977
978 2007-03-31  Michael Poole <mdpoole@troilus.org>
979
980         * include/ircd_events.h (struct Generators): Convert elements to
981         be struct GenHeader*.
982         (timer_next): Update to match.
983
984         * ircd/ircd_events.c (timer_enqueue): Update to match.
985         (signal_callback): Likewise.
986         (timer_init): Remove a typecast with something slightly safer.
987         (timer_run): Update to deal with new type of Generator.g_timer.
988         (signal_add): Likewise.
989         (socket_add): Likewise.
990         
991 2007-03-28  Michael Poole <mdpoole@troilus.org>
992
993         * ircd/m_asll.c (ms_asll): Count hits and report at the end, so
994         that a client is told whether any match (and has a hint that only
995         directly linked servers are checked).
996         (mo_asll): Likewise.
997
998 2007-03-26  Michael Poole <mdpoole@troilus.org>
999
1000         * ircd/s_stats.c (m_stats): Move check for STAT_FLAG_LOCONLY (and
1001         the assignment to "param") to the hunted server.
1002
1003 2007-03-26  Michael Poole <mdpoole@troilus.org>
1004
1005         * ircd/s_auth.c (iauth_parse): Check for missing arguments when
1006         parsing the iauth message.
1007
1008         * tests/bug-1685648.cmd: New file to test this.
1009
1010         * tests/iauth-test: New file to exercise the code path.
1011
1012         * tests/ircd.conf: Use the iauth-test helper program.
1013
1014 2007-03-26  Michael Poole <mdpoole@troilus.org>
1015
1016         * ircd/m_silence.c (forward_silences): Do not try twice to process
1017         silences that were both added and deleted.
1018
1019 2007-03-26  Michael Poole <mdpoole@troilus.org>
1020
1021         * ircd/ircd_parser.y (portblock): Restore old behavior for Port
1022         blocks with no host listed.
1023
1024 2007-03-26  Michael Poole <mdpoole@troilus.org>
1025
1026         * doc/readme.iauth (iauth I): Fix example and syntax.
1027
1028 2007-03-18  Michael Poole <mdpoole@troilus.org>
1029
1030         * acinclude.m4 (unet_NONBLOCKING): Properly quote function name.
1031         (unet_SIGNALS): Likewise.
1032         (unet_CHECK_TYPE_SIZES): Likewise.
1033         (AC_LIBRARY_NET): Likewise.
1034
1035 2007-03-18  Kevin L. Mitchell  <klmitch@mit.edu>
1036
1037         * ircd/m_gline.c (mo_gline): add permissions checks I kept
1038         forgetting to add--remote local modifications require
1039         FEAT_CONFIG_OPERCMDS and PRIV_GLINE, local G-lines require
1040         PRIV_LOCAL_GLINE, and global G-line changes (excluding local
1041         activation/deactivation) require FEAT_CONFIG_OPERCMDS and
1042         PRIV_GLINE
1043
1044 2007-03-17  Michael Poole <mdpoole@troilus.org>
1045
1046         * doc/example.conf (CRule): Document the support for multiple
1047         server masks in a single CRule block.
1048         (Port): Document the optional additional field for vhost entries.
1049         Document the support for multiple vhost entries in a single Port
1050         block.
1051
1052         * ircd/ircd_parser.y (USE_IPV4): Shift up by 16 bytes.
1053         (USE_IPV6): Likewise.
1054         (portblock): Iterate over hosts rather than using the single host.
1055         (portitem): Add portvhostnumber alternative production.
1056         (portnumber): Check port number here.  If valid, combine address
1057         family and port number in "port" variable.  If a port-less item
1058         exists in "hosts", set its port number.
1059         (portvhost): Prepend mask to "hosts" list.
1060         (portvhostnumber): New production.
1061         (cruleblock): Iterate over hosts rather than using the single
1062         host.
1063         (cruleserver): Prepend server mask to "hosts" list.
1064
1065 2007-03-17  Michael Poole <mdpoole@troilus.org>
1066
1067         * ircd/listener.c (add_listener): Only try to create IPv6 sockets
1068         for IPv6-compatible addresses; likewise for IPv4.
1069
1070 2007-03-17  Michael Poole <mdpoole@troilus.org>
1071
1072         * doc/example.conf (Operator): Update documentation to mention
1073         more than one host entry is allowed.
1074         (Motd): Likewise.
1075
1076         * ircd/ircd_parser.y (hosts): New file-scope variable.
1077         (free_slist): New helper function.
1078         (operblock): Iterate over hosts instead of using the single host.
1079         (operhost): Prepend the mask to hosts.
1080         (motdblock): Iterate over hosts instead of using the single host.
1081         (motdhost): Prepend the mask to hosts.
1082         (motdfile): Fix possible leak of "pass" string (the filename).
1083
1084         * ircd/s_conf.c (conf_parse_userhost): Stop freeing the host
1085         string; operblock (the only caller) frees it now.
1086
1087 2007-03-17  Michael Poole <mdpoole@troilus.org>
1088
1089         * ircd/list.c (free_link): Only decrement the in-use count of
1090         links if we free a link.
1091
1092 2007-03-17  Kevin L. Mitchell  <klmitch@mit.edu>
1093
1094         * ircd/s_err.c: update replies to handle new fields in
1095         RPL_STATSGLINE and RPL_GLIST--new fields indicate G-line lastmod,
1096         G-line lifetime, and local activation status
1097
1098         * ircd/m_gline.c: update function documentation for ms_gline();
1099         move test for server to before mask processing; don't look up
1100         remote server too early; add code to process local activations and
1101         deactivations early in ms_gline(); implement adding and destroying
1102         local G-lines; don't try to locally activate or deactivate G-lines
1103         that don't exist; add code to keep track of which fields were
1104         available to ms_gline(); implement G-line modification and
1105         creation; remove old ms_gline() code; convert
1106         sendwallto_group_butone() calls to Debug() calls; reimplement
1107         mo_gline() to take into account new syntax
1108
1109         * ircd/gline.c: change gl_rexpire to gl_lifetime to better reflect
1110         its meaning; make sure to set gl_state to GLOCAL_GLOBAL when
1111         G-line expires; add lifetime parameter to make_gline(); disable
1112         overlapping G-line check; initialize gl_lifetime from lifetime
1113         parameter; initialize gl_state to GLOCAL_GLOBAL; update
1114         gline_propagate() to send lifetime parameter; add lifetime
1115         parameter to gline_add(); remove some old code in gline_add();
1116         figure out lifetime to set on new G-line; remove test for
1117         make_gline() returning NULL, since it should never do so now; add
1118         modify_gline() for modifying global G-lines; add gline_destroy()
1119         for destroying local G-lines; update gline_burst() to send
1120         lifetime parameter; update gline_resend() to send lifetime
1121         parameter; update gline_list() to add lastmod, lifetime, and local
1122         status indicators; update gline_stats() to send lastmod, lifetime,
1123         and local status indicators; count BADCHANs in
1124         gline_memory_count()
1125
1126         * include/gline.h: add enum GlineLocalState for keeping track of
1127         local state changes to global G-lines; store state in struct
1128         Gline; document enum GlineAction; add GLINE_EXPIRE,
1129         GLINE_LIFETIME, and GLINE_REASON flags to indicate the presence of
1130         those fields to gline_modify(); add GLINE_UPDATE mask for checking
1131         for the above flags; update GlineIsActive() to take into account
1132         new gl_state field in struct Gline; add lifetime to gline_add();
1133         add gline_modify() for modifying existing global G-lines, and
1134         gline_destroy() for destroying local G-lines
1135
1136         * doc/readme.gline: update documentation to reflect changes made
1137         to G-line command syntax
1138
1139 2007-03-17  Michael Poole <mdpoole@troilus.org>
1140
1141         * ircd/umkpasswd.c (parse_arguments): Exit cleanly rather than
1142         aborting on unrecognized arguments.  It isn't nice to core on
1143         "umkpasswd --help"..
1144
1145 2007-03-16  Michael Poole <mdpoole@troilus.org>
1146
1147         * doc/example.conf (Class): Move the "Recommended client classes"
1148         comment to a better place (and stop recommending them).  Clarify
1149         what maxlinks does.  Make it clear that Operator password entries
1150         only support umkpasswd formats.
1151         
1152 2007-03-16  Michael Poole <mdpoole@troilus.org>
1153
1154         * ircd/ircd.c (parse_command_line): Emit a warning if using -x
1155         when DEBUGMODE is disabled.
1156
1157 2007-03-16  Michael Poole <mdpoole@troilus.org>
1158
1159         * ircd/s_conf.c (find_conf_exact): Treat maxlinks == 0 as being
1160         unlimited here, to match attach_conf()'s behavior.
1161
1162 2007-03-16  Kevin L. Mitchell  <klmitch@mit.edu>
1163
1164         * ircd/s_conf.c (find_kill): check FEAT_DISABLE_GLINES prior to
1165         checking for a G-line matching a new user
1166
1167         * ircd/m_gline.c (ms_gline): rework ms_gline() to handle new
1168         command syntax--although it can parse the new syntax, it doesn't
1169         yet perform the actions demanded by that syntax
1170
1171         * ircd/ircd_features.c: trap-door feature FEAT_DISABLE_GLINES to
1172         disable G-lines
1173
1174         * ircd/gline.c: create gliter() macro which performs an iteration
1175         over all G-lines in a specified G-line list; initialize record
1176         expire in make_gline() (to be redone); check FEAT_DISABLE_GLINES
1177         in do_gline(); add and document what happens if GLINE_LOCAL is
1178         passed to gline_find()
1179
1180         * include/ircd_features.h: trap-door feature FEAT_DISABLE_GLINES
1181         to disable G-lines; intended use: accidental G-line of *@*
1182
1183         * include/gline.h: add rexpire (record expiration time) field to
1184         gline description structure; add GlineAction enumeration (still
1185         undocumented) to describe actions that may be performed on G-lines
1186
1187 2007-03-09  Michael Poole <mdpoole@troilus.org>
1188
1189         * include/patchlevel.h (PATCHLEVEL): Bump for .pre11 development.
1190
1191 2007-03-09  Michael Poole <mdpoole@troilus.org>
1192
1193         * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release.
1194
1195 2007-03-05  Michael Poole <mdpoole@troilus.org>
1196
1197         * ircd/m_privs.c (ms_privs): Use the correct source when
1198         forwarding the PRIVS request.
1199
1200         * tests/bug-1674539.cmd: New file to test for this.
1201
1202         * tests/test-driver.pl: Recognize "oper" command from scripts.
1203
1204 2007-03-05  Michael Poole <mdpoole@troilus.org>
1205
1206         * tests/ircd.conf: Make into a hub.
1207
1208         * tests/ircd-2.conf: New file, for a second server.
1209
1210         * tests/ircd-3.conf: Configuration for a third server.
1211
1212 2007-03-04  Michael Poole <mdpoole@troilus.org>
1213
1214         * ircd/whocmds.c (count_users): Fix length of ipbuf.  (Spotted by
1215         paulr.)
1216
1217 2007-02-28  Michael Poole <mdpoole@troilus.org>
1218
1219         * ircd/os_generic.c (sockaddr_from_irc): Zero out socket address
1220         before setting family, and regardless of whether we have an
1221         irc_sockaddr template.
1222
1223 2007-02-25  Michael Poole <mdpoole@troilus.org>
1224
1225         * doc/example.conf: Document new options for General block.
1226         
1227         * include/res.h (clear_nameservers): Declare new function.
1228         (add_nameserver): Declare previously static function.
1229
1230         * include/s_bsd.h (VirtualHost_dns_v4): Declare.
1231         (VirtualHost_dns_v6): Likewise.
1232
1233         * ircd/ircd_lexer.l (DNS): Recognize new token.
1234
1235         * ircd/ircd_parser.y (DNS): Declare new token.
1236         (generalitem): Allow new items for dns vhost(s) and dns servers.
1237         (generaldnsvhost): New production.
1238         (generaldnsserver): New production.
1239
1240         * ircd/ircd_res.c (VirtualHost_dns_v4): New variable.
1241         (VirtualHost_dns_v6): Likewise.
1242         (clear_nameservers): New function.
1243         (restart_resolver): Scan specified servers so we only try to open
1244         DNS client sockets that we need.
1245
1246         * ircd/ircd_reslib.c (irc_nscount): Remove redundant initializer.
1247         (irc_res_init): Only read the resolver config file if there are no
1248         nameservers provided.
1249         (add_nameserver): Make non-static.  Remove off-by-one check
1250         against IRCD_MAXNS.
1251
1252         * ircd/s_conf.c (read_configuration_file): Clear nameserver list
1253         before reading the config file.
1254
1255 2007-01-27  Jeannot Langlois <jeannot12@linuxmail.org>
1256
1257         * doc/example.conf (Features): Illustrate URLREG feature.
1258
1259         * doc/readme.features (URLREG): Define new feature.
1260
1261         * include/ircd_features.h (Feature): Add FEAT_URLREG.
1262
1263         * ircd/ircd_features.c (features): Set the default value.
1264
1265         * ircd/m_join.c (m_join): For ERR_NEEDREGGEDNICK, include the
1266         URLREG value as a format argument.
1267
1268         * ircd/s_err.c (replyTable): Update ERR_NEEDREGGEDNICK
1269         appropriately.
1270
1271 2007-02-03  Michael Poole <mdpoole@troilus.org>
1272
1273         * ircd/ircd_reply.c (protocol_violation): Avoid reusing the
1274         va_list in vd.
1275
1276         * ircd/send.c (sendcmdto_channel_butone): Warn against using %v in
1277         the pattern -- that will cause incorrect behavior.
1278         (sendwallto_group_butone): Likewise.
1279         (sendcmdto_match_butone): Likewise.
1280
1281 2007-01-22  Michael Poole <mdpoole@troilus.org>
1282
1283         * ircd/channel.c (find_delayed_joins): New function.
1284         (modebuf_flush): Handle +D-D and related cases.
1285         (mode_parse_mode): It is too early to handle +D here, so don't.
1286         (CheckDelayedJoins): Use find_delayed_joins().
1287
1288 2007-01-22  Michael Poole <mdpoole@troilus.org>
1289
1290         * tests: New subdirectory for test framework.
1291
1292         * tests/ircd.conf: Helper file for testing.
1293
1294         * tests/readme.txt: Simple documentation of test framework.
1295
1296         * tests/test-driver.pl: Testing script interpreter.
1297
1298 2007-01-22  Michael Poole <mdpoole@troilus.org>
1299
1300         * doc/example.conf: Fix potentially confusing comment about ip
1301         mask syntax.
1302
1303 2007-01-22  Michael Poole <mdpoole@troilus.org>
1304
1305         * INSTALL: Mention source directory naming; update the reference
1306         to the config file converter (hah); update CVS directions.
1307
1308 2007-01-22  Michael Poole <mdpoole@troilus.org>
1309
1310         * include/supported.h: Move parameters from FEATURES1 to FEATURES2
1311         so that neither ISUPPORT line has more than 15 parameters.  (Some
1312         clients are picky about this.)
1313
1314 2007-01-21  Michael Poole <mdpoole@troilus.org>
1315
1316         * include/patchlevel.h (PATCHLEVEL): Bump for pre10 development.
1317
1318 2007-01-20  Michael Poole <mdpoole@troilus.org>
1319
1320         * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.09 release.
1321
1322 2007-01-15  Michael Poole <mdpoole@troilus.org>
1323
1324         * doc/readme.iauth (U): Document extended fields.
1325
1326         * include/s_auth.h (auth_set_user): Declare new parameters.
1327
1328         * ircd/m_user.c (m_user): Pass new parameters.
1329
1330         * ircd/s_auth.c (auth_set_user): Accept new parameters.  When
1331         using Undernet extensions, forward them to the iauth process.
1332
1333 2007-01-14  Michael Poole <mdpoole@troilus.org>
1334
1335         * ircd/os_generic.c (os_recv_nonb): Set errno to zero when
1336         returning IO_FAILURE due to a closed connection.
1337
1338 2006-12-31  Michael Poole <mdpoole@troilus.org>
1339
1340         * ircd/m_mode.c (ms_mode): Bounce modes from deopped members.
1341
1342 2006-12-30  Michael Poole <mdpoole@troilus.org>
1343
1344         * ircd/ircd_string.c (ircd_strncpy): Make sure the output buffer
1345         is terminated.  We don't rely on the arguable strncpy semantics.
1346
1347 2006-12-30  Michael Poole <mdpoole@troilus.org>
1348
1349         * include/struct.h (struct Server): Add asll_last field.
1350
1351         * ircd/ircd.c (check_pings): Add check for asll_last.  When a
1352         server doesn't ping, use an old-style ping rather than AsLL ping.
1353
1354         * ircd/m_pong.c (ms_pong): Use ClearPingSent() rather than
1355         ClrFlag().  Set asll_last to current time.
1356         (mr_pong): Use ClearPingSent() rather than ClrFlag().
1357         (m_pong): Likewise.
1358
1359         * ircd/s_bsd.c (completed_connection): Likewise.
1360         (read_packet): Likewise.  Update cli_lasttime for servers in
1361         addition to clients.
1362
1363 2006-01-13  Michael Poole <mdpoole@troilus.org>
1364
1365         * ircd/m_burst.c (ms_burst): Properly handle member mode :ov.
1366
1367 2006-01-13  Michael Poole <mdpoole@troilus.org>
1368
1369         * ircd/m_create.c (ms_create): Add channel name to the protocol
1370         violation notice for a redundant CREATE.
1371
1372 2006-01-13  Michael Poole <mdpoole@troilus.org>
1373
1374         * ircd/s_user.c (set_nick_name): Use user's account name rather
1375         than the account parameter, in case the parameter contains a colon
1376         (i.e. "account:1234" format).
1377
1378 2006-01-13  Michael Poole <mdpoole@troilus.org>
1379
1380         * doc/readme.who: Document 'd' user-matching flag.
1381
1382 2006-12-18  Michael Poole <mdpoole@troilus.org>
1383
1384         * ircd/m_jupe.c (mo_jupe): Fix which privilege is tested.
1385
1386 2006-12-07  Michael Poole <mdpoole@troilus.org>
1387
1388         * ircd/listener.c (show_ports): Update to show '4' and/or '6' as
1389         flags in response, with a '-' suffix if either one fails to open.
1390
1391 2006-12-07  Michael Poole <mdpoole@troilus.org>
1392
1393         * doc/example.conf (Port): Document the method to select IPv4 or
1394         IPv6 restriction for a port.
1395
1396         * include/listener.h (LISTEN_IPV4): New listener flag.
1397         (LISTEN_IPV6): New listener flag.
1398         (struct Listener): Split 'fd' and 'socket' fields into two each.
1399
1400         * ircd/ircd_lexer.l (gb): Move to be alphabetical.
1401         (gigabytes): Likewise.
1402         (ipv4): New token.
1403         (ipv6): Likewise.
1404         Adapted word matcher to handle digits in the non-leading character.
1405
1406         * ircd/ircd_parser.y (USE_IPV4): New macro.
1407         (USE_IPV6): Likewise.
1408         (TOK_IPV4): New token.
1409         (TOK_IPV6): Likewise.
1410         (address_family): New non-terminal rule.
1411         (portblock): Default to listening on both IPv4 and IPv6.
1412         (portnumber): Add address_family element and use it.
1413         (portvhost): Likewise.
1414
1415         * ircd/listener.c (make_listener): Adjust for newly split fields
1416         in struct Listener.
1417         (inetport): Likewise.  Adjust return value as well.
1418         (add_listener): Update to handle both IPv4 and IPV6 support.
1419         (close_listener): Likewise.
1420         (accept_connection): Because each listener has two sockets, it is
1421         no longer safe to free the listener when one is destroyed -- so
1422         don't.  Also accept() on the file descriptor from the incoming
1423         event rather than on a fixed fd.
1424
1425         * ircd/os_generic.c (os_socket): For platforms with IPV6_V6ONLY,
1426         enable it for AF_INET6 sockets rather than disabling it for
1427         unspecified sockets.
1428
1429 2006-12-06  Michael Poole <mdpoole@troilus.org>
1430
1431         * include/listener.h (enum ListenerFlag): New enum.
1432         (struct Listener): Convert "active", "hidden" and "server" to a
1433         flagset.
1434         (add_listener): Convert "is_server" and "is_hidden" arguments to
1435         use the same flagset structure.
1436
1437         * ircd/ircd_parser.y (listen_flags): New variable.
1438         (general_vhost): Consolidate references to $3 to use a variable.
1439         (portblock): Use listen_flags instead of tconn and tping.
1440         (portserver): Likewise.
1441         (porthidden): Likewise.
1442
1443         * ircd/listener.c (show_ports): Use new field in Listener.
1444         (set_listener_options): New function.
1445         (inetport): Use it.
1446         (add_listener): Use new field in Listener.  When reusing an extant
1447         listener, call set_listener_options() so the options are updated.
1448         (mark_listeners_closing): Use new field in Listener.
1449         (close_listeners): Use new helper macro to check activeness.
1450         (release_listener): Likewise.
1451         (accept_connection): Likewise.
1452
1453         * ircd/s_bsd.c (report_error): Use the standard snotice rate
1454         limiting here.
1455         (add_connection): Use new helper macro to check serverness.
1456
1457 2006-11-04  Michael Poole <mdpoole@troilus.org>
1458
1459         * ircd/m_nick.c (m_nick): If we get NICK on a server port, tell
1460         the client to go away.
1461
1462 2006-11-04  Michael Poole <mdpoole@troilus.org>
1463
1464         * ircd/version.c.SH: Skip version.c.
1465
1466 2006-11-04  Michael Poole <mdpoole@troilus.org>
1467
1468         * doc/readme.who: Document new 'o' field flag.
1469
1470         * include/whocmds.h (WHO_FIELD_OPL): New flag.
1471
1472         * ircd/channel.c (send_channel_modes): Rename feat_oplevels to
1473         send_oplevels and determine it automatically.
1474         (modebuf_flush_int): Pass along oplevel if it's less than
1475         MAXOPLEVEL.
1476         (mode_process_clients): Allow oplevels to be inherited for -A
1477         channels.  Inherit the opper's oplevel if >= MAXOPLEVEL.
1478
1479         * ircd/m_who.c (m_who): Recognize 'o' flag as WHO_FIELD_OPL.
1480
1481         * ircd/whocmds.c (do_who): Send oplevel for WHO_FIELD_OPL, but
1482         only show up to the requester's own oplevel.
1483
1484 2006-10-21  Michael Poole <mdpoole@troilus.org>
1485
1486         * ircd/convert-conf.c (finish_connects): Fix error display for
1487         missing C: lines when an H: line is present.
1488
1489 2006-08-02  Michael Poole <mdpoole@troilus.org>
1490
1491         * ircd/ircd_parser.y (connectblock): Check for too-long password.
1492         (operblock): Comment why we don't check password length.  Move
1493         PRIV_PROPAGATE test earlier (so a buggy edit, rehash, /oper will
1494         not crash).
1495         (clientblock): Check for too-long password.
1496
1497 2006-08-02  Michael Poole <mdpoole@troilus.org>
1498
1499         * include/channel.h (struct Ban): Fix typo in doxygen comment.
1500
1501 2006-07-09  Michael Poole <mdpoole@troilus.org>
1502
1503         * include/patchlevel.h (PATCHLEVEL): Bump for pre09.
1504
1505 2006-07-09  Michael Poole <mdpoole@troilus.org>
1506
1507         * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.08 release.
1508
1509 2006-07-05  Michael Poole <mdpoole@troilus.org>
1510
1511         * ircd/s_auth.c (auth_freelist): New static variable.
1512         (check_auth_finished): Move call to destroy_auth_request().
1513         (destroy_auth_request): Prepend auth request to freelist.
1514         (start_auth): Use struct from auth freelist if possible.
1515
1516 2006-06-30  Michael Poole <mdpoole@troilus.org>
1517
1518         * ircd/ircd_parser.y (iauth*): Avoid leaking program name string.
1519
1520 2006-06-30  Michael Poole <mdpoole@troilus.org>
1521
1522         * ircd/s_auth.c (check_auth_finished): Free auth structure when
1523         done with it.
1524         (sendto_iauth): Free message buffer when done with it.
1525
1526 2006-06-26  Michael Poole <mdpoole@troilus.org>
1527
1528         * include/patchlevel.h (PATCHLEVEL): Bump for pre08.
1529
1530 2006-06-26  Michael Poole <mdpoole@troilus.org>
1531
1532         * include/patchlevel.h (PATCHEVEL): Bump for release.
1533
1534 2006-06-17  Michael Poole <mdpoole@troilus.org>
1535
1536         * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe.
1537
1538 2006-06-08  Michael Poole <mdpoole@troilus.org>
1539
1540         * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local)
1541         channels for locops as well as global opers.
1542
1543 2006-06-08  Michael Poole <mdpoole@troilus.org>
1544
1545         * ircd/m_gline.c (ms_gline): Use final argument as G-line reason.
1546
1547 2006-06-08  Michael Poole <mdpoole@troilus.org>
1548
1549         * ircd/gline.c (gline_stats): Show activation state in /stats g.
1550
1551         * ircd/s_err.c (RPL_STATSGLINE): Update format string to match.
1552
1553 2006-06-07  Michael Poole <mdpoole@troilus.org>
1554
1555         * doc/example.conf: Document the list_chan privilege.
1556
1557         * ircd/ircd_lexer.l: Recognize the token.
1558
1559         * ircd/ircd_parser.y: Treat it appropriately.
1560
1561 2006-06-07  Michael Poole <mdpoole@troilus.org>
1562
1563         * ircd/s_auth.c (auth_ping_timeout): If the client never had an
1564         auth request, kill them on ping timeout.
1565
1566 2006-06-05  Michael Poole <mdpoole@troilus.org>
1567
1568         * ircd/s_auth.c (auth_timeout_callback): Clear AR_DNS_PENDING when
1569         destroying the lookup and reporting DNS failure.
1570
1571 2006-05-28  Michael Poole <mdpoole@troilus.org>
1572
1573         * doc/readme.features (MAXBANS): Update default value.
1574         (NICKLEN): Likewise.
1575         (HIS_STATS_*): Sort alphabetically.
1576
1577         * ircd/m_stats.c (m_stats): Describe the intention so that there
1578         are not further questions about local opers and remote /stats.
1579         Fix places that use cptr instead of sptr.
1580
1581 2006-05-24  Michael Poole <mdpoole@troilus.org>
1582
1583         * ircd/s_auth.c (auth_dns_callback): Be more careful about
1584         handling failed DNS lookups.  Use a more standard function to
1585         disconnect clients for IP mismatches.
1586         (start_auth): Use a more standard function to disconnect clients
1587         for peer or local socket address lookup failures.
1588
1589 2006-05-17  Michael Poole <mdpoole@troilus.org>
1590
1591         * ircd/s_auth.c (auth_ping_timeout): Fix off-by-one error.
1592
1593 2006-05-17  Michael Poole <mdpoole@troilus.org>
1594
1595         * ircd/Makefile.in (install-*): Install convert-conf.  Install
1596         umkpasswd when ${BINDIR}/ircd is not a symlink.
1597
1598 2006-05-15  Michael Poole <mdpoole@troilus.org>
1599
1600         * ircd/s_auth.c (check_auth_finished): Only check passwords on
1601         user ports.
1602
1603 2006-05-14  Michael Poole <mdpoole@troilus.org>
1604
1605         * doc/example.conf (Connect): Mention the vhost option.
1606
1607 2006-05-08  Michael Poole <mdpoole@troilus.org>
1608
1609         * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here...
1610
1611         * ircd/s_auth.c (auth_set_pong): ... to here.
1612
1613 2006-05-07  Michael Poole <mdpoole@troilus.org>
1614
1615         * include/s_auth.h (auth_ping_timeout): Declare new function.
1616
1617         * ircd/ircd.c (check_pings): Move auth timeout logic into that new
1618         function.
1619
1620         * ircd/s_auth.c (HeaderMessages): Insert new message.
1621         (auth_ping_timeout): Define new function.
1622         (auth_timeout_callback): Remove "hurry" notification from here.
1623
1624 2006-05-07  Michael Poole <mdpoole@troilus.org>
1625
1626         * include/s_auth.h (destroy_auth_request): Remove second argument.
1627
1628         * ircd/list.c (free_client): Update to match.
1629
1630         * ircd/s_auth.c (check_auth_finished): Remove second argument and
1631         update call to destroy_auth_request().
1632         (send_auth_query): Update call to destroy_auth_request().
1633         (destroy_auth_request): Remove second argument.
1634         (auth_timeout_callback): Send timeout failure messages here
1635         instead.  Update call to check_auth_finished().
1636         (auth_dns_callback): Update call to check_auth_finished().
1637         (start_auth): Likewise.
1638         (auth_set_pong): Likewise.
1639         (auth_set_user): Likewise.
1640         (auth_set_nick): Likewise.
1641         (auth_cap_done): Likewise.
1642         (iauth_parse): Likewise.
1643
1644 2006-05-06  Michael Poole <mdpoole@troilus.org>
1645
1646         * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED.
1647         (check_auth_finished): Move password check out of iauth-only part
1648         and use AR_PASSWORD_CHECKED to make sure we only check it once.
1649
1650 2006-04-28  Michael Poole <mdpoole@troilus.org>
1651
1652         * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field.
1653         (check_auth_finished): Fix timeout update.
1654         (destroy_auth_request): Only delete timer if it is active.
1655         (auth_timeout_callback): Do not disconnect client on timeout, so
1656         that the user can finish sending NICK/USER or doing iauth.
1657
1658 2006-04-28  Michael Poole <mdpoole@troilus.org>
1659
1660         * doc/example.conf (Admin): Fix documentation of which line can be
1661         listed twice.
1662
1663         * ircd/ircd_parser.y (adminblock): Allow admin information to be
1664         changed via /rehash.
1665
1666 2006-04-06  Michael Poole <mdpoole@troilus.org>
1667
1668         * ircd/s_auth.c (start_auth): Add client to list after getting
1669         endpoint names (which can apparently fail for some reason).
1670
1671 2006-04-06  Michael Poole <mdpoole@troilus.org>
1672
1673         * ircd/ircd_snprintf.c: Use SIZEOF_LONG_LONG (which is 0 for
1674         unknown types) instead of the never-defined HAVE_LONG_LONG.
1675
1676 2006-04-06  Michael Poole <mdpoole@troilus.org>
1677
1678         * doc/example.conf (IAuth): Update to reflect new syntax.
1679
1680         * doc/readme.who: Fix typo in metasyntactic variable name.
1681
1682 2006-04-04  Michael Poole <mdpoole@troilus.org>
1683
1684         * include/patchlevel.h: Update for pre07.
1685
1686 2006-04-04  Michael Poole <mdpoole@troilus.org>
1687
1688         * include/patchlevel.h: Update for u2.10.12.06 release.
1689
1690 2006-04-03  Michael Poole <mdpoole@troilus.org>
1691
1692         * ircd/channel.c (bmatch): If ipmask_check() indicates old_ban is
1693         a CIDR-wise superset of new_ban, check whether new_ban is a
1694         text-wise superset of old_ban.
1695
1696 2006-03-31  Michael Poole <mdpoole@troilus.org>
1697
1698         * tools/iauth-test (send_server_notice): Use a colon prefix before
1699         the message.
1700         (%handlers): Likewise.
1701
1702 2006-03-24  Michael Poole <mdpoole@troilus.org>
1703
1704         * ircd/ircd_signal.c (alloc_crec): Zero-fill returned
1705         ChildRecord structs.
1706
1707         * ircd/jupe.c (make_jupe): Zero-fill newly allocated jupes.
1708
1709         * ircd/list.c (make_link): Zero-fill returned SLink structs.
1710
1711         * ircd/whowas.c (whowas_init): Delete function.
1712         (whowas_alloc): Rewrite to follow the more common pattern and to
1713         zero-fill returned Whowas structs.
1714
1715 2006-03-23  Kevin L. Mitchell  <klmitch@mit.edu>
1716
1717         * ircd/s_auth.c: rewrite iauth_read(), spliting out the parsing
1718         into iauth_parse(); change parsing to separate parameters and deal
1719         with the ':' sentinel; send sentinel in multi-word parameters; fix
1720         iauth_cmd_config() and iauth_cmd_stats() to clear the 'next'
1721         pointer in the SLink structure; fix buffering in
1722         iauth_read_stderr(); remove carriage returns from STDERR contents
1723         as well
1724
1725         * doc/readme.iauth: fix a minor typo in comments for 'd' and 'N'
1726         server messages
1727
1728 2006-03-18  Michael Poole <mdpoole@troilus.org>
1729
1730         * ircd/convert-conf.c (finish_features): Do not emit a feature
1731         setting that has no values.
1732
1733 2006-03-18  Michael Poole <mdpoole@troilus.org>
1734
1735         * ircd/channel.c (mode_parse_key): Outside of burst, allow
1736         overwriting of keys by a service when a key is already set.
1737         (mode_parse_upass): Likewise.  Instead, ignore new Upass during
1738         burst if it is lexicographically greater than the current one.
1739         (mode_parse_apas): Likewise for Apass, but only allow overwiting
1740         an existing Apass in a BURST.
1741
1742 2006-03-18  Michael Poole <mdpoole@troilus.org>
1743
1744         * ircd/channel.c (modebuf_flush_int): Fix typo about changing
1745         oplevels.  Send correct channel TS for modes to other servers.
1746         (mode_parse): Accept timestamps on modes from users on other
1747         servers.  If the received timestamp is too large, handle that.
1748
1749         * ircd/m_create.c (ms_create): Mention the CREATE-during-burst
1750         case and handle it.
1751
1752         * ircd/m_mode.c (ms_mode): Put back HACK(3) when oplevels are off.
1753
1754 2006-03-14  Wouter Coekarts <wouter@coekaerts.be>
1755
1756         * ircd/s_err.c (RPL_STATSILINE): Add two %s to the first field.
1757
1758         * ircd/s_stats.c (stats_configured_links): Use the new %s's to
1759         show username masks for I: lines that have them.
1760         (stats_access): Likewise.
1761
1762 2006-03-13  Michael Poole <mdpoole@troilus.org>
1763
1764         * ircd/msgq.c (msgq_vmake): Try to clear msgbuf freelist after
1765         killing clients, so that that case does not lead immediately to a
1766         server panic.
1767         (msgq_count_memory): Report total buffer text used as a way to
1768         determine whether the BUFFERPOOL value is marginal.
1769
1770 2006-03-02  Michael Poole <mdpoole@troilus.org>
1771
1772         * include/ircd_osdep.h (os_socket): New parameter.
1773
1774         * include/res.h (irc_in_addr_unspec): New macro.
1775
1776         * ircd/ircd_res.c (restart_resolver): Set family appropriately.
1777
1778         * ircd/listener.c (inetport): Let os_ library pick socket family.
1779
1780         * ircd/os_generic.c: Do not #define _XOPEN_SOURCE on FreeBSD 5+.
1781         (sockaddr_from_irc): New parameter.
1782         (os_sendto_nonb): Use new parameter to sockaddr_from_irc().
1783         (os_socket): New parameter.  Try to turn off IPV6_V6ONLY on
1784         sockets that listen on unspecified addresses.
1785         (os_connect_nonb): Use new parameter to sockaddr_from_irc().
1786
1787         * ircd/s_auth.c (start_auth_query): Let os_ library pick socket
1788         family.
1789
1790         * ircd/s_bsd.c (connect_inet): If we pick the IPv4 vhost, specify
1791         family for os_socket() as AF_INET.
1792
1793         * ircd/uping.c (uping_init): Set socket family appropriately.
1794         (uping_server): Likewise.
1795         (uping_end): Fix format strings (the ms_* fields are int, not
1796         long, and this causes bad results on LP64 machines).
1797
1798 2006-02-22  Michael Poole <mdpoole@troilus.org>
1799
1800         * ircd/m_silence.c (apply_silence): Refuse to apply silences for
1801         local users that are broader than an IPv4 /16 or an IPv6 /32,
1802         unless they match every host indiscriminately.
1803
1804 2006-02-22  Michael Poole <mdpoole@troilus.org>
1805
1806         * ircd/s_auth.c (check_auth_finished): Give non-iauth clients
1807         connection classes, too.
1808         (auth_close_unused): Remove redundant check for iauth != NULL.
1809         (report_iauth_conf): Check iauth != NULL before deref'ing it.
1810         (report_iauth_stats): Likewise.
1811
1812 2006-02-22  Kevin L. Mitchell  <klmitch@mit.edu>
1813
1814         * ircd/s_auth.c: fix macros to not dereference a NULL pointer when
1815         iauth is not connected
1816
1817 2006-02-17  Alex Badea <vamposdecampos@gmail.com>
1818
1819         * ircd/s_auth.c (auth_set_username): Check if the last
1820         character of the username is alphanumeric, instead of the
1821         '\0' terminator.
1822         
1823         * ircd/m_pong.c (mr_pong): Parse cookie with strtoul(),
1824         since atol() causes signedness problems.
1825
1826 2006-02-15  Michael Poole <mdpoole@troilus.org>
1827
1828         * include/res.h (NXDOMAIN): Define.
1829
1830         * ircd/ircd_res.c (res_readreply): Treat NXDOMAIN just like
1831         SERVFAIL.  Patch courtesy of Dianora.
1832
1833         * tools/iauth-test (Carp): This doesn't actually use Carp.
1834
1835 2006-02-15  Michael Poole <mdpoole@troilus.org>
1836
1837         * doc/example.conf: Include new HIS_STATS_IAUTH feature.
1838
1839         * doc/readme.features: Document the feature.
1840
1841         * doc/readme.iauth: Rewrite to reflect the new progressive iauth
1842         protocol, based on IRCnet's iauth.
1843
1844         * doc/snomask.html: Document SNO_AUTH server notice flag.
1845
1846         * include/client.h (FLAG_IAUTHED): Delete.
1847         (con_cookie): Delete.
1848         (con_unreg): Delete.
1849         (con_auth): Make comment capitalization consistent.
1850         (con_iauth): Delete.
1851         (CLIREG_*): Delete.
1852         (cli_unreg): Delete.
1853         (cli_cookie): Delete.
1854         (cli_iauth): Delete.
1855         (con_unreg): Delete.
1856         (con_iauth): Delete.
1857         (IsIAuthed): Delete.
1858         (SetIAuthed): Delete.
1859         (SNO_AUTH): New server notice flag.
1860         (SNO_ALL): Update to include SNO_AUTH.
1861         (SNO_OPER): Update to include SNO_AUTH.
1862
1863         * include/ircd_auth.h: Delete file.
1864
1865         * include/ircd_features.h (HIS_STATS_IAUTH): New feature.
1866
1867         * include/s_auth.h: Rewrite almost everything for new auth system.
1868
1869         * include/s_user.h (COOKIE_VERIFIED): Delete.
1870         (register_user): Remove redundant nick and username arguments.
1871
1872         * ircd/ircd_auth.c: Delete file.
1873
1874         * ircd/ircd_features.c (HIS_STATS_IAUTH): New feature.
1875
1876         * ircd/ircd_lexer.l (PROGRAM): New token in grammar.
1877
1878         * ircd/ircd_log.c (masks): Add SNO_AUTH flag.
1879
1880         * ircd/ircd_parser.y (stringlist): Simplify production.
1881         (iauthblock): Revise to only include a PROGRAM production.
1882
1883         * ircd/list.c (make_client): Do not assign to deleted field.
1884
1885         * ircd/m_cap.c (cap_ls): Use auth_cap_start() instead of
1886         cli_unreg().
1887         (cap_req): Likewise.
1888         (cap_end): Use auth_cap_done() instead of cli_unreg().
1889
1890         * ircd/m_pass.c (mr_pass): Merge arguments to PASS.  Use
1891         auth_set_password() to notify iauth of password.
1892
1893         * ircd/m_pong.c (mr_pong): Use auth_set_pong() instead of
1894         cli_cookie() and cli_unreg().
1895
1896         * ircd/m_user.c (m_user): Use auth_set_user() instead of
1897         cli_unreg(), etc.
1898
1899         * ircd/s_auth.c: Rewrite most of the infrastructure for the new
1900         auth system.
1901
1902         * ircd/s_conf.c (rehash): Call auth_*() instead of iauth_*().
1903
1904         * ircd/s_misc.c (exit_one_client): Do not use iauth_exit_client().
1905         (exit_client): Use auth_send_exit() instead.
1906
1907         * ircd/s_stats.c (statsinfo): Include iauth and iauthconf.
1908
1909         * ircd/s_user.c (clean_user_id): Delete (moved into s_auth.c).
1910         (register_user): Remove nick and username parameters; move conf
1911         interactions and username validation to s_auth.c.
1912         (set_nick_name): Use auth_set_nick() instead of cli_cookie(),
1913         cli_unreg(), etc.
1914
1915         * tools/iauth-test: Implementation of iauth for testing purposes.
1916
1917 2006-02-15  Michael Poole <mdpoole@troilus.org>
1918
1919         * ircd/ircd_snprintf.c (doprintf): Fix typecast for %hu.
1920
1921 2006-02-15  Michael Poole <mdpoole@troilus.org>
1922
1923         * include/ircd_signal.h (SigChldCallBack): New typedef.
1924         (register_child): Declare.
1925         (unregister_child): Declare.
1926         (reap_children): Declare.
1927
1928         * ircd/ircd_signal.c (alloc_crec): New function.
1929         (release_crec): New function.
1930         (register_child): New function.
1931         (do_unregister_child): New function.
1932         (unregister_child): New function.
1933         (sigchld_callback): New function.
1934         (setup_signals): Hook SIGCHLD.
1935         (reap_children): New function.
1936
1937         * ircd/ircd.c (server_restart): Call reap_children() on exit.
1938
1939 2006-02-15  Michael Poole <mdpoole@troilus.org>
1940
1941         * include/ircd_osdep.h (os_socketpair): Declare.
1942
1943         * ircd/os_generic.c (is_blocked): New local function.
1944         (os_*): Use is_blocked() instead of cut-and-pasted code.
1945         (os_socketpair): New function.
1946
1947 2006-02-15  Michael Poole <mdpoole@troilus.org>
1948
1949         * ircd/match.c (match): Fix backtracking bug after an escape
1950         (reported by Michael, I think).
1951
1952 2006-02-04  Michael Poole <mdpoole@troilus.org>
1953
1954         * ircd/ircd.c (try_connections): Scan all Connect blocks for the
1955         earliest hold time (suggested by Michael).
1956
1957 2006-02-04  Michael Poole <mdpoole@troilus.org>
1958
1959         * ircd/m_join.c (m_join): Remove #if 0 code and update comment.
1960
1961         * ircd/m_mode.c (ms_mode): Remove self-op support.
1962
1963 2006-01-12  Michael Poole <mdpoole@troilus.org>
1964
1965         * include/patchlevel.h (PATCHLEVEL): Update for 2.10.12.pre06.
1966
1967 2006-01-12  Michael Poole <mdpoole@troilus.org>
1968
1969         * include/patchlevel.h (PATCHLEVEL): Update for release.
1970
1971 2006-01-11  Michael Poole <mdpoole@troilus.org>
1972
1973         * doc/Makefile.in: Make install target VPATH-safe.
1974
1975         * doc/example.conf: Comment out example IAuth block.
1976
1977         * ircd/m_burst.c (ms_burst): Change isdigit() to IsDigit(),
1978         silencing a warning on Solaris.
1979
1980 2006-01-09  Michael Poole <mdpoole@troilus.org>
1981
1982         * ircd/s_user.c (register_user): Do not send +r flag to user when
1983         they first connect.
1984
1985 2006-01-09  Michael Poole <mdpoole@troilus.org>
1986
1987         * include/ircd_features.h (FEAT_ZANNELS): Actually, put it back.
1988
1989         * ircd/ircd_features.c (FEAT_ZANNELS): Likewise.
1990
1991 2006-01-06  Michael Poole <mdpoole@troilus.org>
1992
1993         * ircd/channel.c (mode_process_clients): Do not reveal zombies who
1994         are being opped (MODE and KICK crossed).  Reported by coekie.
1995
1996 2006-01-06  Michael Poole <mdpoole@troilus.org>
1997
1998         * ircd/m_join.c (ms_join): Wipe out all modes (not just chanops)
1999         when replacing a resurrected channel.
2000
2001         * ircd/convert-conf.c (dupstring): Fix probable off-by-one size
2002         passed to memcpy().
2003
2004 2006-01-03  Michael Poole <mdpoole@troilus.org>
2005
2006         * ircd/channel.c (modebuf_flush_int): Also send timestamp when &me
2007         originates the MODE going to other servers (currently just when a
2008         client joins a zannel or uses an A/U password).
2009
2010 2006-01-02  Michael Poole <mdpoole@troilus.org>
2011
2012         * include/ircd_features.h (FEAT_ZANNELS): Remove.
2013
2014         * ircd/channel.c (sub1_from_channel): Remove reference to
2015         FEAT_ZANNELS.
2016
2017         * ircd/ircd_features.c (FEAT_ZANNELS): Remove.
2018
2019         * ircd/m_destruct.c (ms_destruct): Do not try to remove a destruct
2020         event for channels that do not have them (created by BURSTing a
2021         zannel but not yet destroyed by EOB).
2022
2023 2005-12-31  Michael Poole <mdpoole@troilus.org>
2024
2025         * ircd/m_whowas.c (m_whowas): Mention that IP is untracked in WHOWAS.
2026         Spotted by Progs.
2027
2028 2005-12-30  Michael Poole <mdpoole@troilus.org>
2029
2030         * ircd/m_topic.c: Remove block comment about sptr, cptr, etc.
2031         (do_settopic): Add doxygen comment. Move permissions checks..
2032         (m_topic): .. to here.  Update doxygen comment.
2033         (ms_topic): Update doxygen comment here too.
2034
2035 2005-12-30  Michael Poole <mdpoole@troilus.org>
2036
2037         * ircd/s_conf.c (conf_debug_iline): Fix display of null passwords.
2038
2039 2005-12-30  Michael Poole <mdpoole@troilus.org>
2040
2041         * RELEASE.NOTES: Mention removal of HIS_STATS_h.
2042
2043         * ircd/convert-conf.c (removed_features): Add AUTOHIDE,
2044         HIS_DESYNCS and TIMESEC.
2045         (get_connect): Do not downcase connection name on insert.
2046         (do_feature): Do not upcase feature name (cf HIS_STATS_k).
2047
2048 2005-12-30  Michael Poole <mdpoole@troilus.org>
2049
2050         * ircd/engine_devpoll.c (engine_loop): Remove bogus assert.
2051
2052 2005-12-31  Perry Lorier <isomer@undernet.org>
2053
2054         * convert-conf.c: Skip with a warning, H:'s that are missing a
2055         corresponding C:
2056
2057 2005-12-28  Michael Poole <mdpoole@troilus.org>
2058
2059         * ircd-patch: Do not use [ for test, and do not use $[] for expr.
2060         (Solaris /bin/sh, among others, have problems with those.)
2061
2062 2005-12-23  Michael Poole <mdpoole@troilus.org>
2063
2064         * config.guess: Update to current version.
2065
2066         * config.sub: Likewise.
2067
2068 2005-12-23  Kevin L. Mitchell  <klmitch@mit.edu>
2069
2070         * ircd/m_join.c: get rid of MAGIC_REMOTE_JOIN_TS; perform the
2071         deop-other-users loop only when creation < channel timestamp or
2072         when the channel in question happens to be a zannel; actually deop
2073         users, don't just say we are and not do it
2074
2075         * ircd/m_create.c (ms_create): get rid of MAGIC_REMOTE_JOIN_TS
2076
2077         * include/channel.h: get rid of MAGIC_REMOTE_JOIN_TS
2078
2079 2005-12-13  Michael Poole <mdpoole@troilus.org>
2080
2081         * configure.in: Define a macro when compiling on Solaris.
2082
2083         * ircd/ircd_crypt_native.c (_XOPEN_SOURCE): Turn down to 500 so
2084         that Solaris doesn't complain that SUSv3 requires C99.
2085
2086         * ircd/os_generic.c (_XOPEN_SOURCE): Likewise, but leave it at 600
2087         on non-Solaris platforms so that IPv6 stays supported.
2088
2089 2005-12-13  Michael Poole <mdpoole@troilus.org>
2090
2091         * ircd/m_join.c (ms_join): Prevent net rides allowed by moving the
2092         channel timestamp backwards in time without deopping current ops.
2093         (Reported by Wouter Coekaerts.)
2094
2095 2005-12-13  Michael Poole <mdpoole@troilus.org>
2096
2097         * doc/example.conf: Remove extraneous "Other" Client block.
2098
2099         * ircd/convert-conf.c (finish_operators): Fix operator precedence
2100         bug.
2101
2102         * ircd/ircd_parser.y (clientclass): Fix typo in error message.
2103
2104 2005-11-27  Michael Poole <mdpoole@troilus.org>
2105
2106         * ircd/Makefile.in (version.c): version.c also depends on
2107         version.h, patchlevel.h and source files.
2108
2109 2005-11-27  Michael Poole <mdpoole@troilus.org>
2110
2111         * ircd/m_join.c (m_join): Count a join to a new channel as a
2112         target change.
2113
2114 2005-11-19  Michael Poole <mdpoole@troilus.org>
2115
2116         * ircd/s_stats.c (stats_servers_verbose): Display IPv6 support
2117         flag with the other per-server flags.
2118
2119 2005-11-19  Michael Poole <mdpoole@troilus.org>
2120
2121         * ircd/convert-conf.c (finish_features): Only emit "Features {"
2122         once in the converted configuration file.  Display the original
2123         input line for each feature line in the output.
2124
2125 2005-11-18  Michael Poole <mdpoole@troilus.org>
2126
2127         * include/patchlevel.h (PATCHLEVEL): Update for pre05.
2128
2129 2005-11-18  Michael Poole <mdpoole@troilus.org>
2130
2131         * include/patchlevel.h (PATCHLEVEL): Update for release.
2132
2133 2005-11-15  Brian Cline <brian.cline@gmail.com>
2134
2135         * doc/example.conf: Add new line for HIS_MODEWHO feature.
2136
2137         * doc/readme.features: Document new HIS_MODEWHO feature.
2138
2139         * include/ircd_features.h: Declare new HIS_MODEWHO feature.
2140
2141         * ircd/channel.c (modebuf_flush_int): Use new HIS_MODEWHO feature
2142         to show or hide the server name that performed a channel mode change.
2143
2144         * ircd/ircd_features.c: Place new HIS_MODEWHO setting in the feature
2145         table and give it a default value of true, which will hide the
2146         originating server name.
2147
2148 2005-11-16  Michael Poole <mdpoole@troilus.org>
2149
2150         * doc/example.conf (Features): Mention ZANNELS default.
2151
2152         * doc/readme.features: Document OPLEVELS and ZANNELS.
2153
2154 2005-11-17  Carlo Wood <run@alinoe.com>
2155
2156         * include/ircd_features.h (Feature): Add ZANNELS.
2157         * ircd/ircd_features.c (FeatureDesc): idem.
2158         * ircd/channel.c (sub1_from_channel): Don't keep zannels
2159         around when ZANNELS and OPLEVELS are FALSE.
2160         * ircd/m_destruct.c (ms_destruct): Use JOIN instead of
2161         CREATE to recreate a non-empty channel after DESTRUCT.
2162
2163 2005-11-16  Michael Poole <mdpoole@troilus.org>
2164
2165         * tools/convert-conf.py: Delete obsolete code.
2166
2167 2005-11-16  Michael Poole <mdpoole@troilus.org>
2168
2169         * ircd/m_names.c (m_names): Fix handling of NAMES #a,#b.
2170         (ms_names): Likewise.
2171
2172 2005-11-15  Michael Poole <mdpoole@troilus.org>
2173
2174         * ircd/m_nick.c (ms_nick): Clarify message when an older nick
2175         overrules a newer nick.  When killing a client for a nick
2176         collision, make sure to use the numnick as the first argument.
2177
2178 2005-11-14  Michael Poole <mdpoole@troilus.org>
2179
2180         * ircd/channel.c (member_can_send_to_channel): After prodding from
2181         reed, always allow remote users to send to a channel.  He also
2182         pointed out a bug in the first version of this change.
2183
2184 2005-11-14  Carlo Wood <run@alinoe.com>
2185
2186         * ircd/channel.c (modebuf_flush_int): Fix test for limitdel.
2187         (modebuf_mode_uint): Make sure the limit is included as an
2188         argument when necessary (and only when necessary) in a bounce.
2189
2190         * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead
2191         of burst to resynchronize a non-empty destructed channel.
2192
2193 2005-11-14  Michael Poole <mdpoole@troilus.org>
2194
2195         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
2196         changes by voiceless no-account users on a +r channel.
2197
2198 2005-11-14  Michael Poole <mdpoole@troilus.org>
2199
2200         * ircd/m_kick.c (ms_kick): Fix test for whether a client's own
2201         server is kicking him.
2202
2203 2005-11-13  Michael Poole <mdpoole@troilus.org>
2204
2205         * include/patchlevel.h (PATCHLEVEL): Bump for pre04.
2206
2207 2005-11-13  Michael Poole <mdpoole@troilus.org>
2208
2209         * include/patchlevel.h (PATCHLEVEL): Update for release.
2210
2211 2005-11-13  Carlo Wood <run@alinoe.com>
2212
2213         * ircd/m_create (ms_create): Accept CREATE for zannels.
2214
2215         * ircd/m_join.c (m_join): MODE +o for a zannel must come from the
2216         server for compatibility with older versions.
2217
2218 2005-11-12  Michael Poole <mdpoole@troilus.org>
2219
2220         * include/patchlevel.h (PATCHLEVEL): Bump for pre03.
2221
2222 2005-11-12  Michael Poole <mdpoole@troilus.org>
2223
2224         * include/patchlevel.h (PATCHLEVEL): Update for release.
2225
2226 2005-11-11  Michael Poole <mdpoole@troilus.org>
2227
2228         * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A
2229         and AAAA lookups as well as PTR.
2230
2231 2005-11-07  Michael Poole <mdpoole@troilus.org>
2232
2233         * ircd/channel.c (mode_parse_client): Allow clients to specify
2234         oplevel in MODE #channel +o.
2235         (mode_process_clients): Allow oplevel 999 to deop another 999.
2236
2237         * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999.
2238
2239 2005-10-31  Michael Poole <mdpoole@troilus.org>
2240         (Based on a patch by Romain Bignon <progs@ir3.org>)
2241
2242         * ircd/channel.c: Some modes (currently only WASDELJOINS) should
2243         not be propagated to remote servers.
2244
2245 2005-10-30  Michael Poole <mdpoole@troilus.org>
2246
2247         * ircd/channel.c (mode_parse_apass): Move all send_reply() errors
2248         inside an if (MyUser(state->sptr)) test.
2249
2250         * ircd/m_join.c (m_join): Reorganize zannel join check to match
2251         surrounding code.
2252
2253 2005-10-30  Carlo Wood <run@alinoe.com>
2254
2255         * ircd/channel.c (sub1_from_channel): Delay destruction for -A
2256         channels.  They become zombie channels (zannels).
2257         (mode_parse_upass): Add duration to ERR_NOMANAGER message.
2258         (mode_parse_apass): Likewise.  Unconditionally set the member who
2259         sets Apass as oplevel 0.  Clear Upass when clearing Apass.
2260         (joinbuf_join): Remove code to pass oplevel in JOIN.
2261
2262         * ircd/m_burst.c (ms_burst): Handle zannels.
2263
2264         * ircd/m_join.c (m_join): Handle a join to a zannel.  If the user
2265         is joining with ops and/or an oplevel, send those.
2266         (ms_join): Stop trying to parse oplevels in JOIN.  Copy join
2267         timestamp when a user joins a zannel.
2268
2269         * ircd/m_mode.c (ms_mode): Never generate HACK3.  Silently allow a
2270         user to op himself if he is the only one in a channel.
2271
2272         * ircd/s_err.c (ERR_UPASSSET): Remove extra space.
2273         (ERR_UPASSNOTSET): Likewise.
2274         (ERR_NOMANAGER): Add field for channel lifetime.
2275
2276 2005-10-30  Michael Poole <mdpoole@troilus.org>
2277
2278         * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real
2279         channel key is OVERRIDE.  (Reworked patch from a1kmm.)
2280
2281 2005-10-30  Michael Poole <mdpoole@troilus.org>
2282
2283         * .cvsignore: Add autom4te.cache.
2284
2285         * ircd/.cvsignore: Add convert-conf.
2286
2287         * ircd/test/.cvsignore: Add ircd_match_t.
2288
2289         * patches/.cvsignore: Add marks.
2290
2291 2005-10-28  Alex Badea  <vamposdecampos@gmail.com>
2292
2293         * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538)
2294
2295 2005-10-17  Diane Bruce  <db@db.net>
2296
2297         * ircd/ircd_res.c: Don't send retries if the client did
2298         not resolve (SERVFAIL); this fixes a bug causing a flurry
2299         of retries in this case
2300
2301 2005-10-14  Michael Poole <mdpoole@troilus.org>
2302
2303         * include/patchlevel.h (PATCHLEVEL): Update to pre02.
2304
2305 2005-10-14  Michael Poole <mdpoole@troilus.org>
2306
2307         * doc/readme.cvs: Document tag name consistently with the release
2308         name.
2309
2310         * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release
2311         of 2.10.12.01.
2312
2313 2005-10-12  Michael Poole <mdpoole@troilus.org>
2314
2315         * doc/example.conf: Update documentation to match this change.
2316
2317         * ircd/client.c (client_set_privs): Make default global oper
2318         privileges match what was in 2.10.11.
2319
2320 2005-10-11  Michael Poole <mdpoole@troilus.org>
2321
2322         * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE
2323         to mitigate bug #1313429.
2324
2325 2005-10-12  Perry Lorier <isomer@undernet.org>
2326
2327         * include/s_stats.h: Add new "Local" only flag to /stats.
2328
2329         * ircd/m_stats.c: Consult it.
2330
2331         * ircd/s_stats.c: Use the flag.
2332
2333 2004-01-04  Kevin L Mitchell  <klmitch@mit.edu>
2334
2335         * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is
2336         sent to a channel...
2337
2338 2005-10-06  Michael Poole <mdpoole@troilus.org>
2339
2340         * ircd/m_join.c (m_join): Report too-long channel names as
2341         non-existent.
2342
2343 2005-10-05  Michael Poole <mdpoole@troilus.org>
2344
2345         * ircd/m_names.c (m_names): Fix format string when forwarding
2346         /names -D to other servers.
2347         (ms_names): Likewise.  Add support for remote /names -D.
2348
2349 2005-10-05  Michael Poole <mdpoole@troilus.org>
2350
2351         * ircd/class.c (do_find_class): Fix bug from previous commit.
2352
2353         * ircd/ircd_parser.y (clientblock): Allow setting Client port.
2354
2355         * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline.
2356         (attach_iline): Only set FLAG_DOID when we are sure we will attach
2357         this Client block to the client. [Credit: Jukka Ollila and others]
2358
2359 2005-10-04  Michael Poole <mdpoole@troilus.org>
2360         [Based on a patch by Jukka Ollila]
2361
2362         * include/class.h (find_class): Rename to do_find_class().
2363
2364         * ircd/class.c (class_delete_marked): Keep invalid classes in list
2365         until next rehash.
2366         (add_class): Use new parameter to do_find_class() to allow a class
2367         to be "resurrected".
2368         (find_class): Rename.
2369         (report_classes): Use 'y' instead of 'Y' when reporting invalid
2370         classes.
2371
2372 2005-10-01  Michael Poole <mdpoole@troilus.org>
2373
2374         * ircd/m_kick.c (ms_kick): If the kick target is join-delayed,
2375         only send the KICK to the kicker.  Spotted by Cesar_.
2376
2377 2005-10-01  Michael Poole <mdpoole@troilus.org>
2378
2379         * include/patchlevel.h (PATCHLEVEL): Update to pre1.
2380
2381         * ircd/class.c (init_class): Only set default class's ->next
2382         pointer when first allocating it.
2383
2384 2005-09-30  Michael Poole <mdpoole@troilus.org>
2385
2386         * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when
2387         matching users.
2388
2389 2005-09-30  Michael Poole <mdpoole@troilus.org>
2390
2391         * include/patchlevel.h: Update for release.
2392
2393 2005-09-28  Michael Poole <mdpoole@troilus.org>
2394
2395         * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a
2396         chanop being kicked.
2397
2398 2005-09-26  Michael Poole <mdpoole@troilus.org>
2399
2400         * ircd/whocmds.c (do_who): Fix uninitialized variable warning
2401         about 'chan'.
2402
2403 2005-09-26  Michael Poole <mdpoole@troilus.org>
2404
2405         * ircd/parse.c (del_msg_element): Only delete empty subtrees, and
2406         leave subtrees that may still contain data.
2407
2408 2005-09-26  Michael Poole <mdpoole@troilus.org>
2409
2410         * include/channel.h (struct ModeBuf): Add mbm_oplevel to args
2411         array.
2412         (MB_OPLEVEL): New corresponding macro.
2413         (modebuf_mode_client): Add corresponding argument.
2414
2415         * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer
2416         usage to include :999 suffix.  Change format for oplevel passing.
2417         (modebuf_mode_client): Set oplevel field in mbuf args array.
2418         (struct ParseState): Add oplevel field to cli_change array.
2419         (mode_parse_client): Accept and record oplevel suffix from
2420         servers; fix it up if we're bouncing a deop.
2421         (mode_process_clients): If a valid oplevel was parsed, use it.
2422
2423         * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client().
2424
2425         * ircd/m_clearmode.c (do_clearmode): Likewise.
2426
2427         * ircd/m_create.c (ms_create): Likewise.
2428
2429         * ircd/m_kick.c (ms_kick): Likewise.
2430
2431 2005-09-23  Michael Poole <mdpoole@troilus.org>
2432
2433         * include/whocmds.h (WHOSELECT_DELAY): Define new constant.
2434
2435         * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set
2436         WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER.  Do not skip
2437         join-delayed users if WHOSELECT_DELAY is set.
2438
2439         * ircd/whocmds.c (do_who): Remember membership for shared channel
2440         if one exists.  Use it when displaying flags, adding '<' for
2441         join-delayed users.
2442
2443 2005-09-22  Michael Poole <mdpoole@troilus.org>
2444
2445         * ircd/channel.c (mode_parse_key): Only accept the new key when
2446         the current one is empty or "greater" than the new one.
2447         (mode_parse_upass): Likewise, for upass.
2448         (mode_parse_apass): Likewise, for apass.
2449
2450 2005-09-22  Michael Poole <mdpoole@troilus.org>
2451
2452         * ircd/gline.c (gline_checkmask): Add missing digit in mask length
2453         check.
2454
2455 2005-09-21  Michael Poole <mdpoole@troilus.org>
2456
2457         * doc/example.conf: Remove confused and outdated references to
2458         Martians.
2459
2460 2005-09-20  Michael Poole <mdpoole@troilus.org>
2461
2462         * ircd/Makefile.in: Regenerate "make depend" dependencies.
2463
2464         * ircd/test/Makefile.in: Likewise.
2465
2466 2005-09-16  Kevin L. Mitchell  <klmitch@mit.edu>
2467
2468         * ircd/m_join.c (last0): fix problem leading to protocol
2469         violations on certain combinations of /join 0 from remote servers
2470         (probably from local users, too) [bug #1291029]; remove redundant
2471         !IsChannelChar() check
2472
2473 2005-09-14  Michael Poole <mdpoole@troilus.org>
2474
2475         * doc/readme.cvs: Document the branching scheme for 2.10.12.
2476
2477 2005-09-14  Michael Poole <mdpoole@troilus.org>
2478
2479         * include/patchlevel.h (PATCHLEVEL): Increment to reflect the
2480         pre-release code freeze.
2481
2482 2005-09-14  Michael Poole <mdpoole@troilus.org>
2483
2484         * ircd/channel.c (find_ban): Fix the sense of another check.
2485
2486 2005-09-13  Michael Poole <mdpoole@troilus.org>
2487
2488         * include/channel.h (clean_channelname): Remove prototype.
2489
2490         * ircd/m_invite.c (m_invite): Do not clean channel name; just
2491         reject invalid channel names.
2492
2493         * ircd/m_join.c (m_join): Likewise.
2494
2495         * ircd/m_mode.c (m_mode): Do not clean channel name.
2496
2497         * ircd/m_names.c (m_names): Likewise.
2498
2499         * ircd/m_opmode.c (mo_opmode): Likewise.
2500
2501 2005-09-13  Michael Poole <mdpoole@troilus.org>
2502
2503         * ircd/channel.c (find_ban): Revert to older style of comparison,
2504         fixing the sense of one check.  Spotted by Alex Badea.
2505
2506 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
2507
2508         * ircd/ircd.c (try_connections): modify autoreconnect logic to
2509         allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq
2510
2511 2005-09-13  Alex Badea <vamposdecampos@gmail.com>
2512
2513         * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList,
2514         otherwise the linked list has an invalid ending sentinel on rehash
2515
2516 2005-09-12  Michael Poole <mdpoole@troilus.org>
2517
2518         * ircd/channel.c (find_ban): Compare ban mask against hostname
2519         even when it looks like an IP, to match things like *!*@1.* when
2520         users have a hostname like 1.2.3.example.com.
2521
2522 2005-09-12  Michael Poole <mdpoole@troilus.org>
2523
2524         * RELEASE.NOTES: Note the resolution of ambiguous ipmasks.
2525
2526         * ircd/ircd_string.c (ipmask_parse): Implement it.
2527
2528 2005-09-12  Michael Poole <mdpoole@troilus.org>
2529
2530         * ircd/m_join.c (m_join): If we find an empty key, null out the
2531         key pointer.
2532
2533 2005-09-11  Michael Poole <mdpoole@troilus.org>
2534
2535         * RELEASE.NOTES: Mention the side benefits of this change.
2536
2537         * include/ircd_string.h (ipmask_parse): Declare function here.
2538         (ircd_aton): Becomes a special case of ipmask_parse().
2539
2540         * include/match.h (check_if_ipmask): Undeclare function.
2541         (ipmask_parse): Remove function prototype from this file.
2542
2543         * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter
2544         to accept ipmask length.  Rework to fill that in.
2545         (ircd_aton): Rework into...
2546         (ipmask_parse): this function, which knows how to fill in its own
2547         pbits parameter.
2548
2549         * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban
2550         flags correctly, to avoid call to check_if_ipmask().
2551
2552         * ircd/match.c (ipmask_parse_ipv4): Delete function.
2553         (check_if_ipmask): Likewise.
2554         (ipmask_parse): Delete this version in favor of ircd_string.c's.
2555
2556         * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type.
2557         (test_masks): New array of ipmask_test.
2558         (test_ipmask): Function to run one of those tests.
2559         (main): Call test_ipmask().
2560
2561 2005-09-11  Alex Badea <vamposdecampos@gmail.com>
2562
2563         * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code
2564         (probably during the forward port) which broke AsLL; fixed.
2565
2566 2005-09-01  Michael Poole <mdpoole@troilus.org>
2567
2568         * ircd/gline.c (make_gline): Remove debug output from when IPv6
2569         support was being debugged.
2570         (do_gline): Likewise.
2571         (gline_lookup): Likewise, plus remove redundant code.
2572
2573 2005-09-01  Michael Poole <mdpoole@troilus.org>
2574
2575         * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining
2576         0, since no other call passes a null channel.
2577
2578         * ircd/m_join.c: Remove comment discussing argument meanings.
2579         (last0): Make this also handle the JOIN 0 logic, doxyfy.
2580         (join0): Merge into last0.
2581         (m_join): Doxygenate.  Remove check for join0.  Further
2582         reorganize, so new versus old channel handling are moved to just
2583         one place each within this function.
2584         (ms_join): Doxygenate.  Remove check for join0.
2585
2586 2005-09-01  Michael Poole <mdpoole@troilus.org>
2587
2588         * RELEASE.NOTES: Bump revision date and highlight this change.
2589
2590         * include/channel.h (MAGIC_OPER_OVERRIDE): Remove.
2591         (can_join): Remove declaration.
2592
2593         * ircd/channel.c (compall): Remove.
2594         (can_join): Remove.
2595
2596         * ircd/m_join.c (m_join): Remove redundant check for control
2597         characters (clean_channelname() will get them). Reorganize initial
2598         flags calculation.  Accept channel keys like RFC 1459 says; this
2599         requires the old compall()/can_join() logic to modify 'keys', so
2600         inline the code and reorganize it.
2601
2602 2005-08-30  Michael Poole <mdpoole@troilus.org>
2603
2604         * include/channel.h (PASSLEN): Remove; use KEYLEN instead.
2605
2606         * ircd/channel.c (mode_parse_upass): Likewise.
2607         (mode_parse_apass): Likewise.
2608         The inconsistency (in clean_key()) was reported by Reed.
2609
2610 2005-08-30  Michael Poole <mdpoole@troilus.org>
2611
2612         * RELEASE.NOTES: Document +D and +d channel modes.
2613
2614 2005-08-29  Michael Poole <mdpoole@troilus.org>
2615
2616         * include/numeric.h (ERR_NOMANAGER_LONG): Undefine.
2617         (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER.
2618
2619         * ircd/s_err.c (replyTable): Change to reflect that.
2620
2621         * ircd/channel.c (clean_key): New function.
2622         (mode_parse_key): Use it, and check that keys do not start with :.
2623         (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER.
2624         (mode_parse_apass): Likewise.
2625         The key and password changes fix bugs reported by coekie.
2626
2627 2005-08-27  Michael Poole <mdpoole@troilus.org>
2628
2629         * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead
2630         of assigning directly to member->oplevel.
2631         (mode_parse_apass): Likewise.
2632         (mode_process_clients): Users opped by outsiders should get
2633         oplevel 1, since they are not channel managers.
2634
2635         * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning
2636         directly to member->oplevel.
2637
2638 2005-08-25  Michael Poole <mdpoole@troilus.org>
2639
2640         * ircd/channel.c (member_can_send_to_channel): At coekie's
2641         suggestion, disallow channel manager talking after Apass is set,
2642         so they set and use Upass sooner.
2643
2644         * ircd/class.c (init_class): Default class should have 1 link.
2645         (report_classes): Return links count minus one to match old output.
2646
2647         * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by
2648         Reed).
2649
2650 2005-08-25  Michael Poole <mdpoole@troilus.org>
2651
2652         * ircd/channel.c (mode_parse): Accept +A/+U from servers
2653         regardless of FEAT_OPLEVELS.
2654
2655 2005-08-24  Michael Poole <mdpoole@troilus.org>
2656
2657         * ircd/ircd.c (parse_command_line): Mention epoll engine when run
2658         with -v.
2659
2660 2005-08-24  Michael Poole <mdpoole@troilus.org>
2661
2662         * include/patchlevel.h (PATCHLEVEL): Increment.
2663
2664         * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or
2665         1 when propagating JOIN <level>:#channel, to avoid PV on receiver.
2666
2667         * ircd/engine_epoll.c: Add system call numbers for more CPU types.
2668
2669         * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls;
2670         anyone who writes logs over NFS is mental.  (Thanks to D. Bruce.)
2671
2672 2005-08-21  Michael Poole <mdpoole@troilus.org>
2673
2674         * include/s_conf.h (free_mapping): Declare new function.
2675
2676         * ircd/ircd_parser.y (pseudoblock): Use it.
2677
2678         * ircd/s_conf.c (free_mapping): Define it.
2679         (close_mappings): New function.
2680         (rehash): Call close_mappings() before reading file.
2681
2682         * ircd/m_kill.c (do_kill): Revert 2005-08-18 change.
2683
2684 2005-08-19  Michael Poole <mdpoole@troilus.org>
2685
2686         * ircd/parse.c (tok_tree): Re-add token tree structure.
2687         (initmsgtree): Populate it.
2688         (parse_server): Prefer it to full message tree.
2689
2690 2005-08-18  Michael Poole <mdpoole@troilus.org>
2691
2692         * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent
2693         source of KILLs to &his instead of &me.
2694
2695 2005-08-16  Michael Poole <mdpoole@troilus.org>
2696
2697         * ircd/channel.c (mode_parse_ban): Avoid overwriting part of
2698         newban->banstr[] when the source is a server.  (Spotted by jcq.)
2699
2700 2005-08-16  Michael Poole <mdpoole@troilus.org>
2701
2702         * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for
2703         announcements to local users in a channel.
2704
2705         * ircd/m_burst.c (ms_burst): Likewise.
2706
2707         * ircd/m_invite.c (m_invite): Likewise.
2708         (ms_invite): Likewise.
2709
2710         * ircd/m_kick.c (ms_kick): Likewise.
2711
2712         * ircd/m_topic.c (do_settopic): Another &me -> &his change for
2713         HIS, and use that apparent source for the channel localcast.
2714
2715 2005-08-16  Jukka Ollila <jaollila@niksula.hut.fi>
2716
2717         * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the
2718         real thing for the post-mode-x rejoin.
2719
2720 2005-08-15  Michael Poole <mdpoole@troilus.org>
2721
2722         * include/supported.h (FEATURESVALUES2): Add +d channel mode.
2723
2724         * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not
2725         a varadic function.  (Suggested by Ian Kumlien.)
2726
2727         * ircd/convert-conf.c (finish_operators): Likewise.
2728
2729         * ircd/listener.c (close_listeners): Likewise.
2730
2731         * ircd/channel.c (CheckDelayedJoins): Use HIS server name to
2732         remove channel mode +d.
2733
2734 2005-08-12  Michael Poole <mdpoole@troilus.org>
2735
2736         * ircd/channel.c (pretty_mask): Recognize ':' as unique to the
2737         host part of a ban mask.
2738
2739 2005-08-03  Jan Krueger <jast@heapsort.de>
2740
2741         * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on
2742         invisible member.
2743
2744 2005-08-08  Michael Poole <mdpoole@troilus.org>
2745
2746         * ircd/channel.c (find_ban): For non-IPmask bans, match the ban
2747         string against the string form of the client's IP address.
2748
2749 2005-07-16  Michael Poole <mdpoole@troilus.org>
2750
2751         * configure.in: Apply a test for socklen_t that Reed found.
2752
2753         * configure: Regenerate.
2754
2755 2005-07-16  Michael Poole <mdpoole@troilus.org>
2756
2757         * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels.
2758
2759         * README.FreeBSD: Remove (merged into README).
2760
2761         * README.Solaris: Remove (merged into README).
2762
2763         * README: Merge in the above; also update for 2.10.12.
2764
2765         * doc/example.conf: Change mention of K-lines to say Kill blocks
2766         instead.
2767
2768         * doc/iauth.txt: Remove (out of date).
2769
2770         * doc/readme.features: Update to reflect that 2.10.11 is not the
2771         current release.  Change mention of various config lines to use
2772         the equivalent config entries or blocks instead.
2773
2774         * doc/readme.log: Likewise.
2775
2776         * doc/api/features.txt: Change F-line mentions to say Feature
2777         entry instead.
2778
2779         * doc/api/modebuf.txt: Change U-line mention to say Uworld entry.
2780
2781         * doc/api/motd.txt: Change T-line mentions to say Motd entry.
2782
2783 2005-07-15  Michael Poole <mdpoole@troilus.org>
2784
2785         * ircd/ircd_features.c (feature_init): Always call
2786         feature_notify_server*() so that 'his' is initialized.
2787
2788         * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose
2789         between user->server and &his.
2790
2791 2005-07-14  Michael Poole <mdpoole@troilus.org>
2792
2793         * ircd/channel.c (mode_parse_apass): Update oplevels when setting
2794         or removing the +A password.  Partial credit goes to Reed Loden.
2795
2796 2005-07-14  Michael Poole <mdpoole@troilus.org>
2797
2798         * include/ircd_features.h: Declare new "his" pseudo-server to hold
2799         FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place.
2800
2801         * ircd/ircd_features.c: Initialize and update it.
2802
2803         * ircd/channel.c (modebuf_flush_int): Use it as the apparent
2804         source for opmodes and server mode changes (also when the source
2805         is me).
2806
2807         * ircd/m_burst.c (ms_burst): Use it as the apparent source for net
2808         rider kicks.
2809
2810         * ircd/m_whois.c (do_whois): Use it to simplify code here.
2811
2812         * ircd/s_misc.c (exit_client): Use it as the apparent killer.
2813
2814 2005-07-14  Michael Poole <mdpoole@troilus.org>
2815
2816         * doc/example.conf (General): Update comment about vhost to match
2817         the code change below.
2818
2819         * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a
2820         synonym for the default behavior (for backwards compatibility).
2821         Spotted by Kev.
2822
2823         * ircd/channel.c (sub1_from_channel): Remove stale code and
2824         comment, replacing with an up-to-date comment.  Spotted by skx.
2825
2826 2005-07-11  Michael Poole <mdpoole@troilus.org>
2827
2828         * ircd/engine_select.c: Remove outdated comment about USE_POLL.
2829
2830         * ircd/parse.c (msgtab): #if out CAP handler until we have caps.
2831
2832         * RELEASE.NOTES: Remove mention of capabilities for now.
2833
2834 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
2835
2836         * ircd/gline.c (gline_add): It's only a protocol violation when a
2837         server issues a "whacky" gline.  If it's an oper, only tell opers
2838         with SNO_GLINE.
2839
2840         * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole
2841         network is not likely to care about IAuth PVs, so only tell opers
2842         with SNO_CONNEXIT.
2843
2844 2005-07-11  Michael Poole <mdpoole@troilus.org>
2845
2846         * doc/readme.features: Document FEAT_CHANNELLEN.
2847
2848         * doc/example.conf: Give an example of it.
2849
2850         * ircd/m_join.c (ms_join): Do not clean channel names from remote
2851         servers, to avoid desynchs.
2852
2853         * ircd/m_names.c (ms_names): Likewise.
2854
2855 2005-07-11  Stephan Peijnik <speijnik@gmail.com>
2856
2857         * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
2858
2859         * include/supported.h: Add it to the ISUPPORT display.
2860
2861         * ircd/channel.c (clean_channelname): Impose the lower limit
2862         between FEAT_CHANNELLEN and CHANNELLEN.
2863
2864         * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
2865
2866 2005-07-11  Reed Loden <reed@reedloden.com>
2867
2868         * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
2869
2870         * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c
2871         Remove unused #include <sys/poll.h>.
2872
2873         * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity
2874         checks here, since they are not used elsewhere in the daemon.
2875         [Order slightly changed by Michael Poole to compile.]
2876
2877 2005-07-03  Michael Poole <mdpoole@troilus.org>
2878
2879         * ircd/convert-conf.c: New file.
2880
2881         * ircd/Makefile: Compile it.
2882
2883 2005-06-27  Michael Poole <mdpoole@troilus.org>
2884
2885         * ircd/s_bsd.c (add_connection): Split logic for server versus
2886         client listeners; only do IPcheck for client connections.
2887
2888         * ircd/s_serv.c (server_estab): There is no longer a need to
2889         remove IPcheck reference, so don't.
2890
2891 2005-06-27  Michael Poole <mdpoole@troilus.org>
2892
2893         * include/client.h (struct Connection): Remove con_dns_reply (and
2894         associated macros).
2895
2896         * include/res.h (gethost_byname): Change calling signature to
2897         clarify memory ownership.
2898         (gethost_byaddr): Likewise.
2899
2900         * include/s_bsd.h (release_dns_reply): Remove function.
2901
2902         * ircd/hash.c: #include "match.h" to quash warning.
2903
2904         * ircd/ircd_auth.c (struct IAuth): Remove i_query field.
2905         (iauth_dns_callback): Adjust for new gethost_byname signature.
2906         (iauth_reconnect): Likewise.
2907
2908         * ircd/ircd_res.c (struct reslist): Make elements of query field
2909         inline rather than in a contained structure.
2910         (make_request): Reflect removal of DNSQuery.
2911         (do_query_name): Likewise.
2912         (do_query_number): Likewise.
2913         (make_dnsreply): Remove now-unused function.
2914         (timeout_resolver): Adjust to new callback signature.
2915         (delete_resolver_queries): Reflect removal of DNSQuery.
2916         (gethost_byname): Update to new signature.
2917         (gethost_byaddr): Likewise.
2918         (res_readreply): Reflect removal of DNSReply.
2919
2920         * ircd/list.c (dealloc_connection): con_dns_reply no longer
2921         exists, so do not free it.
2922
2923         * ircd/s_auth.c (auth_verify_hostname): constify.
2924         (auth_dns_callback): Adjust to new callback signature.
2925         (start_auth): Adjust to new gethost_byaddr() signature.
2926
2927         * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback
2928         signature.
2929         (release_dns_reply): Remove unused function.
2930         (connect_server): Adjust to new gethost_byname() signature.
2931
2932         * ircd/s_conf.c (conf_dns_callback): Adjust to new callback
2933         signature.
2934         (conf_dns_lookup): Adjust to new gethost_byname() signature.
2935         (attach_iline): Use cli_sockhost() instead of DNS reply.
2936         (conf_check_server): Simplify use of DNS results.
2937
2938         * ircd/s_serv.c (server_estab): Remove call to removed function.
2939
2940         * ircd/s_user.c (register_user): Remove call to removed function.
2941
2942 2005-06-27  Michael Poole <mdpoole@troilus.org>
2943
2944         * include/s_misc.h (get_sockhost): Remove the unused (and
2945         deceptively named) get_sockhost().
2946
2947         * ircd/s_misc.c (get_sockhost): Likewise.
2948
2949 2005-06-25  Andrew Miller  <a1kmm@amxl.com>
2950
2951         * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to
2952         DupStr so memdebug works.
2953
2954         * doc/debug_memleak_gc.patch : Update to gc6.5
2955         
2956 2005-06-24  Andrew Miller  <a1kmm@amxl.com>
2957         * ircd/m_invite.c (m_invite): Don't propagate invites to local channels.
2958         
2959 2005-06-21  Andrew Miller  <a1kmm@amxl.com>
2960
2961         * ircd/m_list.c (param_parse): Add support for channel wildcards.
2962         * ircd/m_list.c (show_usage): Document the new format.
2963         * ircd/hash.c (list_next_channels): Check channel wildcard in list.
2964         * include/channel.h (ListingArgs): Add the wildcard member.
2965
2966 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
2967
2968         * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more
2969         gracefully.
2970
2971         * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking
2972         the pending request list, to make DoS attacks harder.
2973
2974         * ircd/m_invite.c (m_invite): Give no such channel rather than not on
2975         channel when the channel being invited to does not exist.
2976         
2977 2005-06-18  Michael Poole <mdpoole@troilus.org>
2978
2979         * ircd/s_debug.c (count_memory): Consolidate several lines; make
2980         initial letter capitalization consistent.
2981
2982 2005-06-19  Andrew Miller  <a1kmm@amxl.com>
2983
2984         * ircd/s_stats.c: Remove the "debug only" label on memusage stats,
2985         since it no longer applies.
2986
2987 2005-05-16  Michael Poole <mdpoole@troilus.org>
2988
2989         * include/channel.h (struct Ban): Make 'who' and 'banstr' direct
2990         arrays, rather than pointers.
2991
2992         * ircd/channel.c (bans_alloc): New variable to count number of ban
2993         structures allocated.
2994         (bans_inuse): New variable to count number of ban structures
2995         currently in use.
2996         (set_banmask): Adapt to changes in struct Ban.
2997         (make_ban): Likewise, and update ban counts.
2998         (free_ban): Likewise.
2999         (bans_send_meminfo): New function.
3000         (apply_ban): Adapt to changes in struct Ban.
3001         (mode_parse_ban): Likewise.
3002         (mode_process_bans): Likewise.
3003         (mode_parse): Likewise.
3004         (RevealDelayedJoin): Fix brace placement.
3005         (CheckDelayedJoins): Fix brace placement and whitespace.
3006
3007         * ircd/list.c (struct liststats): Add new fields to eliminate the
3008         separate count variables.
3009         (init_list): Adapt to those changes.
3010         (alloc_client): Likewise.
3011         (dealloc_client): Likewise.
3012         (alloc_connection): Likewise.
3013         (dealloc_connection): Likewise.
3014         (make_server): Likewise.
3015         (remove_client_from_list): Likewise.
3016         (verify_client_list): Likewise.
3017         (make_link): Likewise.
3018         (free_link): Likewise.
3019         (send_liststats): New function.
3020         (send_listinfo): Rewrite to use new struct liststats layout.
3021
3022         * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban.
3023
3024         * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct
3025         Ban.
3026
3027         * ircd/s_stats.c (stats_meminfo): Define unconditionally and call
3028         bans_send_meminfo().
3029         (statsinfo): Always give access to stats_meminfo.
3030
3031 2005-06-16  Michael Poole <mdpoole@troilus.org>
3032
3033         * include/ircd_string.h: Include necessary <string.h> header.
3034
3035         * ircd/test/.cvsignore: Ignore log output files.
3036
3037         * ircd/test/Makefile.in: Remove log output files.
3038
3039         * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills.
3040
3041         * ircd/test/run-tests.sh: Switch sense of argument.  Send an IRC
3042         debug dump to log files.
3043
3044 2005-06-13  Michael Poole <mdpoole@troilus.org>
3045
3046         * ircd/s_user.c (make_user): Unconditionally increment userCount.
3047         (free_user): Unconditionally decrement it here.
3048
3049         * ircd/s_conf.c (make_conf): Unconditionally increment
3050         GlobalConfCount.
3051         (free_conf): Unconditionally decrement it here.
3052
3053         * ircd/s_debug.c (count_memory): Fix termination condition for
3054         ban-walking loop.  Add missing "e" to "members".
3055
3056
3057 2005-06-10  Michael Poole <mdpoole@troilus.org>
3058
3059         * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot
3060         be true IP masks.
3061
3062 2005-05-30  Michael Poole <mdpoole@troilus.org>
3063
3064         * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes.
3065
3066         * ircd/test/ircd_match_t.c: Test recovery from backtracking.
3067
3068         * ircd/test/channel-1.cmd: Modify to improve code coverage.
3069
3070         * ircd/test/client-1.cmd: Likewise.
3071
3072         * ircd/test/gline-1.cmd: Likewise.
3073
3074         * ircd/test/ircd-t1.conf: Likewise.
3075
3076         * ircd/test/stats-1.cmd: Likewise.
3077
3078         * ircd/test/run-tests.sh: Explicitly start ircds.  Add new test scripts.
3079
3080         * ircd/test/test-driver.pl: Silently handle more signals from IRC.
3081
3082         * ircd/test/commands-1.cmd: New test script.
3083
3084         * ircd/test/feature-1.cmd: New test script.
3085
3086         * ircd/test/jupe-1.cmd: New test script.
3087
3088         * ircd/test/kill-block-1.cmd: New test script.
3089
3090         * ircd/test/ircd-t1-2.conf: New configuration file for test scripts.
3091
3092         * ircd/test/ircd-t2.conf: Likewise.
3093
3094 2005-05-30  Michael Poole <mdpoole@troilus.org>
3095
3096         * ircd/s_debug.c (count_memory): Use count_listener_memory() to
3097         report memory used by listener structures.
3098
3099 2005-05-30  Michael Poole <mdpoole@troilus.org>
3100
3101         * include/class.h (get_con_freq): Remove unused function.
3102
3103         * include/list.h (find_user_link): Remove unused function.
3104
3105         * include/class.c (get_con_freq): Remove.
3106
3107         * ircd/list.c (find_user_link): Remove.
3108
3109         * include/string.h (string_is_hostname, string_is_address,
3110         strnChattr): Remove unused functions.
3111         (init_string): Remove function that becomes a noop.
3112
3113         * ircd/string.h (init_string): Remove.
3114         (string_is_hostname, string_is_address, strnChattr): Likewise.
3115
3116         * ircd/ircd.c (main): Remove call to init_string().
3117
3118 2005-05-30  Michael Poole <mdpoole@troilus.org>
3119
3120         * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS,
3121         RPL_NOTOPERANYMORE): Undefine unused numeric replies.
3122
3123         * ircd/s_err.c (replyTable): Fix format fields for certain numeric
3124         arguments.  Remove some unused entries.
3125
3126         * ircd/s_stats.c (stats_configured_links): Move invariant
3127         parameters to message format string.
3128
3129 2005-05-30  Michael Poole <mdpoole@troilus.org>
3130
3131         * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move
3132         WIDE_GLINE to reflect its enumerated value.
3133
3134         * ircd/s_debug.c (count_memory): Use user_count_memory() function
3135         to count User structs in-use.
3136
3137         * ircd/m_server.c (mr_server): Change "C:line" to "Connect block".
3138
3139         * ircd/s_bsd.c (connect_server): Likewise.
3140
3141         * ircd/s_conf.c (conf_check_server): Likewise.
3142
3143         * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block".
3144
3145 2005-05-30  Michael Poole <mdpoole@troilus.org>
3146
3147         * ircd/match.c (match): Rewrite to handle globs that end in an
3148         escaped wildcard (and hopefully clarify the code).
3149
3150         * ircd/test/Makefile.in: Add new ircd_match_t test program.
3151
3152         * ircd/test/ircd_match_t.c: New file.
3153
3154         * ircd/test/test_stub.c: Emite newlines after log and debug
3155         messages.
3156
3157 2005-05-25  Reed Loden <reed@reedloden.com>
3158
3159         * ircd/s_err.c (replyTable): Allow for the specification of 'O' or
3160         'o' in RPL_STATSOLINE.
3161
3162         * ircd/s_stats.c (stats_configured_links): In /stats o/O, display
3163         'O' if either the oper block or the connection class has
3164         PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE
3165         (local oper).
3166
3167 2005-05-30  Michael Poole <mdpoole@troilus.org>
3168
3169         * ircd/IPcheck.c: Add Debug()s to try to track why the connected
3170         count underflows.
3171
3172         * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan'
3173         after it may be freed (in sub1_from_channel).
3174
3175         * ircd/s_user.c (register_user): Rearrange code to reduce number
3176         of "if (MyConnect(sptr))" checks.
3177
3178 2005-05-12  Michael Poole <mdpoole@troilus.org>
3179
3180         * configure.in: Do not try to outsmart the default CFLAGS.
3181         Simply add parameters explicitly requested by the user.
3182
3183         * configure: Regenerate.
3184
3185         * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is
3186         used in os_generic.c) to get crypt() on NetBSD.
3187
3188 2005-05-11  Kevin L. Mitchell  <klmitch@mit.edu>
3189
3190         * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and
3191         -x given), reserve fd 2 for the use of the debugging log;
3192         otherwise, some engines may attempt to use fd 2, which would end
3193         up getting closed by debug_init() (actually, by
3194         log_debug_reopen(), called by log_debug_init(), called by
3195         debug_init())
3196
3197 2005-08-10  Michael Poole <mdpoole@troilus.org>
3198
3199         * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a
3200         local user creates a channel.
3201
3202         * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of
3203         memory for the tagged output string.
3204
3205         * ircd/test/test-driver.pl: Add -vhost=... option.
3206
3207         * ircd/test/ircd-t1.conf: Add new Operator blocks.
3208
3209         * ircd/test/*.cmd: Rearrange and add more coverage tests.
3210
3211 2005-08-09  Michael Poole <mdpoole@troilus.org>
3212
3213         * ircd/ircd_parser.y: Move error tokens to top level of parse, and
3214         make ';' a synchronizing token for them.  This avoids crashes in
3215         situations like missing ';' between two Kill blocks.  Move several
3216         ';'s earlier for earlier detection of syntax errors.
3217
3218         * ircd/motd.c (motd_memory_count): Use size_t for memory counts to
3219         match the format strings used for those variables.
3220
3221         * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of
3222         unsigned int, not unsigned long; use correct format string.
3223
3224         * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd'
3225         based on crule type, rather than query type.
3226         (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and
3227         "help" stats, which don't use the varparam.
3228
3229         * ircd/test/test-driver.pl: Interpreter for test scripts.b
3230
3231         * ircd/test/ircd-t1.conf: Configuration file for test scripts.
3232
3233         * ircd/test/*.cmd: New test scripts for test-driver.pl.
3234
3235 2005-05-08  Jukka Ollila <jaollila@niksula.hut.fi>
3236         (Adapted slightly by Michael Poole.)
3237
3238         * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
3239         addresses event when !defined(IPV6).
3240
3241 2005-05-07  Michael Poole <mdpoole@troilus.org>
3242
3243         * ircd/channel.c (joinbuf_join): Be smarter about what source to
3244         use when opping a user that joins a channel.
3245
3246 2005-05-04  Reed Loden <reed@reedloden.com>
3247
3248         * ircd/m_trace.c (do_trace): Show the real nickname instead of the
3249         numnick.
3250
3251 2005-05-02  Jan Krueger <jast@heapsort.de>
3252
3253         * ircd/channel.c (member_can_send_to_channel): if the channel can only
3254         be joined by users with accounts (+r), do not allow users without
3255         accounts to speak.
3256
3257 2005-05-07  Michael Poole <mdpoole@troilus.org>
3258
3259         * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6
3260         addresses.
3261         * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry.
3262         (test_address): Test base64toip() as well.
3263
3264 2005-05-05  Michael Poole <mdpoole@troilus.org>
3265
3266         * ircd/s_user.c (umode_str): Only clear the operator flag when not
3267         propagating; never set it.
3268
3269 2005-05-04  Michael Poole <mdpoole@troilus.org>
3270
3271         * ircd/channel.c (joinbuf_join): Include channel manager flag in
3272         determination of oplevel.  If opping the user for a non-local
3273         non-create, include oplevel in message to other servers.  Send
3274         "MODE +o <client>" to local users whenever opping the client.
3275
3276         * ircd/m_join.c (m_join): Remove logic that moved into
3277         joinbuf_join().
3278         (ms_join): Look for level 0 and 1 joins from remote servers
3279         and adjust value of 'flags' appropriately.
3280
3281 2005-05-04  Michael Poole <mdpoole@troilus.org>
3282
3283         * include/numeric.h: Remap oplevel numerics to new range.
3284
3285         * ircd/s_err.c: Likewise.
3286
3287 2005-05-03  Michael Poole <mdpoole@troilus.org>
3288
3289         * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT
3290         fields, fixing crash found by nighty.
3291
3292 2005-05-02  Michael Poole <mdpoole@troilus.org>
3293
3294         * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when
3295         trying to set +U pass to the same as the +A pass.
3296
3297         * ircd/channel.c (mode_parse_upass): Use it.
3298
3299         * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if
3300         there is an active IAuth connection, fixing PR#1193808.
3301         (iauth_dispose_request): Only delete the timer if it is active.
3302
3303         * ircd/m_invite.c (m_invite): Always forward the invite in the
3304         correct direction, and then skip it as 'one' if announcing.
3305         (ms_invite): Likewise.
3306
3307         * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as
3308         ::ffff:0.0.0.0; keep it as ::.
3309
3310         * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS.
3311
3312 2005-05-01  Michael Poole <mdpoole@troilus.org>
3313
3314         * doc/readme.log: Document IAUTH log target, remove docs for
3315         OLDLOG log target.
3316
3317         * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG.
3318
3319         * ircd/ircd_log.c (logDesc): Likewise.
3320
3321         * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all
3322         sockets (e.g. when connecting) and do not generate read/write
3323         events in the same pass as error or EOF events.
3324
3325         * ircd/ircd_auth.c: Convert old sendto and debug messages to use
3326         the LS_IAUTH log target.  Consistently use IAUTH_CONNECTED flag
3327         instead of comparing fd to -1.
3328         (iauth_reconnect): If already connected, disconnect and schedule a
3329         reconnect later, since an immediate reconnect can cause assertion
3330         failure in the event engine.  Also schedule a reconnect when the
3331         connection attempt fails.
3332         (iauth_read): Reconnect on IO_FAILURE.
3333         (iauth_sock_callback): Disconnect and schedule a reconnect on both
3334         error (after reporting the error) and EOF.
3335         (iauth_start_client): Record the IAuth request in the client.
3336         (iauth_exit_client): Report the client exit.
3337
3338         * ircd/s_misc.c (exit_one_client): Fix formatting.
3339
3340 2005-04-30  Michael Poole <mdpoole@troilus.org>
3341
3342         * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add)
3343         timer here and set fd to -1.
3344         (iauth_schedule_reconnect): Rewrite to handle previously
3345         initialized timer.
3346         (iauth_reconnect): If server is connected, disconnect first.
3347         Update socket generator fd before calling socket_add().
3348         (iauth_read): When reading 0 bytes (EOF), reconnect.
3349
3350 2005-04-27  Michael Poole <mdpoole@troilus.org>
3351
3352         * ircd/ircd_parser.y: Report non-existent class names as errors
3353         earlier, and do not fall back to "default" for Client blocks.
3354
3355 2005-04-25  Reed Loden  <reed@reedloden.com>
3356
3357         * ircd/ircd_lexer.l: Add missing header to squash a warning.
3358
3359 2005-04-25  Michael Poole <mdpoole@troilus.org>
3360
3361         * ircd/s_user.c (register_user): Replace call with set_user_mode()
3362         with a direct parsing of user modes.  To match this, revert the
3363         initial display of usermode to how it was done before.
3364
3365 2005-04-24  Michael Poole <mdpoole@troilus.org>
3366
3367         * doc/example.conf: Document new autoconnect field of Connect.
3368
3369         * include/s_conf.h: Add CONF_AUTOCONNECT and field for it.
3370
3371         * ircd/ircd.c (try_connections): Skip non-autoconnect servers.
3372
3373         * ircd/ircd_lexer.l: Recognize autoconnect token.
3374
3375         * ircd/ircd_parser.y: Add autoconnect= option to Connect block.
3376
3377         * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to
3378         user being invited.
3379         (ms_invite): Likewise.
3380
3381         * ircd/s_user.c (register_user): Show class name rather than
3382         pointer-as-integer.
3383
3384 2005-04-24  Michael Poole <mdpoole@troilus.org>
3385
3386         * ircd/ircd_parser.y: Rewrite so each error condition gets its own
3387         error message, and so that invalid parameters are printed out.
3388
3389 2005-04-23  Michael Poole <mdpoole@troilus.org>
3390
3391         * ircd/channel.c (apply_ban): Consistently free newban->banstr
3392         when the function fails.
3393         (mode_process_bans): Free banstr for all BAN_DEL bans.
3394
3395         * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
3396
3397 2005-04-23  Michael Poole <mdpoole@troilus.org>
3398
3399         * include/patchlevel.h: Bump to being a beta.
3400
3401         * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that
3402         parser actions don't have to be immediately after a QSTRING.
3403
3404         * ircd/ircd_parser.y (FNAME): Remove unused token.
3405         (QSTRING): Adjust for QSTRING being an already-copied version.
3406
3407 2005-04-23  Michael Poole <mdpoole@troilus.org>
3408
3409         * doc/example.conf (UWorld): Illustrate new config extension.
3410
3411         * ircd/ircd_parser.y (uworldblock): Do the expected thing when
3412         multiple name= entries are present.
3413
3414 2005-04-22  Michael Poole <mdpoole@troilus.org>
3415
3416         * RELEASE.NOTES: Silence exceptions use ~, not -.  Oops!
3417
3418         * doc/example.conf: Fix typo in example Kill block.
3419
3420         * ircd/channel.c (mode_parse_ban): Use correct test for flag_p.
3421
3422         * ircd/m_silence.c (apply_silence): Make mask pretty so that later
3423         processing does not convert * to @ (and match no one).
3424
3425 2005-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
3426
3427         * ircd/m_userip.c (userip_formatter): /userip should *never*
3428         report the user's real IP unless its answering the user
3429         him/herself
3430
3431         * ircd/m_userhost.c (userhost_formatter): /userhost should *never*
3432         report the user's real host unless its answering the user
3433         him/herself
3434
3435 2005-04-20  Michael Poole <mdpoole@troilus.org>
3436
3437         * ircd/ircd.c (parse_command_line): Update usage text.
3438
3439         * ircd/numnicks.c (base64toip): Use v4mapped address range instead
3440         of v4compat address range, fixing IPv4-based /who.
3441
3442 2005-04-19  Michael Poole <mdpoole@troilus.org>
3443
3444         * configure.in: When --enable-profile, add -pg to LDFLAGS.
3445
3446         * configure: Regenerate.
3447
3448 2005-04-19  Michael Poole <mdpoole@troilus.org>
3449
3450         * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo.
3451
3452         * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks
3453         once a matching Client block is found.
3454
3455         * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp().
3456
3457 2005-04-18  Michael Poole <mdpoole@troilus.org>
3458
3459         * ircd/match.c (check_if_ipmask): Do not interpret masks that
3460         start with . or / as IP-based host masks.
3461
3462 2005-04-17  Michael Poole <mdpoole@troilus.org>
3463
3464         * ircd/channel.c (mode_process_clients): Only prohibit deops of
3465         users with the same or higher oplevel where apass is set.
3466         Likewise, when opping users, give them MAXOPLEVEL for non-apass
3467         channels.
3468         (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels.
3469
3470         * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the
3471         same or higher oplevel where apass is set.
3472
3473         * ircd/s_user.c (register_user): Fix order of server version vs
3474         various mode strings.
3475
3476         * tools/linesync/linesync.sh: Add revision id field.
3477
3478 2005-04-17  Michael Poole <mdpoole@troilus.org>
3479
3480         * tools/linesync/linesync.sh: Fix typo comment.  Check for
3481         multiple blocks per line in the linesync input.
3482
3483 2005-04-17  Dan <daniel@undernet.org>
3484
3485         * tools/linesync/linesync.sh: Update to support new syntax and to
3486         avoid rehashing the ircd when the config is the same.
3487
3488         * tools/linesync/linesync.conf: Update allowed conf items.
3489
3490 2005-04-16  Michael Poole <mdpoole@troilus.org>
3491
3492         * doc/example.conf (Kill): Document newly supported syntax.
3493
3494         * include/s_conf.h (DenyConf): Split realname mask into its own
3495         field.  Remove the unused DENY_FLAGS_{IP,REALNAME}.
3496
3497         * ircd/ircd_parser.y (Kill): Only require one of usermask,
3498         hostmask, realmask to be set for a valid block.
3499         (killitem): Add new production killusername.
3500
3501         * ircd/s_conf.c (conf_erase_deny_list): Free realmask field.
3502         (find_kill): Rearrange slightly to clarify control flow.
3503
3504         * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask,
3505         so the old usermask field can be adopted for realname mask.  Add
3506         double quotes around the realmask field.
3507
3508         * ircd/s_stats.c (report_deny_list): Do so.
3509         (stats_klines): Likewise.
3510
3511 2005-04-17  Perry Lorier <isomer@undernet.org>
3512         
3513         * tools/convert-conf.py: Fix lots of conversion problems with
3514         oper privielges (now they are converted), 
3515         features (deprecated features commented out, most converted to
3516         priviliges), 
3517         realname klines (also add host= lines)
3518         quarintines (generate blocks for them), 
3519         connect blocks (don't generate empty port config lines)
3520         etc...
3521
3522 2005-04-16  Michael Poole <mdpoole@troilus.org>
3523
3524         * ircd/gline.c (do_gline): Fix typo when activating IP-based
3525         G-lines.
3526
3527 2005-04-16  Michael Poole <mdpoole@troilus.org>
3528
3529         * ircd/class.c (free_class): Free default_umode field.
3530
3531         * ircd/ircd_parser.y (classblock): Free default_umode field before
3532         overwriting it.
3533
3534         * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit
3535         fields.
3536         (find_kill): Realname Kill blocks no longer have $R at the start,
3537         so do not skip over the first two characters of the mask.
3538
3539 2005-04-15  Michael Poole <mdpoole@troilus.org>
3540
3541         * doc/example.conf (Operator): Properly qualify plaintext password.
3542         (Quarantine): Document (new) syntax.
3543
3544         * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
3545         correctly on BSDs.
3546
3547         * ircd/ircd_parser.y (qconf): Remove global variable.
3548         (killuhost): Null terminate username when present.
3549         (quarantineblock): Replace with a syntax that works.
3550
3551         * ircd/s_stats.c: #include <querycmds.h> for UserStats.
3552         (stats_server_verbose): Reinstate check for UserStats.
3553
3554 2005-04-09  Kevin L. Mitchell  <klmitch@mit.edu>
3555
3556         * ircd/ircd.c: conditionally include sys/resource.h; otherwise,
3557         RLIMIT_CORE will not be defined and so set_core_limit() will never
3558         be defined, much less run.
3559
3560         * configure.in: add sys/resource.h to the list of headers to
3561         search for
3562
3563         * configure: regenerate configure
3564
3565         * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to
3566         config.h.in
3567
3568 2005-04-08  Michael Poole <mdpoole@troilus.org>
3569
3570         * include/s_conf.h (conf_debug_iline): Declare new function.
3571
3572         * ircd/ircd.c (dbg_client): New file-scoped variable.
3573         (parse_command_line): Set it from the new -c option.
3574         (main): If dbg_client is set during chkconf, use it.
3575
3576         * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses,
3577         not IPv4-compatible addresses, to match ipmask_parse().
3578
3579         * ircd/m_whowas.c (m_whowas): Split display of real host to a
3580         separate line, in hopes of not confusing opers in the future.
3581
3582         * ircd/s_conf.c (conf_debug_iline): Implement new function.
3583
3584 2005-04-06  Michael Poole <mdpoole@troilus.org>
3585
3586         * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping
3587         out locally opped and voiced channel members.
3588
3589 2005-04-06  Michael Poole <mdpoole@troilus.org>
3590
3591         * include/numeric.h (RPL_APASSWARN): Replace with three distinct
3592         values.
3593         (ERR_NOMANAGER_LONG): Assign new numeric.
3594         (ERR_NOMANAGER_SHORT): Assign new numeric.
3595
3596         * ircd/channel.c (parse_mode_upass): Adapt to new formats for
3597         ERR_NOTMANAGER separation.
3598         (parse_mode_apass): Likewise.  Also adapt to RPL_APASSWARN split.
3599
3600         * ircd/s_err.c (RPL_APASSWARN): Replace with three message
3601         strings, to avoid embedding long message strings in the logic
3602         implementation.
3603         (ERR_NOTMANAGER): Likewise (but not the same strings).
3604
3605 2005-04-06  Michael Poole <mdpoole@troilus.org>
3606
3607         * ircd/ircd_parser.y (clientblock): Use the password field.
3608
3609         * ircd/s_user.c (register_user): Allow aconf->password to be a
3610         single digit, since per-IP limit is now in a separate field.
3611
3612 2005-04-06  Michael Poole <mdpoole@troilus.org>
3613
3614         * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in
3615         current gcc releases and is slower than files for previous
3616         releases on most OSes.
3617
3618         * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING.
3619         (unet_PIPE_CFLAGS): Remove use of macro.
3620
3621         * aclocal.m4: Regenerate.
3622
3623         * configure: Likewise.
3624
3625 2005-04-04  Michael Poole <mdpoole@troilus.org>
3626
3627         * configure.in: For developers' ease, allow passing an option to
3628         configure to persistently set optimization CFLAGS.
3629
3630         * configure: Regenerate.
3631
3632 2005-04-04  Michael Poole <mdpoole@troilus.org>
3633
3634         * doc/example.conf (Jupe): Make the default Jupe block follow
3635         CFV-0255.  (Thanks to FrankP for pointing me at this and to DinTn
3636         for getting me a copy of the CFV.)
3637
3638 2005-04-04  Michael Poole <mdpoole@troilus.org>
3639
3640         * include/capab.h (CAPFL_STICKY): Define.
3641         (CAPLIST): Remove the entries used for testing.
3642
3643         * include/client.h (Connection): Clarify comment about the
3644         distinction between con_capab and con_active.
3645
3646         * ircd/m_cap.c: Add doxygen comments and replace the long
3647         discussion of m_handler functions with an xref to it.
3648         (send_caplist): Add new parameters and change the terminal vs
3649         non-terminal line distinction to make compliant with current draft
3650         specification.
3651         (cap_empty): Rename to cap_ls().
3652         (cap_req): Track modified capabilities bitwise, so that the
3653         responding ACK contains all the appropriate flags.
3654         (cap_ack): Add comment explaining why there is no response.
3655         (cap_clear): Build and send a list of cleared capabilities, as
3656         required by the current draft.
3657         (cap_list): Send capability list using LIST subcommand.
3658         (cmdlist): Add handler for LS subcommand.  Remove entries for the
3659         empty and LSL subcommands, which are no longer allowed.
3660         (m_cap): Require at least one argument from user.
3661
3662 2005-04-01  Michael Poole <mdpoole@troilus.org>
3663
3664         * include/s_conf.h (SMAP_FAST): Define.
3665         (s_map): Add 'flags' field.
3666
3667         * ircd/ircd_lexer.l: Recognize 'FAST' token.
3668
3669         * ircd/ircd_parser.y (FAST): New token.
3670         (pseudoitem): Add pseudoflags alternative.
3671         (pseudoflags): New production, recognizing FAST token.
3672
3673         * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally.
3674         Remove outdated comment.
3675
3676 2005-04-01  Michael Poole <mdpoole@troilus.org>
3677
3678         * include/handlers.h (ms_privs): Declare.
3679
3680         * include/msg.h (TOK_PRIVS): Assign token.
3681         (CMD_PRIVS): Define.
3682
3683         * ircd/m_privs.c: Add doxygen comments and replace the long
3684         discussion of m_handler functions with an xref to it.
3685         (mo_privs): Forward requests for non-local users
3686         to their own server.
3687         (ms_privs): Implement.
3688
3689         * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends
3690         the message.
3691
3692 2005-03-30  Michael Poole <mdpoole@troilus.org>
3693
3694         * include/client.h (struct Client): Explain where cli_username
3695         comes from.
3696
3697         * include/struct.h (struct User): Explain where this username
3698         comes from, too
3699
3700         * ircd/ircd_res.c (timeout_resolver): Update parameter name in
3701         Doxygen comment, too.
3702
3703         * ircd/s_misc.c (get_client_name): Reorganize to have less
3704         indentation and behave like 2.10.11 when client is not idented.
3705
3706 2005-03-29  Michael Poole <mdpoole@troilus.org>
3707
3708         * doc/example.conf: Remove no-longer-used HIS_STATS_h.
3709
3710         * doc/readme.features: Likewise.
3711
3712         * include/ircd_features.h: Likewise.
3713
3714         * ircd/ircd_features.c: Likewise.
3715
3716 2005-03-20  Reed Loden <reed@reedloden.com>
3717
3718         * include/ircd_features.h: Alphabetize HIS_STATS_? features.
3719
3720         * ircd/ircd_features.c: Likewise.
3721
3722 2005-03-29  Michael Poole <mdpoole@troilus.org>
3723         (The previously unapplied part of another patch (by Carlo Wood?).)
3724
3725         * ircd/m_part.c (ms_part): Remove a check that should already be
3726         done by the user's own server.
3727
3728 2005-03-29  Michael Poole <mdpoole@troilus.org>
3729
3730         * doc/example.conf: Add HIS_STATS_J entry.
3731
3732         * doc/readme.features: Likewise.
3733
3734 2005-03-25  Reed Loden <reed@reedloden.com>
3735
3736         * include/hash.h: Add needed prototypes for new
3737         stats_nickjupes() function.
3738
3739         * include/ircd_features.h: Add FEAT_HIS_STATS_J.
3740
3741         * include/numeric.h: Add RPL_STATSJLINE (222) for new nick
3742         jupes stats. Correct a typo in a comment.
3743
3744         * ircd/hash.c: Add stats_nickjupes() function to report all
3745         nick jupes to an oper. Because of the nature of hash tables,
3746         there is no way to sort this list so the results look weird.
3747
3748         * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE).
3749
3750         * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes
3751         stats.
3752
3753         * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes
3754         stats. Make 'j' case sensitive. Modify the comment for stats
3755         uworld.
3756
3757 2005-03-27  Michael Poole <mdpoole@troilus.org>
3758
3759         * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A
3760         channel when forwarding a channel burst line.
3761
3762 2005-03-25  Michael Poole <mdpoole@troilus.org>
3763
3764         * ircd/m_server.c (set_server_flags): New function.  Unlike the
3765         old code, this recognizes the IPv6 flag.  (Spotted by Reed.)
3766         (mr_server): Use the new function.
3767         (ms_server): Likewise.  Also don't show "Net junction:" message if
3768         any closer server is still bursting (also spotted by Reed).
3769         Finally, forward the +6 flag to other servers.
3770
3771         * ircd/s_serv.c (server_estab): Forward the +6 flag here, too.
3772
3773         * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it
3774         may be cleared by completed_connection().
3775
3776 2005-03-23  Michael Poole <mdpoole@troilus.org>
3777
3778         * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel
3779         is wiped out during burst.
3780
3781 2005-03-22  Michael Poole <mdpoole@troilus.org>
3782
3783         * ircd/ircd_res.c (check_resolver_timeout): I give up.  Use the
3784         kludgy earlier version of the timeout fix.
3785
3786 2005-03-22  Michael Poole <mdpoole@troilus.org>
3787
3788         * ircd/channel.c (send_channel_modes): Fix test for when to send
3789         membership mode suffix, to avoid sending it more than once.
3790
3791 2005-03-22  Michael Poole <mdpoole@troilus.org>
3792         (Many thanks to nex and Reed for helping hunt this down and
3793         doing the testing of various patches.)
3794
3795         * ircd/ircd_events.c (timer_chg): Properly change a timer that is
3796         in the middle of executing its expiration event.
3797
3798         * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for
3799         whether to use timer_chg() or timer_add().
3800         On second thought, use timer_add() unconditionally; the server
3801         connection loop does.
3802         (timeout_resolver): Do not try to re-schedule the DNS timeout
3803         unless it is the expiration event.
3804         (do_query_number): Properly initialize request->state.
3805         (res_readreply): Mention the response code that was bad.
3806
3807 2005-03-22  Michael Poole <mdpoole@troilus.org>
3808
3809         * ircd/engine_kqueue.c (engine_delete): The kernel removes
3810         close()'d FDs from the activity list, so don't try to remove the
3811         FD here (the caller may have already close()'d it).
3812
3813 2005-03-20  Michael Poole <mdpoole@troilus.org>
3814
3815         * ircd/IPcheck.c: Fix typos in comments and strings to reduce
3816         future slumming for credit.
3817
3818         * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise.
3819         * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise.
3820         * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise.
3821         * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise.
3822         * ircd/ircd_features.c, ircd/ircd_log.c: Likewise.
3823         * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise.
3824         * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise.
3825         * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise.
3826         * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise.
3827         * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise.
3828         * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise.
3829         * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise.
3830         * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise.
3831         * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise.
3832         * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise.
3833         * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise.
3834         * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise.
3835
3836         * ircd/test/test_stub.c: Make exit_client() argument list
3837         consistent with that in s_misc.c so doxygen is not confused.
3838
3839 2005-03-20  Michael Poole <mdpoole@troilus.org>
3840         (Thanks to Reed Loden for pointing these out.)
3841
3842         * ircd/channel.c: Fix typos in comments.
3843
3844         * ircd/m_create.c: Likewise.
3845
3846         * ircd/m_list.c: Likewise.
3847
3848         * ircd/m_names.c: Likewise.
3849
3850         * ircd/numnicks.c: Likewise.
3851
3852         * ircd/s_bsd.c: Likewise.
3853
3854 2005-03-20  Michael Poole <mdpoole@troilus.org>
3855         (Thanks to Reed Loden for pointing these out.)
3856
3857         * doc/Configure.help: Remove outdated file.
3858
3859         * doc/exaconf.2: Likewise.
3860
3861         * doc/snomask.html: Add missing <tr>, SNO_AUTO, SNO_DEBUG, and
3862         update SNO_OPERDEFAULT list.
3863
3864         * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd
3865         instead).
3866
3867         * tools/Makefile.crypt: Remove outdated file.
3868
3869         * tools/mkpasswd.c: Likewise.
3870
3871         * tools/transition: Likewise.
3872
3873 2005-03-19  Michael Poole <mdpoole@troilus.org>
3874
3875         * ircd/channel.c (sub1_from_channel): Check apass rather than mode
3876         to determine whether an apass is set (MODE_KEY/APASS/UPASS are not
3877         set in mode.mode).
3878         (send_channel_modes): Use the same change when determining how to
3879         send oplevels for channels.
3880
3881 2005-03-19  Michael Poole <mdpoole@troilus.org>
3882
3883         * include/IPcheck.h (IPcheck_connect_fail): Take a Client
3884         parameter instead of irc_in_addr.
3885
3886         * ircd/IPcheck.c (IPcheck_connect_fail): Likewise.  Assert that
3887         the client has been IP-checked.
3888         (IPcheck_remote_connect): Assert that the client has not yet been
3889         charged for connecting.
3890         (IPcheck_connect_succeeded): Assert that the client has been
3891         charged for connecting.
3892         (IPcheck_disconnect): Likewise.
3893
3894         * ircd/m_nick.c (m_nick): Pass rejected client to
3895         IPcheck_connect_fail() when somebody takes the nick first.
3896         (ms_nick): Likewise.
3897
3898         * ircd/s_serv.c (server_estab): Pass new server to
3899         IPcheck_connect_fail().
3900
3901         * ircd/s_user.c (register_user): When rejecting a user, pass
3902         the struct Client to IPcheck_connect_fail().
3903
3904 2005-03-19  Michael Poole <mdpoole@troilus.org>
3905
3906         * doc/example.conf (Connect): Remove a buggy comment about leaf
3907         directives; refer the reader to the Connect block instead.
3908
3909         * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;"
3910
3911 2005-03-19  Michael Poole <mdpoole@troilus.org>
3912
3913         * doc/example.conf (Operator): Correct the comment explaining
3914         hashed passwords.
3915
3916         * ircd/m_oper.c (oper_password_match): Check correct variable to
3917         determine whether the hashed password matched.
3918
3919 2005-03-08  Michael Poole <mdpoole@troilus.org>
3920
3921         * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask
3922         and bit count for "*".
3923         (ipmask_check): Make more robust to similar errors.
3924
3925 2005-03-07  Michael Poole <mdpoole@troilus.org>
3926
3927         * configure.in: Consistently use a constant in AC_DEFINE().
3928
3929         * configure: Regenerate.
3930
3931         * doc/example.conf (Port): Add comment about the mask option.
3932         (Port): Fix the vhosted Port example.
3933
3934         * ircd/ircd_parser.y (clientblock): Correctly initialize the IP
3935         address and addrbits for a Client block with no IP mask.
3936
3937         * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask.
3938
3939         * ircd/s_auth.c (start_auth_query): Count socket allocation
3940         failure as a failed auth check, as .11 does.
3941
3942         * ircd/s_debug.c (debug_serveropts): Add '6' to server options
3943         when compiled with IPv6 support.
3944
3945 2005-02-23  Michael Poole <mdpoole@troilus.org>
3946
3947         * doc/example.conf: Explain apass_opmode privilege, pointing out
3948         that, unlike previous privs, the default is OFF for global opers.
3949
3950         * include/client.h (PRIV_APASS_OPMODE): Define new privilege.
3951
3952         * ircd/channel.c (mode_parse_upass): Only prevent local opers
3953         without the apass_opmode privilege from forcing a +U change.
3954         (mode_parse_apass): Likewise, for +A.
3955
3956         * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in
3957         the default privileges for global opers.
3958
3959         * ircd/ircd_lexer.l (apass_opmode): Recognize keyword.
3960
3961         * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token.
3962         (privtype): Fix typo for local_badchan privilege value.
3963         Accept apass_opmode token.
3964
3965 2005-02-23  Michael Poole <mdpoole@troilus.org>
3966
3967         * doc/example.conf: Fix comment's description of "whox" privilege.
3968
3969 2005-02-21  Michael Poole <mdpoole@troilus.org>
3970
3971         * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check
3972         from here, so /whois does not show secret global channels.
3973
3974         * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use
3975         "/list s".
3976         (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels.
3977
3978 2005-02-21  Perry Lorier <isomer@undernet.org>
3979
3980         * ircd/s_stats.c: Hide the hub IP's.  They're kinda important.
3981
3982 2005-02-20  Perry Lorier <isomer@undernet.org>
3983
3984         * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to
3985         parse_error()'s so that ./ircd -k will display them.  Also clarified
3986         the warning about oper blocks.
3987
3988 2005-02-20  Perry Lorier <isomer@undernet.org>
3989
3990         * tools/convert-conf.py: A multitude of changes to deal with parsing
3991         mistakes, generate a newer config file, better error handling,
3992         being smarter about what config elements you generate etc.
3993         
3994 2005-02-20  Perry Lorier <isomer@undernet.org>
3995
3996         * ircd/engine_epoll.c: Change a size_t to socklen_t to match
3997         getsockopt prototype, so it compiles without warning on amd64
3998
3999 2005-02-19  Michael Poole <mdpoole@troilus.org>
4000
4001         * ircd/ircd_parser.y (clientblock): Parse IP address before
4002         allocating ConfItem; if the parse fails, generate an error.
4003
4004         * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6
4005         addresses starting with ':'.
4006         (RPL_STATSILINE): Likewise.
4007         (RPL_STATSOLINE): Add format field for username.
4008
4009         * ircd/s_stats.c (stats_configured_links): Pass the appropriate
4010         argument for the RPL_STATSxLINE changes.
4011         Change RPL_STATSILINE to use * instead of <NULL> when IP or host
4012         is null.
4013
4014 2005-02-18  Michael Poole <mdpoole@troilus.org>
4015
4016         * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP
4017         address to look up and compare against hash entries.
4018
4019         * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban.
4020
4021         * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name.
4022         (clienthost): Split hosts that contain '@' into username and host.
4023         (clientip): Split IPs that contain '@' into username and IP.
4024         (killreason): Add missing ~ to mask off DENY_FLAGS_FILE.
4025
4026         * ircd/m_silence.c (forward_silences): When we reject a silence,
4027         splice it out of the ban list.  Warn the user if he is local.
4028
4029         * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server
4030         connections.
4031
4032         * ircd/s_stats.c (stats_configured_links): Display correct field
4033         when listing CONF_UWORLD entries.
4034
4035 2005-02-09  Michael Poole <mdpoole@troilus.org>
4036
4037         * configure.in (YACC): Only warn if we cannot get a version number
4038         from $YACC.
4039
4040         * configure: Regenerate.
4041
4042         * ircd/ircd_res.c (check_resolver_timeout): Try another way to
4043         avoid timer_chg() on a non-queued/active timer.
4044
4045         * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
4046         strings like "::127.0.0.1".
4047
4048         * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
4049
4050 2005-02-02  Michael Poole <mdpoole@troilus.org>
4051
4052         * Makefile.in (install): Do not create ${prefix}/include since it
4053         is no longer used.
4054
4055         * ircd/Makefile.in (install-*): Remove commented-out code to touch
4056         and chown MPATH and RPATH.
4057
4058         * ircd/gline.c (gline_find): Allow searching for host-based
4059         G-lines by plain hostname (not *@host), thus preventing "GLINE
4060         test ..." from inserting duplicate G-lines.
4061
4062         * ircd/motd.c (motd_create): Null out new Motd's hostmask when
4063         appropriate, avoiding an uninitialized or stale pointer.
4064
4065 2005-01-26  Michael Poole <mdpoole@troilus.org>
4066
4067         * include/ircd_alloc.h (DoMallocZero): Parenthesize macro
4068         arguments, fixing operator precedence problems.
4069         (DoFree): Make debug version also overwrite p.
4070
4071         * include/memdebug.h (fda_get_byte_count, fda_get_block_count):
4072         Declare functions used outside memdebug.c.
4073
4074         * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c.
4075
4076         * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not
4077         use these if using the memdebug version.
4078
4079         * ircd/memdebug.c: #include "send.h" and <string.h> to get
4080         declarations for certain functions.
4081
4082         * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug.
4083         (sendto_opmask_butone): Likewise.
4084
4085 2005-01-25  Michael Poole <mdpoole@troilus.org>
4086
4087         * configure.in: Fix typos and thinkos in previous commut.
4088
4089         * configure: Regenerate.
4090
4091         * doc/example.conf: Change class name in Connect block to be
4092         consistent with earlier Class block.
4093
4094         * ircd/ircd.c (try_connections): Consider Connect blocks with hold
4095         time of 0.  Fix Links() vs MaxLinks() comparison to reflect ref
4096         count starting at 1.
4097
4098         * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused
4099         variables after use.
4100
4101 2005-01-24  Michael Poole <mdpoole@troilus.org>
4102
4103         * configure.in: Make sure that $LEX and $YACC are reasonable and
4104         actually run.
4105
4106         * configure: Regenerate.
4107
4108         * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to
4109         test whether the timer is already pending.
4110
4111 2005-01-23  Michael Poole <mdpoole@troilus.org>
4112
4113         * doc/example.conf (Kill): Fix typo in realname Kill block
4114
4115         * include/client.h (infousermodes): Fix typo in comment.
4116
4117         * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY.
4118         (main): Move daemon_init() before event_init() to work around BSD
4119         lameness.
4120
4121 2005-01-23  Michael Poole <mdpoole@troilus.org>
4122
4123         * ircd/test/Makefile.in: Add missing "install" target.  Make
4124         compatible with BSD make (which has no $^ and no $(CPPFLAGS) in
4125         its default .c.o rule).
4126
4127 2005-01-21  Michael Poole <mdpoole@troilus.org>
4128
4129         * ircd/engine_kqueue.c: Move <sys/types.h> earlier to fix build on
4130         FreeBSD 5.x (which needs it for <sys/event.h>).
4131
4132         * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with
4133         portable equivalents.
4134
4135         * ircd/ircd_log.c (log_open): Likewise.
4136
4137         * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so
4138         that IPv6 definitions become visible on FreeBSD 5.3.
4139
4140         * ircd/s_auth.c: Remove apparently unused <sys/file.h> because
4141         it fails to compile on FreeBSD 5.3.
4142
4143 2005-01-22  Perry Lorier <isomer@undernet.org>
4144
4145         * ircd/ircd_parser.y: Fix missing ;
4146
4147 2005-01-19  Michael Poole <mdpoole@troilus.org>
4148
4149         * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in
4150         outbound INVITE messages.  On incoming INVITEs, ignore if the
4151         timestamp is too recent or if the timestamp is missing and the
4152         peer server is in burst.
4153
4154 2005-01-15  Michael Poole <mdpoole@troilus.org>
4155
4156         * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans
4157         and silences.  Mention net.rider kick change.
4158
4159         * doc/example.conf (Class): Add documentation for restart and
4160         local_opmode privileges.  Fix name of local_jupe privilege.
4161
4162         * ircd/ircd_lexer.l: Recognize local_opmode privilege.
4163
4164 2005-01-14  Michael Poole <mdpoole@troilus.org>
4165
4166         * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify
4167         CAP comment, mention named /stats, list config heteromorphisms.
4168
4169         * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L,
4170         HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST.
4171
4172         * ircd/channel.c (mode_parse_apass): Change old mention of +u mode
4173         to say +U.
4174
4175 2005-01-13  Michael Poole <mdpoole@troilus.org>
4176
4177         * RELEASE.NOTES: Update for 2.10.12.
4178
4179 2005-01-08  Michael Poole <mdpoole@troilus.org>
4180
4181         * ircd/channel.c (@page zombie): Add synopsis to explain what
4182         zombies are supposed to do.
4183
4184         * doc/example.conf (Features): Transfer recommended LOG features
4185         from 2.10.11 example.conf.
4186
4187 2005-01-03  Michael Poole <mdpoole@troilus.org>
4188
4189         * ircd/ircd.c (try_connections): Test Connect hold time before
4190         updating it (spotted by Kev).
4191
4192 2005-01-03  Michael Poole <mdpoole@troilus.org>
4193
4194         * Makefile.in: Add ircd/test as a subdirectory.
4195
4196         * ircd/.cvsignore: Ignore umkpasswd binary.
4197
4198         * ircd/Makefile.in: Update dependencies.
4199
4200         * ircd/test/.cvsignore: New file.
4201
4202         * ircd/test/Makefile.in: Use ${} instead of $().  Add build,
4203         depend, distclean targets to integrate with rest of build system.
4204
4205 2005-01-03  Michael Poole <mdpoole@troilus.org>
4206
4207         * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
4208         that have an invalid IP address.
4209
4210         * ircd/ircd.c (try_connections): Update Connect hold time before
4211         skipping it, to prevent infinite loops.
4212
4213 2005-01-03  Kevin L Mitchell  <klmitch@mit.edu>
4214
4215         * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
4216         was a server; fixed to skip servers
4217
4218 2004-12-28  Michael Poole <mdpoole@troilus.org>
4219
4220         * include/s_bsd.h (VirtualHost): Replace with separate variables
4221         for IPv4 and IPv6 virtual hosts.
4222
4223         * include/uping.h (uping_echo): Remove declaration.
4224
4225         * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
4226         VirtualHost_v6 based on iauth server address family.
4227
4228         * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
4229
4230         * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
4231         (RESOLVER): Remove definition.
4232         (generalresolver): Remove.
4233         (generalvhost): Assign address to either VirtualHost_v4 or
4234         VirtualHost_v6, depending on format.
4235
4236         * ircd/ircd_res.c (res_socket): Replace with separate variables
4237         for IPv4 and IPv6 resolver sockets.
4238         (ResolverAddr): Remove definition.
4239         (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
4240         (send_res_msg): Select outbound FD based on resolver address type.
4241         (res_readreply): Recognize either inbound socket FD.
4242
4243         * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
4244         (os_socket): Require local != NULL.
4245
4246         * ircd/s_bsd.c (VirtualHost): Replace with separate variables
4247         for IPv4 and IPv6 virtual hosts.
4248         (connect_inet): Select virtual host based on destination address.
4249
4250         * ircd/uping.c (UPingFIleDescriptor): Remove.
4251         (upingSock): Split into separate IPv4 and IPv6 variables.
4252         (uping_echo_callback): Incorporate uping_echo() body here, so the
4253         proper socket FD can be used.
4254         (uping_init): Attempt to set up both v4 and v6 UPING sockets.
4255         (uping_server): Create uping socket with appropriate local address.
4256
4257         * doc/example.conf (General): Update example config file to
4258         reflect removal of Resolver setting and support for separate IPv4
4259         and IPv6 VHost settings.
4260
4261 2004-12-28  Michael Poole <mdpoole@troilus.org>
4262
4263         * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
4264         DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
4265         unused macros.
4266
4267         * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
4268         ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
4269         #include <arpa/inet.h>.
4270
4271 2004-12-28  Michael Poole <mdpoole@troilus.org>
4272
4273         * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
4274         (ipmask_parse_ipv4): We already parse the dotted quads from the
4275         input string, so use them instead of inet_addr() to populate
4276         out->s_addr.
4277
4278         * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
4279         (do_gline): Pass SHOW_IP instead of TRUE as argument to
4280         get_client_name().
4281
4282         * ircd/ircd.c (try_connections): Revise to use fewer temporary
4283         variables.
4284
4285 2004-12-28  Michael Poole <mdpoole@troilus.org>
4286
4287         * include/res.h: Implement irc_in_addr_* as macros.
4288
4289         * ircd/ircd_res.c: Remove the function bodies.
4290
4291         * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
4292         (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
4293         (ircd_aton): Accept IPv6 addresses with all eight segments
4294         specified (e.g. 0:0:0:0:0:0:0:0).  Correctly parse addresses
4295         with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
4296
4297         * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
4298
4299         * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
4300         support.  Add test_stub.c and ircd_in_addr_t.c references.
4301
4302         * configure.in: Generate ircd/test/Makefile as an output file.
4303
4304         * configure: Update.
4305
4306 2004-12-18  Michael Poole <mdpoole@troilus.org>
4307
4308         * include/client.h: Move unreg, privs, capab and active fields
4309         from struct Client to struct Connection since that is how they
4310         are really associated.  Adjust macros to match.
4311         (SetPriv, ClrPriv): New macros.
4312
4313         * ircd/client.c (client_set_privs): Exit earlier for remote
4314         clients.  Adjust macro use to correspond.
4315
4316         * ircd/m_server.c (mr_server): Grant all privileges except
4317         PRIV_SET to peer servers.
4318
4319 2004-12-18  Michael Poole <mdpoole@troilus.org>
4320
4321         * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
4322         #1087461.
4323
4324 2004-12-18  Michael Poole <mdpoole@troilus.org>
4325
4326         * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
4327         socket's FD is the same after processing as it was before; local
4328         clients apparently have s_fd() == -1 after close.
4329
4330 2004-12-18  Kevin L Mitchell  <klmitch@mit.edu>
4331
4332         * ircd/s_user.c: make absolutely certain register_user() is never
4333         called with cli_unreg non-zero; transition set_nick_name() over to
4334         the new way of determining whether client is ready for
4335         register_user()
4336
4337         * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
4338         understand a given CAP subcommand
4339
4340         * ircd/parse.c: add "CAP" command
4341
4342         * ircd/m_user.c (m_user): transition over to new way of
4343         determining whether client is ready for register_user()
4344
4345         * ircd/m_pong.c (mr_pong): transition over to new way of
4346         determining whether client is ready for register_user()
4347
4348         * ircd/m_cap.c: implementation of the IRC capabilities draft
4349
4350         * ircd/list.c (make_client): initialize cli_unreg element of
4351         client structure
4352
4353         * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
4354         functions that were never found because cross-case ordering has
4355         not been needed until now
4356
4357         * ircd/Makefile.in: add m_cap.c to list of .c files
4358
4359         * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
4360         indicate an unknown CAP subcommand
4361
4362         * include/msg.h: add "CAP" command
4363
4364         * include/handlers.h: add m_cap() to list of handlers
4365
4366         * include/client.h: add support for client capabilities; rototill
4367         the registration mechanism to dovetail well with the capability
4368         system--i.e., allow the capability system to suspend registration
4369         if the user issues one of the CAP commands
4370
4371         * include/capab.h: header file to define client capabilities
4372
4373 2004-12-17  Michael Poole <mdpoole@troilus.org>
4374
4375         * ircd/channel.h (apply_ban): Add new flag to indicate whether
4376         newban should be free()'d after it is used.
4377
4378         * ircd/channel.c (apply_ban): Likewise.  Also set BAN_DEL flag
4379         when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
4380         (mode_parse_ban): Delete buggy shortcut when channel banlist is
4381         empty.
4382         (mode_process_bans): Always give ownership of ban->banstr to the
4383         mode buffer, avoiding a memory leak.
4384
4385         * ircd/m_silence.c (apply_silence): Pass new parameter to
4386         apply_ban.
4387
4388 2004-12-17  Michael Poole <mdpoole@troilus.org>
4389
4390         * ircd/channel.c (sub1_from_channel): Immediately destroy
4391         non-Apass channels when oplevels are enabled; otherwise, they can
4392         stay opless for a considerable period.
4393         (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
4394         does not try to free() an invalid pointer.
4395
4396         * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
4397         aconf->host, not aconf->name.
4398
4399         * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
4400         by host here..
4401
4402         * ircd/s_conf.c (conf_check_server): .. rather than by name here.
4403         (attach_conf_uworld): New function to attach CONF_UWORLD items.
4404         (rehash): Use attach_conf_uworld() instead of attaching by name.
4405
4406 2004-12-15  Michael Poole <mdpoole@troilus.org>
4407
4408         * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
4409         channels they are not joined.
4410
4411 2004-12-15  Michael Poole <mdpoole@troilus.org>
4412
4413         * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
4414         warning.
4415         (ip_registry_canonicalize): New function to convert an IP address
4416         into a canonical form for clone checks.
4417         (ip_registry_hash): Update to reflect canonical form.
4418         (ip_registry_find): Use ip_registry_canonicalize().
4419         (ip_registry_check_local, ip_registry_check_remote): Likewise.
4420
4421         * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
4422         sending them to a non-IPv6 server.
4423
4424 2004-02-17  Michael Poole <mdpoole@troilus.org>
4425
4426         * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
4427         +D channel when they hide their hostmask.
4428
4429 2004-12-15  Michael Poole <dmpoole@troilus.org>
4430
4431         * doc/example.conf: Remove the example Server blocks since they
4432         are no longer used (were merged into Connect).
4433
4434         * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
4435
4436         * ircd/m_server.c (check_loop_and_lh): Use a different argument to
4437         test whether an introduced server is directly connected or not.
4438
4439 2004-12-14  Michael Poole <mdpoole@troilus.org>
4440
4441         * include/client.h (FLAG_IPV6): New value for enum Flag.
4442         (IsIPv6, SetIPv6): Accessor macros for it.
4443
4444         * include/numnicks.h (iptobase64): Add flag indicating whether to
4445         use full IPv6 addresses or fake them in an IPv4-compatible way.
4446
4447         * ircd/numnicks.c (iptobase64): Use the new flag.
4448
4449         * include/send.h (sendcmdto_flag_serv_butone): New function to
4450         send different lines to servers based on flags (like FLAG_IPV6).
4451
4452         * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
4453
4454         * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
4455         our server flags.
4456
4457         * ircd/s_serv.c (server_estab): Likewise.  Also make sure we send
4458         compatible IP addresses for the new server.
4459
4460         * ircd/s_user.c (register_user): Only send full IPv6 addresses to
4461         links that have FLAG_IPV6 set.
4462
4463 2004-12-13  Michael Poole <mdpoole@troilus.org>
4464
4465         * doc/example.conf: Update General block comment to mention
4466         new RESOLVER option and to explain IPv6 support.
4467
4468         * ircd/ircd_lexer.l: Recognize RESOLVER token.
4469
4470         * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
4471         alternative for generalitem.
4472
4473         * ircd/ircd_res.c: Define global ResolverAddr variable.  If it is
4474         valid, use it instead of VirtualHost in restart_resolver().
4475
4476 2004-12-13  Michael Poole <mdpoole@troilus.org>
4477
4478         * doc/example.conf: Update configuration to move Client block
4479         comment after sample Class blocks, and update entries in it.
4480
4481         * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
4482
4483         * ircd/ircd_parser.y: Add ip and username global variables and IP
4484         and USERNAME tokens.  Add clientip and clientusername alternatives
4485         for clientitem, and update clientblock to correspond.
4486
4487         * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
4488         the request_list before request_list is initialized.
4489         (cres_mem): Likewise.
4490
4491         * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
4492         proper address family.
4493
4494         * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
4495         means DNS reply is optional.  If aconf->addrbits >= 0, test it.
4496
4497         * tools/crypter: Delete.
4498
4499 2004-12-11  Kevin L Mitchell  <klmitch@mit.edu>
4500
4501         * ircd/*.c: use new assert() in ircd_log.h in preference to system
4502         assert()
4503
4504         * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
4505         glue so that umkpasswd will successfully compile and link
4506
4507         * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
4508         there are no calls to assert()
4509
4510         * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
4511         from looping should there be an assertion failure somewhere in the
4512         logging subsystem
4513
4514         * include/ircd_log.h: custom implementation of assert() that calls
4515         log_write()
4516
4517 2004-11-21  Michael Poole <mdpoole@troilus.org>
4518
4519         * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
4520         be done by non-channel-managers, fixing a crash from OPMODE.
4521         (mode_parse_apass): Likewise.
4522
4523 2004-11-20  Michael Poole <mdpoole@troilus.org>
4524
4525         * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
4526         a channel they are already in, but do not add them again.
4527
4528 2004-11-09  Michael Poole <mdpoole@troilus.org>
4529
4530         * include/res.h (init_resolver): Delete, and initialize lazily.
4531
4532         * ircd/ircd.c (main): Do not call init_resolver().
4533
4534         * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
4535         local resolver socket address.
4536         (init_resolver): Delete.
4537         (make_request): Call restart_resolver() if necessary.
4538         (query_name): Use ircrandom() instead of rand().
4539
4540         * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
4541         a file descriptor that indicates the socket family to use.
4542         (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
4543
4544 2004-11-09  Michael Poole <mdpoole@troilus.org>
4545
4546         * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
4547         socket from epoll on delete, since the kernel does that for us.
4548
4549 2004-11-07  Michael Poole <mdpoole@troilus.org>
4550
4551         * ircd/m_server.c (m_server, ms_server): Assign timestamp before
4552         it might be used in exit_new_server().
4553
4554 2004-11-07  Michael Poole <mdpoole@troilus.org>
4555
4556         * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
4557         to reflect the changes since these files' last rebuild.
4558
4559 2004-11-07  Michael Poole <mdpoole@troilus.org>
4560
4561         * include/ircd_crypt.h (ircd_crypt): This should return char*, not
4562         const char*, since it does not own the returned pointer.
4563
4564         * ircd/ircd_crypt.c (ircd_crypt): Change return type.
4565
4566         * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
4567         field since it is returned but this function must own the buffer.
4568
4569         * ircd/m_oper.c (oper_password_match): Free the string returned by
4570         ircd_crypt().
4571
4572         * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
4573
4574 2004-11-07  Michael Poole <mdpoole@troilus.org>
4575
4576         * acinclude.m4: Look for a 64-bit integer type.
4577
4578         * configure.in: Look for inttypes.h, since some systems have that
4579         but not stdint.h (and define 64-bit integers therein).
4580
4581         * include/client.h: Delete con_sendK, con_receiveK.  Make
4582         con_sendB and con_receiveB 64 bits wide.
4583
4584         * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
4585         Convert the other byte counters and the connected time counters to
4586         64 bits wide.
4587
4588         * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
4589         HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
4590
4591         * ircd/packet.c (update_bytes_received): Remove use of
4592         cli_receiveK().
4593
4594         * ircd/s_bsd.c (deliver_it): Likewise.
4595         (close_connection): Likewise.
4596
4597         * ircd/s_misc.c (tstats): Likewise.  Update format strings to use
4598         %Lu for 64-bit integer parameters.
4599
4600         * ircd/s_stats (stats_links): Convert cli_sendK() and
4601         cli_receiveK() use shifted versions of the byte counters, and
4602         update format strings to use %Lu for 64-bit integer parameters.
4603
4604 2004-11-07  Michael Poole <mdpoole@troilus.org>
4605
4606         * include/s_user.h (add_silence): Delete.
4607         (del_silence): Delete.
4608
4609         * include/struct.h (struct User): Convert silence list to struct Ban.
4610
4611         * ircd/m_silence.c (apply_silence, forward_silences): New functions.
4612         (m_silence): Use forward_silences() instead of add_silence().
4613         (ms_silence): Likewise.
4614
4615         * ircd/s_err.c (replyTable): Update RPL_SILELIST.
4616
4617         * ircd/s_misc.c (exit_one_client): Update to new silence list type.
4618
4619         * ircd/s_user.c (is_silenced): Use find_ban() to search for
4620         silences.  If one is found, send it plus any silence exceptions.
4621         (del_silence): Delete.
4622         (add_silence): Delete.
4623
4624 2004-11-07  Michael Poole <mdpoole@troilus.org>
4625
4626         * include/channel.h: Remove declarations for undefined functions
4627         cancel_mode(), add_token_to_sendbuf(), IsMember().  Delete
4628         add_banid(), next_removed_overlapped_ban().  Add BAN_EXCEPTION
4629         flag and new functions find_ban(), apply_ban().
4630
4631         * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
4632         LocalChanOperMode): Remove unused variable definitions.
4633         (make_nick_user_host): Delete.
4634         (add_banid): Delete.
4635         (next_removed_overlapped_ban): Delete.
4636         (find_ban): New function, which knows about exceptions.
4637         (is_banned): Use find_ban() and only work on a struct Membership.
4638         (bmatch): New function, which knows about CIDR bans.
4639         (apply_ban): New function to replace add_banid().
4640         (mode_parse_ban): Use apply_ban().
4641
4642 2004-10-28  Michael Poole <mdpoole@troilus.org>
4643
4644         * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
4645         new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
4646
4647 2004-10-22  Michael Poole <mdpoole@troilus.org>
4648
4649         * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
4650         with announcements enabled (do not "announce" to the recipient,
4651         and unconditionally send to the recipient).
4652
4653         * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
4654         the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
4655
4656 2004-10-21  Michael Poole <mdpoole@troilus.org>
4657
4658         * include/channel.h (Ban): Add fields address, nu_len, addrbits to
4659         support netmask-based bans.
4660
4661         * ircd/channel.c (set_ban_mask): New function to parse a ban as
4662         either netmask-based or not.
4663         (make_ban): Use set_ban_mask().
4664         (make_nick_user_ip): Becomes unused; remove it.
4665         (is_banned): Rewrite to match only once against the nick!user part
4666         of a ban, and compare addresses if BAN_IPMASK is set.
4667         (mode_parse_ban): Use set_ban_mask().
4668
4669 2004-10-21  Michael Poole <mdpoole@troilus.org>
4670
4671         * ircd/s_conf.c (attach_iline): Test resolved host names against
4672         aconf->host, not the (NULL) aconf->name.
4673
4674 2004-10-19  Michael Poole <mdpoole@troilus.org>
4675
4676         * include/channel.h: Move ban flags out of channel flags and
4677         rename to reflect this.
4678
4679         * ircd/channel.c: Update ban constant names.
4680
4681         * ircd/m_burst.c: Likewise.
4682
4683 2004-10-18  Michael Poole <mdpoole@troilus.org>
4684
4685         * include/list.h (SLink): Remove ban elements from here...
4686
4687         * include/channel.h (Ban): And move to the new struct Ban.
4688         (Channel): Update banlist field to match.
4689         (next_removed_overlapped_ban): Update return type to match.
4690         (make_ban, free_ban): New functions.
4691
4692         * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
4693         list types.
4694         (free_bans): New variable to hold unused Ban elements.
4695         (make_ban, free_ban): New functions.
4696         (destruct_channel, add_banid, next_removed_overlapped_ban): Update
4697         to use struct Ban.
4698         (is_banned, send_channel_modes, send_ban_list): Likewise.
4699         (ParseState, mode_parse_ban, mode_process_bans): Likewise.
4700         (mode_parse): Likewise.
4701
4702         * ircd/m_burst.c (ms_burst): Update to use struct Ban.
4703
4704         * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
4705
4706         * ircd/s_debug.c (count_memory): Update to use struct Ban.
4707
4708 2004-10-18  Kevin L Mitchell  <klmitch@mit.edu>
4709
4710         * ircd/gline.c (gline_find): unless we're looking for an exact
4711         match, we should call match() on hostnames, not ircd_strcmp()
4712
4713 2004-10-17  Michael Poole <mdpoole@troilus.org>
4714
4715         * include/s_conf.h (ConfItem): Add new field username.  Replace
4716         unused field bits with addrbits.
4717         (find_conf_exact): Replace user and host arguments with cptr.
4718         (find_conf_name, read_tlines, find_restrict): Remove declaration
4719         for undefined functions.
4720         (conf_parse_userhost): New function.
4721
4722         * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
4723         resolved hostname and IP are matched in one pass now.
4724
4725         * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
4726
4727         * ircd/s_conf.c (conf_parse_userhost): New function.
4728         (check_limit_and_attach): Use correct ConfItem field to determine
4729         maximum connections per IP.
4730         (attach_iline): Replace user@host matching with shorter, clearer
4731         matching against username and host/IP fields.
4732         (find_conf_exact): Likewise.
4733
4734         * ircd/ircd_parser.y: Replace assignment to aconf->host for
4735         CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
4736         conf_parse_userhost().  This means CONF_CLIENT ConfItems no longer
4737         use the name field or the IP token.  Remove the latter.
4738
4739         * ircd/ircd_lexer.l: Remove unused token IP.
4740
4741 2004-10-17  Michael Poole <mdpoole@troilus.org>
4742
4743         * ircd/crule.c (crule_via): Simplify the lookup for the directly
4744         connected server name.
4745
4746 2004-10-16  Michael Poole <mdpoole@troilus.org>
4747
4748         * ircd/class.c: Make find_class() return NULL for unknown classes,
4749         rather than returning the start of connClassList.
4750
4751         * ircd/match.c (parse_ipmask): Translate IPv4 masks as
4752         IPv4-compatible addresses.
4753         (check_ipmask): Fix comparison of IP masks.
4754
4755         * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
4756         uses CIDR style masks in the hostname field of a Motd block.
4757
4758 2004-10-16  Michael Poole <mdpoole@troilus.org>
4759
4760         * ircd/numeric.h: Remove the unused RPL_STATMEM and
4761         RPL_STATMEMTOT.  Move the RPL_BOUNCE comment to its current
4762         value (the former RPL_STATMEM).
4763
4764         * ircd/s_err.c: Remove format strings for RPL_STATMEM and
4765         RPL_STATMEMTOT.
4766
4767 2004-10-16  Michael Poole <mdpoole@troilus.org>
4768
4769         * ircd/m_server.c: Look up server configuration by name of our
4770         directly connected peer rather than the server being introduced.
4771
4772 2004-10-13  Michael Poole <mdpoole@troilus.org>
4773
4774         * include/channel.h: Delete MODE_LISTED and is_listed().  Replace
4775         ListingArgs.chptr with ListingArgs.bucket.  Move declaration of
4776         list_next_channels() to..
4777
4778         * include/hash.h: here, and drop the "nr" argument.
4779
4780         * ircd/channel.c: Remove redundant scan of local clients for
4781         channels being listed.  Delete list_next_channels() function.
4782
4783         * ircd/hash.c: Add list_next_channels() here, revising to not use
4784         MODE_LISTED and to use ListingArgs.bucket instead of chptr.  Also
4785         decide when to stop sending RPL_LISTs based on a half-full sendq.
4786
4787         * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
4788
4789         * ircd/m_list.c: Delete mention of MODE_LISTED.  Unconditionally
4790         call list_next_channels(sptr).
4791
4792         * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
4793
4794         * ircd/Makefile.in: Update dependencies (for hash.c).
4795
4796 2004-10-13  Michael Poole <mdpoole@troilus.org>
4797
4798         * ircd/ircd_parser.y: Consistently zero out global variables after
4799         they are used (prevents double frees and other problems).
4800
4801 2004-10-12  Michael Poole <mdpoole@troilus.org>
4802
4803         * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
4804         Set, Clr respectively.  Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
4805         Delete con_fd (get from con_socket) and con_port.  Move sentalong
4806         from send.c to struct Connection, and cli_lasttime and cli_since
4807         from struct Client to struct Connection.  Update cli_*() macros to
4808         use con_*(cli_connect(cli)).
4809
4810         * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
4811         FlagClr(), PrivHas() with FlagHas().
4812
4813         * ircd/ircd_parser.y: Likewise.
4814
4815         * ircd/list.c: Remove assignment to cli_local() since it is now a
4816         calculated value.
4817
4818         * ircd/s_bsd.c: Remove uses of cli_port().
4819
4820         * ircd/s_conf.c: Remove uses of ClearAccess().
4821
4822         * ircd/send.c: Delete sentalong array and replace with references
4823         to con_sentalong().
4824
4825 2004-10-12  Michael Poole <mdpoole@troilus.org>
4826
4827         * doc/example.conf: Update example config to reflect the changes
4828         made in the remainder of this patch.
4829
4830         * include/list.h: Make make_conf() take a type argument.
4831
4832         * include/s_conf.h: Delete CONF_LEAF and CONF_HUB.  Add "maximum"
4833         and "hub_limit" to ConfItem to compensate.
4834
4835         * ircd/ircd_lexer.l: Recognize MAXHOPS token.
4836
4837         * ircd/ircd_parser.y: Get rid of aconf global variable and add
4838         hub_limit global variable.  Add MAXHOPS token, and productions
4839         inside connectblock to recognize it and hub masks.  Allow maxlinks
4840         field in a Client block, rather than overloading password field.
4841         Convert serverblock to uworldblock and remove extraneous fields.
4842
4843         * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
4844         calculate LHcptr and active_lh_line.  Merge some duplicated code
4845         so handling active_lh_line cases is clearer.
4846
4847         * ircd/s_conf.c: Make make_conf() take a type argument.  Delete
4848         CONF_LEAF and CONF_HUB.  Do not overwrite server name with what
4849         is specified in the config file.
4850
4851         * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
4852         RPL_STATSHLINE.  Remove useless parameters and format fields from
4853         RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
4854         RPL_STATSULINE.
4855
4856         * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
4857
4858         * ircd/s_stats.c: Get rid of report_array and make
4859         stats_configured_links() directly use RPL_STATSxLINE (adding the
4860         new fields for Server and Client blocks).  Remove /stats h, since
4861         that has no meaning.
4862
4863 2004-10-12  Michael Poole <mdpoole@troilus.org>
4864
4865         * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
4866         default rather than by listing which should be wiped out.
4867
4868 2004-10-09  Michael Poole <mdpoole@troilus.org>
4869
4870         * ircd/m_server.c: Forward port checks for leaf and hub config
4871         rules, and reorganize mr_server() and ms_server() by moving out
4872         common code.  Add doxygen comments for the file.
4873
4874 2004-10-09  Michael Poole <mdpoole@troilus.org>
4875
4876         * ircd/hash.c: Fix thinko in hash function: It is not indexed
4877         simply by character value, so we cannot just remap the values
4878         by case.
4879
4880 2004-10-05  Michael Poole <mdpoole@troilus.org>
4881
4882         * ircd/hash.c: Replace the old hash function with one based on
4883         randomized CRC-32.  The new one avoids a big table from the old
4884         function.
4885
4886 2004-10-05  Michael Poole <mdpoole@troilus.org>
4887
4888         * ircd/random.c: Convert to use ircd_md5 interface and hopefully
4889         keep more internal random state.
4890
4891 2004-10-05  Michael Poole <mdpoole@troilus.org>
4892
4893         * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
4894         ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
4895         prefixes.
4896
4897 2004-10-05  Michael Poole <mdpoole@troilus.org>
4898
4899         * adns, lib/adns: Remove unused adns library.
4900
4901 2004-10-05  Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
4902
4903         * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
4904         format, and add new comments where needed.
4905
4906         * Doxyfile: New file to tell Doxygen how to run.
4907
4908 2004-09-21  Michael Poole <mdpoole@troilus.org>
4909
4910         * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
4911         programmer, generate magic numbers.
4912         (AuthIncompleteList): Remove.
4913         (AuthPollList): Remove.
4914
4915 2004-09-19  Michael Poole <mdpoole@troilus.org>
4916
4917         * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
4918         acconfig.h.
4919
4920         * acconfig.h: Remove since it is now redundant.
4921
4922         * aclocal.m4, config.h.in, configure: Regenerate.
4923
4924 2004-09-19  hikari <hikari@undernet.org>
4925
4926         * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison 
4927         aren't found as they're essential for compilation.  Regenerated files with 
4928         autreconf.
4929                 
4930 2004-09-18  Michael Poole <mdpoole@troilus.org>
4931
4932         * doc/example.conf: Add NETWORK feature example.  Fix typos in
4933         eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
4934
4935         * include.class.h: Make max_links and ref_count unsigned ints.
4936         Make ping_freq and conn_freq unsigned short. (No more negative
4937         numbers in /stats y.)
4938
4939         * ircd/ircd.c: Report configuration file name for "ircd -k".
4940
4941 2004-09-18  hikari <hikari@undernet.org>
4942
4943         * ircd/Makefile.in: Fixed a missing internal build dependency.
4944         
4945 2004-09-16  Michael Poole <mdpoole@troilus.org>
4946
4947         * INSTALL: Fix name of example.conf and mention its installed
4948         location.
4949
4950         * include/supported.h (FEATURESVALUES2): Fix a reference to
4951         channel mode +u that escaped earlier rename attempts.
4952
4953         * ircd/ircd_auth.c (iauth_connect): Assign port number after
4954         zeroing out the destination address.
4955         Add some additional debug statements to help follow operations.
4956
4957         * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
4958
4959 2004-09-11  Bas Steendijk <steendijk@xs4all.nl>
4960
4961         * include/channel.h, include/supported.h, ircd/channel.c,
4962         ircd/s_err.c: Use +U instead of +u for user keys.
4963
4964 2004-09-13  Michael Poole <mdpoole@troilus.org>
4965
4966         * doc/example.conf: Remove sample VIRTUAL_HOST setting.
4967
4968         * doc/readme.features: Remove VIRTUAL_HOST documentation, and
4969         update NODNS documentation to match current behavior.
4970
4971         * include/s_conf.h: Remove now-unused vhost_address field and
4972         set_virtual_host() function.
4973
4974         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
4975         Remove VIRTUAL_HOST.
4976
4977         * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
4978         if we do not have a more specific alternate.
4979
4980         * ircd/ircd_parser.y: Check for sanity in General blocks (from old
4981         conf_add_local()) and assign vhost directly to VirtualHost.
4982
4983         * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
4984         value will be either != 0 or != 0xffff.
4985
4986         * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
4987         local addresses are specified as IPv4 addresses.
4988
4989         * ircd/s_conf.c: Remove unused conf_add_local() and
4990         set_virtual_host().
4991
4992 2004-09-13  Michael Poole <mdpoole@troilus.org>
4993
4994         * ircd/listener.c (add_listener): Consolidate duplicated code, and
4995         make sure listener->server is set before calling inetport() on it.
4996
4997 2004-09-12  Michael Poole <mdpoole@troilus.org>
4998
4999         * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
5000         services (not normal opers) force a change of +A or +u.
5001
5002 2004-09-11  Michael Poole <mdpoole@troilus.org>
5003
5004         * include/s_stats.h: Add sd_name to struct StatDesc.  Stop
5005         publishing the statsinfo and statsmap arrays; replace them with
5006         stats_find().  Change argument list of StatFunc() to work with
5007         names.
5008
5009         * ircd/m_stats.c: Use stats_find() instead of statsmap[].  Use the
5010         full argument instead of just the first character in reports.
5011
5012         * ircd/s_stats.c: Adapt individual stats handler functions to new
5013         argument list.  Add long names to statsinfo[].  Add new functions
5014         stats_cmp(), stats_search(), stats_find().  Sort statsinfo[] in
5015         stats_init().
5016
5017         * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
5018         a single character.
5019
5020         * ircd/s_user.c: Send an error to the user when a message loses
5021         its target in transit.
5022
5023         * include/class.h include/gline.h include/ircd_features.h
5024         include/listener.h include/motd.h include/msgq.h include/res.h
5025         include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
5026         ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
5027         ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
5028         ircd/userload.c: Adjust stats handlers to new argument list.
5029
5030 2004-09-11  Michael Poole <mdpoole@troilus.org>
5031
5032         * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
5033         replace with RPL_TRACEEND.
5034
5035         * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
5036         do_trace().  Implement RPL_TRACEEND, per RFE#830291.
5037
5038 2003-06-20  Alexander Maassen <outsider@key2peace.org>
5039
5040         * ircd/m_topic.c : Don't allow banned users to set a topic in a
5041         channel.
5042
5043 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
5044
5045         * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
5046         comment in header.
5047
5048         * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
5049         header comment.
5050
5051         * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
5052         ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
5053         ircd/m_version.c: Remove "template" moniker from comments.
5054
5055         * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
5056         channel prefix list.
5057
5058 2004-09-11  Michael Poole <mdpoole@troilus.org>
5059
5060         * doc/example.conf: Add examples for FEAT_HIS_* features.
5061
5062 2003-06-08 Matthias Crauwels <ultimate_@wol.be>
5063         [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
5064
5065         * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
5066
5067         * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
5068
5069         * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
5070
5071         * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
5072
5073         * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
5074
5075 2004-09-11  Michael Poole <mdpoole@troilus.org>
5076
5077         * ircd/ircd_relay.c (server_relay_channel_message,
5078         server_relay_channel_notice): Do not allow other servers to send
5079         or relay to local channels.
5080
5081         * ircd/m_wallchops (ms_wallchops): Likewise.
5082
5083         * ircd/m_wallvoices (ms_wallvoices): Likewise.
5084
5085 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
5086
5087         * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
5088
5089         * ircd/channel.c: removing limits shouldn't gobble an argument;
5090         this was a subtle interaction issue with modebuf...fixed by adding
5091         MODE_LIMIT to modebuf_flush_int() and short-circuiting
5092         modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
5093         removal case.  Note that this is not proof against the sequence,
5094         "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
5095         modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
5096         (Bug #916138)
5097
5098 2004-09-11  Michael Poole <mdpoole@troilus.org>
5099
5100         * include/supported.h: Kev pointed out I misinterpreted the
5101         meaning of CHANMODES; fix this.  Also define CHANNELLEN and
5102         STATUSMSG from the ISUPPORT draft.
5103
5104 2004-09-10  Michael Poole <mdpoole@troilus.org>
5105
5106         * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
5107         when oplevels are enabled.
5108
5109 2004-09-10  Michael Poole <mdpoole@troilus.org>
5110
5111         * ircd/channel.c (send_channel_modes): Only send oplevels for
5112         channels that actually use them -- for -A channels, send chanops
5113         as :o even if OPLEVELS is enabled.
5114
5115         * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
5116
5117         * ircd/numnicks.c (base64toip): Fill in the right number of 0
5118         words when we see _ in a base64-encoded IPv6 address.
5119
5120 2004-09-10  Michael Poole <mdpoole@troilus.org>
5121
5122         * ircd/ircd.c: Add -k as a chkconf-like option to exit after
5123         reading the configuration file.
5124
5125         * ircd/chkconf.c: Remove as unused.
5126
5127         * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
5128
5129 2004-09-10  Michael Poole <mdpoole@troilus.org>
5130
5131         * doc/example.conf: Remove examples for unused features (TIMESEC,
5132         CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
5133
5134         * doc/readme.features: Remove documentation for unused features
5135         (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
5136         HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
5137         add documentation for ANNOUNCE_INVITES.
5138
5139         * include/ircd_features.h: Remove unused features (TIMESEC,
5140         CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
5141
5142         * include/ircd_features.c: Likewise.
5143
5144         * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
5145         FEAT_IRCD_RES_TIMEOUT where appropriate.
5146
5147         * ircd/s_debug.c: Do not display setting of unused (and now
5148         non-existent) FEAT_CRYPT_OPER_PASSWORD.
5149
5150 2004-09-10  Michael Poole <mdpoole@troilus.org>
5151
5152         * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
5153         to use the correct address family and IP offset.
5154
5155 2004-09-10  Michael Poole <mdpoole@troilus.org>
5156
5157         * include/s_conf.h (struct ConfItem): Add origin and origin_name
5158         fields.
5159
5160         * ircd/ircd_parser.y: Add new global variable "origin."  Add a new
5161         "connectionvhost" production that accepts vhost = "IP" inside a
5162         Connect block and assigns the IP to origin_name.
5163
5164         * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
5165         as the local address.  Otherwise, fall back to the old logic (if
5166         VIRTUAL_HOST="TRUE", use the virtual host setting).
5167
5168         * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
5169         origin_name, try to parse it as an IP address.
5170
5171 2004-04-17  Isomer <isomer@undernet.org>
5172         * ircd/parse.c: Don't rate limit /gline messages
5173
5174 2004-09-10  Michael Poole <mdpoole@troilus.org>
5175
5176         * ircd/ircd_parser.y: Replace references to yylval.whatever with
5177         references to the appropriate term.  This fixes bugs like
5178         "1 hour 30 minutes" being misrecognized as 30 seconds.
5179
5180 2004-09-10  Michael Poole <mdpoole@troilus.org>
5181
5182         * ircd/ircd_features.c (features): Change default values for
5183         SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
5184         need not specify them in ircd.conf.
5185
5186 2004-09-10  Michael Poole <mdpoole@troilus.org>
5187
5188         * ircd/ircd_parser.y (serverblock): Server blocks should default
5189         to CONF_LEAF status.
5190
5191         * doc/example.conf: Update example to reflect this.
5192
5193 2004-09-10  Michael Poole <mdpoole@troilus.org>
5194
5195         * ircd/parse.c (msg_tree_parse): Reject commands that contain
5196         non-alphabetic characters.
5197
5198 2004-09-09  Michael Poole <mdpoole@troilus.org>
5199
5200         * config.h.in: Remove duplicated and unused macro definitions.
5201
5202 2004-08-24  Michael Poole <mdpoole@troilus.org>
5203
5204         * ircd/client.h: Properly parenthesize "flag" argument to
5205         FLAGSET_INDEX() and FLAGSET_MASK() macros.
5206
5207 2004-08-22  Michael Poole <mdpoole@troilus.org>
5208
5209         * ircd/channel.c (send_channel_modes): If oplevels are disabled,
5210         send 'o' for chanops instead of the member's oplevel.
5211
5212 2004-08-22  Michael Poole <mdpoole@troilus.org>
5213
5214         * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
5215         instead of memcmp().  (Fixes IPv4 servers linking to an IPv6
5216         server.)
5217
5218 2004-08-22  Alex Badea  <decampos@users.sourceforge.net>
5219
5220         * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
5221
5222 2004-08-19  Michael Poole <mdpoole@troilus.org>
5223
5224         * include/res.h: Remove unused function gethost_byname_type().
5225
5226         * ircd/ircd_res.c: Likewise, and clean up some small functions
5227         only used once (remove_dlink(), timeout_resolver()).  Use rand()
5228         for random request IDs instead of the deprecated *rand48().  Make
5229         resolver timeout event fire only when needed instead of once a
5230         second.
5231
5232 2004-08-17  Michael Poole <mdpoole@troilus.org>
5233
5234         IPv6 support, with lots of code and design borrowed from a patch
5235         by Alex Badea.
5236
5237         * config.h.in: Add place to #define IPV6 support.
5238
5239         * configure.in: Check for struct sockaddr_in6, and use that as
5240         the default choice for IPv6 support.
5241
5242         * configure: Regenerate.
5243
5244         * include/IPcheck.h, include/client.h, include/gline.h,
5245         include/ircd_string.h, include/listener.h, include/match.h,
5246         include/res.h, include/s_bsd.h: Convert from struct in_addr (from
5247         <netinet/in.h>) to struct irc_in_addr (from "res.h").
5248
5249         * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
5250         from struct sockaddr_in (from <netinet/in.h>) to struct
5251         irc_sockaddr (from "res.h").  Add new functions os_socket(),
5252         os_accept(), os_sendto_nonb() to help abstract away actual
5253         sockaddr types.
5254
5255         * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
5256         characters valid in IPv6 addresses.
5257
5258         * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
5259         and base64toip() to convert from base64 to struct irc_in_addr.
5260
5261         * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
5262         ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
5263         ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
5264         irc_in_addr instead of unsigned int or struct in_addr.
5265
5266         * ircd/gline.c: Use new more-generic ipmask functions.
5267
5268         * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
5269         fields.
5270
5271         * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
5272         instead of irc_ssaddr and irc_getaddrinfo().
5273
5274         * ircd/ircd_string.c: Implement new functions: IPv6-capable
5275         ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
5276
5277         * ircd/match.c: Delete IPv4-only matchcompIP().  Replace with
5278         IPv6-capable ipmask_parse() and ipmask_check().
5279
5280         * ircd/numnicks.c: Implement new functions: iptobase64() and
5281         base64toip().
5282
5283         * ircd/os_generic: Convert external parameters to be struct
5284         irc_addrinfo.  When using IPv6 support, sockaddr_in6 is native.
5285         Implement new functions os_sendto_nonb(), os_socket() and
5286         os_accept().
5287
5288         * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
5289         ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
5290         ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
5291         irc_sockaddr instead of separate in_addr and port fields and new
5292         OS support functions.
5293
5294         * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
5295         ircd/ircd_getnameinfo.c: Remove, since these functions are no
5296         longer used.
5297
5298         * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
5299         ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
5300         since these are unused and not compatible with IPv6 support.
5301
5302         * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
5303         Regenerate dependencies.
5304
5305 2004-08-17  Michael Poole <mdpoole@troilus.org>
5306
5307         * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
5308         states and be case-insensitive again.
5309
5310 2004-08-15  Michael Poole <mdpoole@troilus.org>
5311
5312         * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
5313         former is from C99 (and the latter is absent on Solaris).
5314
5315         * configure.in: Remove check for inttypes.h (which is a C99 format
5316         string header); replace with check for stdint.h.  Add checks for
5317         sys/param.h and sys/socket.h.  Check for socklen_t being defined
5318         (OS X does not set it).  Run program tests for lex and yacc, and
5319         use them rather than assuming flex and bison.  Remove OSDEP_C and
5320         mention to adns.  Remove check for res_mkquery().
5321
5322         * config.h.in: Update u_intNN_t #undef lines.  Add #undef
5323         socklen_t so configure test can set it.
5324
5325         * configure: Regenerate.
5326
5327         * include/ircd_addrinfo.h: #include headers needed for netdb.h and
5328         to define struct addrinfo and uintNN_t.
5329
5330         * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
5331
5332         * include/res.h: #include "ircd_addrinfo.h" to get proper type
5333         definitions.  #define INADDR_NONE if it is not defined (as on
5334         Solaris).
5335
5336         * ircd/Makefile.in: Replace LEX and YACC definitions.  Remove
5337         OSDEP_C and OSDEP_SRC; always compile os_generic.c.  Remove adns
5338         directory from CPPFLAGS.  Regenerate dependencies.
5339
5340         * ircd/client.c: Return when no propagation set for oper, to
5341         squash warning about use of "defaults" before it is set.
5342
5343         * ircd/engine_epoll.c: #include correct C99 integer header.
5344
5345         * ircd/engine_poll.c: Last argument to getsockopt() should be of
5346         socklen_t, not size_t; fix.
5347
5348         * ircd/engine_select.c: Squash warning about bzero().
5349
5350         * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
5351         with uint32_t.  We need <stdint.h> for that, so include it.
5352
5353         * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
5354         uint32_t.
5355
5356         * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
5357         There is no portable way to do %option, so remove that.  lex on
5358         Solaris needs several of its internal tables to be bigger, so
5359         increase those sizes.
5360
5361         * ircd/ircd_parser.y: Remove the second declarations of two
5362         tokens, since standard yacc warns about changing precedence.
5363
5364         * ircd/os_generic.c: Make this compile on common OSes (Linux,
5365         Solaris, OS X, FreeBSD, OpenBSD).
5366
5367         * ircd/table_gen.c: Make arguments to isprint() all unsigned char
5368         to squash warnings on Solaris that array index is "char."
5369
5370         * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
5371         portable, and replace basename() with an equivalent.
5372
5373         * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
5374
5375 2004-07-27  Michael Poole <mdpoole@troilus.org>
5376
5377         * ircd/m_burst.c: Add new netride_modes() function to check
5378         which modes could be used in a net.ride.  Use this instead
5379         of the old check for just +i or +k.
5380         (Based on patches by beware and pomac.)
5381
5382 2004-07-25  Michael Poole <mdpoole@troilus.org>
5383
5384         * ircd/ircd_parser.y: Remove redundant semicolon; it causes
5385         errors on some versions of yacc.
5386
5387 2004-07-21  Michael Poole <mdpoole@troilus.org>
5388
5389         * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
5390         ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
5391
5392 2004-07-21  Michael Poole <mdpoole@troilus.org>
5393
5394         New DNS resolver code, courtesy of Dianora and the rest of the
5395         Hybrid team.  (Bugs are of course my fault.)
5396
5397         * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
5398         libresolv from the build process.  Update dependencies.
5399
5400         * configure: Regenerate.
5401
5402         * include/client.h: Change connection's DNS reply type.
5403
5404         * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
5405
5406         * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
5407         RPL_STATSALINE and /stats a to list DNS servers.
5408
5409         * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
5410         ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
5411         ircd/ircd_reslib.c: New resolver files.
5412
5413         * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
5414         Update to new resolver callback interface and to only deal with
5415         one IP and one name per DNS reply.
5416
5417         * ircd/parse.c: Remove /DNS command, since new resolver does not
5418         track those statistics.
5419
5420 2004-07-20  Michael Poole <mdpoole@troilus.org>
5421
5422         * doc/readme.features: Change references to O:, Y:, etc lines into
5423         references to the appropriate block types.
5424
5425 2004-07-01  Michael Poole <mdpoole@troilus.org>
5426
5427         * include/fileio.h: Elaborate on "works for any file descriptor."
5428
5429         * include/iauth.h: Remove unused file.
5430
5431 2004-07-01  Michael Poole <mdpoole@troilus.org>
5432
5433         * include/map.h, ircd/map.c: Remove unused code.
5434
5435         * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
5436         map.h and a call to map_update().
5437
5438         * ircd/Makefile.in: Remove map.c and regenerate dependencies.
5439
5440         * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
5441         for the new config parser.
5442
5443         * ircd/match.c: Remove pointless pointer dereference (Reed points
5444         out that this generates a warning with old gcc).
5445
5446         * ircd/s_user.c: Display connection class in CONNEXIT connection
5447         notice as a string rather than an integer.
5448
5449         * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
5450         lines (falsely) identifying ringlog as related to IRC; the files
5451         are general purpose.
5452
5453         * configure.in, include/ircd_snprintf.h: Add checks for
5454         va_copy()-like alternatives and use them if va_copy() is missing.
5455
5456         * configure, config.h.in: Regenerate.
5457
5458 2004-02-01  beware <steendijk@xs4all.nl>
5459
5460         * ircd/channel.c: Check bans that look like IP bans against user's
5461         hostname just in case they have a host like 1234.domain.tld.
5462
5463 2003-12-18  Timothy Grant Vogelsang <net@astrolink.org>
5464
5465         * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
5466
5467 2004-04-02  Gavin Grieve <hektik@dimebox.net>
5468
5469         * ircd/ircd_parser.y: Fix rehash warnings for servername and
5470         numeric so they only warn if changed in the config file.
5471
5472 2004-06-30  Michael Poole <mdpoole@troilus.org>
5473
5474         * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
5475         files.
5476
5477         * doc/example.conf: Illustrate IAUTH configuration.
5478
5479         * include/client.h: Add fields to record IAUTH status.
5480
5481         * ircd/Makefile.in: Add ircd_auth.c to Makefile.
5482
5483         * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
5484
5485         * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
5486         so that an obsolete connection can be abandoned.
5487
5488         * ircd/s_misc.c: Report client exits via IAUTH.
5489
5490         * ircd/s_user.c: If IAUTH is active and a connecting user has not
5491         been checked against it, interrogate the IAUTH server.
5492
5493 2004-06-25  Michael Poole <mdpoole@troilus.org>
5494
5495         * configure.in: Check for crypt.h as well.
5496
5497         * configure: Regenerate.
5498
5499         * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
5500         affect the first includes of system headers.  Include crypt.h if
5501         it is available.
5502
5503         * ircd/umkpasswd.c: Quash a gcc warning.
5504         
5505 2004-06-23  Michael Poole <mdpoole@troilus.org>
5506
5507         * doc/Authors: Add contributors to ircu2.10.11 and myself.
5508
5509         * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
5510
5511         * configure.in: Add missing check for inttypes.h; remove obsolete
5512         display of Head-in-sand, add display of epoll() engine.
5513
5514         * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
5515         to use SourceForge's CVS server, from the u2.10.11 branch.
5516
5517 2003-11-09 beware <steendijk@xs4all.nl>
5518
5519         * ircd/s_user.c: move assigning a numeric to a local client from
5520         when nick is set, to when connection becomes client, to not waste
5521         numerics.
5522
5523 2004-06-08  Kevin L Mitchell  <klmitch@mit.edu>
5524
5525         * ircd/parse.c: don't let rank-and-file users escape HIS
5526         limitations with /jupe...
5527
5528 2004-06-18  Alex Badea  <decampos@users.sourceforge.net>
5529
5530         * ircd/gline.c (gline_lookup): only return a gline if it's
5531         active
5532
5533         * ircd/s_conf.c (find_kill): don't check for active gline,
5534         since gline_lookup does now
5535
5536 2002-11-11  hikari <shadow@undernet.org>
5537         * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and 
5538         modularise :P
5539
5540         * ircd/ircd_xopen.c: removed, superseded by new crypto system.
5541
5542         * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
5543         wrote ircd_crypt_mech_register() function, various other bits 
5544         designed to create a near-pluggable crypto system for ircu.  currently
5545         this code also loads the various mechanisms i've written code for.
5546
5547         * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from 
5548         elsewhere, manipulated to suit ircu, returns a salted MD5 password.
5549
5550         * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
5551         generate a crypted password using the systems native crypt() function.
5552
5553         * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
5554         only be used for testing purposes.
5555
5556         * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
5557         elsewhere, ircuified.
5558
5559         * ircd/umkpasswd.c: mkpasswd program for ircu.
5560
5561         * include/ircd_xopen.h: removed, superseded by new crypto system.
5562
5563         * include/ircd_crypt.h: external definitions for the new ircd_crypt()
5564         function and definition of the ircd_crypt_mech structure for containing
5565         crypto mechanism data.
5566
5567         * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
5568         mechanism.
5569
5570         * include/ircd_crypt_native.h: sundary definitions for the native 
5571         crypt() mechanism.
5572
5573         * include/ircd_crypt_plain.h: sundary definitions for the plain text
5574         mechanism.
5575
5576         * include/umkpasswd.h: fluff for umkpasswd.
5577
5578 2003-03-11  Landon Fuller (landonf) <landonf@sf.net>
5579
5580         * configure.in: allow ircu to build on OS X.
5581
5582 2004-05-24  Michael Poole <mdpoole@troilus.org>
5583
5584         * ircd/m_invite.c (m_invite): Include channel name in invitation
5585         announcements.
5586         (ms_invite): Likewise, and also fix a use-before-assignment bug in
5587         them.
5588
5589 2004-05-18  Michael Poole <mdpoole@troilus.org>
5590
5591         Announce invitations to other channel operators.
5592
5593         * include/ircd_features.h, ircd/ircd_features.c
5594         (ANNOUNCE_INVITES): Add new boolean feature, default off.
5595
5596         * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
5597         reply.
5598
5599         * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
5600         Add 'skip' parameter that is needed elsewhere.
5601         (sendcmdto_channel_servers_butone): New function.
5602
5603         * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
5604         ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
5605
5606         * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
5607         the INVITE message to all interested servers, and send a numeric
5608         to all local chanops.
5609
5610 2004-05-18  Michael Poole <mdpoole@troilus.org>
5611
5612         * ircd/res_adns.c (res_ourserver): Remove unused function.
5613         (validate_name): Likewise.
5614
5615 2004-05-17  Michael Poole <mdpoole@troilus.org>
5616
5617         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
5618         Rip out feature settings related to oper privileges.
5619
5620         * include/client.h: Comment a few unexplained privileges.
5621
5622         * ircd/ircd_lexer.l: Rename privilege keywords to match their
5623         names in code and /PRIVS output.  Add support for two "new"
5624         privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
5625
5626         * include/class.h, ircd/client.c, ircd/ircd_parser.y,
5627         ircd/m_oper.c: Replace the removed feature settings with
5628         per-connection class operator privileges.
5629
5630         * doc/example.conf: Document the change.
5631
5632         * ircd/ircd_parser.y (portblock): Fix slight memory leak.
5633
5634 2004-05-16  Michael Poole <mdpoole@troilus.org>
5635
5636         * doc/example.conf: Make this show the new NICKLEN default.
5637
5638 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5639
5640         * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
5641         to 12
5642
5643 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5644
5645         * ircd/s_user.c: process account creation timestamp if present in
5646         user mode portion of a N protocol message; add account creation
5647         timestamp to outgoing N protocol messages if that timestamp is
5648         non-zero
5649
5650         * ircd/m_account.c: process account creation timestamp if present
5651         in AC protocol message
5652
5653         * include/struct.h: add account creation timestamp
5654
5655 2004-05-16  Michael Poole <mdpoole@troilus.org>
5656
5657         * doc/example.conf: Document operator privilege settings.
5658
5659 2004-05-16  Michael Poole <mdpoole@troilus.org>
5660
5661         Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
5662
5663         * ircd/ircd_parser.y (invert): New variable.
5664         (operlocal): Remove production.
5665         (operpriv): Use "invert" variable.
5666         (privtype): Add LOCAL alternative production.
5667
5668         * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
5669         with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
5670
5671         * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
5672         Likewise.
5673
5674         * ircd/s_stats.c (report_array, statsinfo): Likewise.
5675
5676         * ircd/s_user.c (set_user_mode): Likewise.
5677
5678 2004-05-15  Michael Poole <mdpoole@troilus.org>
5679
5680         * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
5681         patches obsoleted by F: lines.
5682
5683         * patches/diffs/topicburst.diff: Remove patch that was integrated
5684         into the main code.
5685
5686 2004-05-15  Isomer <isomer@undernet.org>
5687
5688         [Original ChangeLog date: 2003-11-05 -MDP]
5689
5690         * ircd/m_whois.c: On remote whois, show +s local channels with a *
5691         prefix to opers.
5692
5693 2004-05-15  Michael Poole <mdpoole@troilus.org>
5694
5695         * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
5696         of gline-related fixes from 2.10.11.  Things that work are due to
5697         Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
5698         to figure out who did what.  Any mistakes are mine.
5699
5700 2004-05-15  Isomer <isomer@undernet.org>
5701
5702         [Original ChangeLog date: 2003-11-05 -MDP]
5703
5704         * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
5705         messages (so you can match EXIT's to CONN's)
5706
5707 2004-05-15  Reed Loden <reed@reedloden.com>
5708
5709         [Original ChangeLog date: 2003-05-01 -MDP]
5710
5711         * ircd/s_err.c: Added network to text and edited 001 a bit.
5712
5713         * ircd/s_user.c: Send network with 001.
5714
5715 2004-05-15  Michael Poole <mdpoole@troilus.org>
5716
5717         * ircd/s_user.c (add_target): Move free target invite check...
5718
5719         * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
5720         behavior.
5721
5722 2004-05-15  Isomer <isomer@undernet.org>
5723
5724         [Original ChangeLog date: 2003-11-23 -MDP]
5725
5726         * ircd/s_user.c: Don't credit users with an extra attempt if they
5727         are klined/glined, throttle them!
5728
5729 2004-05-15  Jeekay <jeekay@netgamers.org>
5730
5731         [Original ChangeLog date: 2003-04-24 -MDP]
5732
5733         * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
5734
5735 2004-05-15  splidge <splidge@quakenet.org>
5736
5737         [Original ChangeLog date: 2003-09-03 -MDP]
5738
5739         * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
5740         channels where the user is a zombie.
5741
5742 2004-05-15  beware <steendijk@xs4all.nl>
5743
5744         [Original ChangeLog date: 2003-10-25 -MDP]
5745         
5746         * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
5747         cpu hog bug
5748
5749 2004-05-15  Michael Poole <mdpoole@troilus.org>
5750
5751         * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
5752         2.10.11 does.  Show ident and IP for clients being killed by new
5753         G-lines and K-lines.
5754
5755 2004-05-15  hikari <shadow@undernet.org>
5756
5757         [Original ChangeLog date: 2003-06-27 -MDP]
5758         
5759         * ircd/ircd.c: After thought, update the next check time based on
5760         when an unregistered client should expire.
5761
5762 2004-05-15   hikari <shadow@undernet.org>
5763
5764         [Original ChangeLog date: 2003-06-22 -MDP]
5765
5766         * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
5767         clients not being able to connect anymore.
5768
5769 2004-05-15  Michael Poole <mdpoole@troilus.org>
5770
5771         * ircd/channel.c (can_join): Revert to using IsInvited() rather
5772         than walking the list directly.
5773         (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
5774         use feature_bool(FEAT_HIS_SNOTICES) instead.
5775
5776 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5777
5778         [Original ChangeLog date: 2004-01-31 -MDP]
5779
5780         * ircd/channel.c (mode_parse_key): don't allow , in keys!
5781
5782 2003-04-12  David Mansell (splidge) <splidge@sf.net>
5783
5784         [Original ChangeLog date: 2003-04-14 -MDP]
5785
5786         * ircd/channel.c: When keys and limits conflict on burst, the key
5787         which is first alphabetically or the limit which is lower will be 
5788         used by both servers. This matches pre-2.10.11 behaviour.  
5789         Closes: (#713930)
5790
5791 2004-05-15  David Mansell <splidge@quakenet.org>
5792
5793         [Original ChangeLog date: 2002-12-28 -MDP]
5794
5795         * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
5796         set, don't allow -l with negative parameter (or unsigned >2^31).
5797  
5798 2004-05-15  David Mansell <splidge@quakenet.org>
5799
5800         [Original ChangeLog date: 2002-12-31 -MDP]
5801
5802         * ircd/m_burst.c (ms_burst): when kicking net riders, clear
5803         invites too.
5804
5805 2004-05-15  Isomer <isomer@undernet.org>
5806
5807         [Original ChangeLog date: 2003-11-04 -MDP]
5808
5809         * ircd/s_serv.c: Burst glines/jupes early
5810
5811 2004-05-15  volta <volta2@gmx.de>
5812
5813         [Original ChangeLog date: 2003-04-26 -MDP]
5814
5815          * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
5816          allows users to see their own ip & hostname. (Should solve
5817          all problems with dcc)
5818
5819 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5820
5821         [Original ChangeLog date: 2003-06-13 -MDP]
5822
5823         * ircd/m_settime.c: it's supposed to be %ld, not %l
5824
5825 2004-05-15  Isomer <isomer@undernet.org>
5826
5827         [Original ChangeLog date: 2004-03-20 -MDP]
5828
5829         * ircd/m_invite.c: Disallow invites to non existant channels
5830
5831 2004-05-15  David Mansell <splidge@quakenet.org>
5832
5833         [Original ChangeLog date: 2003-04-26 -MDP]
5834
5835         * ircd/m_invite.c: let +k users invite into channels they aren't on.
5836
5837 2004-05-15  hikari <shadow@undernet.org>
5838
5839         [Original ChangeLog date: 2003-07-13 -MDP]
5840         
5841         * ircd/IPcheck.c: Fixed (another) overflow problem in
5842         ip_registry_check_local()
5843
5844         [Original ChangeLog date: 2003-06-29 -MDP]
5845
5846         * ircd/IPcheck.c: Fixed overflow problem in
5847         ip_registry_connect_fail()
5848
5849 2004-05-15 Isomer <isomer@undernet.org>
5850
5851         [Original ChangeLog date: 2003-05-02 -MDP]
5852         
5853         * ircd/IPcheck.c: Added assert()'s to check for underflow
5854
5855 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
5856
5857         [Original ChangeLog date: 2003-11-22 -MDP]
5858
5859         * tools/wrapper.c: commit uid on chroot fix from ubra
5860
5861         * ircd/version.c.SH: fix generation generation
5862
5863 2004-05-15  Isomer <isomer@undernet.org>
5864
5865         [Original ChangeLog date: 2003-11-23 -MDP]
5866         
5867         * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
5868         to off.  if an admin is smart enough to understand these features
5869         they can enable them manually.
5870
5871 2004-05-15  splidge  <splidge@quakenet.org>
5872
5873         [Original ChangeLog date: 2003-03-26 -MDP]
5874
5875         * ircd/include/ircd_features.h, include/ircd_osdep.h,
5876           ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, 
5877           ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
5878           ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be 
5879           altered via F: lines
5880
5881 2004-05-15  Isomer <isomer@undernet.org>
5882
5883         [Original ChangeLog date: 2003-11-18 -MDP]
5884
5885         * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
5886         the preregistration subsystem allowing customisation of timers,
5887         make the dns resolver stats oper only, and make it much more clear
5888         what all the numbers are.
5889
5890 2004-05-15  Spike <spike@undernet.org>
5891
5892         [Original ChangeLog date: 2003-11-23 -MDP]
5893
5894         * ircd/IPcheck.c: Make IPcheck constants configurable
5895
5896 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
5897
5898         [Original ChangeLog date: 2003-11-22 -MDP]
5899
5900         * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
5901         the maximum allowed length (NICKLEN) or the allowed nickname
5902         length specified as the NICKLEN feature
5903
5904         * ircd/ircd_features.c: declare NICKLEN and set its default value
5905         to 9
5906
5907         * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
5908         rearranging...
5909
5910         * include/ircd_features.h: add NICKLEN feature
5911
5912         * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
5913
5914         * doc/readme.features: document new NICKLEN feature
5915
5916         * doc/example.conf: list new NICKLEN F-line
5917
5918 2004-05-14  Matthias Crauwels <ultimate_@wol.be>
5919
5920         [Original ChangeLog date: 2003-06-08 -MDP]
5921         
5922         * ircd/gline.c: fixed the counting bug in gline_memory_count
5923  
5924         * ircd/jupe.c: fixed the counting bug in jupe_memory_count
5925
5926 2004-05-14  Michael Poole <mdpoole@troilus.org>
5927
5928         * ircd/m_mode.c (ms_mode): Do not always try to call
5929         set_user_mode() when parv[1] is a channel name.
5930
5931 2004-05-10  Michael Poole <mdpoole@troilus.org>
5932
5933         Implement a per-connection-class default usermode option.
5934
5935         * doc/example.conf: Illustrate how to use the option.
5936
5937         * include/class.h (struct ConnectionClass): New "default_umode"
5938         field.
5939         (ConfUmode): New macro.
5940
5941         * include/client.h (client_get_default_umode): New function.
5942
5943         * ircd/client.c (client_get_default_umode): Implement it.
5944
5945         * ircd/ircd_lexer.l (usermode): New token.
5946
5947         * ircd/ircd_parser.y (classblock, etc): New syntax.
5948
5949         * ircd/s_user.c (register_user): Set default user modes for user.
5950         This sends the new mode to the user, so the explicit send later
5951         is no longer necessary.
5952
5953 2004-05-10  Michael Poole <mdpoole@troilus.org>
5954
5955         Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
5956         patch set.
5957
5958         * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
5959
5960         * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
5961         also send a TOPIC to the peer.
5962
5963         * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
5964         feature, defaulting to FALSE.
5965
5966         * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
5967         and allow F:HIS_BANWHO to hide the originator of the topic.
5968         (ms_topic): Parse optional timestamp arguments to TOPIC, and use
5969         them to decide whether to ignore the topic.
5970
5971 2004-05-10  Michael Poole <mdpoole@troilus.org>
5972
5973         Forward port of delayed-join.patch from Quakenet's "Asuka" patch
5974         set (which was a port of code I wrote for the other ircu).
5975
5976         * include/channel.h (CHFL_DELAYED): New membership flag.
5977         (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
5978         (infochanmodes): Add +D to list of supported channel modes.
5979         (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
5980         (member_can_send_to_channel, client_can_send_to_channel): Add
5981         "reveal" parameter to indicate whether a request should cause
5982         a join-delayed user to become visible.
5983         (RevealDelayedJoin, CheckDelayedJoins): New functions.
5984
5985         * include/numeric.h (RPL_DELNAMREPLY): New numeric.
5986         
5987         * include/s_user.h (NAMES_DEL): New flag for do_names().
5988
5989         * include/supported.h (FEATURESVALUES2): Add +D to list of
5990         supported channel modes.
5991
5992         * ircd/channel.c (remove_member_from_channel,
5993         member_can_send_to_channel, client_can_send_to_channel,
5994         joinbuf_join): Handle join-delayed users.
5995         (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
5996         modebuf_extract, mode_process_clients, mode_parse_mode,
5997         mode_parse): Handle delayed-join channels.
5998         (RevealDelayedJoin, CheckDelayedJoins): New functions.
5999
6000         * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
6001         server_relay_channel_message, server_relay_channel_notice): Add
6002         argument for "reveal" parameter to client_can_send_to_channel().
6003
6004         * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
6005
6006         * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
6007
6008         * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
6009         channel with JOIN 0.
6010
6011         * ircd/m_kick.c (m_kick): For join-delayed members, only send the
6012         KICK to the kicker and kickee.  Then check whether +d can be
6013         removed.
6014
6015         * ircd/m_names.c (do_names): Show join-delayed users if and only
6016         if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
6017         RPL_DELNAMREPLY instead of RPL_NAMREPLY.
6018         (m_names): If NAMES -D, pass NAMES_DEL to do_names().
6019
6020         * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
6021         member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
6022         the user is join-delayed.
6023
6024         * ircd/m_quit.c (m_quit): Handle join-delayed users and new
6025         argument for member_can_send_to_channel().
6026
6027         * ircd/m_topic.c (do_settopic): If a join-delayed channel member
6028         changes the topic, reveal the member.
6029
6030         * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
6031         "reveal" parameter to client_can_send_to_channel().
6032
6033         * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
6034
6035         * ircd/m_who.c (m_who): Skip join-delayed members where we skip
6036         zombies.
6037
6038         * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
6039         users.  Use slightly more efficient macros rather than function
6040         calls to test for ops and voice.
6041
6042         * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
6043
6044         * ircd/s_user.c (hide_hostmask): For users with no modes in a
6045         join-delayed channel, do not send JOIN to other members after the
6046         QUIT :Registered.
6047
6048         * ircd/send.c (sendcmdto_common_channels_butone): Skip
6049         join-delayed users where we skip zombies.
6050         
6051 2004-05-10  Michael Poole <mdpoole@troilus.org>
6052
6053         * ircd/ircd_events.c: Actually reference and try to use the epoll
6054         event engine.  Omitted from yesterday's commit.
6055
6056 2004-05-09  Michael Poole <mdpoole@troilus.org>
6057
6058         Forward port of Paul "Zoot" Chang's pseudo-command.patch and
6059         pseudo-support.patch.
6060
6061         * doc/example.conf: Illustrate how to use the feature.
6062
6063         * include/handlers.h (m_pseudo): Declare new handler function.
6064
6065         * include/ircd_features.h (HIS_STATS_R): Add a feature to control
6066         user visibility of the pseudo-commands.
6067
6068         * include/msg.h: Add flag and field for the extra information used
6069         to select a pseudo-command's target.
6070
6071         * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
6072         definitions.
6073
6074         * include/parse.h (register_mapping, unregister_mapping): Declare.
6075
6076         * include/s_conf.h (struct nick_host, struct s_map,
6077         GlobalServiceMapList): Define.
6078
6079         * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
6080         files to "make depend" dependency list.  Update dependencies.
6081
6082         * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
6083         default value.
6084
6085         * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
6086
6087         * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
6088
6089         * ircd/parse.c (msgtab): Add initializer for field "extra" to all
6090         commands.
6091         (msg_tree_insert, msg_tree_remove, register_mapping,
6092         unregister_mapping): New functions.
6093         (parse_client): Implement MFLG_EXTRA extra argument passing.
6094
6095         * ircd/s_conf.c (GlobalServiceMapList): New variable.
6096
6097         * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
6098         strings for new numeric responses.
6099
6100         * ircd/s_stats.c (stats_mapping): New function.
6101         (statsinfo): Add entry for /stats R and make old /stats r entry
6102         case-sensitive.
6103         
6104 2004-05-09  Michael Poole <mdpoole@troilus.org>
6105
6106         * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
6107         yyerror() so that configuration errors all go to the same place.
6108
6109         * ircd/s_conf.c: New variables conf_error and conf_already_read.
6110         conf_error is cleared by read_configuration_file() and set by
6111         yyerror(); conf_already_read is set by read_configuration_file()
6112         and never cleared.  Make yyerror() display error to stderr before
6113         conf_already_read is set.  Make configuration errors a fatal
6114         condition in init_conf().
6115
6116 2004-05-09  Michael Poole <mdpoole@troilus.org>
6117
6118         * ircd/Makefile.in: Pass the source directory as an argument to
6119         version.c.SH so it knows where to find the source files for an
6120         out-of-srcdir build.
6121
6122         * ircd/version.c.SH: Use that information.
6123
6124 2004-05-09  Michael Poole <mdpoole@troilus.org>
6125
6126         * Makefile.in: Ensure ${prefix}/include exists, since the adns
6127         install puts files in that directory.  (The adns Makefile does
6128         not use configure's ${includedir}.)
6129
6130 2004-05-09  Michael Poole <mdpoole@troilus.org>
6131
6132         * doc/readme.features: The logic for F:AUTOHIDE was removed, but
6133         not its documentation.  Fix that omission.
6134
6135         * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
6136         definitions for FEATURE_AUTOHIDE.
6137
6138 2004-05-09  Michael Poole <mdpoole@troilus.org>
6139
6140         * doc/readme.who: Document the support for account matching and
6141         display in the WHO command.
6142
6143 2004-05-09  Michael Poole <mdpoole@troilus.org>
6144
6145         * ircd/ircd.c (main): Move check_pid() call until after we read
6146         the configuration file so that F:PPATH works correctly.
6147
6148 2004-05-09  Michael Poole <mdpoole@troilus.org>
6149
6150         * ircd/match.c (match): Use ToLower() instead of tolower() for
6151         character comparisons.
6152
6153 2004-05-09  Michael Poole <mdpoole@troilus.org>
6154
6155         * ircd/s_user.c (register_user): Initialize "flag" (user's old
6156         modes) passed to send_umode() so that the real set of modes are
6157         sent to the user.
6158         
6159 2004-05-09  Michael Poole <mdpoole@troilus.org>
6160
6161         * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
6162         server, not to a hub between us and the new server.
6163
6164         * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
6165         on target server rather than FLAG_CHSERV (so that directed
6166         messages work at all).
6167
6168 2004-05-09  Michael Poole <mdpoole@troilus.org>
6169
6170         * configure.in: Add checks for epoll_* system call family.
6171
6172         * configure: Regenerate.
6173
6174         * ircd/engine_epoll.c: New file; forward ported from 2.10.11
6175         branch.
6176
6177 2004-05-09  Michael Poole <mdpoole@troilus.org>
6178
6179         * include/ircd_alloc.h: Add definitions for MyRealloc, since they
6180         are needed by kqueue and epoll event engines; kill #if 0'd block.
6181
6182         * include/memdebug.h: Declare dbg_realloc() helper function.
6183
6184         * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
6185
6186         * ircd/memdebug.c: Implement dbg_realloc() helper function.
6187
6188 2004-05-09  Michael Poole <mdpoole@troilus.org>
6189
6190         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
6191         changes on a moderated channel with neither ops nor voice.
6192
6193         * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
6194
6195 2004-01-20  Perry Lorier <isomer@undernet.org>
6196
6197         * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
6198
6199 2004-01-21 Gavin Grieve <hektik@dimebox.net>
6200
6201         * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
6202           code to resolve the multiple part messages bug written by Entrope.
6203
6204 2003-08-12 Timothy Vogelsang <net@astrolink.org>
6205
6206         * ircd/match.c: (match) rewrote function based on existing
6207           code from the hybrid ircd -- death to goto
6208
6209 2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
6210
6211         * ircd/s_user.c: invalidate ban cache for user on host hiding/account
6212
6213 2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
6214
6215         * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
6216         ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
6217         B is an oper", appeared in a lot of places. made it a define SeeOper.
6218
6219 2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
6220         * ircd/s_user.c: umode_str (user modes in N token) internal flags var
6221         was not initialized to the user's flags, returned a string with
6222         random modes set.
6223
6224 2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
6225
6226         * ircd/m_names.c: length counter being incremented one too many
6227         for each nick, resulting names reply messages are about 50 chars
6228         shorter than possible. fixed.
6229
6230 2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
6231
6232         * ircd/channel.c: don't ever send mode changes for local channels to
6233         servers.
6234
6235 2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
6236
6237         * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
6238         moved the supported channel/user mode strings of the 004 reply from
6239         s_err.c to the header files where the channels/user modes are
6240         defined, and show or hide +Au based on OPLEVELS setting.
6241
6242 2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
6243
6244         * ircd/m_burst.c: Clear topic set by netrider on burst.
6245
6246 2003-08-05 Diane Bruce  <db@db.net>
6247
6248         * ircd/parse.c: Fixed the typo the fix of the typo created
6249
6250 2003-08-01 Diane Bruce  <db@db.net>
6251
6252         * ircd/parse.c: Fixed typo
6253
6254 2003-06-22  Diane Bruce  <db@db.net>
6255
6256         * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
6257
6258 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
6259
6260         * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
6261         ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
6262         Make ability to create local channels a feature which can be disabled.
6263
6264 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
6265
6266         * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
6267         ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
6268         makes it possible to disable the +Au/oplevels functions.
6269
6270 2003-06-17  Alex Badea  <vampire@p16.pub.ro>
6271
6272         * ircd/res_adns.c: included sys/types.h, for non-Linux
6273         headers
6274
6275 2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
6276
6277         * libs/dbprim: database primitives library, including
6278         flexible linked lists, auto-resizing hash tables, and sparse
6279         matrices.  Has a test suite for everything but portions of
6280         the sparse matrix routines (I'm lazy; someone help me write
6281         them!).  Documentation generated by doxygen--feel free to
6282         critique, suggest phrasing improvements, etc.
6283
6284 2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
6285         * libs: put third-party libraries in this subdirectory.
6286         Started by copying adns into it--will fix the rest and remove
6287         the top-level copy later.
6288
6289 2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
6290         * ircd/m_settime.c: Fixed a minor format string issue.
6291         
6292 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
6293         * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
6294         ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
6295         bugs in transmit.c and m_opmode.c.
6296
6297 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
6298         * include/class.h, include/ircd_string.h, ircd/class.c,
6299         ircd/gline.c, ircd_string.c: Fix undefined order
6300         of evaluation bug in gline.c, add general purpose hasher for
6301         conf entries. 
6302
6303 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
6304         * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
6305         ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
6306         ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
6307         ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
6308         ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
6309         ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
6310         with g++ again, type safety, const correctness fixes,
6311         remove C++ keywords again :/
6312
6313 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
6314         * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
6315         table data was in a different order than the feature data
6316         structure, which resulted in a wild index being used in
6317         feature_bool. The feature_bool function didn't check it's
6318         index before indexing the features array resulting in
6319         a core dump on /oper.
6320
6321 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
6322         * include/client.h, include/res.h, include/s_bsd.h,
6323         ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
6324         ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
6325         Remove resolver cache wart, change hostent representation, cleanup
6326         resolver clients.
6327
6328 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
6329         * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
6330         HEAD_IN_SAND macros to get server to build, rebuild dependencies.
6331
6332 2003-01-08  Fredrik Soderblom <froo@quakenet.org>
6333         * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
6334         RPL_HOSTHIDDEN and the use of it.
6335
6336 2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
6337
6338         * BUGS: removed from distribution
6339
6340         * ChangeLog.07: moved into doc/history
6341
6342         * ChangeLog.10: moved into doc/history
6343
6344         * INSTALL: pulled up from u2.10.11.04
6345
6346         * README: pulled up from u2.10.11.04
6347
6348         * README.FreeBSD: pulled up from u2.10.11.04
6349
6350         * README.Solaris: pulled up from u2.10.11.04
6351
6352         * RELEASE.NOTES: add sysctl note from u2.10.11.04
6353
6354         * TODO: removed from distribution
6355
6356         * configure.in: add extra check for res_mkquery; remove
6357         --disable-headinsand since it no longer has any effect; pull up
6358         "Enable" vs. "Disable" changes from u2.10.11.04
6359
6360         * doc/readme.asll: pulled up from u2.10.11.04
6361
6362         * doc/readme.features: pull up missing documentation, including a
6363         couple of corrections
6364
6365         * doc/readme.log: correct text to read FACILITY instead of SYSLOG
6366         in the documentation for configuring syslog facility
6367
6368         * include/channel.h: declare IsInvited()
6369
6370         * include/handlers.h: do some minor reorderings
6371
6372         * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
6373         #define's
6374
6375         * include/ircd_policy.h: removed from the distribution
6376
6377         * include/jupe.h: declare jupe_memory_count()
6378
6379         * include/msgq.h: remove MsgCounts structure
6380
6381         * include/numeric.h: add a blank line after RPL_STATSQLINE; add
6382         RPL_HOSTHIDDEN
6383
6384         * include/s_stats.h: include ircd_features.h for definition of the
6385         enum; remove extraneous declarations
6386
6387         * ircd/Makefile.in: add LDFLAGS to table_gen
6388
6389         * ircd/engine_poll.c: remove commented-out assertion
6390
6391         * ircd/ircd.c: include s_stats.h and call stats_init()
6392
6393         * ircd/ircd_features.c: feature names have to be case-sensitive
6394         because of some of the HIS features
6395
6396         * ircd/ircd_relay.c: reorder includes
6397
6398         * ircd/m_account.c: include string.h for strlen()
6399
6400         * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
6401         sure to refer to chname, not parv[1]
6402
6403         * ircd/m_create.c: remove the broken code that squits servers that
6404         are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
6405         desyncs
6406
6407         * ircd/m_gline.c: if it's a server, force the gline; don't
6408         gline_find() before determining if the oper had the privilege
6409
6410         * ircd/m_kick.c: kicks by servers should appear to be from the
6411         local server thanks to HIS
6412
6413         * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
6414
6415         * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
6416
6417         * ircd/m_nick.c: added an assertion and some explanatory comments
6418         pulled up from u2.10.11.04
6419
6420         * ircd/m_opmode.c: no longer requiring oper to be on the channel;
6421         search for quarantines before allowing ops
6422
6423         * ircd/m_privmsg.c: one character typo that probably means nothing
6424
6425         * ircd/m_settime.c: add back comments I left in the code
6426
6427         * ircd/m_squit.c: remove protocol_violation() notices
6428
6429         * ircd/m_userhost.c: return realhost if user is an oper
6430
6431         * ircd/m_wallvoices.c: only m_wallvoices() should add a +
6432
6433         * ircd/m_who.c: add handling for the 'a' field
6434
6435         * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
6436         FEAT_HIS_SERVERINFO
6437
6438         * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
6439         ancient bug fixes from the u2.10.11 branch
6440
6441         * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
6442         call motd_memory_count(), gline_memory_count(), and
6443         jupe_memory_count() when reporting memory usage; add back a
6444         comment regarding "DBuf caveats"
6445
6446         * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
6447         change to ERR_NOPRIVILEGES wording
6448
6449         * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
6450
6451         * ircd/s_stats.c: count from 0 and not 1 when initializing the
6452         stats
6453
6454         * ircd/s_user.c: comment out assertion; remove extraneous
6455         definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
6456         hidden" reply; don't detach oper confs unless sptr is not an oper
6457
6458         * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
6459         change channel name character range to be from '\041' (!) to
6460         UCHAR_MAX
6461
6462         * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
6463
6464         * tools/linesync/linesync.conf: pull up from u2.10.11.04
6465
6466         * tools/linesync/linesync.sh: pull up from u2.10.11.04
6467
6468 2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
6469         * almost everything: Forward ported numerous changes from .11 to .12
6470         
6471 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
6472         * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
6473         when they become a server.
6474         * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
6475         packet is sent.
6476         * ircd/class.c(make_class): Fixed an assert to be more useful.
6477         
6478 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
6479         * ircd/packet.c
6480         * ircd/packet.h: (connect_dopacket): Made a dopacket function for
6481         connecting links which sends the messages through the correct message
6482         handler.
6483         * ircd/s_bsd.c(read_packet): Put packets through the correct handler
6484         for connecting links. Properly handle unknown links becoming
6485         connecting or servers.
6486
6487 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6488         * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
6489         with, this is used quite a lot.
6490         * ircd/class.c (make_class): Initialise the ref_count to 1 so that
6491         we don't leak.
6492         * ircd/class.c (add_class): When updating a class, free the old name
6493         first to prevent leakage.
6494         * ircd/class.c (class_delete_marked): Decrement the ref_count for the
6495         class after it is removed from the linked list.
6496         * ircd/ircd_parser.y: Changed a free to MyFree().
6497         * ircd/ircd_parser.y: Removed a few debugging messages.
6498
6499 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6500         * s_bsd.c (read_packet): Our daily addition to the list of entities to
6501         treat as servers - Connecting servers.
6502         
6503 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
6504         * doc/debug_memleak_gc.patch,
6505         * include/ircd_ircd_alloc.h,
6506         * include/memdebug.h,
6507         * configure.in,
6508         * ircd/Makefile.in,
6509         * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
6510         and notify the operators.
6511         
6512 2002-06-29  Andrew Miller <a1kmm@mware.virtualave.net>
6513
6514         * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
6515         the dbufs.
6516         
6517 2002-06-18  Andrew Miller <a1kmm@mware.virtualave.net>
6518
6519         * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
6520         the server.
6521         
6522 2002-06-18  Alex Badea  <vampire@p16.pub.ro>
6523
6524         * ircd/m_burst.c (ms_burst): kick local members if the channel
6525         has a larger local TS and it's +i or +k remotely (anti net.ride)
6526
6527         * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
6528
6529         * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
6530
6531         * include/s_conf.h: externalized lookup_confhost
6532
6533         * adns/Makefile.in: compilation-outside-source-tree fix
6534
6535 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
6536
6537         * adns/*: added a slightly hacked copy of adns
6538
6539         * configure.in: added a --disable-adns switch if you want
6540         to use the old libresolv res.c
6541
6542         * configure: ran autoconf
6543
6544         * ircd/res_libresolv.c: renamed from res.c
6545
6546         * ircd/res_adns.c: added adns resolver
6547
6548 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
6549
6550         * ircd/ircd_parser.y: fixed 'Connect' block processing so now
6551         you can actually connect to other servers
6552
6553 2002-06-04  Alex Badea  <vampire@p16.pub.ro>
6554
6555         * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
6556         it displays all servers, not just local connects
6557
6558 2002-05-30  Jean-Edouard Babin  <Jeb@jeb.com.fr>
6559
6560         * ircd/m_server.c (mr_server): fixed core bug on insufficient
6561         arguments
6562
6563 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
6564         
6565         * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
6566
6567 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
6568  
6569         * ircd/m_join.c (m_join,HasControlChars): check if a channel
6570         name has any control chars (<=32) in it before allowing a
6571         local user to join.
6572  
6573 2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
6574         * ircd/ircd_relay.c: stop an information leak about the
6575         the network topography from relayed messages.
6576
6577 2002-04-19  Alex Badea  <vampire@p16.pub.ro>
6578
6579         * ircd/m_who.c (m_who): disallow non-opers to /who server.name
6580
6581 2002-04-18  Alex Badea  <vampire@p16.pub.ro>
6582
6583         * ircd/s_err.c (RPL_STATSILINE): connection classes are now
6584         strings
6585
6586 2002-04-17  beware <steendijk@tomaatnet.nl>
6587
6588         * m_whois.c (m_whois): disallow remote queries for non-existent
6589         local users when originated by a non-oper
6590
6591 2002-04-16  Alex Badea  <vampire@p16.pub.ro>
6592
6593         * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
6594         reply if the servername contains a '*' and it doesn't exist
6595
6596         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6597
6598 2002-04-16  beware <steendijk@tomaatnet.nl>
6599
6600         * ircd/m_whois.c: the previous patch broke whois, fixed it
6601         another way
6602
6603         * ircd/m_admin.c: cleaned up m_admin too while we're here,
6604         hunt_server_cmd can do all the work for us
6605
6606 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
6607
6608         * ircd/m_stats.c: added verbose server reporting (/stats v
6609         or /stats V for machine-readable format) (bugzilla bug 52)
6610
6611         * include/numeric.h: added RPL_STATSVERBOSE 236
6612
6613         * ircd/s_err.c: added RPL_STATSVERBOSE
6614
6615         * ircd/s_stats.c: added help for stats 'v'
6616
6617 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
6618
6619         * ircd/class.c (get_client_class): fixed typo which caused
6620         /trace (and perhaps motd) to core
6621
6622 2002-04-15  beware <steendijk@tomaatnet.nl>
6623
6624         * ircd/m_whois.c: Fixed /whois servermask nomatch bug
6625         where normal users could use the function to discover servers,
6626         also the NOSUCHSERVER check code was missing.
6627
6628 2002-04-14  Alex Badea  <vampire@p16.pub.ro>
6629
6630         * ircd/ircd_parser.y: fixed cli_info(&me) not being set
6631         from 'description' conf
6632
6633 2002-04-13  Stephane Thiell <mbuna@undernet.org>
6634
6635         * ircd/m_whois.c: removed FindUser() in ms_whois to fix
6636         remote whois relaying.
6637
6638         * ircd/class.c: removed unused (and duplicated) code
6639         get_client_ping().
6640         
6641         * include/class.h: removed unused function prototype.
6642         
6643         * config.guess: upgraded with latest
6644         
6645         * config.sub: upgraded with latest
6646
6647 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
6648
6649         * ircd-patch: report which files failed the dry run (so the
6650         user may force the patch if the rejects are in less-than-vital
6651         files, such as ChangeLog or documentation)
6652
6653 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
6654
6655         * ircd/m_invite.c: don't propagate invites for local channels
6656
6657         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
6658
6659 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
6660
6661         * ircd/ircd.c: The last fix broke autoconnects completely.
6662         Fixed it another way.
6663         
6664 2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
6665
6666         * ircd/ircd.c (try_connections): To avoid problems with infinite event
6667         loops, don't try connecting to servers whose connect frequency is 0.
6668         
6669 2002-04-10  Alex Badea  <vampire@p16.pub.ro>
6670
6671         * ircd/ircd_parser.y: fixed a "features" block parse bug
6672
6673         * tools/convert-conf.py: added a configuration file converter
6674         from 2.10.11 to 2.10.12 format
6675
6676         * ircd-patch: added GPL information to top of file
6677
6678 2002-04-09  Alex Badea  <vampire@p16.pub.ro>
6679
6680         * configure.in: added a human-readable report of configured
6681         options at the end of the configure process
6682
6683         * configure: regenerated with autoconf
6684
6685 2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
6686
6687         * include/supported.h: change CHARSET to CASEMAPPING after
6688         discussions as to what would be the preferred name.
6689
6690 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
6691         * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
6692         specification.
6693         * Fix a minor parser bug that meant rehash didn't always
6694         work correctly.
6695
6696 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
6697
6698         * include/channel.h: fix compiler warnings (paratheses around &&)
6699
6700         * ircd/channel.c (modebuf_extract): fix compiler warnings
6701         (uninitialized variables)
6702
6703         * ircd/Makefile.in: make ircd properly compile outside the
6704         source tree
6705
6706 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
6707
6708         * include/s_user.h: added a sptr parameter to InfoFormatter
6709         function type
6710
6711         * ircd/m_who.c: don't match IPs for clients which have a hidden host,
6712         except when the inquiring user is an oper
6713
6714         * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
6715         target has a hidden host, but show real IP to opers
6716
6717         * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
6718         fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
6719         show real IP to opers
6720
6721         * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
6722
6723         * ircd/s_user.c (send_user_info): pass sptr to the formatting function
6724
6725         * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
6726         fake IP to show for clients with a hidden host)
6727
6728         * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
6729
6730         * doc/example.conf: default value for FEAT_HIDDEN_IP
6731
6732         * doc/readme.features: documented FEAT_HIDDEN_IP
6733
6734 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
6735         * doc/example.conf: Cleaned up some comments that ended up in
6736           strange places due to problems in the merge process.
6737         * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
6738           probably dates back to Jarkko code.
6739
6740 2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
6741
6742         * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
6743         from the path before calling do_kill(); add a msg argument to
6744         do_kill() and use it in preference to comment; remove all that old
6745         code that fiddled with the buf and the comment
6746
6747         * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
6748
6749         * include/ircd_log.h: add a seperate msg argument to
6750         log_write_kill()
6751
6752         * ircd/ircd.c: display event engine and MAXCONNECTIONS information
6753  
6754 2002-04-02  Alex Badea <vampire@p16.pub.ro>
6755
6756         * ircd-patch: Automatically generate a version string from patches
6757
6758 2002-04-02  Alex Badea <vampire@p16.pub.ro>
6759         
6760         * ircd-patch: Test before doing anything dangerous, provide -f to
6761                 to it anyway.  exit levels for easy scripting.
6762
6763 2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
6764
6765         * ircd/channel.c (joinbuf_join): don't add a channel to the list
6766         in the joinbuf unless when we flush it, we empty the list
6767
6768 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
6769         * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
6770           old configuration file format.
6771         * ircd/ircd_lexer.l
6772         * ircd/s_conf.c
6773         * doc/example.conf
6774
6775 2002-03-23 Bert Faes <bert.faes@pandora.be>
6776
6777         * s_misc.c made /trace reply always show the username
6778         
6779 2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
6780
6781         * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
6782         for setrlimit, getrusage, and times
6783
6784         * configure: rerun auto-conf
6785
6786         * config.h.in: rerun autoheader
6787
6788 2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
6789
6790         * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
6791         sending of the key to the channel
6792
6793         * ircd/channel.c (modebuf_flush_int): when processing keys, only
6794         include the actual key in the mode sent to the channel if
6795         MODEBUF_DEST_NOKEY is not set
6796
6797         * include/channel.h: needed more bits for MODEBUF_DEST_*,
6798         especially when adding MODEBUF_DEST_NOKEY to force keys in the
6799         BURST to be reported as "*" to the channel
6800
6801         * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
6802         inherited from the class associated with the O-line
6803
6804 2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
6805
6806         * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
6807         when a user changes his nickname so we can catch if he now matches
6808         a ban
6809
6810 2002-03-20 Reed Loden <reed@redmagnet.com>
6811         * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
6812
6813         * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
6814
6815 2002-03-20 LordLuke <lordluke@undernet.org>
6816         * ircd/client.c: Add LOCOP_LIST_CHAN feature.
6817
6818         * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
6819
6820 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
6821
6822         * ircd/m_links.c: Make /links behave like /map for head_in_sand.
6823         cleaned up excess code.
6824
6825         * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
6826         map_add() and map_update() for links changes.
6827
6828         * include/map.h: Added info and prot to struct Map
6829
6830         * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
6831         servers are cached in MapList
6832
6833         * ircd/s_misc.c: changed #ifdef for map_update()
6834
6835         * ircd/m_server.c: changed #ifdef for map_update()
6836
6837         * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
6838         hiding features.
6839
6840         * configure.in: add --disable-headinsand
6841
6842         * configure: Ran autoconf
6843
6844         * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
6845         connect limits
6846
6847         * ircd/s_stats.c: Made /stats i report connect limits
6848
6849         * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
6850         "*" for the password field.
6851         
6852 2002-03-19 LordLuke <lordluke@undernet.org>
6853
6854         * include/channel.h: Allow opers to view +s channels in /list
6855
6856         * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
6857
6858         * include/ircd_features.h: added "LIST_CHAN" feature
6859
6860         * ircd/channel.c: Allow opers to view +s channels in /list
6861
6862         * ircd/client.c: Add "PRIV_LIST_CHAN"
6863
6864         * ircd/ircd_features.c: Add "LIST_CHAN" feature
6865
6866 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
6867
6868         * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
6869         Must be more careful when forward porting by hand...
6870         
6871 2002-03-13  Carlo Wood  <run@alinoe.com>
6872
6873         * include/channel.h: CHFL_CHANNEL_MANAGER, new local
6874         channel flag set when someone creates a channel or joins
6875         using the Apass.  IsChannelManager(), SetChannelManager():
6876         macros to manipulate new channel flag.
6877         channel_modes: Added new argument to avoid calling
6878         find_member_link more often than needed.
6879
6880         * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
6881         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
6882         ERR_UPASSNOTSET: new numeric replies.
6883
6884         * ircd/channel.c: is_level0_op: removed.
6885         member_can_send_to_channel: disallow channel manager
6886         to talk.  channel_modes: show upass to level0 ops.
6887         mode_parse_upass: Only the channel manager is allowed
6888         to change the upass.  Only allow to set upass when apass
6889         is also set.  mode_parse_apass: Don't allow to change the
6890         Apass if the channel is older than 48 hours.  Only allow
6891         to remove the apass when upass is not set.  Send clear
6892         warnings regarding the importance of apass.
6893         mode_process_clients: Don't change the oplevel of an opped
6894         member in a channel where upass is not set.
6895
6896         * ircd/destruct_event.c: exec_expired_destruct_events:
6897         Bug fix: send DESTRUCT message when destructing a channel.
6898
6899         * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
6900         prefix for DESTRUCT message.
6901
6902         * ircd/m_join.c: m_join: Handle apass and upass.
6903
6904         * ircd/m_kick.c: m_kick: Don't allow to kick member with
6905         a higher or equal op-level.
6906
6907         * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
6908         ms_mode: Allow server to do modes on channels with apass
6909         set.
6910
6911         * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
6912         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
6913         ERR_UPASSNOTSET: new numeric replies.
6914
6915
6916 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
6917
6918         * ircd/m_kill.c: Last of the bug fixes for do_kill()
6919
6920         * ircd/list.c: Don't remove clients from the linked list
6921         that aren't actually in the list.
6922         
6923 2002-03-08  Carlo Wood  <run@alinoe.com>
6924         * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
6925         and CHFL_BURST_ALREADY_VOICED.
6926
6927         * ircd/m_burst.c: Allow BURST outside net-burst
6928         and take into account that users are already joined
6929         to the channel in that case.
6930
6931         * ircd/m_destruct.c: Implementation of DESTRUCT
6932         handling code.
6933
6934         * ircd/m_join.c: Set the channel creationtime to
6935         the timestamp of a message when that timestamp is
6936         smaller.
6937 2002-02-27 Reed Loden <reed@redmagnet.com>
6938        * tools/crypter: Updated some variables, added another notice,
6939        added CVS Id tag, and updated Perl location.
6940
6941        * tools/ringlog.c: Added IRC - Internet Relay Chat, 
6942        tools/ringlog.c
6943
6944        * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
6945        tools/ringlog.pl
6946
6947        * tools/wrapper.c: Added IRC - Internet Relay Chat, 
6948        tools/wrapper.c
6949
6950        * tools/mkpasswd.c: Added CVS Id tag
6951
6952        * tools/sums: Updated to comply with sums being moved to tools/
6953        and added CVS Id tag
6954
6955        * tools/README: Updated location of file and partly rewrote to fit 
6956        u2.10.11's Features
6957
6958        * tools/Makefile.crypt: Updated location of file and added CVS Id 
6959        tag
6960
6961        * acconfig.h: Updated location of file
6962
6963        * config.h.in: Updated location of file
6964
6965        * tools/Bounce/bounce.conf: Added CVS Id tag
6966
6967        * tools/Bounce/Bounce.cpp: Updated location of file
6968
6969        * tools/Bounce/Bounce.h: Updated location of file
6970
6971        * tools/hashtoy: Added CVS Id Tag
6972
6973 2002-02-27  Carlo Wood  <run@alinoe.com>
6974
6975         * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
6976
6977 2002-03-01  Carlo Wood  <run@alinoe.com>
6978
6979         * include/channel.h: struct Channel: new attribute destruct_event.
6980         Prototype for destruct_channel().
6981
6982         * include/destruct_event.h: new header file for destruct_event.c.
6983
6984         * ircd/Makefile.in: New source file: destruct_event.c.
6985
6986         * ircd/channel.c: sub1_from_channel: Don't destruct channel
6987         immedeately but instead schedule it for destruction after
6988         some time when a channel becomes empty (and clear invite
6989         only and limit in that case).
6990         destruct_channel: new function, was previously the destructing
6991         part of sub1_from_channel.
6992         add_user_to_channel: remove destruction request if any.
6993
6994         * ircd/destruct_event.c: New file.  Implementation of functions
6995         schedule_destruct_event_1m, schedule_destruct_event_48h,
6996         remove_destruct_event and exec_expired_destruct_events.
6997
6998         * ircd/ircd.c: destruct_event_timer: new timer.
6999         main: use destruct_event_timer to call exec_expired_destruct_events
7000         once per minute.
7001
7002         * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
7003         channels.  Schedule new empty channels for destruction.
7004
7005         * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
7006
7007 2002-03-01  Carlo Wood  <run@alinoe.com>
7008         * ircd/s_misc.c: exit_client: Only call map_update()
7009         for servers.
7010
7011 2002-02-28  Carlo Wood  <run@alinoe.com>
7012         * include/channel.h: New attribute 'oplevel' in struct Membership.
7013         Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
7014         New macros:  OpLevel(member): returns op-level of member and
7015         SetOpLevel(member, value): sets op-level of member.
7016         Prototype of add_user_to_channel: add oplevel to parameters.
7017         Prototype of mode_parse: add member to to parameters.
7018
7019         * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
7020
7021         * ircd/s_err.c: idem.
7022
7023         * ircd/channel.c: Removed unmatched '{' braces from comments
7024         (confuses vi).  add_user_to_channel: oplevel is passed to function
7025         and added in the created MemberShip structure.  send_channel_modes:
7026         Generate the nick:mode list of the BURST msg in the new style (with
7027         op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
7028         ParseState: New attribute: member.  mode_process_clients: Disallow
7029         deopping someone with an equal or higher op-level, take care of
7030         inheritance of op-level.  mode_parse: member is passed to function      
7031         and added in the created ParseState structure.  joinbuf_join: pass 0
7032         as oplevel to add_user_to_channel as needed initialization of oplevel
7033         in struct MemberShip.
7034
7035         * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
7036         decoding of a BURST message and passing on a BURST message.
7037         Renamed default_mode to current_mode.
7038
7039         * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
7040
7041         * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
7042         to mode_parse (causes opped member to get op-level 0).                  
7043
7044 2002-02-25  Carlo Wood  <run@alinoe.com>
7045         * include/channel.h: Added two new strings to struct Mode,
7046         upass and apass, both with maximum length PASSLEN (a new
7047         define in this file).  Two new mode defines MODE_UPASS and
7048         MODE_APASS.
7049
7050         * ircd/channel.c: is_level0_op: Added as dummy function.
7051         channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
7052         Added support for MODE_APASS (+A) and MODE_UPASS (+u).
7053         mode_parse_upass: New function to parse mode +u.
7054         mode_parse_apass: New function to parse mode +A.
7055
7056         * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
7057
7058 2002-02-25  Carlo Wood  <carlo@alinoe.com>
7059
7060         * ircd/m_server.c: remove unused variables
7061
7062 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
7063
7064         * ircd/m_map.c: Modified to show a useful output to non-opered
7065           clients when HEAD_IN_SAND_MAP is defined. Servers are added to
7066           the list when first seen (after receiving SERVER) and that list
7067           is sent to clients. Servers are excluded from the list if they are
7068           hubs, services, or have been missing for more than 1 week.
7069         
7070         * ircd/map.c: Created file for map_* functions
7071
7072         * include/map.h: Created file for map_* functions
7073
7074         * ircd/m_server.c: Added calls to map_update()
7075
7076         * ircd/s_misc.c: Added call to map_update()
7077
7078         * ircd/parse.c: Changed to use m_map() and mo_map()
7079         
7080 2002-02-22 Reed Loden <reed@redmagnet.com>
7081
7082        * ircd/m_connect.c: Removed an extra : in remote connect message.
7083
7084 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
7085
7086         * ircd/whocmds.c: Local opers should also be able to
7087         see servernames in /who
7088
7089         * ircd/gline.c: Fix core bug in gline_find()
7090
7091         * ircd/m_kill.c: Bug fix for HIS_KILLWHO
7092
7093 2002-02-19 John Buttery <john@io.com>
7094
7095         * ircd/ircd.c: Updated "No such file" error message.
7096         
7097 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
7098
7099         * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
7100         a message handler, and some general cleanups and bug fixes. 
7101
7102         * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
7103         kill source.
7104         
7105 2002-02-16  Tim Vogelsang <net@astrolink.org>
7106
7107         * ircd/m_kill.c: added a new static function, m_kill, which
7108         performs the actual kill.
7109         
7110 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
7111
7112         * Added support for LIST STOP
7113         
7114 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
7115
7116         * Merged changes from u2_10_11 to main branch.
7117         
7118 2002-02-08  Tim Vogelsang  <net@astrolink.org>
7119
7120        * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
7121        reason is supplied.
7122
7123 2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
7124
7125         * ircd/s_auth.c (read_auth_reply): left out an = in an
7126         assertion--shouldn't have had any impact, though
7127
7128         * ircd/Makefile.in: add a hook for using ringlog; run make depend
7129
7130         * tools/ringlog.c: for the heck of it, add a comment including
7131         rules for /etc/magic
7132
7133 2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
7134
7135         * tools/ringlog.pl: perl script to take output from ringlog and
7136         pass it to addr2line to get function, file, and line number
7137         information
7138
7139         * tools/ringlog.c: program/object to help in building function
7140         trace information
7141
7142 2002-02-04  Alex Badea  <vampire@p16.pub.ro>
7143
7144         * include/ircd_features.h: added new feature MOTD_BANNER
7145
7146         * ircd/ircd_features.c: added new feature MOTD_BANNER
7147
7148         * ircd/motd.c (motd_signon): send a one-line banner from
7149         FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
7150         is set
7151
7152         * doc/example.conf: default value for MOTD_BANNER feature
7153
7154         * doc/readme.features: documented the MOTD_BANNER feature
7155
7156 2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
7157
7158         * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
7159         check; added character 'A' to the server options string to
7160         indicate when assertion checking is enabled
7161
7162 2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
7163
7164         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7165
7166         * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
7167         event if the errno is EBADF, since the caller probably already
7168         knows about it and just hasn't gotten around to processing it yet
7169
7170         * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
7171         is generated; don't process socket_events() or socket_state() if
7172         an error occurred; add GEN_ERROR to list of flags in gen_flags()
7173
7174         * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
7175         clear it
7176
7177 2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
7178
7179         * ircd/channel.c: change make_nick_user_{ip,host} to not use a
7180         static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
7181         NUI_BUFSIZE--I confess they're not well-named) is allocated by the
7182         caller
7183
7184 2002-02-02  Alex Badea  <vampire@p16.pub.ro>
7185
7186         * include/client.h: added user flag FLAGS_HIDDENHOST
7187
7188         * include/ircd_features.h: added FEAT_HOST_HIDING and
7189         FEAT_HIDDEN_HOST
7190
7191         * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
7192         to report real hostnames and IPs to opers
7193
7194         * include/s_user.h: exported hide_hostmask()
7195
7196         * include/send.h: changed sendcmdto_channel_butserv to
7197         sendcmdto_channel_butserv_butone; ditto for
7198         sendcmdto_common_channels
7199
7200         * include/struct.h: added realhost to struct User
7201
7202         * include/whowas.h: added realhost to struct Whowas
7203
7204         * ircd/channel.c: match bans against both real and hidden
7205         hostmasks; moved some calls to use sendcmdto_*_butone
7206
7207         * ircd/gline.c: match glines agains real host
7208
7209         * ircd/ircd_features.c: added FEAT_HOST_HIDING and
7210         FEAT_HIDDEN_HOST
7211
7212         * ircd/m_account.c: call hide_hostmask() for possibly
7213         hiding the user's host
7214
7215         * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
7216
7217         * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
7218
7219         * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
7220         host
7221
7222         * ircd/m_who.c: match real hosts, if the query comes from an oper
7223
7224         * ircd/m_whois.c: report real hostname and IP to opers
7225
7226         * ircd/m_whowas.c: report real hostname to opers
7227
7228         * ircd/s_err.c: added user mode 'x' to the list of supported user
7229         modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
7230         real hostnames to opers
7231
7232         * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
7233
7234         * ircd/s_serv.c: send real hostname to servers
7235
7236         * ircd/s_user.c: send real hostname to servers; added processing
7237         of usermode 'x'; added hide_hostmask() which actually does the work
7238         of hiding a user's host; moved some calls to use sendcmdto_*_butone
7239
7240         * ircd/send.c: changed sendcmdto_channel_butserv to
7241         sendcmdto_channel_butserv_butone; ditto for
7242         sendcmdto_common_channels
7243
7244         * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
7245         it's host hidden
7246
7247         * ircd/whowas.c: if needed, store a user's real host so we can
7248         report it to opers later
7249
7250         * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
7251         features
7252
7253         * doc/example.conf: default values for HOST_HIDING and
7254         HIDDEN_HOST features
7255
7256 2002-02-01  Tim Vogelsang  <net@astrolink.org>
7257
7258         * ircd/send.c (sendwallto_group_butone): don't sent wallops to
7259         ordinary users
7260
7261 2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
7262
7263         * ircd/jupe.c (jupe_activate): remove a bogus assertion
7264
7265         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7266
7267         * ircd/s_err.c: added new channel mode 'r' to list of supported
7268         channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
7269         numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
7270         informing users why they can't join a +r channel
7271
7272         * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
7273         (+r) to do_clearmode(); note that it is *not* being added to the
7274         default clearmode mask!
7275
7276         * ircd/channel.c: don't allow non-+r users to send messages to +r
7277         channels from off the channel; add support for MODE_REGONLY (+r)
7278         to channel_modes(); don't allow non-+r users to join +r channels
7279         without an invite; add support for MODE_REGONLY to the modebuf_*()
7280         family of functions (changes in modebuf_flush_int(),
7281         modebuf_mode(), and modebuf_extract()); add support for
7282         MODE_REGONLY to mode_parse()
7283
7284         * include/supported.h (FEATURESVALUES2): added the new channel
7285         mode 'r' to the list of supported channel modes
7286
7287         * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
7288         conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
7289
7290         * include/channel.h: remove unused MODE_SENDTS; add new
7291         MODE_REGONLY
7292
7293         * ircd/s_bsd.c (read_packet): remove call to timer_verify()
7294
7295         * ircd/list.c: remove calls to timer_verify() from
7296         alloc_connection() and dealloc_connection()
7297
7298         * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
7299         from timer_run()
7300
7301 2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
7302
7303         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7304
7305         * ircd/ircd_events.c (timer_run): why did I ever use a next
7306         pointer when the algorithm guarantees that the head pointer will
7307         always be the next pointer?
7308
7309 2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
7310
7311         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7312
7313         * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
7314         client process timer to catch any list corruption
7315
7316         * ircd/list.c: surround alloc_connection() and
7317         dealloc_connection() with calls to timer_verify()
7318
7319         * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
7320         verify the timer list's structure; call it around timer_run()
7321
7322 2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
7323
7324         * ircd/send.c (sendcmdto_common_channels): don't send message to a
7325         channel that the source is a zombie on
7326
7327 2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
7328
7329         * ircd/ircd_events.c (timer_enqueue): one more assertion--make
7330         sure a timer has the ACTIVE flag set before enqueueing the timer
7331
7332         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7333
7334         * ircd/list.c (dealloc_connection): assert that the process timer
7335         has been removed from the timer queue before dealloc_connection()
7336         is called
7337
7338 2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
7339
7340         * ircd/res.c: don't accept T_A when we're looking for T_PTR
7341
7342         * ircd/channel.c (modebuf_flush_int): nuke the code that would
7343         send a HACK DESYNCH notice on a HACK(2)--it would be far too
7344         chatty
7345
7346         * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
7347
7348         * include/supported.h: add AWAYLEN to the list of supported
7349         features
7350
7351         * include/ircd_defs.h: add AWAYLEN to specify the maximum length
7352         of an away message
7353
7354         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7355
7356         * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
7357
7358         * ircd/channel.c: pass a buflen parameter to channel_modes() for
7359         pbuf--we were using sizeof(pbuf), which would always be
7360         sizeof(char*) before; change send_channel_modes() to pass extra
7361         parameter to channel_modes()
7362
7363         * include/channel.h: pass a buflen parameter to channel_modes()
7364         for pbuf
7365
7366         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7367
7368         * ircd/uping.c (uping_start): initialize some timers
7369
7370         * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
7371         out when we need to re-add the process timer
7372
7373         * ircd/s_auth.c (make_auth_request): initialize a timer
7374
7375         * ircd/res.c (init_resolver): initialize some timers
7376
7377         * ircd/list.c (alloc_connection): initialize the client process
7378         timer
7379
7380         * ircd/ircd_events.c: add a function, timer_init(), to initialize
7381         a struct Timer; recast timer_add() to catch when adding a marked
7382         timer and not re-enqueue it--but mark it for re-enqueuing; update
7383         timer_del() to turn off the GEN_READD flag and to ignore reference
7384         counts when destroying the timer--we're using GEN_MARKED as an
7385         ersatz referance count; changed timer_run() to work with the new
7386         way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
7387         map[]
7388
7389         * ircd/ircd.c: initialize some timers
7390
7391         * ircd/engine_select.c (engine_loop): initialize a timer
7392
7393         * ircd/engine_poll.c (engine_loop): initialize a timer
7394
7395         * ircd/engine_kqueue.c (engine_loop): initialize a timer
7396
7397         * ircd/engine_devpoll.c (engine_loop): initialize a timer
7398
7399         * ircd/IPcheck.c (IPcheck_init): initialize a timer
7400
7401         * include/ircd_events.h: add GEN_READD flag for timers to indicate
7402         that a timer must be readded; add t_onqueue() macro to check to
7403         see if a timer is on the queue (this is a hack, though); added
7404         timer_init() to initialize a struct Timer--we're no longer doing
7405         the initialization in timer_add()
7406
7407 2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
7408
7409         * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
7410         prevent a core bug *in* the assertion
7411
7412         * doc/readme.features: document new POLLS_PER_LOOP feature; change
7413         documentation to reflect that OPER_SET now defaults to FALSE
7414
7415         * doc/p10.html: documented the new ACCOUNT stuff
7416
7417         * doc/example.conf: document new POLLS_PER_LOOP default; change
7418         default for OPER_SET
7419
7420         * RELEASE.NOTES: changed documentation to reflect the fact that
7421         assertions are now enabled by default and do not cause memory
7422         leaks
7423
7424         * ircd/res.c (make_cache): removed a bogus assertion we probably
7425         never caught because assertions haven't been enabled on production
7426         servers for any length of time before
7427
7428         * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
7429
7430         * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
7431         instance of POLLS_PER_KQUEUE
7432
7433         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7434
7435         * ircd/s_bsd.c (client_timer_callback): only clear the
7436         FREEFLAG_TIMER flag when the timer is being destroyed
7437
7438         * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
7439         default it to 200; turn OPER_SET off by default
7440
7441         * ircd/engine_kqueue.c: dynamically allocate and reallocate the
7442         array of events to obtain from the kernel
7443
7444         * ircd/engine_devpoll.c: dynamically allocate and reallocate the
7445         array of events to obtain from the kernel
7446
7447         * include/ircd_features.h: add a new feature for tuning how many
7448         events to get from the kernel, for engines that support that
7449
7450         * ircd/Makefile.in: re-run make depend to correct dependancies
7451
7452         * ircd/m_who.c: remove unneeded inclusion of list.h
7453
7454         * ircd/ircd_events.c: remove unneeded inclusion of list.h
7455
7456         * ircd/whocmds.c (do_who): hide server name in /who unless
7457         requester is an operator; simplify hop count insertion
7458
7459         * ircd/s_misc.c (exit_one_client): make sure client's snomask is
7460         cleared
7461
7462         * ircd/parse.c: use mo_version and mo_admin when opers do /version
7463         or /admin
7464
7465         * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
7466         of the static string "*.undernet.org"
7467
7468         * ircd/m_version.c: only let ordinary users get version
7469         information for the server they are on
7470
7471         * ircd/m_admin.c: only let ordinary users get admin information
7472         for the server they are on
7473
7474         * ircd/channel.c (client_can_send_to_channel): check is_banned()
7475         before letting the client speak on a channel s/he is not on
7476
7477         * include/supported.h: add NETWORK to feature list
7478
7479         * include/handlers.h: declare mo_admin() and mo_version()
7480
7481 2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
7482
7483         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7484
7485         * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
7486         of !NDEBUG
7487
7488         * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
7489         !NDEBUG
7490
7491         * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
7492         !NDEBUG
7493
7494         * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
7495
7496         * ircd/Makefile.in: run make depend on chkconf.c as well
7497
7498         * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
7499         conditionalize on MDEBUG
7500
7501         * include/fda.h: instead of conditionalizing on !NDEBUG,
7502         conditionalize on MDEBUG
7503
7504         * configure: rebuild configure script
7505
7506         * configure.in: enable assertion checking by default, since we
7507         have now decoupled memory debugging from the NDEBUG macro
7508
7509         * ircd/s_user.c (set_nick_name): remove calls to
7510         verify_client_list()
7511
7512         * ircd/s_misc.c (exit_one_client): remove calls to
7513         verify_client_list()
7514
7515         * ircd/s_conf.c (rehash): remove calls to verify_client_list()
7516
7517         * ircd/m_who.c (m_who): remove calls to verify_client_list()
7518
7519         * ircd/list.c: remove calls to verify_client_list(); keep
7520         verify_client_list() around just in case we ever need it again,
7521         but never compile it in
7522
7523         * ircd/ircd_events.c (event_execute): remove calls to
7524         verify_client_list()
7525
7526         * ircd/client.c (client_get_ping): remove calls to
7527         verify_client_list()
7528
7529         * include/list.h (send_listinfo): remove temporary debugging
7530         function verify_client_list()
7531
7532         * ircd/uping.c: don't die if the event type is ET_ERROR in socket
7533         callback functions
7534
7535         * ircd/res.c (res_callback): don't die if the event type is
7536         ET_ERROR
7537
7538         * ircd/listener.c (accept_connection): don't die if the event type
7539         is ET_ERROR
7540
7541 2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
7542
7543         * ircd/s_user.c (set_nick_name): bracket call to
7544         add_client_to_list() with calls to verify_client_list()
7545
7546         * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
7547
7548         * ircd/list.c (verify_client_list): add a probabilistic loop
7549         detector: for every client added, there is a 2% probability that
7550         it will be used to replace the value of sentinel; if at any time,
7551         sentinel is found again, we know we're in a loop
7552
7553         * ircd/ircd_events.c (event_execute): add verify_client_list()
7554         calls wrapping event_execute; at the very least, I'll figure out
7555         what event the corruption occurred in
7556
7557         * ircd/list.c: moved verify_client_list() to try to keep it from
7558         being inlined
7559
7560         * ircd/Makefile.in (version.c): version.c wasn't dependant on
7561         version.h and patchlevel.h, like it was supposed to be
7562
7563         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7564
7565         * ircd/s_auth.c (destroy_auth_request): overload send_reports
7566         argument to also indicate whether or not to call
7567         release_auth_client() and thereby enter the client into the linked
7568         list
7569
7570         * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
7571
7572         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
7573
7574         * ircd/list.c (free_client): verify that destroy_auth_request()
7575         didn't automagically re-add us to the list; we might have to think
7576         about this interaction more carefully, actually
7577
7578         * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
7579         calling free_client(); otherwise, free_client() will try to free
7580         the auth by calling destroy_auth_request(), which will call
7581         add_client_to_list()
7582
7583         * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
7584         verify_client_list() around to catch any corruption that might
7585         occur here
7586
7587         * ircd/s_conf.c (rehash): liberally sprinkle calls to
7588         verify_client_list() here, since this is about the only routine I
7589         can think of that could cause the "core on kill -HUP" bug
7590
7591         * ircd/m_who.c: sprinkle calls to verify_client_list() around
7592         liberally, since we've seen crashes here; temporarily include the
7593         otherwise unneeded list.h header
7594
7595         * ircd/list.c: sprinkle calls to verify_client_list() around quite
7596         liberally; add debugging asserts to list manipulation functions to
7597         catch strange settings for next and prev pointers; define
7598         verify_client_list(), which walks the client list and verifies
7599         that everything is as it's supposed to be
7600
7601         * ircd/client.c: wrap client_get_ping with calls to
7602         verify_client_list() to see if that's where we're dying
7603
7604         * include/patchlevel.h (PATCHLEVEL): bump to 03
7605
7606         * include/list.h: declare verify_client_list() if DEBUGMODE
7607         enabled; otherwise, define it to be empty
7608
7609 2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
7610
7611         * ircd/m_quit.c (m_quit): remove an unused variable
7612
7613         * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
7614
7615         * ircd/s_user.c: when building the user mode to send to the user,
7616         don't include +r; add an extra set of parens to squelch a warning
7617
7618         * ircd/m_quit.c (m_quit): use exit_client_msg()
7619
7620         * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
7621         keep track of who's running what version
7622
7623         * ircd/m_squit.c (ms_squit): remove debugging calls to
7624         protocol_violation()
7625
7626         * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
7627         new gmake "feature" (pull-up from trunk)
7628
7629         * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
7630         from trunk)
7631
7632 2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
7633
7634         * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
7635         list of user modes; process account name as part of user mode in
7636         NICK decoding (set_nick_name()); add account name to usermode when
7637         building the usermode to incorporate in outgoing NICK messages
7638
7639         * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
7640         user is logged in to
7641
7642         * ircd/parse.c: define the new ACCOUNT command, usable only by
7643         servers and ignored by everything else
7644
7645         * ircd/m_whois.c: report what account name is associated with a
7646         user, if any
7647
7648         * ircd/m_account.c: implement the ACCOUNT command
7649
7650         * ircd/Makefile.in: add m_account.c to the list of sources; ran
7651         make depend
7652
7653         * include/struct.h: add an account field to struct User
7654
7655         * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
7656         what username a user is logged in under
7657
7658         * include/msg.h: add ACCOUNT command and token (AC)
7659
7660         * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
7661         the maximum length of a username for X
7662
7663         * include/handlers.h: add declaration for ms_account()
7664
7665         * include/client.h: add FLAGS_ACCOUNT to flag when a user account
7666         name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
7667         IsAccount() and SetAccount() to manipulate the flag
7668
7669         * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
7670         name like "Amsterdam2.NL.EU.undernet.org", we get the struct
7671         Client for the server with numeric "Am", which happens to be
7672         stockholm!  To fix this, we look up the full name *first*; if that
7673         doesn't get it, *then* we look up by numeric.
7674
7675 2001-12-24  Perry Lorier <isomer@coders.net>
7676         * ircd/m_server.c: cleanups, maybe this will make the bug easier
7677         to find.
7678
7679         * ircd/m_stats.c: display maximum number of connects in an I:
7680
7681 2001-11-22  Perry Lorier  <isomer@coders.net>
7682         * ircd/m_squit.c: Bug fix in squit
7683
7684 2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7685         * ircd/parse.c, include/handlers.h: Give remote whois the correct
7686         handler.
7687         
7688 2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
7689
7690         * ircd/send.c: some minor white-space fiddling; recast selector
7691         test in sendwallto_group_butone() to remove a warning regarding
7692         putting & within parentheses
7693
7694         * ircd/m_create.c (ms_create): use time_t instead of int as a
7695         declaration for rate
7696
7697         * ircd/ircd_reply.c (protocol_violation): it's supposed to be
7698         WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
7699         wonder we weren't seeing any protocol violations!
7700
7701         * include/send.h: include time.h for time_t; move WALL_* closer to
7702         the function they're used in; some white-space fiddling; add
7703         declaration of sendto_opmask_butone_ratelimited()
7704
7705         * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
7706         cases where we ignore a squit, so we aren't taken by surprise, at
7707         least...
7708
7709         * ircd/m_create.c (ms_create): Display origin server, not origin
7710         user
7711
7712         * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
7713
7714 2001-10-31  Perry Lorier  <isomer@coders.net>
7715         * include/m_ping.c: Forward port ping bug
7716
7717 2001-10-31  Perry Lorier  <isomer@coders.net>
7718         * include/patchlevel.h: We're beta now
7719
7720 2001-10-31  Perry Lorier  <isomer@coders.net>
7721         * ircd/s_user.c: fixed hunt_server
7722
7723 2001-09-21  Perry Lorier  <isomer@coders.net>
7724         * ircd/send.c and various: replace sendcmdto_flag_butone with
7725         sendwallto_group_butone
7726
7727 2001-09-21  Vampire-  <unknown>
7728         * ircd/ircd_string.c: unique_name_vector round II.
7729
7730 2001-09-21  mbuna  <mbuna@undernet.org>
7731         * configure.in: Add support for darwin
7732
7733 2001-09-21  Perry Lorier  <isomer@coders.net>
7734         * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
7735
7736 2001-09-20  Perry Lorier  <isomer@coders.net>
7737
7738         * Pullups from 2.10.10.pl16
7739         * Added some warnings, and the concept of rate limited snotices
7740
7741 2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
7742
7743         * ircd/channel.c: use "%u" to format limit arguments; use
7744         strtoul() to process limit arguments in a /mode command--note:
7745         most clients seem to truncate the integer, probably because
7746         they're using atoi, and perhaps signed ints
7747
7748 2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
7749
7750         * ircd/numnicks.c: include stdlib.h for exit()
7751
7752         * ircd/ircd_log.c: include stdlib.h for exit()
7753
7754         * ircd/ircd_events.c: include stdlib.h for exit()
7755
7756         * ircd/s_stats.c: remove description of /stats v, since it's gone
7757
7758         * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
7759         /wallops to distinguish wallops from wallusers
7760
7761         * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
7762         in the "handshake" or "connecting" states--I think the latter will
7763         never happen, but...
7764
7765         * doc/Authors: apply delete's Authors patch
7766
7767         * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
7768         Braden's version
7769
7770         * README: rewrite README
7771
7772 2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
7773
7774         * ircd/s_serv.c (server_estab): remove unused variable split
7775
7776         * ircd/parse.c: add mr_error to the parse table
7777
7778         * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
7779         unregistered connections--if IsUserPort() is true, the ERROR is
7780         ignored, otherwise, the message is saved
7781
7782 2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
7783
7784         * ircd/m_kill.c (ms_kill): another minor typo *sigh*
7785
7786         * ircd/s_user.c (send_supported): oops, minor typo...
7787
7788         * ircd/s_user.c: implement send_supported() to send two ISUPPORT
7789         messages containing our feature buffers; make register_user() use
7790         send_supported()
7791
7792         * ircd/s_misc.c (exit_client): make sure not to give away a remote
7793         server in the ERROR message sent to the client; if the killer is a
7794         server, we substitute our name in its place
7795
7796         * ircd/m_version.c (m_version): use send_supported() to send the
7797         ISUPPORT values to the user
7798
7799         * ircd/m_nick.c: shave nick collision kills here a bit, too, for
7800         the same reasons as for m_kill.c
7801
7802         * ircd/m_kill.c: shave kills a bit so that the results look
7803         exactly the same no matter where you are; if we didn't do this, it
7804         would be possible to map the network by looking at the differences
7805         between kills originating under various circumstances
7806
7807         * include/supported.h: split the features into two, so as to not
7808         bust the parameter count when sending the features list
7809
7810         * include/s_user.h: declare new send_supported() function to send
7811         the ISUPPORT information
7812
7813 2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
7814
7815         * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
7816         source-routed spoofing attacks; this is only available under
7817         u2.10.11, so don't even bother, since no one but testers are using
7818         the source base
7819
7820 2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
7821
7822         * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
7823
7824         * ircd/s_err.c: put in a . for reporting link version on /trace,
7825         to match what /version does
7826
7827 2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
7828
7829         * ircd/s_misc.c (exit_client): servers don't understand what the
7830         numeric nick ERROR is supposed to mean, so they ignore error
7831         messages, resulting in not knowing why we were rejected; use
7832         sendcmdto_one for servers and sendrawto_one for clients
7833
7834 2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
7835
7836         * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
7837         a nick collide, a bare BURST may be propagated; adjust the
7838         enforced parameter count to accept the bare BURST
7839
7840 2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
7841
7842         * ircd/s_bsd.c: mark a client as having been IP checked
7843
7844         * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
7845         second call to SetIPChecked()
7846
7847 2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
7848
7849         * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
7850
7851         * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
7852
7853 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
7854
7855         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
7856         sections so that if neither is used, the declaration of buf will
7857         not elicit an "unused variable" warning under NetBSD
7858
7859         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
7860         on alpha)
7861
7862         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
7863         warnings on alpha)
7864
7865         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
7866         warnings on alpha)
7867
7868         * ircd/client.c: include string.h to declare memset (fix warnings
7869         on alpha)
7870
7871         * ircd/channel.c: remove unused functions next_overlapped_ban,
7872         del_banid, and is_deopped (fix warnings under -O1)
7873
7874         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
7875         warnings on alpha)
7876
7877 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
7878
7879         * ircd/s_user.c (set_user_mode): clear the snomask if the user
7880         isn't supposed to receive server notices anymore
7881
7882         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
7883
7884         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
7885         installation prefix; default devpoll and kqueue to on (they get
7886         turned off if the required headers aren't present)
7887
7888         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
7889         sprintf_irc(); it's a bit hackish, but it'll do for now
7890
7891         * ircd/support.c: remove unused #include
7892
7893         * ircd/send.c: remove unused #include
7894
7895         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
7896
7897         * ircd/s_serv.c: remove unused #include
7898
7899         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
7900         sprintf_irc() and friends
7901
7902         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
7903         ircd/s_err.c, which is the only other file to refer to it
7904
7905         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
7906         sprintf_irc()
7907
7908         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
7909         sprintf_irc()
7910
7911         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
7912
7913         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
7914
7915         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
7916
7917         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
7918
7919         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
7920
7921         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
7922
7923         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
7924         instead of sprintf_irc()
7925
7926         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
7927         make depend
7928
7929         * include/ircd_string.h: remove declaration of sprintf_irc() (what
7930         was it doing here anyway?)
7931
7932         * include/sprintf_irc.h: removed unneeded source file
7933
7934         * ircd/sprintf_irc.c: removed unneeded source file
7935
7936         * ircd/s_debug.c (count_memory): remove some dead code
7937
7938         * ircd/s_auth.c: remove some dead code
7939
7940         * ircd/res.c (update_list): remove some dead code
7941
7942         * ircd/m_whowas.c: remove some dead code
7943
7944         * ircd/m_whois.c: remove some dead code
7945
7946         * ircd/m_who.c: remove some dead code
7947
7948         * ircd/m_wallusers.c: remove some dead code
7949
7950         * ircd/m_wallops.c: remove some dead code
7951
7952         * ircd/m_wallchops.c: remove some dead code
7953
7954         * ircd/m_version.c: remove some dead code
7955
7956         * ircd/m_userip.c: remove some dead code
7957
7958         * ircd/m_userhost.c: remove some dead code
7959
7960         * ircd/m_uping.c: remove some dead code
7961
7962         * ircd/m_trace.c: remove some dead code
7963
7964         * ircd/m_topic.c: remove some dead code
7965
7966         * ircd/m_tmpl.c: remove some dead code
7967
7968         * ircd/m_time.c: remove some dead code
7969
7970         * ircd/m_squit.c: remove some dead code
7971
7972         * ircd/m_silence.c: remove some dead code
7973
7974         * ircd/m_settime.c: remove some dead code
7975
7976         * ircd/m_set.c: remove some dead code
7977
7978         * ircd/m_server.c: remove some dead code
7979
7980         * ircd/m_rpong.c: remove some dead code
7981
7982         * ircd/m_rping.c: remove some dead code
7983
7984         * ircd/m_restart.c: remove some dead code
7985
7986         * ircd/m_reset.c: remove some dead code
7987
7988         * ircd/m_rehash.c: remove some dead code
7989
7990         * ircd/m_quit.c: remove some dead code
7991
7992         * ircd/m_proto.c: remove some dead code
7993
7994         * ircd/m_privs.c: remove some dead code
7995
7996         * ircd/m_privmsg.c: remove some dead code
7997
7998         * ircd/m_pong.c: remove some dead code
7999
8000         * ircd/m_ping.c: remove some dead code
8001
8002         * ircd/m_pass.c: remove some dead code
8003
8004         * ircd/m_part.c: remove some dead code
8005
8006         * ircd/m_opmode.c: remove some dead code
8007
8008         * ircd/m_oper.c: remove some dead code
8009
8010         * ircd/m_notice.c: remove some dead code
8011
8012         * ircd/m_nick.c: remove some dead code
8013
8014         * ircd/m_map.c: remove some dead code
8015
8016         * ircd/m_lusers.c: remove some dead code
8017
8018         * ircd/m_list.c: remove some dead code
8019
8020         * ircd/m_links.c: remove some dead code
8021
8022         * ircd/m_kill.c: remove some dead code
8023
8024         * ircd/m_kick.c: remove some dead code
8025
8026         * ircd/m_jupe.c: remove some dead code
8027
8028         * ircd/m_join.c: remove some dead code
8029
8030         * ircd/m_ison.c: remove some dead code
8031
8032         * ircd/m_invite.c: remove some dead code
8033
8034         * ircd/m_info.c: remove some dead code
8035
8036         * ircd/m_help.c: remove some dead code
8037
8038         * ircd/m_gline.c: remove some dead code
8039
8040         * ircd/m_get.c: remove some dead code
8041
8042         * ircd/m_error.c: remove some dead code
8043
8044         * ircd/m_endburst.c: remove some dead code
8045
8046         * ircd/m_die.c: remove some dead code
8047
8048         * ircd/m_desynch.c: remove some dead code
8049
8050         * ircd/m_destruct.c: remove some dead code
8051
8052         * ircd/m_defaults.c: remove some dead code
8053
8054         * ircd/m_create.c: remove some dead code, along with an #if 1
8055
8056         * ircd/m_cprivmsg.c: remove some dead code
8057
8058         * ircd/m_connect.c: remove some dead code
8059
8060         * ircd/m_close.c: remove some dead code
8061
8062         * ircd/m_clearmode.c: remove some dead code
8063
8064         * ircd/m_burst.c: remove some dead code
8065
8066         * ircd/m_away.c: remove some dead code
8067
8068         * ircd/m_admin.c: remove some dead code
8069
8070         * ircd/listener.c (accept_connection): remove some dead code
8071
8072         * ircd/ircd_reply.c (need_more_params): remove some dead code
8073
8074         * ircd/channel.c (add_banid): remove some dead code
8075
8076         * include/support.h: remove some dead code
8077
8078         * include/querycmds.h: remove some dead code
8079
8080         * doc/readme.chroot: document how to do chroot operation
8081
8082 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
8083
8084         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
8085         force bin directory to be created if necessary prior to
8086         installation; run make depend
8087
8088         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
8089         the ${srcdir}
8090
8091         * Makefile.in: tune to detect Makefile.in changes in
8092         subdirectories and to create installation directory indicated by
8093         ${prefix}
8094
8095         * ircd/whocmds.c (count_users): routine to count the number of
8096         users matching a given user@host mask
8097
8098         * ircd/s_err.c: add error messages for ERR_LONGMASK,
8099         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
8100
8101         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
8102         from operators; only set GLINE_OPERFORCE flag if oper has the
8103         PRIV_WIDE_GLINE privilege
8104
8105         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
8106         maximum number of users a G-line can impact before it has to be
8107         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
8108         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
8109         operators to use ! to force a wide G-line to be set
8110
8111         * ircd/gline.c: make make_gline() be called with separate user and
8112         host arguments, and not call canon_userhost() directly; implement
8113         gline_checkmask() to verify that a host mask is acceptable; move
8114         BADCHAN check up in gline_add(), and check passed-in mask under
8115         certain circumstances for acceptability; fix call to
8116         sendto_opmask_butone() to handle separation of userhost into user
8117         and host in gline_add(); update call to make_gline()
8118
8119         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
8120         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
8121         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
8122
8123         * include/whocmds.h (count_users): declare routine to count users
8124         matching a given user@host mask
8125
8126         * include/numeric.h: added three new error returns: ERR_LONGMASK
8127         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
8128         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
8129         contains wildcards in the wrong places
8130
8131         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
8132         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
8133
8134         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
8135         to signal to gline_add() that the operator attempted to force the
8136         G-line to be set
8137
8138         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
8139
8140         * doc/readme.gline: update to document new "!" prefix to a G-line
8141         user@host mask
8142
8143         * doc/readme.features: document GLINEMAXUSERCOUNT,
8144         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
8145
8146         * doc/example.conf: update to mention new features along with
8147         their defaults
8148
8149 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
8150
8151         * doc/example.conf: updated example.conf from Braden
8152         <dbtem@yahoo.com>
8153
8154         * include/supported.h: forward-port from pl15
8155
8156 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
8157
8158         * ircd/whocmds.c: include ircd_policy.h and implement
8159         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
8160
8161         * ircd/m_whois.c: forward-port of the idle-time hiding code from
8162         pl15; this also required passing parc into do_whois(), which also
8163         meant passing parc into do_wilds()--*sigh*
8164
8165         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
8166         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
8167
8168 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
8169
8170         * tools/wrapper.c: add a wrapper program that can be used to
8171         adjust file descriptor limits and root directories; program must
8172         be run as root--NOT SETUID!--and given appropriate -u arguments
8173
8174         * doc/readme.log: documentation of how to configure logging
8175
8176         * doc/readme.features: documentation of each feature (except for
8177         logging)
8178
8179 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
8180
8181         * Makefile.in (config): add a deprecation notice with a pointer to
8182         tools/transition
8183
8184         * tools/transition: shell script to convert old compile-time
8185         options into new compile-time options and appropriate F-lines
8186
8187         * tools/mkchroot: shell-script to prepare the chroot area by
8188         copying over all the necessary libraries so they can be found
8189
8190 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
8191
8192         * INSTALL: partial update of INSTALL for u2.10.11 release...
8193
8194 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
8195
8196         * ircd/table_gen.c (makeTables): finally got tired of the
8197         "overflow in implicit conversion" warning, so just got rid of it
8198         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
8199         differences in the tables generated
8200
8201 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
8202
8203         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
8204         if a client is in the STAT_CONNECTING status
8205
8206 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
8207
8208         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
8209         into sendcmdto_one(); define new sendcmdto_prio_one(), which
8210         places the message into the priority queue
8211
8212         * ircd/s_user.c (hunt_server_prio_cmd): definition of
8213         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
8214         instead of sendcmdto_one()
8215
8216         * ircd/m_settime.c: use sendcmdto_prio_one() and
8217         hunt_server_prio_cmd() to send SETTIME
8218
8219         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
8220
8221         * include/send.h: removed declaration for unused vsendcmdto_one();
8222         added a declaration for sendcmdto_prio_one()
8223
8224         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
8225         sendcmdto_prio_one()
8226
8227         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
8228         put in the server's priority queue, too...
8229
8230         * ircd/ircd.c: don't check LPATH for accessibility at all
8231
8232 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
8233
8234         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
8235         command if we're configured as a hub; send individual server flags
8236         in SERVER commands
8237
8238         * ircd/s_bsd.c (completed_connection): send a +h flag in our
8239         SERVER command if we're configured as a hub
8240
8241         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
8242         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
8243         flag for a server; +hs sets both flags; also modify CMD_SERVER
8244         format string to send the flags
8245
8246         * include/client.h: define two new flags, FLAGS_HUB and
8247         FLAGS_SERVICE to mark services and hubs as such; define testing
8248         macros, setting macros
8249
8250         * ircd/s_user.c: remove deprecated struct Gline* argument to
8251         register_user(); remove GLINE rebroadcast; do not send GLINE
8252         acknowledgement parameter to NICK; do not look for GLINE
8253         acknowledgement parameter to NICK while parsing
8254
8255         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
8256         argument to server_estab(); do not send JUPE/GLINE acknowledgement
8257         parameters for SERVER or NICK
8258
8259         * ircd/m_user.c (m_user): remove deprecated argument to
8260         register_user()
8261
8262         * ircd/m_server.c: remove deprecated argument to server_estab();
8263         remove documentation comment regarding JUPE acknowledgement
8264         parameter to SERVER; remove JUPE rebroadcast
8265
8266         * ircd/m_pong.c (mr_pong): remove deprecated argument to
8267         register_user()
8268
8269         * ircd/m_nick.c: remove documentation comment regarding GLINE
8270         acknowledgement parameter to NICK
8271
8272         * ircd/jupe.c: use user's real name in JUPE server notices if
8273         HEAD_IN_SAND_SNOTICES is defined
8274
8275         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
8276         setuid code; correct ancient DEBUG vs DEBUGMODE typo
8277
8278         * ircd/gline.c: use user's real name in GLINE server notices if
8279         HEAD_IN_SAND_SNOTICES is defined
8280
8281         * ircd/channel.c (modebuf_flush_int): make apparent source be
8282         local server, not oper's server; use user's real name in hack
8283         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
8284
8285         * include/s_user.h: remove struct Gline pre-declaration; remove
8286         deprecated struct Gline argument from register_user()
8287
8288         * include/s_serv.h: remove struct Jupe pre-declaration; remove
8289         deprecated struct Jupe argument from server_estab()
8290
8291 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
8292
8293         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
8294         changes required to control remote stats
8295
8296         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
8297         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
8298         [forward-port from pl15]
8299
8300         * ircd/m_whowas.c (m_whowas): report server name only if requester
8301         is an operator [forward-port from pl15]
8302
8303         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
8304         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
8305         and obtain the report from the user's server [forward-port from
8306         pl15]
8307
8308         * ircd/m_who.c: add missing include for ircd_policy.h
8309         [forward-port from pl15]
8310
8311         * ircd/m_version.c (m_version): require oper access for remote
8312         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8313
8314         * ircd/m_time.c (m_time): require oper access for remote /time if
8315         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8316
8317         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
8318         missing semicolon [forward-port from pl15]
8319
8320         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
8321         kills [forward-port from pl15]
8322
8323         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
8324         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8325
8326         * ircd/m_lusers.c (m_lusers): require oper access for remote
8327         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8328
8329         * ircd/m_burst.c (ms_burst): server-added bans are stored using
8330         local server name, to hide remote server names; modes also are to
8331         originate from the local server [forward-port from pl15]
8332
8333         * ircd/m_admin.c (m_admin): require oper access for remote /admin
8334         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
8335
8336         * ircd/channel.c (add_banid): if a server is adding a ban, use my
8337         server name to hide the remote server's name [forward-port from
8338         pl15]
8339
8340         * ircd/Makefile.in: ran make depend
8341
8342         * include/s_stats.h: hunt_stats() has to have an extra argument to
8343         support the forward-port from pl15
8344
8345         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
8346         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
8347
8348         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
8349         forgot to check in the events branch
8350
8351 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
8352
8353         * ircd/res.c (init_resolver): don't start DNS expires with a 0
8354         relative timeout--if the server starts slow, timeouts could be
8355         messy...there's probably a better solution, but this'll do for now
8356
8357         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
8358         headers very well; include stropts.h; define an os_set_tos()
8359
8360         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
8361         os_generic.c
8362
8363         * ircd/ircd.c: if there are no C-lines, we don't want to have a
8364         timer that expires at the absolute time of 0--it kinda blocks all
8365         the other timers!
8366
8367         * ircd/engine_devpoll.c: some includes for open(); declare errcode
8368         and codesize in engine_loop()
8369
8370         * ircd/list.c (free_client): remove bogus check on timer active
8371         flag
8372
8373         * ircd/s_auth.c: pull out destruction code in
8374         auth_timeout_request() into an externally-visible
8375         destroy_auth_request(); manage cli_auth pointer in client
8376         structure; use it for an extra assertion check
8377
8378         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
8379         debugging notices to show flow when deallocating
8380         connections/clients; call destroy_auth_request() when free'ing a
8381         client that has an auth outstanding; don't free the connection if
8382         the process timer is unmarked but still active
8383
8384         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
8385         and reset it before calling the event handler for an ET_DESTROY
8386         event
8387
8388         * include/s_auth.h (destroy_auth_request): declare
8389         destroy_auth_request(), which can be used to destroy an
8390         outstanding auth request if a client socket goes away before the
8391         auth exchange is completed
8392
8393         * include/ircd_events.h: add an active flag to keep track of
8394         whether or not particular generators are active, for the
8395         convenience of functions using the API
8396
8397         * include/client.h: add a pointer for auth requests to struct
8398         Connection so we can kill outstanding auth requests if a client
8399         socket closes unexpectedly
8400
8401         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
8402         the sock or timer callback; take that into account in the assert
8403
8404         * ircd/list.c: add magic number checking and setting--magic
8405         numbers are zero'd on frees to detect double-frees; add back
8406         setting of cli_from() to 0 to break the back-link from the struct
8407         Connection (duh)
8408
8409         * ircd/ircd.c: set me's magic number correctly
8410
8411         * include/client.h: define magic numbers and accessor/verifier
8412         macros
8413
8414         * ircd/list.c: assert that dealloc_client() is called with
8415         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
8416         dealloc_client(); don't mess with cli_from(cptr)
8417
8418         * ircd/s_bsd.c: only attempt to dealloc a connection if the
8419         associated client has already been destroyed, or at least delinked
8420
8421 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
8422
8423         * ircd/list.c (free_client): only try to delete the socket when
8424         the fd hasn't already been closed, avoiding a double-free
8425
8426         * ircd/list.c (free_connection): make sure the client is really
8427         gone before doing away with the connection
8428
8429         * ircd/s_bsd.c: record that socket has been added in con_freeflag
8430         field; queue a socket_del() as soon as the socket is close()'d;
8431         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
8432         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
8433         then dealloc the connection if safe; mark socket as dead when
8434         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
8435         to client_timer_callback(); dealloc connection if safe upon
8436         ET_DESTROY event in client_timer_callback()
8437
8438         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
8439         the connection if both socket and timer have been destroyed;
8440         destroy both socket and timer explicitly and carefully
8441
8442         * include/client.h: replace the con_timer field with a
8443         con_freeflag field, to indicate what still needs freeing; define
8444         the freeflags
8445
8446         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
8447         become 0
8448
8449         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
8450         become 0
8451
8452         * ircd/s_bsd.c: add some extra assertions to try to track down a
8453         corruption problem
8454
8455         * ircd/engine_select.c (engine_loop): add an extra assert to try
8456         to track down a corruption problem
8457
8458         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
8459         track down a corruption problem
8460
8461         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
8462         to track down a corruption problem
8463
8464         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
8465         empty during processing; add an extra assert to try to track down
8466         a corruption problem
8467
8468         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
8469         entries
8470
8471 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
8472
8473         * ircd/s_bsd.c (client_sock_callback): client is no longer
8474         blocked, so we must mark it as unblocked
8475
8476         * ircd/engine_select.c: add Debug() calls galore; add handling for
8477         SS_NOTSOCK; use a dummy sock variable to keep things from
8478         disappearing on us; correct timeout calculation; update nfds for
8479         efficiency
8480
8481         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
8482         remove a spurious "if (sock)" which will always be true; update
8483         nfds for efficiency
8484
8485         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
8486         SS_NOTSOCK (just in case); correct timeout calculation
8487
8488         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
8489         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
8490
8491         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
8492         pretty-indent numbers
8493
8494         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
8495         case--it's not a socket; the check for writability is most likely
8496         not needed, but present for completeness
8497
8498 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
8499
8500         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
8501         no newline flag is set; call read_packet() when the timer expires,
8502         regardless of what's in the buffer--read_packet() should be able
8503         to deal properly
8504
8505         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
8506         sent to clients to include the client nickname (duh)
8507
8508         * ircd/ircd_events.c: don't destroy a timer if it's already marked
8509         for destruction; replace a missing ! in socket_del()
8510
8511         * ircd/engine_poll.c (engine_loop): reference a temporary variable
8512         so we don't have to worry about sockList[i] going away
8513
8514         * ircd/s_bsd.c (client_sock_callback): add Debug messages
8515
8516         * ircd/s_auth.c: add Debug messages all over the place
8517
8518         * ircd/ircd_events.c: add and edit some Debug messages; add a list
8519         of routines to convert some of the enums and flags from numbers
8520         into human-readable strings for the Debug messages
8521
8522         * ircd/engine_poll.c: hack some Debug messages to use the new name
8523         conversion routines in ircd_events.c; add an extra assert for a
8524         condition that shouldn't ever happen; apparently recv() can return
8525         EAGAIN when poll() returns readable--I wonder why...
8526
8527         * include/ircd_events.h: declare some helper routines under
8528         DEBUGMODE
8529
8530 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
8531
8532         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
8533         check
8534
8535         * ircd/s_auth.c: add more Debug messages
8536
8537         * ircd/list.c (make_client): add an extra assertion check
8538
8539         * ircd/ircd_events.c (socket_events): don't call the engine events
8540         changer if we haven't actually made any changes to the event mask
8541
8542         * ircd/uping.c: add some Debug messages
8543
8544         * ircd/s_stats.c: document new /STATS e
8545
8546         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
8547
8548         * ircd/s_bsd.c: remove static client_timer variable; in
8549         read_packet(), if there's still data in the client's recvQ after
8550         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
8551         of client_sock_callback to handle destroying the timer properly;
8552         rewrote client_timer_callback from scratch to be called on an
8553         individual client
8554
8555         * ircd/m_stats.c: add /STATS e to report the engine name
8556
8557         * ircd/list.c: deal with con_timer field in struct Connection
8558         properly; correct a core-level bug in remove_client_from_list--if
8559         the client is the only one in the list, we try to update
8560         GlobalClientList's cli_prev pointer--not good
8561
8562         * ircd/ircd.c: remove call to init_client_timer()
8563
8564         * ircd/engine_poll.c: made Debug messages more uniform by
8565         prepending "poll:" to them all; corrected an off-by-one error that
8566         caused poll_count to be 1 less than the actual count and removed
8567         my work-around; added Debug messages to indicate which socket is
8568         being checked and what the results are
8569
8570         * ircd/Makefile.in: ran a make depend
8571
8572         * include/s_bsd.h: remove init_client_timer(), since we're doing
8573         it differently now
8574
8575         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
8576         engine name
8577
8578         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
8579         reports for non-opers
8580
8581         * include/client.h: add con_timer and con_proc fields to struct
8582         Connection and define accessor macros--con_timer marks that
8583         con_proc contains a valid timer, and con_proc is used to pace user
8584         data
8585
8586         * ircd/s_bsd.c (close_connection): let free_client() destroy the
8587         socket
8588
8589         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
8590         auth has begun on a client
8591
8592         * ircd/ircd_events.c: ensure that event_execute() is called with a
8593         non-NULL event; modify event_add() macro to properly zero list
8594         bits; modify gen_dequeue() to not try to clip it out of a list
8595         it's already been clipped out of; change signal socket
8596         initialization to use state SS_NOTSOCK; permit timeout values of
8597         0 in add_timer(); add many Debug calls; change socket_del() and
8598         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
8599         timer_run() instead of GEN_DESTROY so that event_generate() will
8600         pass on the events; remove the switch and replace with a simpler
8601         if-then-else tree in timer_run(); don't allow destroyed sockets to
8602         be destroyed again, nor their states or event masks to be changed
8603
8604         * ircd/ircd.c: initialize "running" to 1
8605
8606         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
8607         messages all over the place; fix a counting problem in
8608         engine_add(); turn wait into a signed integer and set it to -1
8609         only if timer_next() returns 0; adjust wait time to be relative;
8610         don't call gen_ref_dec() if socket disappeared while we were
8611         processing it
8612
8613         * include/ircd_events.h: the pipe for signals is not a socket, so
8614         we must mark it as such--added SS_NOTSOCK for that special socket;
8615         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
8616         for the benefit of timer_run()
8617
8618         * configure.in: add --enable-pedantic and --enable-warnings to
8619         turn on (and off) -Wall -pedantic in CFLAGS
8620
8621 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
8622
8623         * ircd/s_conf.c: change "s_addr" element accesses to "address"
8624         element accesses
8625
8626         * include/s_conf.h: on some systems, "s_addr" is a macro; use
8627         "address" instead
8628
8629 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
8630
8631         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
8632         void in this file; add a missing semi-colon; declare errcode,
8633         codesize
8634
8635         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
8636
8637         * ircd/s_user.c (register_user): comment out spurious reference to
8638         nextping
8639
8640         * ircd/s_serv.c (server_estab): comment out spurious reference to
8641         nextping
8642
8643         * ircd/s_conf.c (read_configuration_file): comment out spurious
8644         reference to nextping and nextconnect
8645
8646         * ircd/s_bsd.c: comment out some spurious references to formerly
8647         global (now non-existant) variables; correct a couple of typos
8648
8649         * ircd/s_auth.c: pre-declare some functions referenced in the
8650         callback; correct a typo
8651
8652         * ircd/res.c (start_resolver): pass errno value of ENFILE
8653
8654         * ircd/listener.c (accept_connection): you know your API is messed
8655         up when...variables that shouldn't have been global crop up in
8656         other files
8657
8658         * ircd/list.c (free_client): substitution of == for =
8659
8660         * ircd/ircd_signal.c: include assert.h for assertion checking;
8661         check ev_data() to find out what signal generated event
8662
8663         * ircd/ircd_events.c: some references to the variable "timer"
8664         should have been references to the variable "ptr"
8665
8666         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
8667         ev_timer(ev) is already a timer pointer; declare codesize as a
8668         size_t to correct signedness issue; use timer_next(), not
8669         time_next()
8670
8671         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
8672         select fd out of struct pollfd in assertion checking; declare
8673         errcode and codesize; use timer_next(), not time_next()
8674
8675         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
8676         use function timer_next(), not time_next()
8677
8678         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
8679         use function timer_next(), not time_next()
8680
8681         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
8682         compiled sources; do make depend
8683
8684         * include/list.h: pre-declare struct Connection
8685
8686         * include/ircd_events.h (gen_ref_inc): cast to the right structure
8687         name
8688
8689         * include/s_auth.h: duh; missing */
8690
8691 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
8692
8693         * ircd/send.c: update write events status after sending data or
8694         accumulating data to be sent
8695
8696         * ircd/m_list.c (m_list): update write events status after
8697         canceling a running /list
8698
8699         * ircd/channel.c (list_next_channels): update write events status
8700         after listing a few channels
8701
8702         * ircd/s_bsd.c: extensive changes to update to new events model;
8703         remove on_write_unblocked() and the two implementations of
8704         read_message(), which have been deprecated by this change
8705
8706         * ircd/s_auth.c: set the socket events we're interested in for
8707         clients; simplify some logic that does the connect_nonb followed
8708         by the socket_add
8709
8710         * ircd/list.c: define free_connection() to free a connection
8711         that's become freeable once the struct Socket has been
8712         deallocated; fix up free_client() to take this new behavior into
8713         account
8714
8715         * ircd/ircd.c: call init_client_timer()
8716
8717         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
8718         to register connect-in-progress with events system; declare
8719         init_client_timer() (HACK!) to preserve rate-limiting behavior
8720
8721         * include/list.h: declare new free_connection()
8722
8723         * include/client.h: add a struct Socket to struct Connection
8724
8725 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
8726
8727         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
8728         SIGTERM into event callbacks; perform the actions in the
8729         callbacks, since they're not called in the context of the signal;
8730         set up the signal callbacks in the event engine
8731
8732         * ircd/ircd_events.c (signal_callback): we're supposed to look for
8733         a specific signal; don't generate an event if there is no signal
8734         structure for it
8735
8736         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
8737         connect_timer and ping_timer; massage try_connections() and
8738         check_pings() into timer callbacks that re-add themselves at the
8739         right time; remove ircd.c's "event_loop()"; initialize the event
8740         system and the connect_timer and ping_timer
8741
8742         * ircd/uping.c: correct a couple more typos
8743
8744         * ircd/s_auth.c: rework to use new events system
8745
8746         * ircd/os_solaris.c (os_connect_nonb): update to new interface
8747
8748         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
8749
8750         * ircd/os_linux.c (os_connect_nonb): update to new interface
8751
8752         * ircd/os_generic.c (os_connect_nonb): update to new interface
8753
8754         * ircd/os_bsd.c (os_connect_nonb): update to new interface
8755
8756         * include/s_auth.h: remove deprecated members of struct
8757         AuthRequest, replacing them with struct Socket and struct Timer
8758         structures; add flags to indicate when these structures have been
8759         released by the event system; remove the deprecated
8760         timeout_auth_queries()
8761
8762         * include/ircd_osdep.h (os_connect_nonb): connect could complete
8763         immediately, so change the interface to handle that possibility
8764
8765         * ircd/uping.c (uping_server): noticed and corrected a typo
8766
8767         * ircd/listener.c: set up to use ircd_event's struct Socket by
8768         adding an socket_add() call to inetport(), replacing
8769         free_listener() with socket_del() in close_listener(), and
8770         reworking accept_connection to be called as the callback
8771
8772         * ircd/ircd.c: add a call to IPcheck_init()
8773
8774         * ircd/IPcheck.c: remove IPcheck_expire(); rework
8775         ip_registry_expire() to be called from a timer; write
8776         IPcheck_init() to set up the expiration timer (hard-coded for a
8777         60-second expiration time)
8778
8779         * include/listener.h: add a struct Socket to the struct Listener;
8780         remove accept_connection()
8781
8782         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
8783
8784 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
8785
8786         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
8787         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
8788
8789         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
8790         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
8791
8792         * ircd/engine_poll.c: include config.h
8793
8794         * ircd/engine_kqueue.c: include config.h
8795
8796         * ircd/engine_devpoll.c: include config.h
8797
8798         * ircd/Makefile.in: include engine sources in compilation and make
8799         depend steps
8800
8801         * configure.in: add checks for enabling the /dev/poll- and
8802         kqueue-based engines
8803
8804         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
8805
8806         * ircd/Makefile.in: work in the engine sources
8807
8808 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
8809
8810         * ircd/m_settime.c: include ircd_snprintf.h
8811
8812         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
8813         parens around a construct that had both || and &&
8814
8815         * ircd/chkconf.c: #include "config.h" to get some important
8816         definitions
8817
8818         * ircd/Makefile.in: revamp ircd makefile for new build system
8819
8820         * doc/Makefile.in: revamp doc makefile for new build system
8821
8822         * config/*: Removed old build system files
8823
8824         * stamp-h.in: a stamp file
8825
8826         * install-sh: install-sh for new build system
8827
8828         * configure.in: configure.in for new build system
8829
8830         * configure: configure script for new build system (built by
8831         autoconf)
8832
8833         * config.sub: config.sub for new build system
8834
8835         * config.h.in: config.h.in for new build system (built by
8836         autoheader)
8837
8838         * config.guess: config.guess for new build system
8839
8840         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
8841         1.4)
8842
8843         * acinclude.m4: aclocal.m4 macros for new build system
8844
8845         * acconfig.h: config.h skeleton for new build system
8846
8847         * Makefile.in: modify for new build system
8848
8849 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
8850
8851         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
8852
8853         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
8854
8855         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
8856
8857 2001-05-01  Perry Lorier       <Isomer@coders.net>
8858         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
8859         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
8860                 when you have far far too many sockets in use.
8861         * {include,ircd}/iauth.c: A start on iauth support.
8862
8863 2001-05-01  Perry Lorier       <Isomer@coders.net>
8864         * ircd/s_err.c: Suggested wording change.
8865         * ircd/s_user.c: Users aren't target limited against +k users.
8866         * ircd/chkconf.c: Made it compile again, who knows if it works, but
8867                 now I can at least make install
8868         * various: Cleanups on m_*.c files.
8869
8870
8871 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
8872
8873         * ircd/s_misc.c (exit_client): make netsplit server notice say the
8874         right thing
8875
8876         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
8877         change to make Khaled happy...
8878
8879         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
8880         (do_whois): duh...
8881
8882 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
8883
8884         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
8885         turned up no more bugs
8886
8887         * ircd/ircd.c: use /* */ comments instead of // comments--all the
8888         world's not gcc :(
8889
8890         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
8891         // comments--all the world's not gcc :(
8892
8893         * ircd/runmalloc.c: finally garbage-collect unused file
8894
8895         * include/runmalloc.h: finally garbage-collect unused file
8896
8897         * ircd/<multiple files>: addition of '#include "config.h"' before
8898         all other includes in most .c files
8899
8900         * include/<multiple files>: remove includes of config.h, which are
8901         now going into the raw .c files
8902
8903 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
8904
8905         * ircd/m_whois.c (do_whois): display proper server name if the
8906         user is looking up himself
8907
8908         * ircd/m_who.c (m_who): disable match by servername or display of
8909         server names by non-opers
8910
8911         * include/ircd_policy.h: add define for
8912         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
8913         of CFV 165
8914
8915 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
8916
8917         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
8918         when we do a /stats k
8919
8920         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
8921         users from turning on +s and +g
8922
8923         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
8924         net.split notice
8925
8926         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
8927         /map for users
8928
8929         * ircd/m_whois.c (do_whois): pull-up of server name masking for
8930         /whois
8931
8932         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
8933         functions, pull-up
8934
8935         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
8936
8937         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
8938
8939         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
8940
8941         * ircd/channel.c (channel_modes): pull-up of channel key display
8942         as *
8943
8944         * include/ircd_policy.h: pull-up of ircd_policy.h
8945
8946         * include/client.h: pull-up of Set/ClearServNotice()
8947
8948         * ircd/gline.c (do_gline): report client name in G-line message
8949         (pull-up)
8950
8951         * ircd/s_user.c (register_user): pull-up--show IP address in some
8952         server notices dealing only with users; report which connection
8953         class has filled up
8954
8955         * ircd/s_stats.c (report_deny_list): use conf->flags &
8956         DENY_FLAGS_IP insteaf of conf->ip_kill
8957
8958         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
8959         insteaf of conf->ip_kill
8960
8961         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
8962         K-line by real name
8963
8964         * include/s_conf.h: use a flags field in struct DenyConf; define
8965         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
8966         pull-up of K-line by real name
8967
8968         * ircd/m_trace.c: pull-up of IP show for user connections
8969
8970         * doc/example.conf: pull-up of the realname K-line documentation
8971
8972         * ircd/ircd.c: forward port of pid file advisory locking mechanism
8973
8974 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
8975
8976         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
8977         all servers, rather than to only servers that have +w/+g/whatever
8978         users on them; among other things, this removes that atrocity
8979         known as sentalong[] from this function
8980
8981         * ircd/m_admin.c: must include ircd.h to declare "me"; must
8982         include hash.h to declare FindUser()
8983
8984         * ircd/m_wallusers.c: implementation of WALLUSERS
8985
8986         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
8987
8988         * ircd/m_wallops.c: only send WALLOPS to opers
8989
8990         * ircd/parse.c: add WALLUSERS command to parser table
8991
8992         * include/handlers.h: declare wallusers handlers
8993
8994         * include/msg.h: add WALLUSERS command
8995
8996         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
8997         flag, send only to appropriate opers
8998
8999 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
9000
9001         * ircd/uping.c: refit to use the new events interface
9002
9003         * ircd/res.c: refit to use the new events interface
9004
9005         * ircd/ircd_events.c: create timer_chg(), which permits a
9006         (non-periodic) timer's expire time to be modified; change the
9007         logic in timer_run() so that timers that were re-added while the
9008         event was being processed will not be destroyed prematurely
9009
9010         * include/uping.h: include the events header, declare some extra
9011         fields in struct UPing, remove timeout value, and define some
9012         flags for marking which cleanup items have yet to be done
9013
9014         * include/ircd_events.h: add a prototype for timer_chg() to change
9015         the expire time of a running timer
9016
9017 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
9018         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
9019         
9020 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
9021
9022         * config/configure.in: Add check for OpenBSD
9023
9024         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
9025         differs from generic BSD, particularly in its handling of
9026         _XOPEN_SOURCE.
9027         
9028 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
9029
9030         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
9031         have been added by a U-lined server, rather than going through the
9032         activate/deactivate logic; propagate G-line removals by U-lined
9033         servers as well
9034
9035         * ircd/gline.c: rename propagate_gline() to gline_propagate();
9036         make gline_propagate() return an int 0 (convenience return); only
9037         update lastmod in gline_activate() and gline_deactivate() if the
9038         current lastmod is non-zero, since 0 lastmod is our flag of a
9039         U-lined server having added a G-line
9040
9041         * include/gline.h (gline_propagate): exporting the G-line
9042         propagation function
9043
9044         * ircd/m_list.c (m_list): duh; permit explicit channel name
9045         specification only when /list gets two arguments ("Kev
9046         #wasteland") rather than when /list gets more than two
9047         arguments--nice braino
9048
9049 2001-01-29  Thomas Helvey <twhelvey1@home.com>
9050
9051         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
9052         unregistered clients to spam opers with protocol violation
9053         messages. Note: the bugfix may have eliminated some useful
9054         protocol violation messages.
9055         Please send protocol violation messages explicitly from the
9056         functions they are discovered in, you have much better context
9057         for the error there and it helps to document the behavior of the
9058         server. This was also a design bug in that it violated the
9059         "A function should do one thing" heuristic. Patching this one
9060         would have resulted in a continuous spawning of other bugs over
9061         the next 3 years, so I killed it. Check around for stuff this
9062         broke and readd the calls to protocol_violation in the functions
9063         that need to send the message.
9064
9065 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
9066
9067         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
9068         already existed, then the logic would (attempt to) skip it, but
9069         would not free the ban string; now the ban string is free'd and
9070         the ban count is decremented, releasing the ban for use
9071
9072         * ircd/s_user.c: make send_umode_out() take a prop argument
9073         instead of testing for the PRIV_PROPAGATE privilege itself; fix
9074         set_umode() to use this new argument, calculating it before
9075         calculating the new privileges for a -o'd user
9076
9077         * ircd/m_oper.c (m_oper): pass the new prop argument to
9078         send_umode_out()
9079
9080         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
9081         that we're not actually going to add because they already exist;
9082         test that particular bit before adding to the linked list
9083
9084         * include/s_user.h: add a prop argument to send_umode_out() to
9085         indicate whether or not to propagate the user mode
9086
9087 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
9088
9089         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
9090         it would have written; upper-bound the number to prevent overflows
9091         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
9092         into account the fact that ircd_vsnprintf() already takes the
9093         terminal \0 into account
9094
9095 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
9096
9097         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
9098         down an apparent buffer overflow; remove msgq_map(), since it's no
9099         longer used anywhere; slight tweaks to prevent off-by-one errors,
9100         but these can't explain the problems we've seen
9101
9102         * include/msgq.h: remove msgq_map(), since it's no longer used
9103         anywhere
9104
9105 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
9106
9107         * ircd/s_user.c (set_nick_name): call client_set_privs() after
9108         parsing user modes
9109
9110 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
9111
9112         * ircd/s_bsd.c (read_message): fix a typo in the select version of
9113         read_message()
9114
9115         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
9116         its argument to be an lvalue, which means we can't use
9117         whowas_clean()'s handy-dandy "return ww" feature
9118
9119         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
9120
9121 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
9122
9123         * ircd/ircd_events.c (timer_run): it's possible that the timer got
9124         deleted during the callback processing, so don't go to the bother
9125         of requeuing it if the destroy flag is set
9126
9127         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
9128         out of config.h if this is a *BSD; include errno.h (oops);
9129         decrement error count after an hour using a timer; use FD_SETSIZE
9130         constant instead of IRCD_FD_SETSIZE constant; fill in event
9131         processing code
9132
9133         * ircd/engine_poll.c: include errno.h (oops); decrement error
9134         count after an hour using a timer; fill in event processing code
9135
9136         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
9137         count after an hour using a timer; assert events filter is either
9138         EVFILT_READ or EVFILT_WRITE; fill in event processing code
9139
9140         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
9141         count after an hour using a timer; fill in event processing code
9142
9143 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
9144
9145         * ircd/client.c: fixed feattab; basically, when I changed features
9146         to use small integers specifying bit positions, instead of the
9147         bits themselves, I forgot to update feattab to not | these
9148         privileges together; also fixed a bug in the antiprivs masking
9149         loop in client_set_privs()--last index wouldn't get parsed
9150
9151 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
9152
9153         * ircd/ircd_events.c: call event_generate() with new data
9154         argument; make it set that field in struct Event; make
9155         socket_add() return the value of the eng_add callback
9156
9157         * ircd/engine_select.c: make engine_add() return a
9158         successful/unsuccessful status; add bounds-checking outside of an
9159         assert; use accessor macros; use log_write(), not the deprecated
9160         ircd_log(); add an assert to engine_loop() to double-check for
9161         data structure corruption
9162
9163         * ircd/engine_poll.c: make engine_add() return a
9164         successful/unsuccessful status; add bounds-checking outside of an
9165         assert; use accessor macros; use log_write(), not the deprecated
9166         ircd_log(); add an assert to engine_loop() to double-check for
9167         data structure corruption
9168
9169         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
9170
9171         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
9172
9173         * include/ircd_events.h: define some accessor macros; add ev_data
9174         to struct Event for certain important data--errno values, for
9175         instance; make EngineAdd callback tell us if it was successful or
9176         not; add extra argument to event_generate(); make socket_add()
9177         return the status from EngineAdd
9178
9179 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
9180
9181         * ircd/ircd_events.c: pass initializer information about how many
9182         total _filedescriptors_ may be opened at once
9183
9184         * ircd/ircd.c: use exported "running" instead of unexported
9185         thisServer.running
9186
9187         * ircd/engine_select.c: implementation of an event engine based on
9188         select()
9189
9190         * ircd/engine_poll.c: implementation of an event engine based on
9191         poll()
9192
9193         * include/ircd_events.h: pass the engine initializer an integer
9194         specifing how many _filedescriptors_ may be opened at once
9195
9196         * include/ircd.h: running has to be exported for the engine_*
9197         event loops
9198
9199 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
9200
9201         * ircd/ircd_events.c: include some needed headers; add some
9202         comments; make evEngines[] const; bundle sig_sock and sig_fd into
9203         a struct named sigInfo; rework struct evInfo to have a queue of
9204         _generators_, and only when threaded; added a gen_init() function
9205         to centralize generator initialization; fix various compile-time
9206         errors; rework event_add() for new queueing scheme and checked for
9207         compile-time errors; add casts where needed; spell evEngines[]
9208         correctly; make engine_name() return const char*
9209
9210         * include/ircd_events.h: type EventCallBack depends on struct
9211         Event, so pre-declare it; put _event_ queue into generators, and
9212         only when threaded; give engine data a union to store both ints
9213         and pointers; make engine name a const; fix gen_ref_dec() macro;
9214         make engine_name() return a const char*
9215
9216         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
9217         down with the non-static functions; modify event_execute() to use
9218         the new gen_ref_dec() to simplify code; make sure event_generate()
9219         does not generate new events for generators marked for destruction
9220
9221         * include/ircd_events.h: the engines, at least, may need to modify
9222         reference counts to keep generators from going away while
9223         something still points at them, so add reference counter
9224         manipulators and export gen_dequeue() for them
9225
9226         * ircd/ircd_events.c: set up the list of engines to try; set up
9227         the signal struct Socket; rename netInfo to evInfo; move static
9228         functions near the beginning of the file; do away with
9229         signal_signal() (since we no longer keep a signal count ourselves)
9230         and call event_generate() directly from signal_callback--also
9231         renamed some functions; allow signal_callback() to read up to
9232         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
9233         initialize the entire event system; add event_loop() to call the
9234         engine's event loop; initialize new struct GenHeader member,
9235         gh_engdata; remove timer_next(); add socket_add() function to add
9236         a socket; add socket_del() to mark a socket for deletion; add
9237         socket_state() to transition a socket between states; add
9238         socket_events() to set what events we're interested in on the
9239         socket; add engine_name() to retrieve event engine's name
9240
9241         * include/ircd_events.h: add engine data field to struct
9242         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
9243         note about states vs s_events; remove signal count; fold union
9244         Generator back into struct Event; remove count members from struct
9245         Generators; redefine engine callbacks to not take a struct
9246         Engine*; add explanatory comments to callback definitions; add
9247         some engine callbacks to handle operations; remove struct Engine
9248         flag member--can detect single flag from eng_signal member; add
9249         event_init(), event_loop(), engine_name(), and the socket_*()
9250         functions; make timer_next() a macro to avoid a function call
9251
9252 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
9253
9254         * include/ircd_events.h: rename to ircd_events.h, since it handles
9255         events, not just networking stuff; add signal support; more
9256         structural rearrangement
9257
9258         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
9259         events, not just networking stuff; add signal support; more
9260         structural rearrangement
9261
9262 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
9263
9264         * ircd/ircd_network.c: implement timer API; add reference counts
9265         appropriately
9266
9267         * include/ircd_network.h: firm up some pieces of the interface;
9268         split out members everything has into a separate structure; add
9269         reference counts; add timer API
9270
9271 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
9272
9273         * ircd/ircd_network.c: static data and event manipulation
9274         functions for new event processing system
9275
9276         * include/ircd_network.h: data structures for new event processing
9277         system
9278
9279 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
9280
9281         * ircd/whowas.c: Completely re-did the old allocation scheme by
9282         turning it into a linked list, permitting the
9283         NICKNAMEHISTORYLENGTH feature to be changed on the fly
9284
9285         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
9286         feature instead of old #define
9287
9288         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
9289         integer feature with a notify callback (whowas_realloc)
9290
9291         * ircd/client.c (client_set_privs): second memset was supposed to
9292         be over antiprivs, not privs; thanks, Chris Behrens
9293         <cbehrens@xo.com> for pointing that out...
9294
9295         * include/whowas.h: new elements for an extra linked list in
9296         struct Whowas; a notify function for feature value changes
9297
9298         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
9299
9300         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
9301
9302 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
9303
9304         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
9305         compile-time option--now in features subsystem
9306
9307         * ircd/motd.c (motd_init): rework motd_init() to be called as the
9308         notify function for MPATH and RPATH features (should probably
9309         split it up a bit, though...)
9310
9311         * ircd/m_privs.c (mo_privs): if called with no parameters, return
9312         privs of the caller, rather than an error
9313
9314         * ircd/m_list.c: pull usage message into its own function; pull
9315         list parameter processing into its own function that does not
9316         modify the contents of the parameter; add list_set_default() to
9317         set the default list parameter (uses the notify hook); rework
9318         m_list() to make use of these functions; removed dead code
9319
9320         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
9321         we have no notify handler
9322
9323         * ircd/ircd_features.c: add notify callback for notification of
9324         value changes; give mark callback an int return value to indicate
9325         whether or not to call the notify callback; fix up feature macros
9326         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
9327         string handling in feature_set() to deal with def_str being a null
9328         pointer; wrote feature_init() to set up all defaults appropriately
9329
9330         * ircd/ircd.c (main): call feature_init() instead of
9331         feature_mark(), to avoid calling notify functions while setting up
9332         defaults
9333
9334         * ircd/client.c: updated to deal with new privileges structure
9335
9336         * ircd/class.c: updated so init_class() can be called should one
9337         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
9338         DEFAULTMAXSENDQLENGTH be changed
9339
9340         * include/ircd_log.h: log_feature_mark() updated to fit with new
9341         API changes
9342
9343         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
9344         feature_init() function (found necessary since adding the notify
9345         stuff and notifying motd.c during start-up...before we defined
9346         RPATH!)
9347
9348         * include/client.h: move privs around to enable addition of more
9349         bits if necessary; based on the FD_* macros
9350
9351         * include/channel.h: declare list_set_default (actually located in
9352         m_list.c *blanche*)
9353
9354         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
9355         AVBANLEN*MAXSILES) from features subsystem
9356
9357         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
9358         anything anymore
9359
9360         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
9361         the features subsystem
9362
9363         * ircd/s_auth.c (start_auth): NODNS migrated to the features
9364         subsystem
9365
9366         * ircd/random.c: created random_seed_set() function to set seed
9367         value, along with some stuff to make ircrandom() a little more
9368         random--state preserving, xor of time instead of direct usage,
9369         etc.; it's still a pseudo-random number generator, though, and
9370         hopefully I haven't broken the randomness
9371
9372         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
9373
9374         * ircd/m_join.c: use features interface to retrieve
9375         MAXCHANNELSPERUSER
9376
9377         * ircd/ircd_features.c: add NODISP flag for super-secret features;
9378         add a whole bunch of new features migrated over from make config
9379
9380         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
9381         CONNECTTIMEOUT, and TIMESEC
9382
9383         * ircd/client.c (client_get_ping): use features interface to
9384         retrieve PINGFREQUENCY
9385
9386         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
9387         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
9388
9389         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
9390         features subsystem, we have to add something explicit
9391
9392         * ircd/channel.c: use features interface to retrieve
9393         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
9394         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
9395         and AVBANLEN
9396
9397         * ircd/Makefile.in: run make depend
9398
9399         * include/supported.h (FEATURESVALUES): update to reference
9400         feature settings
9401
9402         * include/random.h: add prototype for random_seed_set
9403
9404         * include/ircd_features.h: add several more features
9405
9406         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
9407         subsystem
9408
9409         * config/config-sh.in: feature-ized some more stuff
9410
9411         * include/motd.h: some new elements in motd.h for motd.c changes
9412
9413         * ircd/motd.c: motd_cache() now searches a list of already cached
9414         MOTD files; saves us from having duplicate caches in memory if
9415         there are two identical T-lines for two different sites...
9416
9417 2001-01-02  Perry Lorier <isomer@coders.net>
9418         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
9419         Amarande.
9420
9421 2001-01-02  Perry Lorier <isomer@coders.net>
9422         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
9423         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
9424                 to guppy for noticing, and hektik for providing the fix.
9425         * misc others: Minor cleanups, added more protocol_violations, ripped
9426                 out more P09 stuffs, bit more protocol neg stuff.
9427
9428 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
9429
9430         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
9431         space (*sigh* stupid clients...)
9432
9433         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
9434         ircd_features.[ch]
9435
9436         * ircd/s_err.c: get rid of GODMODE conditionals
9437
9438         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
9439         calls into the features subsystem for various serveropts
9440         characters
9441
9442         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
9443
9444         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
9445         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
9446         NOFLOWCONTROL conditional
9447
9448         * ircd/s_auth.c: use features subsystem to determine value of
9449         KILL_IPMISMATCH
9450
9451         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
9452         features subsystem to determine the setting of IDLE_FROM_MSG
9453
9454         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
9455
9456         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
9457         use features subsystem to get motd file names
9458
9459         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
9460         subsystem
9461
9462         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
9463         us no good; use features subsystem to figure out if we need to do
9464         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
9465         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
9466         features subsystem
9467
9468         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
9469
9470         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
9471         subsystem
9472
9473         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
9474
9475         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
9476         from getting marked if they were already set to something...
9477
9478         * ircd/ircd_features.c: add a flag to indicates read-only access;
9479         add several new features that used to be compile-time selected
9480
9481         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
9482         access to motd files (what the heck?); make sure to initialize the
9483         feature subsystem before trying to write the config file
9484
9485         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
9486         use feature_bool() to figure out if we're using the FERGUSON
9487         flusher
9488
9489         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
9490         remove the clause that creates empty files of that name; also ran
9491         make depend
9492
9493         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
9494         there is no easy way to bounds-check it at present
9495
9496         * include/querycmds.h: make sure ircd_features.h is included; use
9497         feature_str(FEAT_DOMAINNAME) in calls to match()
9498
9499         * include/ircd_features.h: many new features that used to be
9500         compile-time selected
9501
9502         * config/config-sh.in: add * to DOMAINNAME; try also using first
9503         argument to search in /etc/resolv.conf; removed many compile-time
9504         options that now can be configured through the features system
9505
9506 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
9507
9508         * doc/api/log.txt: how to use the logging API
9509
9510         * doc/api/features.txt: how to use the features API
9511
9512         * doc/api/api.txt: how to write API documentation
9513
9514         * include/ircd_features.h: rearranged a couple of features for
9515         neatness purposes
9516
9517         * ircd/ircd_features.c: cleaned up the macros some; rearranged
9518         some code to all go into the switch; rearranged a couple of
9519         features for neatness purposes
9520
9521 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
9522         * ircd/os_bsd.c: Added os_set_tos for BSD users.
9523
9524 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
9525
9526         * ircd/ircd_features.c: Isomer almost got it right; you need to
9527         use F_I(), since it's an integer value, not a boolean value.  The
9528         asserts in feature_int would catch you out...  Also made the F_*
9529         macros take flags
9530
9531         * ircd/s_err.c: define RPL_PRIVS reply
9532
9533         * ircd/parse.c: put new PRIVS command into command table
9534
9535         * ircd/m_privs.c (mo_privs): message handler to report operator
9536         privileges
9537
9538         * ircd/ircd_features.c: declare new features OPER_SET and
9539         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
9540         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
9541
9542         * ircd/client.c: simplify client_set_privs() with a table that
9543         defines what features to test for; add new client_report_privs()
9544
9545         * ircd/Makefile.in: compile new m_privs.c; run make depend
9546
9547         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
9548         an operator's privileges
9549
9550         * include/msg.h: define new command: PRIVS
9551
9552         * include/ircd_features.h: create new features OPER_SET and
9553         LOCOP_SET for controlling access to /set
9554
9555         * include/handlers.h (mo_privs): declare message handler for
9556         reporting oper privileges
9557
9558         * include/client.h (client_report_privs): declare function to
9559         report what privileges an oper has
9560
9561         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
9562         report that a user is an oper if the oper doing the /whois had
9563         PRIV_SEE_OPERS
9564
9565 2000-12-17  Isomer <Isomer@coders.net>
9566         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
9567
9568 2000-12-17  Isomer <Isomer@coders.net>
9569         * ircd/os_linux.c: add TOS stuffs
9570
9571         * ircd/listener.c: add TOS stuffs
9572
9573 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
9574
9575         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
9576         to indicate a user is an oper
9577
9578         * ircd/s_user.c: clear privileges setting when deopping; don't
9579         propagate +o unless user has PRIV_PROPAGATE privilege
9580
9581         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
9582         function and replaced how the server option string is generated
9583
9584         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
9585
9586         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
9587         not to indicate the user is an operator
9588
9589         * ircd/m_who.c: use HasPriv to determine whether or not a user
9590         should be displayed in the list of opers
9591
9592         * ircd/m_version.c: call debug_serveropts() to get server option
9593         string
9594
9595         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
9596         whether or not to show oper status
9597
9598         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
9599         whether or not to show oper status
9600
9601         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
9602         checks with HasPriv check; remove dead code
9603
9604         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
9605         checks with HasPriv check
9606
9607         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
9608         use feature_bool to check if disabled
9609
9610         * ircd/m_oper.c (m_oper): set oper priviliges
9611
9612         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
9613         check
9614
9615         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
9616         can kill
9617
9618         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
9619         check
9620
9621         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
9622         use feature_bool to check if disabled
9623
9624         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
9625         #ifdef conditional with a HasPriv check
9626
9627         * ircd/m_gline.c (mo_gline): rework permissions checking
9628         structure; use feature_bool to check if any part is disabled
9629
9630         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
9631         check; remove dead code
9632
9633         * ircd/m_clearmode.c: use feature_bool() to detect if we're
9634         disabled; use HasPriv to figure out what we're permitted to do;
9635         only allow clearmode on moded channels
9636
9637         * ircd/ircd_features.c: define various features; use HasPriv to
9638         verify permissions to set/reset
9639
9640         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
9641         conditionals
9642
9643         * ircd/client.c (client_set_privs): function to set an oper's
9644         privileges
9645
9646         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
9647
9648         * include/whocmds.h: deconditionalize several macros and
9649         substitute appropriate calls to HasPriv()
9650
9651         * include/s_debug.h: get rid of global serveropts[]; define new
9652         function debug_serveropts() to build that string on the fly
9653
9654         * include/ircd_features.h: define some features
9655
9656         * include/client.h: add privs member to struct Connection; define
9657         various priviledges
9658
9659         * include/channel.h: no longer using IsOperOnLocalChannel; remove
9660         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
9661
9662         * doc/Configure.help: remove help information for deprecated
9663         options
9664
9665         * config/config-sh.in: remove certain deprecated options having to
9666         do with what opers can and cannot do--first stage in moving
9667         compile-time constants into the .conf
9668
9669 2000-12-16  Isomer <Isomer@coders.net>
9670         * ircd/parse.c: detect if the prefix is missing and try and recover
9671         instead of coring.
9672
9673 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
9674
9675         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
9676         code that would sometimes result in the log file not being
9677         reopened--which meant that a user could connect and get the
9678         logging output--oops
9679
9680         * ircd/Makefile.in: run make depend...
9681
9682         * ircd/s_stats.c: get rid of report_feature_list()
9683
9684         * ircd/s_err.c: add the 'bad value' error message, shift error
9685         messages over somewhat
9686
9687         * ircd/s_debug.c (debug_init): call log_debug_init with the
9688         use_tty flag
9689
9690         * ircd/s_conf.c (read_configuration_file): unmark features before
9691         reading the config file, then reset unmarked features after
9692         reading the config file
9693
9694         * ircd/m_stats.c: use feature_report() instead of
9695         report_feature_list()
9696
9697         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
9698         special 'mark' flags and use them; add the stuff needed by the
9699         features API
9700
9701         * ircd/ircd_features.c: rework the features API and add gobs of
9702         comments to try to explain what some of these complex functions
9703         are actually doing
9704
9705         * include/s_stats.h: get rid of report_feature_list(); use
9706         feature_report() instead
9707
9708         * include/numeric.h: added a new error message and shifted old
9709         values over some--this is, after all, an alpha
9710
9711         * include/ircd_log.h: log_debug_init now takes an integer to tell
9712         it if it should be using the tty; added a couple of functions
9713         required by the features API
9714
9715         * include/ircd_features.h: add an enum and some more functions to
9716         flesh out the feature API--it should now be possible to put all
9717         those compile-time constants in the config file!
9718
9719         * ircd/send.c: got the direction of the assert incorrect...
9720
9721         * ircd/send.c: implement the efficiency of flush_connections by
9722         creating a linked list of struct Connection's with queued data;
9723         also get rid of flush_sendq_except and make sure to yank
9724         connections out of the list when their sendQs become empty (notice
9725         the assertion in flush_connections!)
9726
9727         * ircd/s_bsd.c (close_connection): must yank the Connection out of
9728         the sendq list
9729
9730         * ircd/list.c (dealloc_connection): must yank the Connection out
9731         of the sendq list
9732
9733         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
9734         deprecated flush_sendq_except
9735
9736         * ircd/client.c: define a couple new helper functions for sendq
9737         threading--this will make the flush_connections function in send.c
9738         considerably more efficient by creating a linked list of
9739         Connections that have queued data to send
9740
9741         * include/send.h: remove flush_sendq_except, as it's not used
9742         anymore
9743
9744         * include/client.h: declare a couple new helper functions for the
9745         sendq threading system
9746
9747 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
9748
9749         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
9750         parse all arguments
9751
9752         * ircd/s_debug.c (count_memory): modify to report for clients and
9753         connections, not local clients and remote clients
9754
9755         * ircd/list.c: fiddle with the client-fiddling functions to take
9756         into account the divorce of struct Connection from struct Client
9757
9758         * ircd/ircd.c: define a struct Connection for me, initialize it,
9759         and link it into the right place (ewww, globals!)
9760
9761         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
9762         struct Client into struct Client and struct Connection; redefine
9763         local-portion accessor macros to go through struct Client to the
9764         struct Connection; define struct Connection accessor macros
9765
9766 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
9767
9768         * ircd/whowas.c: missed a couple of accesses to a struct Client
9769
9770         * ircd/uping.c: missed a couple of accesses to a struct Client
9771
9772         * ircd/send.c: missed a couple of accesses to a struct Client
9773
9774         * ircd/s_user.c: missed a couple of accesses to a struct Client
9775
9776         * ircd/s_misc.c: missed a couple of accesses to a struct Client
9777
9778         * ircd/s_conf.c: missed a couple of accesses to a struct Client
9779
9780         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
9781
9782         * ircd/s_auth.c: missed a couple of accesses to a struct Client
9783
9784         * ircd/res.c: missed a couple of accesses to a struct Client
9785
9786         * ircd/parse.c: missed a couple of accesses to a struct Client
9787
9788         * ircd/m_whois.c: use new accessor macros for struct Client
9789
9790         * ircd/m_who.c: use new accessor macros for struct Client
9791
9792         * ircd/m_wallchops.c: use new accessor macros for struct Client
9793
9794         * ircd/m_version.c: use new accessor macros for struct Client
9795
9796         * ircd/m_userip.c: use new accessor macros for struct Client
9797
9798         * ircd/m_userhost.c: use new accessor macros for struct Client
9799
9800         * ircd/m_user.c: use new accessor macros for struct Client
9801
9802         * ircd/m_uping.c: use new accessor macros for struct Client
9803
9804         * ircd/m_trace.c: use new accessor macros for struct Client
9805
9806         * ircd/m_topic.c: use new accessor macros for struct Client
9807
9808         * ircd/m_time.c: use new accessor macros for struct Client
9809
9810         * ircd/m_stats.c: use new accessor macros for struct Client
9811
9812         * ircd/m_squit.c: use new accessor macros for struct Client
9813
9814         * ircd/m_silence.c: use new accessor macros for struct Client
9815
9816         * ircd/m_server.c: use new accessor macros for struct Client;
9817         remove dead code
9818
9819         * ircd/m_rpong.c: use new accessor macros for struct Client
9820
9821         * ircd/m_rping.c: use new accessor macros for struct Client
9822
9823         * ircd/m_quit.c: use new accessor macros for struct Client
9824
9825         * ircd/m_privmsg.c: use new accessor macros for struct Client
9826
9827         * ircd/m_pong.c: use new accessor macros for struct Client; remove
9828         dead code
9829
9830         * ircd/m_ping.c: use new accessor macros for struct Client
9831
9832         * ircd/m_pass.c: use new accessor macros for struct Client
9833
9834         * ircd/m_part.c: use new accessor macros for struct Client
9835
9836         * ircd/m_oper.c: use new accessor macros for struct Client
9837
9838         * ircd/m_notice.c: use new accessor macros for struct Client
9839
9840         * ircd/m_nick.c: use new accessor macros for struct Client
9841
9842         * ircd/m_names.c: use new accessor macros for struct Client
9843
9844         * ircd/m_mode.c: use new accessor macros for struct Client
9845
9846         * ircd/m_map.c: use new accessor macros for struct Client
9847
9848         * ircd/m_list.c: use new accessor macros for struct Client
9849
9850         * ircd/m_links.c: use new accessor macros for struct Client;
9851         remove some dead code
9852
9853         * ircd/m_kill.c: use new accessor macros for struct Client; remove
9854         some dead code
9855
9856         * ircd/m_kick.c: use new accessor macros for struct Client
9857
9858         * ircd/m_join.c: use new accessor macros for struct Client; remove
9859         some dead code
9860
9861         * ircd/m_ison.c: use new accessor macros for struct Client
9862
9863         * ircd/m_invite.c: use new accessor macros for struct Client
9864
9865         * ircd/m_info.c: use new accessor macros for struct Client
9866
9867         * ircd/m_gline.c: use new accessor macros for struct Client
9868
9869         * ircd/m_error.c: use new accessor macros for struct Client
9870
9871         * ircd/m_create.c: use new accessor macros for struct Client
9872
9873         * ircd/m_connect.c: use new accessor macros for struct Client;
9874         removed some dead code
9875
9876         * ircd/m_burst.c: use new accessor macros for struct Client
9877
9878         * ircd/m_away.c: use new accessor macros for struct Client
9879
9880         * ircd/m_admin.c: use new accessor macros for struct Client
9881
9882         * ircd/hash.c: missed a couple of accesses to a struct Client
9883
9884         * ircd/gline.c: missed a couple of accesses to a struct Client
9885
9886         * ircd/crule.c: missed a couple of accesses to a struct Client
9887
9888         * ircd/class.c: missed an access to a struct Client
9889
9890         * ircd/channel.c: missed a couple of accesses to a struct Client
9891
9892         * ircd/IPcheck.c: missed an access to a struct Client
9893
9894         * include/querycmds.h: fix a couple of stats macros to use
9895         structure accessor macros
9896
9897         * include/client.h: change structure member names to highlight any
9898         places in the code I've missed
9899
9900 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
9901
9902         * ircd/whowas.c: use new struct Client accessor macros
9903
9904         * ircd/whocmds.c: use new struct Client accessor macros
9905
9906         * ircd/send.c: use new struct Client accessor macros
9907
9908         * ircd/s_user.c: use new struct Client accessor macros; removed
9909         some dead code
9910
9911         * ircd/s_serv.c: use new struct Client accessor macros; removed
9912         some dead code
9913
9914         * ircd/s_numeric.c: use new struct Client accessor macros
9915
9916         * ircd/s_misc.c: use new struct Client accessor macros
9917
9918         * ircd/s_debug.c: use new struct Client accessor macros
9919
9920         * ircd/s_conf.c: use new struct Client accessor macros
9921
9922         * ircd/s_bsd.c: use new struct Client accessor macros
9923
9924         * ircd/s_auth.c: use new struct Client accessor macros
9925
9926         * ircd/parse.c: use new struct Client accessor macros
9927
9928         * ircd/packet.c: use new struct Client accessor macros
9929
9930         * ircd/numnicks.c: use new struct Client accessor macros
9931
9932         * ircd/motd.c: use new struct Client accessor macros
9933
9934         * ircd/listener.c: use new struct Client accessor macros
9935
9936         * ircd/list.c: use new struct Client accessor macros
9937
9938         * ircd/jupe.c: use new struct Client accessor macros
9939
9940         * ircd/ircd_snprintf.c: use new struct Client accessor macros
9941
9942         * ircd/ircd_reply.c: use new struct Client accessor macros
9943
9944         * ircd/ircd_relay.c: use new struct Client accessor macros
9945
9946         * ircd/ircd.c: use new struct Client accessor macros
9947
9948         * ircd/gline.c: catch some instances of me.<stuff> I missed
9949         previously
9950
9951         * ircd/client.c: use cli_ instead of con_
9952
9953         * ircd/class.c: use cli_ instead of con_
9954
9955         * ircd/channel.c: use cli_ instead of con_
9956
9957         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
9958         of me.<stuff> I missed previously
9959
9960         * include/client.h: use cli_ instead of con_...seemed like a good
9961         idea at the time *shrug*
9962
9963 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
9964
9965         * ircd/hash.c: use struct Client accessor macros
9966
9967         * ircd/gline.c: use struct Client accessor macros
9968
9969         * ircd/crule.c: use struct Client accessor macros
9970
9971         * ircd/client.c: use struct Client accessor macros; remove some
9972         dead code
9973
9974         * ircd/class.c: use struct Client accessor macros
9975
9976         * ircd/channel.c: use struct Client accessor macros; remove some
9977         dead code
9978
9979         * ircd/IPcheck.c: use struct Client accessor macros
9980
9981         * include/numnicks.h: use struct Client accessor macros
9982
9983         * include/client.h: first step to divorcing struct Client and
9984         struct Connection--define accessor macros and use them
9985
9986         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
9987         uplink would remove them.  This is because the removal protocol
9988         message wasn't being sent to the uplinks.  This is fixed by fixing
9989         propagate_gline() to send the proper number of arguments depending
9990         on whether or not we're adding or deleting the Uworld gline, and
9991         by having gline_deactivate() make sure to turn off the active bit
9992         and call propagate_gline() if it's a Uworld gline
9993
9994 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
9995
9996         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
9997
9998         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
9999         anywhere intelligent...
10000
10001 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
10002
10003         * ircd/send.c (send_queued): call deliver_it with appropriate
10004         arguments
10005
10006         * ircd/s_serv.c: reorder a couple of headers--cosmetic
10007
10008         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
10009         MsgQ
10010
10011         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
10012         with appropriate iovec
10013
10014         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
10015         with appropriate iovec
10016
10017         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
10018         with appropriate iovec
10019
10020         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
10021         appropriate iovec
10022
10023         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
10024         exactly how much we're trying to write out to the fd
10025
10026         * include/s_bsd.h: make deliver_it take a struct MsgQ
10027
10028         * include/msgq.h: add a len_p argument to msgq_mapiov to help
10029         detect short writes that indicate possible socket blocking
10030
10031         * include/ircd_osdep.h: declare os_sendv_nonb()
10032
10033         * ircd/channel.c (modebuf_mode): don't add empty modes...
10034
10035 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
10036
10037         * include/send.h: add prio argument to send_buffer to select
10038         between normal and priority queues
10039
10040         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
10041         call
10042
10043         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
10044
10045         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
10046         call
10047
10048         * ircd/channel.c (send_channel_modes): add prio argument to
10049         send_buffer call
10050
10051         * ircd/send.c (send_buffer): add a prio argument to select the
10052         priority queue; update send.c functions to use it
10053
10054         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
10055         msgq_add; add a prio argument to msgq_add to select the priority
10056         queue
10057
10058         * include/msgq.h: remove msgq_prio; add a prio argument to
10059         msgq_add
10060
10061         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
10062         using msgq functions instead of dbuf functions; remove old, dead
10063         sendto_* functions; redo send_buffer to take a struct MsgBuf;
10064         rework sendcmdto_* functions to make use of the new struct MsgBuf
10065
10066         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
10067         make appropriate use of struct MsgBuf
10068
10069         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
10070         system and report it
10071
10072         * ircd/s_conf.c (read_configuration_file): use
10073         sendto_opmask_butone instead of the now dead sendto_op_mask
10074
10075         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
10076         calls on sendQ
10077
10078         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
10079
10080         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
10081         msgq_clean
10082
10083         * ircd/m_version.c: fix spelling in comments marking dead code
10084
10085         * ircd/m_userip.c (userip_formatter): restructure to make use of
10086         struct MsgBuf
10087
10088         * ircd/m_userhost.c (userhost_formatter): restructure to make use
10089         of struct MsgBuf
10090
10091         * ircd/m_stats.c: use MsgQLength on a sendQ
10092
10093         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
10094         sendQ; mark a piece of dead code
10095
10096         * ircd/m_names.c: use send_reply instead of sendto_one
10097
10098         * ircd/m_mode.c: use new mode; remove old dead code
10099
10100         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
10101
10102         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
10103         dead code
10104
10105         * ircd/listener.c (accept_connection): use sendto_opmask_butone
10106         instead of sendto_op_mask
10107
10108         * ircd/list.c (free_client): use MsgQClear to clear sendQ
10109
10110         * ircd/ircd_reply.c: remove send_error_to_client; restructure
10111         send_reply to make use of struct MsgBuf
10112
10113         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
10114         since its no longer used (at least currently)
10115
10116         * ircd/channel.c: restructure send_channel_modes to make use of
10117         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
10118         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
10119
10120         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
10121
10122         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
10123
10124         * include/send.h: send_buffer now takes a struct MsgBuf * instead
10125         of a char *; flush_sendq_except now takes no arguments, as sendq
10126         flushing currently only happens in dbuf.h and sendQ is a struct
10127         MsgQ; remove prototypes for a lot of old sendto_* functions that
10128         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
10129         no longer needed, and the latter is identical to BUFSIZE in
10130         ircd_defs.h
10131
10132         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
10133         instead of a char *; also make it return void, instead of char *
10134
10135         * include/msgq.h: add msgq_append and msgq_bufleft functions
10136
10137         * include/client.h: use a struct MsgQ instead of a struct DBuf for
10138         sendq
10139
10140         * doc/Configure.help: Remove help for compile-time options that
10141         have gone away
10142
10143         * config/config-sh.in: remove CONFIG_NEWMODE
10144
10145         * ircd/m_server.c (mr_server): don't send server IPs in any server
10146         notices
10147
10148         * ircd/msgq.c (msgq_vmake): add \r\n to messages
10149
10150 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
10151
10152         * include/msgq.h: declare the MsgQ API
10153
10154         * ircd/msgq.c: implementation of new MsgQ system
10155
10156 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
10157
10158         * ircd/ircd_features.c: #include was supposed to be for
10159           ircd_features.h, not features.h--missed when I had to do a
10160           rename because of namespace collision
10161
10162 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10163         * ircd/m_topic.c: Added missing braces that caused all remote
10164           topics to be ignored.
10165
10166 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
10167
10168         * ircd/m_create.c: I'm tired of the exit_client warning :)
10169         (ms_create): discovered that exit_client() was being called with
10170         too few arguments
10171
10172         * ircd/s_misc.c (exit_client): remove all dependance on
10173         FNAME_USERLOG, since that's now gone; log only to LS_USER
10174
10175         * ircd/s_debug.c: USE_SYSLOG no longer means anything
10176
10177         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
10178         log to LS_OPER
10179
10180         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
10181
10182         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
10183
10184         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
10185         the same purpose as LS_USER and LS_OPER
10186
10187         * config/config-sh.in: remove no longer relevant log config
10188         variables
10189
10190         * ircd/uping.c (uping_init): use log_write instead of ircd_log
10191
10192         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
10193
10194         * ircd/s_conf.c: use log_write instead of ircd_log
10195
10196         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
10197
10198         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
10199         ircd_log
10200
10201         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
10202
10203         * ircd/m_who.c: use log_write instead of write_log; no longer
10204         conditionalize on WPATH; mark dead ircd_log calls
10205
10206         * ircd/m_uping.c: mark dead ircd_log call
10207
10208         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
10209
10210         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
10211         ircd_log calls
10212
10213         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
10214
10215         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
10216         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
10217
10218         * ircd/m_kill.c: mark dead ircd_log calls
10219
10220         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
10221         ircd_log
10222
10223         * ircd/m_clearmode.c: use log_write instead of write_log; no
10224         longer conditionalize on OPATH
10225
10226         * ircd/jupe.c: use log_write instead of write_log; no longer
10227         conditionalize on JPATH
10228
10229         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
10230         function; fix a couple of bugs
10231
10232         * ircd/ircd_alloc.c: fixed a comment
10233
10234         * ircd/ircd.c: use log_write instead of ircd_log; fold server
10235         notice generation in a couple of cases
10236
10237         * ircd/gline.c: use log_write instead of write_log; no longer
10238         conditionalize on GPATH
10239
10240         * ircd/channel.c (modebuf_flush_int): use log_write instead of
10241         write_log; no longer conditionalize on OPATH
10242
10243         * ircd/Makefile.in: run make depend, since dependencies have
10244         changed
10245
10246         * doc/example.conf: add system USER to documentation
10247
10248         * include/ircd_log.h: add system USER; remove old ircd_log()
10249         declarations
10250
10251 2000-12-04  Isomer <isomer@coders.net>
10252         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
10253         'end_of_names' reply when done.
10254         * ircd/m_join.c: use NAMES_EON as mentioned above
10255
10256 2000-12-01  net  <simms@LUCIDA.QC.CA>
10257
10258         * ircd/motd.c: add a freelist for struct Motds
10259
10260 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
10261
10262         * ircd/s_stats.c (report_feature_list): report features--only
10263         local opers can see logging configuration, since it doesn't really
10264         mean anything to users
10265
10266         * ircd/s_err.c: add reply messages for new feature subsystem
10267
10268         * ircd/s_conf.c: add F lines to .conf
10269
10270         * ircd/parse.c: add the message descriptions for /set, /reset, and
10271         /get
10272
10273         * ircd/m_stats.c: add /stats f
10274
10275         * ircd/m_set.c (mo_set): implement /set
10276
10277         * ircd/m_reset.c (mo_reset): implement /reset
10278
10279         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
10280         reopens log files (for log file rotation)
10281
10282         * ircd/m_get.c (mo_get): implement /get
10283
10284         * ircd/ircd_log.c: use int instead of void return value; add
10285         log_report_features() and log_canon(); fix a function that
10286         disappears if DEBUGMODE not #define'd
10287
10288         * ircd/ircd_features.c: functions to manipulate feature settings
10289         either from the config file or with the new /set, /reset, and /get
10290         commands
10291
10292         * ircd/Makefile.in: add new .c files, run make depend
10293
10294         * include/s_stats.h: declare report_feature_list() (/stats f
10295         handler)
10296
10297         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
10298         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
10299         reply numerics
10300
10301         * include/msg.h: add defines for SET, RESET, and GET
10302
10303         * include/ircd_log.h: add a function to canonicalize subsystem
10304         names; change some void return values to int
10305
10306         * include/ircd_features.h: new features subsystem handles all the
10307         manipulation of special features, like log files
10308
10309         * include/handlers.h: declare new mo_{s,res,g}et message handlers
10310         for fiddling with features run-time
10311
10312         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
10313         seemed like a good idea at the time...
10314
10315         * doc/example.conf: document new F lines
10316
10317 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
10318
10319         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
10320         new logging functions, which have special support for the debug
10321         log; added loop detection to vdebug(), so that I can
10322         sendto_opmask_butone() from log_vwrite() without incurring another
10323         call to vdebug()
10324
10325         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
10326         this allows log file rotations
10327
10328         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
10329
10330         * ircd/ircd_log.c: much more work fleshing out the interface;
10331         removed old interface; included backwards-compat ircd_log()
10332         function that logs to subsystem LS_OLDLOG
10333
10334         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
10335         functions
10336
10337         * include/ircd_log.h: include stdarg.h for va_list; move ordering
10338         warning to top of file; fill out LogSys enum; declare new
10339         log_debug_init(), log_vwrite(), log_write_kill(), and
10340         log_[sg]et_*() functions; add flags argument to log_write();
10341         defined flags to inhibit various logging actions
10342
10343         * include/client.h: added support for new SNO_DEBUG, enabled only
10344         if DEBUGMODE is defined
10345
10346 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
10347
10348         * ircd/ircd_log.c: make sure the various LOG_* constants are
10349         defined (probably not needed, since #include <syslog.h> isn't
10350         conditional); various static data needed for the new logging
10351         functions; definitions of new logging functions
10352
10353         * include/ircd_log.h: new LogSys enum, declarations for part of
10354         new logging API
10355
10356         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
10357         which was of course stupid; switched to using switch/case in
10358         initialization in motd_create(); zero the MotdList.other pointer
10359         from motd_clear()
10360
10361         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
10362         or we overwrite init_conf()'s hard work with respect to T-lines
10363
10364 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
10365
10366         * ircd/s_stats.c: comment out report_motd_list and include a
10367         reference to motd_report()
10368
10369         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
10370         motd_add() from the conf parser; call motd_clear() from the rehash
10371         routine; remove the no longer needed memory clearing and reloading
10372         stuff from the rehash service routine
10373
10374         * ircd/motd.c: loads new API, including static internal functions
10375         to do allocation/deallocation, etc.
10376
10377         * ircd/m_stats.c: use new motd_report() instead of
10378         report_motd_list()
10379
10380         * ircd/m_motd.c: use new syntax for motd_send()
10381
10382         * ircd/ircd.c: use new motd_init() function
10383
10384         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
10385         Makefile.(in); also ran make depend
10386
10387         * include/motd.h: don't need config.h, but now do need time.h;
10388         define new structures and constants; redefine old API and define
10389         new functions
10390
10391 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
10392
10393         * ircd/s_user.c (register_user): use motd_signon() instead of
10394         calling m_motd; much cleaner this way
10395
10396         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
10397         less of a crock
10398
10399         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
10400         functions
10401
10402         * include/motd.h: define new MOTD API stuff
10403
10404 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
10405
10406         * ircd/ircd_reply.c (protocol_violation): rewrite
10407         protocol_violation so it'll actually work
10408
10409         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
10410         the client's real name in there.
10411
10412         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
10413         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
10414         gets called from register_user with a NULL sptr.  This is probably
10415         a design problem, but this bandaid will do for now...
10416
10417 2000-11-19  Isomer <isomer@coders.net>
10418         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
10419         to problems in the server<->server protocol.
10420
10421         * ircd/m_connect.c: allow remote connects with a port of '0'
10422         meaning to use the port in the config file.
10423
10424         * ircd/m_create.c: Enable hacking protection, lets see how far we
10425         get.
10426
10427         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
10428         clients, so we don't any more.
10429
10430         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
10431         and the user@host is displayed of the victim.
10432
10433         * ircd/m_map.c: reloaded 'dump_map'.
10434
10435         * ircd/m_trace.c: allow per class T:
10436
10437         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
10438
10439 2000-11-17  Isomer <isomer@coders.net>
10440
10441         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
10442         that were the *same* instead of different.  Oh the embarrasment!
10443
10444         * ircd/IPcheck.c: Merged net's fix.
10445
10446 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
10447
10448         * ircd/m_whois.c: remove compiler warning by adding a newline to
10449         end of file
10450
10451         * ircd/m_names.c: moved the flags up to s_user.h
10452
10453         * ircd/m_join.c: call do_names instead of m_names; restructure
10454         ms_join to never transmute a JOIN into a CREATE, but use the TS in
10455         the JOIN (if present) to timestamp the channel
10456
10457         * ircd/channel.c: send JOINs individually, instead of grouping
10458         them, so that we can send the channel's creation time
10459
10460         * include/s_user.h: declare do_names()
10461
10462 2000-10-30  Isomer <isomer@coders.net>
10463         * ircd/m_oper.c: Fixed warning
10464
10465 2000-10-30  Isomer <isomer@coders.net>
10466         * ircd/m_oper.c: Fixed over agressive cut and no paste
10467
10468 2000-10-30  Isomer <isomer@coders.net>
10469
10470         * ircd/m_topic.c: Restructured, fixed bug where topics on local
10471         channels are propergated (I forget who pointed this out to me, but
10472         thanks anyway).  Also to save bandwidth don't send the topic to
10473         users if the topic is already the same on the server (but still
10474         propergate to other servers).  X/W's "autotopic" feature must
10475         chew a lot of bandwidth, hopefully this will help reduce this.
10476
10477         * doc/rfc1459.rfc: Updated documentation on /topic.
10478
10479         * ircd/listener.c: snotice warnings about failed accept()'s
10480         potentially warning admins that they're running out of fd's.
10481
10482         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
10483         people in a class in /stats y
10484
10485         * ircd/m_create.c: Checks for timewarp hacking and squit's
10486         evil servers. (currently disabled)
10487         
10488
10489 2000-10-30  net <simms@lucida.qc.ca>
10490         
10491         * ircd/gline.c: Fixed various bugs Isomer left behind.
10492
10493 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
10494
10495         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
10496         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
10497
10498 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
10499
10500         * ircd/channel.c: ok, now last mode rules; mode +ps will always
10501         result in +s (and won't send a mode if the channel is already +s);
10502         mode +sp will always result in +p; -n+n on a +n channel results in
10503         no mode change; -n+n on a -n channel results in a +n mode change;
10504         etc.
10505
10506 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
10507
10508         * ircd/channel.c: add "add" and "del" elements to ParseState to
10509         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
10510         mode_parse_limit that caused it to clear all channel modes
10511         prematurely; restructure mode_parse_mode to avoid calling
10512         modebuf_mode too early (ties in with first mentioned change);
10513         better logic for +p/+s mutual exclusivity; initialize "add" and
10514         "del" elements in mode_parse; send simple modes down to
10515         modebuf_mode after the loop in mode_parse
10516
10517 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10518         * ircd/m_names.c: Fixed a non-lethal logic error that 
10519         triggers an assert() in find_member_link while debugging.
10520         (Spotted by Maniac-).
10521 2000-09-19  Thomas Helvey <helveytw@home.com>
10522         * ircd/s_conf.c: move K:lines to their own list and data
10523         structures, add supporting code.
10524         * ircd/m_stats.c: cleanup stats processing a bit move
10525         kline listing code to a new function, haven't figured
10526         out where it goes yet tho'
10527         * ircd/s_stats.c: added K:line bulk lister
10528         * include/s_conf.h: added new DenyConf struct
10529         * *[ch]: fixeup code that depended on changes
10530
10531 2000-09-17  Thomas Helvey <helveytw@home.com>
10532         * ircd/class.c: encapsulate class list
10533         * include/class.h: clean up classes
10534         * * fixup code that depended on changes
10535
10536 2000-09-17  Thomas Helvey <helveytw@home.com>
10537         * ircd/s_conf.c: add me to local conf
10538         * include/s_conf.h: move CONF_ME macro to chkconf.c
10539         * ircd/s_bsd.c: cleanup initialization, allow virtual host
10540         to be changed by rehash
10541
10542 2000-09-17  Thomas Helvey <helveytw@home.com>
10543         * include/class.h: add missing prototype
10544         * ircd/class.c: make argument to get_conf_class const
10545
10546 2000-09-17  Thomas Helvey <helveytw@home.com>
10547         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
10548         merge conflicts.
10549         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
10550         merge conflicts
10551
10552 2000-09-16  Thomas Helvey <helveytw@home.com>
10553         * ircd/s_conf.c: add code for server struct
10554         * ircd/client.c: copy of class.c sort of, new file for client
10555         specific operations, will move things here as appropriate,
10556         currently only one function is exported from here.
10557         * ircd/*.c: general logic cleanups, convert negatives to
10558         positives in places.
10559
10560 2000-09-16  Thomas Helvey <helveytw@home.com>
10561         * ircd/s_conf.c: add code for new crule data structs, strip quotes
10562         * ircd/crule.c: clean up scary casting a bit, type safety stuff
10563         * include/s_conf.h: add CRuleConf struct and support, remove
10564         unused constants
10565         * include/crule.h: type safety cleanups
10566         * ircd/*.c: fixup code that depended on stuff I changed
10567
10568 2000-09-15  Thomas Helvey <helveytw@home.com>
10569         * ircd/s_conf.c: start adding code for new conf data structs, changed
10570         listeners, admin line, motd lines, class lines. Move validate_hostent
10571         to resolver. General mayhem.
10572         * include/s_conf.h: new data structs and accessors
10573         * ircd/res.c: move validate_hostent here, rewrite, use regular
10574         expression for validation.
10575         * doc/example.conf: update docs for port
10576
10577 2000-09-14  Thomas Helvey <helveytw@home.com>
10578         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
10579         up conf_init into managable chunks.
10580         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
10581         * include/s_conf.h: add new data struct for local info (unwinding the mess).
10582
10583 2000-09-13  Thomas Helvey <helveytw@home.com>
10584         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
10585         local clients.
10586         * ircd/list.c: put SLinks in free lists
10587         * ircd/channel.c: put Memberships in free lists
10588         * ircd/ircd.c: rearrange initializations a bit in main
10589         Note: With these changes, ircd NEVER frees Clients, SLinks or
10590         Memberships. It will also rarely need to allocate new
10591         ones during net bursts and other disruptions. This should
10592         cut down on memory fragmentation a bit as well.
10593
10594 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
10595
10596         * ircd/m_names.c (do_names): pull-up from do_names fix in
10597         u2.10.10.pl11
10598
10599 2000-07-15  Perry Lorier       <Isomer@coders.net>
10600         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
10601                  match()'s.  Major Major cpu savings.  Also speed up the
10602                  other case slightly.  As a side effect you can now
10603                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
10604                  3am.
10605
10606 2000-07-15  Perry Lorier       <Isomer@coders.net>
10607         * various: Fixed warnings after compiling on an alpha.
10608 2000-07-09  Perry Lorier       <Isomer@coders.net>
10609         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
10610                       changes suggested by various other people.
10611         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
10612                         that it gets a corrupt entry somehow.
10613 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10614         * ircd/m_oper.c: Clean up compiler warning.
10615
10616 2000-07-08  Perry Lorier       <Isomer@coders.net>
10617         * doc/ircd.8: Updated the documentation, it was slightly out of date
10618                       being updated around 1989.
10619         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
10620                           fixed a few minor glitches.
10621         * doc/rfc1459.unet: Updated.
10622         * ircd/IPcheck.c: Fixed more bugs.
10623         * ircd/s_bsd.c: We now keep track of servers we've conected.
10624
10625 2000-07-02  Perry Lorier       <Isomer@coders.net>
10626         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
10627                         me.  Thanks to Hektik, thanks thanks thanks thanks
10628                         thanks thanks thanks thanks thank thanks thank thanks
10629
10630 2000-07-01  Perry Lorier       <Isomer@coders.net>
10631         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
10632         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
10633
10634 2000-06-22  Perry Lorier       <Isomer@coders.net>
10635         * ircd/IPcheck.c: Large chunks redone.
10636         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
10637                         single AND double digit limits are allowed now.
10638         * misc other: Changes to IPcheck.
10639
10640 2000-06-30  Perry Lorier       <Isomer@coders.net>
10641         * ircd/ircd.c: Fix command line parameter bugs.
10642
10643 2000-06-30  Perry Lorier       <Isomer@coders.net>
10644         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
10645         * ircd/m_nick.c: Tidied things up.
10646
10647 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
10648         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
10649         
10650 2000-05-29  Perry Lorier       <Isomer@coders.net>
10651         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
10652         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
10653                         you think it'll get bored and fix itself?
10654
10655 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10656
10657         * ircd/m_names.c: Clean up compiler warnings.
10658
10659 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
10660
10661         * ircd/channel.c (mode_parse_client): don't send warning if
10662         there's not enough arguments for a +/-o/v; means the habit of
10663         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
10664         error messages
10665
10666 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
10667
10668         * ircd/m_names.c: Re-factor code to remove unneccessary
10669         GlobalChannelList iteration every time someone joins a channel.
10670
10671 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
10672
10673         * ircd/s_user.c: add struct Gline * argument to register_user;
10674         look up global glines and repropagate them if necessary; send
10675         acknowledgement of gline to remote servers when registering users
10676
10677         * ircd/s_serv.c (server_estab): don't send acknowledgement of
10678         local glines to remote servers; do send gline acknowledgement of
10679         bursted users
10680
10681         * ircd/m_user.c (m_user): pass new struct Gline * argument to
10682         register_user
10683
10684         * ircd/m_pong.c: pass new struct Gline * argument to register_user
10685
10686         * ircd/m_nick.c (ms_nick): document protocol change
10687
10688         * ircd/gline.c: support GLINE_LASTMOD
10689
10690         * include/s_user.h: add struct Gline * argument to register_user
10691
10692         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
10693
10694         * ircd/s_conf.c (find_kill): add unsigned int argument to
10695         gline_lookup()
10696
10697         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
10698         glines; add unsigned int argument to gline_lookup()
10699
10700         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
10701         argument to gline_lookup()
10702
10703         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
10704         parameter, or when it falls out of bounds: see comments prior to
10705         call to jupe_resend(); call server_estab with struct Jupe
10706         parameter, so that we place the appropriate %<lastmod> in the
10707         appropriate place.
10708
10709         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
10710         server, as well as for servers when we're sending the BURST
10711
10712         * include/s_serv.h: add a struct Jupe * to the arguments for
10713         server_estab() so that we can send the appropriate lastmod
10714         parameter
10715
10716         * ircd/m_gline.c (ms_gline): actually, this should be the
10717         slightest bit more efficient...
10718
10719         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
10720         bit more efficient...
10721
10722         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
10723         during netburst
10724
10725         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
10726         netburst
10727
10728         * ircd/channel.c (joinbuf_join): really remove user from local
10729         channels
10730
10731 2000-05-29  Perry Lorier       <Isomer@coders.net>
10732         * ircd/m_names.c: Removed redundant space. 
10733         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
10734
10735 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
10736
10737         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
10738         a " "
10739
10740 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
10741
10742         * ircd/channel.c: replace bogus assertions with returns, which is
10743         logically correct; only wipe out limit/key if they were originally
10744         set in the first place; remove user from channel when doing a
10745         PARTALL; only send MODE +o for user CREATEing channel if user is
10746         not MyUser--CREATE will only be used if the channel did not
10747         originally exist, therefore we can assume no one local is on the
10748         channel anyway, and we don't exactly need for the user to see an
10749         explicit +o for themselves
10750
10751         * doc/readme.gline: describe the syntax of the GLINE command
10752
10753         * doc/readme.jupe: update to reflect a couple of changes to JUPE
10754
10755         * ircd/gline.c: don't propagate local changes
10756
10757         * ircd/jupe.c: don't propagate local changes
10758
10759         * ircd/m_gline.c (mo_gline): force local flag when deactivating
10760         glines with 0 lastmod
10761
10762         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
10763         are now removed instead of being deactivated
10764
10765         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
10766         -<mask>" be accepted
10767
10768         * ircd/channel.c (send_channel_modes): deal with one of the last
10769         vestiges of sendbuf
10770
10771         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
10772         debugging hooks
10773
10774         * ircd/channel.c (modebuf_extract): remove debugging
10775         sendto_opmask_butone calls
10776
10777 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
10778
10779         * ircd/channel.c: support a couple of new flags to support using
10780         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
10781         of modebuf_extract to extract added flags for use by ms_burst
10782
10783         * include/channel.h: a couple of new flags to support using
10784         mode_parse inside ms_burst
10785
10786         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
10787
10788         * ircd/m_endburst.c: add loop to processing of end_of_burst to
10789         free empty channels after the BURST is over.
10790
10791         * ircd/m_server.c: convert to use new send.c functions--I wanted
10792         to rewrite it from scratch, but the logic's pretty complex; I may
10793         still rewrite it, though...
10794
10795 2000-05-02  Thomas Helvey <tomh@inxpress.net>
10796
10797         * ircd/ircd.c: fix broken header include ordering
10798
10799 2000-05-02  Thomas Helvey <tomh@inxpress.net>
10800         
10801         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
10802         review emailed privately
10803
10804         * include/IPcheck.h: removed unneeded include
10805
10806 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
10807
10808         * ircd/s_user.c (hunt_server): throw in a comment so I know what
10809         the sendto_one is for
10810
10811         * include/querycmds.h (Count_unknownbecomesclient): convert to
10812         sendto_opmask_butone
10813
10814         * ircd/send.c: start removing dead code
10815
10816         * include/send.h: start removing dead code
10817
10818         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
10819         hunt_server_cmd
10820
10821         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
10822
10823 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
10824
10825         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
10826
10827         * ircd/m_kick.c: Completely reimplement m_kick
10828
10829         * ircd/channel.c: send_user_joins removed; it was dead code,
10830         anyway...
10831
10832 2000-05-01  Perry Lorier <isomer@coders.net>
10833         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
10834         * ircd/channels.c: My fix for the part problem.  Untested, probably
10835                 won't work.  Can't be much worse than the current problem.
10836                 it'll either work or core, take your pick.
10837
10838
10839 2000-04-30  Perry Lorier <isomer@coders.net>
10840         * config/config-sh.in: Fix for CONNEXIT
10841         * ircd/s_{user,misc}.c: Fix for CONNEXIT
10842         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
10843                         (Kev: Want to come talk to me about this?)
10844
10845 2000-04-30  Steven M. Doyle <steven@doyle.net>
10846         * ircd/ircd.c
10847           - general cleanups and readability enhancements
10848           - rewrite of setuid/chroot code.
10849           - server will no longer run as root
10850           - -DPROFIL compile option removed
10851           - Fixed IPcheck API calls
10852  
10853         * config/config-sh.in
10854           - Fixed up chroot compile options
10855           - Added options for debug and profile compiles
10856  
10857         * config/gen.ircd.Makefile
10858           - Support for new debug/profile options
10859  
10860         * ircd/Makefile.in
10861           - Support for new debug/profile options
10862  
10863         * ircd/ircd_signal.c
10864           - Removed -DPROFIL
10865
10866         * include/IPcheck.h
10867           - Removed old API prototypes, added new ones
10868         
10869         * ircd/IPcheck.c
10870           - Readability cleanups (well, I -think-...)
10871           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
10872             used unsigned short was probably causing interesting things after
10873             a client had been connected longer than about 65,535 seconds...
10874           - Removed old API functions.
10875
10876         * ircd/whocmds.c
10877           - Removed IPcheck.h include
10878         
10879         * Additionally modified IPcheck API calls in:
10880           - ircd/m_nick.c
10881           - ircd/m_auth.c
10882           - ircd/s_bsd.c
10883           - ircd/s_conf.c
10884           - ircd/s_misc.c
10885           - ircd/s_serv.c
10886           - ircd/s_user.c
10887         
10888         
10889 2000-04-30  Perry Lorier <isomer@coders.net>
10890         * ircd/s_bsd.c: Sigh. :)
10891         * ircd/m_mode.c: fix for modeless channels by poptix.
10892
10893 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
10894
10895         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
10896
10897         * ircd/channel.c (clean_channelname): make clean_channelname also
10898         truncate long channel names
10899
10900 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
10901
10902         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
10903
10904         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
10905         joinbuf_flush
10906
10907         * include/channel.h: definitions and declarations for the struct
10908         JoinBuf abstraction
10909
10910 2000-04-29  Perry Lorier <isomer@coders.net>
10911         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
10912
10913 2000-04-29  Perry Lorier <isomer@coders.net>
10914         * ircd/s_bsd.c: Add debugging code to IPcheck
10915
10916 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
10917
10918         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
10919
10920         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
10921         RPL_EXPLICIT
10922
10923         * ircd/m_userhost.c (m_userhost): add a dead code comment
10924
10925         * ircd/m_desynch.c: forgot one...
10926
10927         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
10928
10929         * ircd/m_proto.c (proto_send_supported): just change a comment so
10930         it doesn't show up in my scans
10931
10932         * ircd/ircd_reply.c (send_reply): fix a slight bug...
10933
10934         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
10935         kinda hackish...
10936
10937         * ircd/parse.c (parse_server): argument wrangling to make
10938         processing in do_numeric a little easier to deal with
10939
10940         * ircd/s_serv.c (server_estab): SERVER should come from
10941         acptr->serv->up, not &me
10942
10943         * ircd/m_lusers.c: accidentally left out sptr for a %C
10944
10945         * ircd/send.c: hack to support doing wallchops...
10946
10947         * ircd/m_whowas.c: convert to new send functions
10948
10949         * ircd/m_whois.c: convert to new send functions
10950
10951         * ircd/m_who.c: convert to new send functions
10952
10953         * ircd/m_wallops.c: convert to new send functions
10954
10955         * ircd/m_wallchops.c: convert to new send functions
10956
10957         * ircd/m_version.c: convert to new send functions
10958
10959         * ircd/m_userip.c: convert to new send functions
10960
10961         * ircd/m_userhost.c: convert to new send functions
10962
10963         * ircd/m_uping.c: convert to new send functions
10964
10965         * ircd/m_trace.c: convert to new send functions
10966
10967         * ircd/m_topic.c: convert to new send functions
10968
10969         * ircd/m_time.c: convert to new send functions
10970
10971         * ircd/m_squit.c: convert to new send functions
10972
10973         * ircd/m_silence.c: convert to new send functions
10974
10975         * ircd/m_settime.c: convert to new send functions
10976
10977         * ircd/m_restart.c: convert to new send functions
10978
10979         * ircd/m_rehash.c: convert to new send functions
10980
10981         * ircd/m_privmsg.c: convert to new send functions
10982
10983         * ircd/m_pong.c: convert to new send functions
10984
10985         * ircd/m_ping.c: convert to new send functions
10986
10987         * ircd/m_pass.c: convert to new send functions
10988
10989         * ircd/m_opmode.c: convert to new send functions
10990
10991         * ircd/m_oper.c: convert to new send functions
10992
10993         * ircd/m_notice.c: convert to new send functions
10994
10995         * ircd/m_nick.c: convert to new send functions
10996
10997         * ircd/m_names.c: convert to new send functions
10998
10999         * ircd/m_motd.c: convert to new send functions
11000
11001         * ircd/m_mode.c: convert to new send functions
11002
11003         * ircd/m_map.c: convert to new send functions
11004
11005         * ircd/m_lusers.c: convert to new send functions
11006
11007         * ircd/m_list.c: convert to new send functions
11008
11009         * ircd/m_links.c: convert to new send functions
11010
11011         * ircd/m_kill.c: convert to new send functions
11012
11013         * ircd/m_jupe.c: convert to new send functions
11014
11015         * ircd/m_invite.c: convert to new send functions
11016
11017         * ircd/m_info.c: convert to new send functions
11018
11019         * ircd/m_help.c: convert to new send functions
11020
11021         * ircd/m_gline.c: convert to new send functions
11022
11023         * ircd/m_error.c: convert to new send functions
11024
11025         * ircd/m_endburst.c: convert to new send functions
11026
11027         * ircd/m_die.c: convert to new send functions
11028
11029         * ircd/m_destruct.c: convert to new send functions
11030
11031         * ircd/m_defaults.c: convert to new send functions
11032
11033         * ircd/m_connect.c: convert to new send functions
11034
11035 2000-04-28  Perry Lorier <isomer@coders.net>
11036         * RELEASE.NOTES: Describe a few more undocumented features.
11037         * config/config-sh.in: change the default paths for logging
11038         and the recommended number of channels.
11039         * include/supported.h: Rearrange slightly, added CHANTYPE's
11040
11041 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
11042
11043         * ircd/m_close.c: convert to send_reply
11044
11045         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
11046
11047         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
11048
11049         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
11050
11051         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
11052         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
11053         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
11054         carefully rethought...
11055
11056         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
11057
11058         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
11059
11060         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
11061         numeric nick; therefore, we have to use the server name
11062
11063         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
11064
11065         * ircd/send.c: fix minor bugs
11066
11067         * ircd/s_user.c (check_target_limit): mark dead code so I filter
11068         it when I grep
11069
11070         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
11071         when I grep
11072
11073         * ircd/parse.c: mark dead code so I filter it when I grep
11074
11075         * ircd/map.c: mark dead code so I filter it when I grep
11076
11077         * ircd/ircd.c: mark dead code so I filter it when I grep
11078
11079         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
11080         functions
11081
11082         * ircd/channel.c: mark dead code so I filter it when I grep
11083
11084         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
11085         hope I'm not stepping on toes...
11086
11087         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
11088         conversions; use ircd_snprintf in a couple of cases to negate the
11089         possibility of buffer overflow
11090
11091 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
11092
11093         * ircd/channel.c: convert as much as possible to new send
11094         semantics
11095
11096         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
11097         test member->user->from->fd, not from->fd
11098
11099         * ircd/gline.c (gline_add): go ahead and add badchans; we just
11100         won't look for them in m_gline; this way, they always work...
11101
11102         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
11103
11104         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
11105         ircd_vsnprintf conversion specifiers
11106
11107         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
11108         I have my conversion specifiers
11109
11110         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
11111
11112         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
11113         local users
11114
11115         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
11116         little less brain-dead
11117
11118         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
11119
11120         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
11121         RPL_STATSDEBUG
11122
11123         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
11124         RPL_STATSDEBUG
11125
11126         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
11127         for RPL_STATSDEBUG
11128
11129         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
11130
11131         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
11132
11133         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
11134         ERR_INVALIDUSERNAME
11135
11136         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
11137
11138         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
11139         a numeric as needing to use an explicit pattern, which will be the
11140         first argument in the variable argument list
11141
11142         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
11143         non-prefixed nospoof PING
11144
11145         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
11146         non-prefixed SERVER login
11147
11148         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
11149         a numeric usage further up)
11150
11151         * include/send.h: declare sendrawto_one
11152
11153         * ircd/send.c (sendrawto_one): new function to use ONLY for
11154         non-prefixed commands, like PING to client, or PASS/SERVER on
11155         server registration
11156
11157 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
11158
11159         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
11160         future expansion (channel numerics?)
11161
11162         * include/ircd_snprintf.h: added documentation to # to explain use
11163         with %C; added documentation for : to explain use with %C; added
11164         documentation for %H for channels
11165
11166         * ircd/whocmds.c: use send_reply
11167
11168         * ircd/userload.c: use sendcmdto_one
11169
11170         * ircd/uping.c: use sendcmdto_one
11171
11172         * ircd/send.c: use new flags to %C format string; ':' prefixes
11173         client name with a colon for local connects, '#' uses
11174         nick!user@host form for local connects
11175
11176         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
11177         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
11178
11179         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
11180
11181         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
11182         sendcmdto_one
11183
11184         * ircd/s_auth.c: use sendto_opmask_butone
11185
11186         * ircd/res.c: use sendcmdto_one
11187
11188         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
11189         debugging assertions
11190
11191 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
11192
11193         * ircd/support.c: dumpcore is no longer used, so get rid of it
11194
11195         * ircd/parse.c: use send_reply, sendcmdto_one
11196
11197         * ircd/map.c: use send_reply
11198
11199         * ircd/listener.c: use send_reply
11200
11201         * ircd/jupe.c: use sendto_opmask_butone, send_reply
11202
11203         * ircd/ircd_reply.c: use send_reply
11204
11205         * ircd/ircd.c: use sendto_opmask_butone
11206
11207         * ircd/gline.c: use sendto_opmask_butone, send_reply
11208
11209         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
11210         registered clients; make FLAG_ALT print nick!user@host; make
11211         FLAG_COLON print :blah
11212
11213         * ircd/class.c (report_classes): use send_reply instead of
11214         sendto_one
11215
11216         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
11217
11218         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
11219         sendto_one with sendcmdto_one
11220
11221 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
11222
11223         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
11224         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
11225         sendcmdto_match_butone
11226
11227         * include/send.h: declare sendcmdto_match_butone
11228
11229 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
11230
11231         * ircd/jupe.c: update to use send_reply()
11232
11233         * ircd/gline.c: update to use send_reply()
11234
11235         * include/ircd_reply.h: declare send_reply
11236
11237         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
11238         replies; uses ircd_snprintf
11239
11240         * ircd/send.c: added comments to redirect searchers to appropriate
11241         sendcmdto_* function; moved new functions to end of file; added
11242         explanatory comments; reordered arguments; defined new functions
11243         mentioned below
11244
11245         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
11246
11247         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
11248
11249         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
11250
11251         * ircd/gline.c: reorder arguments to sendcmdto_* functions
11252
11253         * include/send.h: reorder arguments, add explanatory comments,
11254         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
11255         and vsendto_opmask_butone
11256
11257 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
11258
11259         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
11260         vsendto_op_mask that uses '*' instead of the receiving client
11261         nickname
11262
11263         * include/send.h: declare sendcmdto_channel_butone; takes a skip
11264         argument that allows you to skip (or not to skip) deaf users,
11265         users behind bursting servers, and non channel operators
11266
11267 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
11268
11269         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
11270         sendto_channel_butserv has a subtle bug; also wrote
11271         sendcmdto_common_channels.
11272
11273         * include/send.h: declare new sendcmdto_* functions
11274
11275         * ircd/jupe.c: support local deactivations of jupes
11276
11277         * ircd/gline.c: support local deactivations of glines
11278
11279         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
11280         deactivated; if they aren't locally deactivated, then it slaves to
11281         the net-wide activation status; JupeIsRemActive() tests only
11282         whether the jupe is active everywhere else
11283
11284         * include/gline.h: GLINE_LDEACT allows glines to be locally
11285         deactivated; if they aren't locally deactivated, then it slaves to
11286         the net-wide activation status; GlineIsRemActive() tests only
11287         whether the gline is active everywhere else
11288
11289         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
11290         gline expires after the new one will, we drop the new one,
11291         otherwise we add the G-line after that one (so the wide one will
11292         apply first); if the new one contains an existing G-line and if it
11293         will expire after the existing one, we drop the existing one to
11294         save memory
11295
11296         * ircd/m_gline.c (mo_gline): opers could issue remote local
11297         glines when CONFIG_OPERCMDS was off; fixed
11298
11299 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
11300
11301         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
11302         this is a local JUPE
11303
11304         * ircd/gline.c: add flags argument to gline_activate and
11305         gline_deactivate for future expansion
11306
11307         * ircd/m_gline.c: pass flags to gline_activate and
11308         gline_deactivate
11309
11310         * include/gline.h: add flags argument to gline_activate and
11311         gline_deactivate
11312
11313         * ircd/jupe.c: add flags argument to jupe_activate and
11314         jupe_deactivate for future expansion
11315
11316         * include/jupe.h: add flags argument to jupe_activate and
11317         jupe_deactivate
11318
11319         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
11320         local, active; pass flags to jupe_activate and jupe_deactivate
11321
11322         * include/gline.h: remove dead code
11323
11324         * ircd/gline.c: make gline expire times relative to CurrentTime,
11325         since that should be monotonically increasing, instead of
11326         TStime(), which can be set backwards, and which can therefore
11327         cause an expire time to increase; make local glines be removed
11328         instead of just deactivated; don't let gline_find() look for
11329         user@host glines if the mask being looked up is a channel mask
11330
11331         * ircd/send.c (vsendcmdto_one): forgot to account for the case
11332         where origin is a server and destination is a user
11333
11334         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
11335         since that should be monotonically increasing, instead of
11336         TStime(), which can be set backwards, and which can therefore
11337         cause an expire time to increase; make local jupes be removed
11338         instead of just deactivated
11339
11340         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
11341         limit is fine.  any other warnings I should know about?
11342
11343 2000-04-15  Thomas Helvey <tomh@inxpress.net>
11344
11345         * ircd/*.c: const correctness and type safety cleanups to
11346         get code to compile with C++ compiler. Still has
11347         signed/unsigned comparison warnings.
11348
11349 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11350
11351         * ircd/userload.c: change <sys/time.h> include to <time.h> for
11352           portability.
11353
11354 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
11355
11356         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
11357         and convert acptr...
11358
11359         * ircd/s_user.c: move gline_lookup function call into
11360         register_user, where it'll have a username to lookup!
11361
11362         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
11363         functions; also stuff send_error_to_client into return clauses
11364
11365         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
11366         functions; also use send_error_to_client where that makes sense
11367
11368         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
11369         functions; also use send_error_to_client where that makes sense
11370
11371         * ircd/gline.c: modify to utilize new sendcmdto_* series of
11372         functions; also fix gline_lookup() to deal properly with remote
11373         clients--boy, do struct Client and struct User need to be cleaned
11374         up!
11375
11376         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
11377         too...
11378
11379         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
11380         sendcmdto_serv_butone(), all utilizing the %v conversion of
11381         ircd_snprintf()
11382
11383         * include/send.h: define IRC_BUFSIZE, max size of a message;
11384         declare sendcmdto_one(), vsendcmdto_one(), and
11385         sendcmdto_serv_butone()
11386
11387         * include/msg.h: define all the CMD_* constants needed to utilize
11388         the new sendcmdto_* series of functions
11389
11390         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
11391
11392         * ircd/gline.c: remove old, dead code.
11393
11394         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
11395         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
11396         (don't advertise proxies); remove dead code
11397
11398         * ircd/parse.c: oper handler for JUPE only lists jupes unless
11399         CONFIG_OPERCMDS is enabled
11400
11401         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
11402         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
11403
11404         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
11405         always return ERR_DISABLED
11406
11407         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
11408         enabled, always return ERR_DISABLED
11409
11410         * ircd/s_err.c: add error message to indicate disabled commands
11411
11412         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
11413
11414         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
11415
11416         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
11417         CONFIG_NEW_MODE to 'y' for now
11418
11419         * ircd/gline.c (gline_list): fix a minor formatting bogon
11420
11421         * BUGS: since I fixed that bug, might as well mark it fixed.
11422
11423         * ircd/m_join.c: look up badchans with GLINE_EXACT
11424
11425         * ircd/m_gline.c: fix parc count problems; look up existing
11426         G-lines with GLINE_EXACT; only set new lastmod when
11427         activating/deactivating existing glines if old lastmod was not 0
11428
11429         * ircd/gline.c: forgot to copy the gline reason over; don't
11430         propagate a gline with 0 lastmod if origin is user; add
11431         GLINE_EXACT to force exact matching of gline mask
11432
11433         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
11434         flag properly
11435
11436         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
11437         but gline_lookup() actually takes a client--d'oh.
11438
11439 2000-04-13  Thomas Helvey <tomh@inxpress.net>
11440         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
11441
11442 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11443
11444         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
11445           "/who * x"
11446           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
11447           (Found by Plexus).
11448
11449         * ircd/whocmds.c: Change idle time calc from socket idle to user
11450           idle.
11451
11452 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
11453
11454         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
11455         too, for ircd_snprintf.c
11456
11457         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
11458         comments; mostly descended from the Linux manpage for printf, but
11459         also documenting the extensions.
11460
11461         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
11462         client; make 'q' be the same as 'L'; remove __inline__; only
11463         define EXTENSION if HAVE_LONG_LONG is defined
11464
11465         * include/handlers.h: declare m_gline()
11466
11467         * ircd/parse.c: gline can be called by users, but it only lists
11468         the glines.
11469
11470         * ircd/s_user.c (set_nick_name): resend gline if a remote server
11471         introduces a glined client
11472
11473         * ircd/s_serv.c (server_estab): burst glines, too
11474
11475         * ircd/gline.c: fix up all the expire times to be offsets;
11476         simplify gline_resend()
11477
11478         * ircd/m_gline.c: begin coding replacements for ms_gline(),
11479         mo_gline(), and m_gline()
11480
11481         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
11482         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
11483
11484 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11485
11486         * tools/Bouncer/*: Add comments/documentation/tags.
11487         * tools/Bouncer/*: Add debug defines, make task fork().
11488
11489 2000-04-12  Thomas Helvey <tomh@inxpress.net>
11490         * ircd/s_err.c: Cleanup s_err.c make one table so we
11491         don't have to do anything tricky to get an error string.
11492
11493 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11494         * Add port bouncer for http (x/w)
11495
11496 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
11497
11498         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
11499         call to gline_find(); also used GlineReason() instead of direct
11500         reference to structure member
11501
11502         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
11503         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
11504         is active
11505
11506         * ircd/channel.c: nothing seems to be called anywhere...
11507
11508         * ircd/s_err.c: update a couple of replies to dovetail with new
11509         semantics
11510
11511         * ircd/gline.c: begin complete re-implementation of gline.c along
11512         the lines of the final design of jupe.c
11513
11514         * include/gline.h: begin complete re-implementation of gline.c
11515         along the lines of the final design of jupe.c
11516
11517         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
11518         %s by %s" message...
11519
11520         * ircd/ircd_snprintf.c: my new snprintf()-like functions
11521
11522         * include/ircd_snprintf.h: my new snprintf()-like functions
11523
11524 2000-04-11  Thomas Helvey <tomh@inxpress.net>
11525         * ircd/IPcheck.c: removed old dead code
11526         * ircd/s_user.c (send_user_info): removed non-standard
11527           user not found message for userhost/userip
11528
11529 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
11530
11531         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
11532         * doc/p10.html: Work on chapter 4.
11533
11534 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
11535
11536         * ircd/channel.c (mode_parse_client): fix coredump on /mode
11537         #foobar +o nosuchnick
11538
11539 2000-04-10  Perry Lorier  <Isomer@coders.net>
11540         * BUGS: Added bug.
11541
11542 2000-04-09  Thomas Helvey <tomh@inxpress.net>
11543         * include/IPcheck.h: fix prototype
11544         * ircd/s_user.c: fix usage of IPcheck_remote_connect
11545         * ircd/IPcheck.c: removed unused args
11546
11547 2000-04-09  Thomas Helvey <tomh@inxpress.net>
11548         * include/IPcheck.h: add proto for IPcheck_expire
11549
11550         * ircd/IPcheck.c: Rewrote
11551
11552         * ircd/ircd.c: Add IPcheck_expire to main message loop
11553
11554         * ircd/s_user.c: Redo target hashing, refactor target code
11555
11556         * include/numeric.h: Cleaned up numerics, added which ones are
11557         in use by other networks and what they are in use for.
11558
11559         * ircd/channel.c: cleaned can_join(), allow anyone through anything
11560         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
11561         will get a message explaining to them not to cheat.
11562
11563         * ircd/m_join.c: cleaned up the various join functions, should be
11564         a lot more efficient.  Still needs work.  Now assumes that s<->s
11565         won't send it a JOIN 0.  Service coders - note this and tread with
11566         care.
11567
11568         * ircd/m_stats.c: added Gte-'s stats doc patch.
11569
11570         * ircd/m_version.c: /version now returns the 005 numeric as well.
11571         as requested by Liandrin.
11572
11573
11574 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
11575
11576         * ircd/m_clearmode.c: add include for support.h for write_log()
11577
11578         * configure: move ircd/crypt/* to tools/*
11579
11580 2000-04-06  Thomas Helvey <tomh@inxpress.net>
11581         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
11582           set client host to server alias if connection from localhost
11583
11584 2000-04-06  Perry Lorier <isomer@coders.net>
11585         * ircd/ircd.c: Fix core during pinging (oops)
11586         
11587 2000-04-06  Perry Lorier <isomer@coders.net>
11588         * ircd/send.c: fixed wrong ident being sent to channels bug.
11589         * include/numerics.h: Updated some of the numerics from other
11590         networks.  Flagged some as 'unused' by undernet.
11591
11592 2000-03-30  Perry Lorier <isomer@coders.net>
11593         * ircd/ircd.c: Lets see if this helps the ping problem at all.
11594         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
11595         time for local clients. (as requested), extended who now returns all
11596         the flags (@+!) so you can tell the complete state of a client.
11597
11598 2000-03-30  Thomas Helvey <tomh@inxpress.net>
11599         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
11600
11601 2000-03-30  Perry Lorier <isomer@coders.net>
11602         * ircd/parse.c: oops, missed opers.
11603
11604 2000-03-30  Perry Lorier <isomer@coders.net>
11605         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
11606         for so long.  Remember: m_ping MUST be in the parse array. :)
11607
11608 2000-03-30  Perry Lorier <isomer@coders.net>
11609         * ircd/ircd.c: test in check_pings was wrong.  I move that we
11610         disallow cvs commit after 10pm localtime....
11611
11612 2000-03-30  Perry Lorier <isomer@coders.net>
11613         * ircd/m_pong.c: Fix it for servers too.
11614
11615 2000-03-30  Perry Lorier <isomer@coders.net>
11616         * ircd/m_pong.c: Fix ping timeout bugs
11617
11618 2000-03-30  Perry Lorier <isomer@coders.net>
11619         * ircd/channel.c: Bans had CurrentTime in their when field instead
11620         of TStime()
11621
11622 2000-03-31  Thomas Helvey <tomh@ixpress.net>
11623         * ircd/numnicks.c (SetXYYCapacity): fix for extended
11624         numerics.
11625
11626 2000-03-30  Perry Lorier <isomer@coders.net>
11627         * ircd/m_nick.c: send kills both ways so when we add nick change
11628         on collision we don't desync the network.
11629
11630         * ircd/map.c: Fixup the map a bit more.
11631
11632 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
11633
11634         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
11635
11636         * ircd/m_opmode.c: Log the mode changes to OPATH
11637
11638         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
11639         OPATH
11640
11641         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
11642         OPATH
11643
11644         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
11645
11646         * config/config-sh.in: added OPATH for opmode log file
11647
11648         * ircd/m_clearmode.c (do_clearmode): updated uses of
11649         modebuf_mode_string() for the new usage
11650
11651         * ircd/channel.c: added flag MODE_FREE and an int argument to
11652         modebuf_mode_string() to indicate that the string must be free'd;
11653         updated calls to modebuf_mode_string() for the new usage; called
11654         collapse(pretty_mask()) on the ban string and use allocated memory
11655         for it; added ban list length accounting; fixed a number of small
11656         bugs in ban processing
11657
11658         * include/channel.h: added flag MODE_FREE and an int argument to
11659         modebuf_mode_string() to indicate that the string must be free'd
11660
11661         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
11662         keys and limits that are set
11663
11664 2000-03-30  Perry Lorier <isomer@coders.net>
11665         * ircd/ircd.c: rewrote check_pings() for maintainability
11666         and speed.  Also changed quit msg's so they don't have
11667         redundant nick[host] info in them.
11668
11669         * ircd/send.c: Changed write errors to report what error
11670         occured (if possible).
11671
11672         * ircd/gline.c: added gline comment to the quit.
11673
11674         * ircd/m_server.c: Added suggestions to server quits mentioning
11675         what went wrong so the admin can fix it earlier instead of asking
11676         questions...
11677
11678         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
11679         servers that aren't fully burst yet.  And show '(--s)' for servers
11680         where its not sure.
11681
11682         * doc/example.conf: Fixed wrapped U:
11683
11684 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
11685
11686         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
11687         mode_parse() (version selectable at compile time)
11688
11689         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
11690
11691         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
11692
11693         * config/config-sh.in: add new config option to enable new m_mode
11694         implementation
11695
11696         * doc/Configure.help: add documentation for new config option
11697         CONFIG_NEW_MODE
11698
11699         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
11700         MODE -v : Not enough parameters
11701
11702         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
11703         +k and +l even if they weren't set...
11704
11705         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
11706
11707         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
11708         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
11709         for; test the 0-th member, not the i-th member, of the client
11710         change state stuff
11711
11712         * ircd/m_clearmode.c (do_clearmode): use the new
11713         mode_invite_clear() function
11714
11715         * ircd/channel.c: cleared up all the compile-time warnings and
11716         errors
11717
11718         * include/channel.h: added declarations for mode_ban_invalidate()
11719         and mode_invite_clear()
11720
11721         * ircd/channel.c: finished mode_parse(), then broke it up into a
11722         dozen or so helper functions to make the code easier to read
11723
11724 2000-03-29  Thomas Helvey <tomh@inxpress.net>
11725         * ircd/ircd.c: refactor server initialization a bit, use
11726         getopt for parsing command line, refactor init_sys, main,
11727         and other bits.
11728
11729         * ircd/s_bsd.c: add functions for initialization to clean
11730         up logic a bit and remove duplicated code.
11731
11732         * include/ircd.h: add struct for server process related
11733         variables.
11734
11735 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
11736
11737         * ircd/channel.c: initial definition of mode_parse(); flags to
11738         prevent doing the same thing multiple times; helper method
11739         send_notoper() to send a "Not oper"/"Not on channel" notice
11740
11741         * include/channel.h: declare mode_parse() and helper flags
11742
11743         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
11744         sending to match the current action of set_mode() closely enough
11745         that hopefully there won't be major conflicts
11746
11747         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
11748         building logic, reversed the order of the arguments to mode
11749         commands to have '-' preceed '+'
11750
11751 2000-03-29  Thomas Helvey <tomh@inxpress.net>
11752         * ircd/s_bsd.c (add_connection): don't disable socket options
11753         let OS tune itself and allow important performance tweaks to 
11754         work.
11755
11756 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
11757
11758         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
11759         confused by set_mode, which is doing some really weird logic;
11760         guess what I'm going to rewrite next?  ;)
11761
11762 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
11763
11764         * include/channel.h: added MODE_SAVE for the bounds checking stuff
11765         in modebuf_flush
11766
11767         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
11768         make it do bounds checking on the buffer; all modes are sent only
11769         if the all parameter is 1; modebuf_flush is the exported wrapper
11770
11771         * include/channel.h: add BOUNCE, renumber flags to get a little
11772         more space
11773
11774         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
11775         BOUNCE; send DESYNCH message
11776
11777 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
11778
11779         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
11780         channel actually has in effect for deletion
11781
11782         * ircd/channel.c: added explanatory comments to all added
11783         functions; made flushing take place at the correct place even if
11784         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
11785         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
11786         is empty, fixed the apparent source, removed some bogus string
11787         termination code, properly terminate the mode strings, add support
11788         for HACK2 and HACK3, made limit strings not be sent if the limit
11789         is being removed, changed where '+' and '-' come from in sent
11790         strings, added support for DEOP flag, set up bouncing code for
11791         HACK2
11792
11793         * ircd/Makefile.in: ran make depend
11794
11795         * include/channel.h: added new defines for future functionality,
11796         made modebuf_flush() return int so I can use tail recursion
11797
11798         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
11799         to make it all compile
11800
11801         * ircd/m_opmode.c: add msg.h to includes...
11802
11803         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
11804
11805         * ircd/channel.c (modebuf_flush): realized I forgot to
11806         nul-terminate addbuf/rembuf properly...
11807
11808         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
11809
11810         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
11811         sendto_serv_butone--blah^2
11812
11813         * ircd/send.c (sendto_serv_butone): stupid comments confused me
11814
11815         * ircd/channel.c (modebuf_flush): if there are no mode changes to
11816         propagate, we're done...
11817
11818         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
11819         not sendto_all_butone
11820
11821         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
11822
11823         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
11824
11825         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
11826         the list
11827
11828         * ircd/parse.c: added messages for opmode and clearmode
11829
11830         * include/handlers.h: added declarations for mo_opmode(),
11831         ms_opmode(), mo_clearmode(), and ms_clearmode()
11832
11833         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
11834         TOK_CLEARMODE
11835
11836         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
11837         MODEBUF_DEST_OPMODE flag
11838
11839         * ircd/channel.c (modebuf_flush): added new flag,
11840         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
11841         to originate from source's server (or source itself, if
11842         IsServer(source)); also causes a server-level MODE to be sent as
11843         OPMODE instead
11844
11845         * include/channel.h: defined MODEBUF_DEST_SERVER,
11846         MODEBUF_DEST_HACK4
11847
11848         * ircd/channel.c: Add another argument to build_string() to handle
11849         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
11850         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
11851         to be sent out
11852
11853 2000-03-27  Perry Lorier <isomer@coders.net>
11854
11855         * ircd/s_bsd.c: fixed missing 'u' typo.
11856
11857 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
11858
11859         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
11860         _mode_string(), _mode_client(), _flush(); also implemented a
11861         simple build_string()
11862
11863         * include/channel.h: added definition of ModeBuf, modebuf_*
11864         manipulation functions, and a couple of helper macros
11865