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