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