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