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