08a88e4de39dd7590cb018285eb39f5c59bd5874
[ircu2.10.12-pk.git] / ChangeLog
1 2005-01-13  Michael Poole <mdpoole@troilus.org>
2
3         * RELEASE.NOTES: Update for 2.10.12.
4
5 2005-01-08  Michael Poole <mdpoole@troilus.org>
6
7         * ircd/channel.c (@page zombie): Add synopsis to explain what
8         zombies are supposed to do.
9
10         * doc/example.conf (Features): Transfer recommended LOG features
11         from 2.10.11 example.conf.
12
13 2005-01-03  Michael Poole <mdpoole@troilus.org>
14
15         * ircd/ircd.c (try_connections): Test Connect hold time before
16         updating it (spotted by Kev).
17
18 2005-01-03  Michael Poole <mdpoole@troilus.org>
19
20         * Makefile.in: Add ircd/test as a subdirectory.
21
22         * ircd/.cvsignore: Ignore umkpasswd binary.
23
24         * ircd/Makefile.in: Update dependencies.
25
26         * ircd/test/.cvsignore: New file.
27
28         * ircd/test/Makefile.in: Use ${} instead of $().  Add build,
29         depend, distclean targets to integrate with rest of build system.
30
31 2005-01-03  Michael Poole <mdpoole@troilus.org>
32
33         * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones
34         that have an invalid IP address.
35
36         * ircd/ircd.c (try_connections): Update Connect hold time before
37         skipping it, to prevent infinite loops.
38
39 2005-01-03  Kevin L Mitchell  <klmitch@mit.edu>
40
41         * ircd/s_user.c (is_silenced): is_silenced() would core if sptr
42         was a server; fixed to skip servers
43
44 2004-12-28  Michael Poole <mdpoole@troilus.org>
45
46         * include/s_bsd.h (VirtualHost): Replace with separate variables
47         for IPv4 and IPv6 virtual hosts.
48
49         * include/uping.h (uping_echo): Remove declaration.
50
51         * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or
52         VirtualHost_v6 based on iauth server address family.
53
54         * ircd/ircd_lexer.l: Do not recognize RESOLVER token.
55
56         * ircd/ircd_parser.y (ResolverAddr): Remove declaration.
57         (RESOLVER): Remove definition.
58         (generalresolver): Remove.
59         (generalvhost): Assign address to either VirtualHost_v4 or
60         VirtualHost_v6, depending on format.
61
62         * ircd/ircd_res.c (res_socket): Replace with separate variables
63         for IPv4 and IPv6 resolver sockets.
64         (ResolverAddr): Remove definition.
65         (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets.
66         (send_res_msg): Select outbound FD based on resolver address type.
67         (res_readreply): Recognize either inbound socket FD.
68
69         * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL.
70         (os_socket): Require local != NULL.
71
72         * ircd/s_bsd.c (VirtualHost): Replace with separate variables
73         for IPv4 and IPv6 virtual hosts.
74         (connect_inet): Select virtual host based on destination address.
75
76         * ircd/uping.c (UPingFIleDescriptor): Remove.
77         (upingSock): Split into separate IPv4 and IPv6 variables.
78         (uping_echo_callback): Incorporate uping_echo() body here, so the
79         proper socket FD can be used.
80         (uping_init): Attempt to set up both v4 and v6 UPING sockets.
81         (uping_server): Create uping socket with appropriate local address.
82
83         * doc/example.conf (General): Update example config file to
84         reflect removal of Resolver setting and support for separate IPv4
85         and IPv6 VHost settings.
86
87 2004-12-28  Michael Poole <mdpoole@troilus.org>
88
89         * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES,
90         DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove
91         unused macros.
92
93         * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c,
94         ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete
95         #include <arpa/inet.h>.
96
97 2004-12-28  Michael Poole <mdpoole@troilus.org>
98
99         * ircd/match.c: Remove obsolete #include <arpa/inet.h>.
100         (ipmask_parse_ipv4): We already parse the dotted quads from the
101         input string, so use them instead of inet_addr() to populate
102         out->s_addr.
103
104         * ircd/gline.c: Remove obsolete #includes <arpa/inet.h>, "sys.h".
105         (do_gline): Pass SHOW_IP instead of TRUE as argument to
106         get_client_name().
107
108         * ircd/ircd.c (try_connections): Revise to use fewer temporary
109         variables.
110
111 2004-12-28  Michael Poole <mdpoole@troilus.org>
112
113         * include/res.h: Implement irc_in_addr_* as macros.
114
115         * ircd/ircd_res.c: Remove the function bodies.
116
117         * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body.
118         (ircd_ntoa_r): Do not append extra ':' when unparsing 0::.
119         (ircd_aton): Accept IPv6 addresses with all eight segments
120         specified (e.g. 0:0:0:0:0:0:0:0).  Correctly parse addresses
121         with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1).
122
123         * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files.
124
125         * ircd/test/Makefile: Convert to Makefile.in for proper VPATH
126         support.  Add test_stub.c and ircd_in_addr_t.c references.
127
128         * configure.in: Generate ircd/test/Makefile as an output file.
129
130         * configure: Update.
131
132 2004-12-18  Michael Poole <mdpoole@troilus.org>
133
134         * include/client.h: Move unreg, privs, capab and active fields
135         from struct Client to struct Connection since that is how they
136         are really associated.  Adjust macros to match.
137         (SetPriv, ClrPriv): New macros.
138
139         * ircd/client.c (client_set_privs): Exit earlier for remote
140         clients.  Adjust macro use to correspond.
141
142         * ircd/m_server.c (mr_server): Grant all privileges except
143         PRIV_SET to peer servers.
144
145 2004-12-18  Michael Poole <mdpoole@troilus.org>
146
147         * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug
148         #1087461.
149
150 2004-12-18  Michael Poole <mdpoole@troilus.org>
151
152         * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the
153         socket's FD is the same after processing as it was before; local
154         clients apparently have s_fd() == -1 after close.
155
156 2004-12-18  Kevin L Mitchell  <klmitch@mit.edu>
157
158         * ircd/s_user.c: make absolutely certain register_user() is never
159         called with cli_unreg non-zero; transition set_nick_name() over to
160         the new way of determining whether client is ready for
161         register_user()
162
163         * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to
164         understand a given CAP subcommand
165
166         * ircd/parse.c: add "CAP" command
167
168         * ircd/m_user.c (m_user): transition over to new way of
169         determining whether client is ready for register_user()
170
171         * ircd/m_pong.c (mr_pong): transition over to new way of
172         determining whether client is ready for register_user()
173
174         * ircd/m_cap.c: implementation of the IRC capabilities draft
175
176         * ircd/list.c (make_client): initialize cli_unreg element of
177         client structure
178
179         * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp()
180         functions that were never found because cross-case ordering has
181         not been needed until now
182
183         * ircd/Makefile.in: add m_cap.c to list of .c files
184
185         * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to
186         indicate an unknown CAP subcommand
187
188         * include/msg.h: add "CAP" command
189
190         * include/handlers.h: add m_cap() to list of handlers
191
192         * include/client.h: add support for client capabilities; rototill
193         the registration mechanism to dovetail well with the capability
194         system--i.e., allow the capability system to suspend registration
195         if the user issues one of the CAP commands
196
197         * include/capab.h: header file to define client capabilities
198
199 2004-12-17  Michael Poole <mdpoole@troilus.org>
200
201         * ircd/channel.h (apply_ban): Add new flag to indicate whether
202         newban should be free()'d after it is used.
203
204         * ircd/channel.c (apply_ban): Likewise.  Also set BAN_DEL flag
205         when setting BAN_OVERLAPPED, and free newban when BAN_DEL.
206         (mode_parse_ban): Delete buggy shortcut when channel banlist is
207         empty.
208         (mode_process_bans): Always give ownership of ban->banstr to the
209         mode buffer, avoiding a memory leak.
210
211         * ircd/m_silence.c (apply_silence): Pass new parameter to
212         apply_ban.
213
214 2004-12-17  Michael Poole <mdpoole@troilus.org>
215
216         * ircd/channel.c (sub1_from_channel): Immediately destroy
217         non-Apass channels when oplevels are enabled; otherwise, they can
218         stay opless for a considerable period.
219         (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask()
220         does not try to free() an invalid pointer.
221
222         * ircd/ircd_parser.y (uworldblock): Put UWorld server name into
223         aconf->host, not aconf->name.
224
225         * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items
226         by host here..
227
228         * ircd/s_conf.c (conf_check_server): .. rather than by name here.
229         (attach_conf_uworld): New function to attach CONF_UWORLD items.
230         (rehash): Use attach_conf_uworld() instead of attaching by name.
231
232 2004-12-15  Michael Poole <mdpoole@troilus.org>
233
234         * ircd/m_topic.c (do_settopic): Allow +k services to set topics on
235         channels they are not joined.
236
237 2004-12-15  Michael Poole <mdpoole@troilus.org>
238
239         * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash
240         warning.
241         (ip_registry_canonicalize): New function to convert an IP address
242         into a canonical form for clone checks.
243         (ip_registry_hash): Update to reflect canonical form.
244         (ip_registry_find): Use ip_registry_canonicalize().
245         (ip_registry_check_local, ip_registry_check_remote): Likewise.
246
247         * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when
248         sending them to a non-IPv6 server.
249
250 2004-02-17  Michael Poole <mdpoole@troilus.org>
251
252         * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a
253         +D channel when they hide their hostmask.
254
255 2004-12-15  Michael Poole <dmpoole@troilus.org>
256
257         * doc/example.conf: Remove the example Server blocks since they
258         are no longer used (were merged into Connect).
259
260         * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit.
261
262         * ircd/m_server.c (check_loop_and_lh): Use a different argument to
263         test whether an introduced server is directly connected or not.
264
265 2004-12-14  Michael Poole <mdpoole@troilus.org>
266
267         * include/client.h (FLAG_IPV6): New value for enum Flag.
268         (IsIPv6, SetIPv6): Accessor macros for it.
269
270         * include/numnicks.h (iptobase64): Add flag indicating whether to
271         use full IPv6 addresses or fake them in an IPv4-compatible way.
272
273         * ircd/numnicks.c (iptobase64): Use the new flag.
274
275         * include/send.h (sendcmdto_flag_serv_butone): New function to
276         send different lines to servers based on flags (like FLAG_IPV6).
277
278         * ircd/send.c (sendcmdto_flag_serv_butone): Implement it.
279
280         * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in
281         our server flags.
282
283         * ircd/s_serv.c (server_estab): Likewise.  Also make sure we send
284         compatible IP addresses for the new server.
285
286         * ircd/s_user.c (register_user): Only send full IPv6 addresses to
287         links that have FLAG_IPV6 set.
288
289 2004-12-13  Michael Poole <mdpoole@troilus.org>
290
291         * doc/example.conf: Update General block comment to mention
292         new RESOLVER option and to explain IPv6 support.
293
294         * ircd/ircd_lexer.l: Recognize RESOLVER token.
295
296         * ircd/ircd_parser.y: Declare RESOLVER token and use it in an
297         alternative for generalitem.
298
299         * ircd/ircd_res.c: Define global ResolverAddr variable.  If it is
300         valid, use it instead of VirtualHost in restart_resolver().
301
302 2004-12-13  Michael Poole <mdpoole@troilus.org>
303
304         * doc/example.conf: Update configuration to move Client block
305         comment after sample Class blocks, and update entries in it.
306
307         * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens.
308
309         * ircd/ircd_parser.y: Add ip and username global variables and IP
310         and USERNAME tokens.  Add clientip and clientusername alternatives
311         for clientitem, and update clientblock to correspond.
312
313         * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk
314         the request_list before request_list is initialized.
315         (cres_mem): Likewise.
316
317         * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of
318         proper address family.
319
320         * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which
321         means DNS reply is optional.  If aconf->addrbits >= 0, test it.
322
323         * tools/crypter: Delete.
324
325 2004-12-11  Kevin L Mitchell  <klmitch@mit.edu>
326
327         * ircd/*.c: use new assert() in ircd_log.h in preference to system
328         assert()
329
330         * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary
331         glue so that umkpasswd will successfully compile and link
332
333         * ircd/test/ircd_chattr_t.c: comment out include of assert.h since
334         there are no calls to assert()
335
336         * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert()
337         from looping should there be an assertion failure somewhere in the
338         logging subsystem
339
340         * include/ircd_log.h: custom implementation of assert() that calls
341         log_write()
342
343 2004-11-21  Michael Poole <mdpoole@troilus.org>
344
345         * ircd/channel.c (mode_parse_upass): Allow forced mode changes to
346         be done by non-channel-managers, fixing a crash from OPMODE.
347         (mode_parse_apass): Likewise.
348
349 2004-11-20  Michael Poole <mdpoole@troilus.org>
350
351         * ircd/m_create.c (ms_create): Complain if a user tries to CREATE
352         a channel they are already in, but do not add them again.
353
354 2004-11-09  Michael Poole <mdpoole@troilus.org>
355
356         * include/res.h (init_resolver): Delete, and initialize lazily.
357
358         * ircd/ircd.c (main): Do not call init_resolver().
359
360         * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for
361         local resolver socket address.
362         (init_resolver): Delete.
363         (make_request): Call restart_resolver() if necessary.
364         (query_name): Use ircrandom() instead of rand().
365
366         * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to
367         a file descriptor that indicates the socket family to use.
368         (os_sendto_nonb,os_socket,os_connect_nonb): Update to match.
369
370 2004-11-09  Michael Poole <mdpoole@troilus.org>
371
372         * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a
373         socket from epoll on delete, since the kernel does that for us.
374
375 2004-11-07  Michael Poole <mdpoole@troilus.org>
376
377         * ircd/m_server.c (m_server, ms_server): Assign timestamp before
378         it might be used in exit_new_server().
379
380 2004-11-07  Michael Poole <mdpoole@troilus.org>
381
382         * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate
383         to reflect the changes since these files' last rebuild.
384
385 2004-11-07  Michael Poole <mdpoole@troilus.org>
386
387         * include/ircd_crypt.h (ircd_crypt): This should return char*, not
388         const char*, since it does not own the returned pointer.
389
390         * ircd/ircd_crypt.c (ircd_crypt): Change return type.
391
392         * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static
393         field since it is returned but this function must own the buffer.
394
395         * ircd/m_oper.c (oper_password_match): Free the string returned by
396         ircd_crypt().
397
398         * ircd/engine_epoll.c (engine_loop): Fix a memory leak.
399
400 2004-11-07  Michael Poole <mdpoole@troilus.org>
401
402         * acinclude.m4: Look for a 64-bit integer type.
403
404         * configure.in: Look for inttypes.h, since some systems have that
405         but not stdint.h (and define 64-bit integers therein).
406
407         * include/client.h: Delete con_sendK, con_receiveK.  Make
408         con_sendB and con_receiveB 64 bits wide.
409
410         * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr.
411         Convert the other byte counters and the connected time counters to
412         64 bits wide.
413
414         * ircd/ircd_snprintf.c (doprintf): Unconditionalize the
415         HAVE_LONG_LONG bits, and use the 64-bit integer types from above.
416
417         * ircd/packet.c (update_bytes_received): Remove use of
418         cli_receiveK().
419
420         * ircd/s_bsd.c (deliver_it): Likewise.
421         (close_connection): Likewise.
422
423         * ircd/s_misc.c (tstats): Likewise.  Update format strings to use
424         %Lu for 64-bit integer parameters.
425
426         * ircd/s_stats (stats_links): Convert cli_sendK() and
427         cli_receiveK() use shifted versions of the byte counters, and
428         update format strings to use %Lu for 64-bit integer parameters.
429
430 2004-11-07  Michael Poole <mdpoole@troilus.org>
431
432         * include/s_user.h (add_silence): Delete.
433         (del_silence): Delete.
434
435         * include/struct.h (struct User): Convert silence list to struct Ban.
436
437         * ircd/m_silence.c (apply_silence, forward_silences): New functions.
438         (m_silence): Use forward_silences() instead of add_silence().
439         (ms_silence): Likewise.
440
441         * ircd/s_err.c (replyTable): Update RPL_SILELIST.
442
443         * ircd/s_misc.c (exit_one_client): Update to new silence list type.
444
445         * ircd/s_user.c (is_silenced): Use find_ban() to search for
446         silences.  If one is found, send it plus any silence exceptions.
447         (del_silence): Delete.
448         (add_silence): Delete.
449
450 2004-11-07  Michael Poole <mdpoole@troilus.org>
451
452         * include/channel.h: Remove declarations for undefined functions
453         cancel_mode(), add_token_to_sendbuf(), IsMember().  Delete
454         add_banid(), next_removed_overlapped_ban().  Add BAN_EXCEPTION
455         flag and new functions find_ban(), apply_ban().
456
457         * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list,
458         LocalChanOperMode): Remove unused variable definitions.
459         (make_nick_user_host): Delete.
460         (add_banid): Delete.
461         (next_removed_overlapped_ban): Delete.
462         (find_ban): New function, which knows about exceptions.
463         (is_banned): Use find_ban() and only work on a struct Membership.
464         (bmatch): New function, which knows about CIDR bans.
465         (apply_ban): New function to replace add_banid().
466         (mode_parse_ban): Use apply_ban().
467
468 2004-10-28  Michael Poole <mdpoole@troilus.org>
469
470         * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use
471         new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM.
472
473 2004-10-22  Michael Poole <mdpoole@troilus.org>
474
475         * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding
476         with announcements enabled (do not "announce" to the recipient,
477         and unconditionally send to the recipient).
478
479         * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip
480         the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES.
481
482 2004-10-21  Michael Poole <mdpoole@troilus.org>
483
484         * include/channel.h (Ban): Add fields address, nu_len, addrbits to
485         support netmask-based bans.
486
487         * ircd/channel.c (set_ban_mask): New function to parse a ban as
488         either netmask-based or not.
489         (make_ban): Use set_ban_mask().
490         (make_nick_user_ip): Becomes unused; remove it.
491         (is_banned): Rewrite to match only once against the nick!user part
492         of a ban, and compare addresses if BAN_IPMASK is set.
493         (mode_parse_ban): Use set_ban_mask().
494
495 2004-10-21  Michael Poole <mdpoole@troilus.org>
496
497         * ircd/s_conf.c (attach_iline): Test resolved host names against
498         aconf->host, not the (NULL) aconf->name.
499
500 2004-10-19  Michael Poole <mdpoole@troilus.org>
501
502         * include/channel.h: Move ban flags out of channel flags and
503         rename to reflect this.
504
505         * ircd/channel.c: Update ban constant names.
506
507         * ircd/m_burst.c: Likewise.
508
509 2004-10-18  Michael Poole <mdpoole@troilus.org>
510
511         * include/list.h (SLink): Remove ban elements from here...
512
513         * include/channel.h (Ban): And move to the new struct Ban.
514         (Channel): Update banlist field to match.
515         (next_removed_overlapped_ban): Update return type to match.
516         (make_ban, free_ban): New functions.
517
518         * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update
519         list types.
520         (free_bans): New variable to hold unused Ban elements.
521         (make_ban, free_ban): New functions.
522         (destruct_channel, add_banid, next_removed_overlapped_ban): Update
523         to use struct Ban.
524         (is_banned, send_channel_modes, send_ban_list): Likewise.
525         (ParseState, mode_parse_ban, mode_process_bans): Likewise.
526         (mode_parse): Likewise.
527
528         * ircd/m_burst.c (ms_burst): Update to use struct Ban.
529
530         * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban.
531
532         * ircd/s_debug.c (count_memory): Update to use struct Ban.
533
534 2004-10-18  Kevin L Mitchell  <klmitch@mit.edu>
535
536         * ircd/gline.c (gline_find): unless we're looking for an exact
537         match, we should call match() on hostnames, not ircd_strcmp()
538
539 2004-10-17  Michael Poole <mdpoole@troilus.org>
540
541         * include/s_conf.h (ConfItem): Add new field username.  Replace
542         unused field bits with addrbits.
543         (find_conf_exact): Replace user and host arguments with cptr.
544         (find_conf_name, read_tlines, find_restrict): Remove declaration
545         for undefined functions.
546         (conf_parse_userhost): New function.
547
548         * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both
549         resolved hostname and IP are matched in one pass now.
550
551         * ircd/s_bsd.c (close_connection): Update call to find_conf_exact().
552
553         * ircd/s_conf.c (conf_parse_userhost): New function.
554         (check_limit_and_attach): Use correct ConfItem field to determine
555         maximum connections per IP.
556         (attach_iline): Replace user@host matching with shorter, clearer
557         matching against username and host/IP fields.
558         (find_conf_exact): Likewise.
559
560         * ircd/ircd_parser.y: Replace assignment to aconf->host for
561         CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware
562         conf_parse_userhost().  This means CONF_CLIENT ConfItems no longer
563         use the name field or the IP token.  Remove the latter.
564
565         * ircd/ircd_lexer.l: Remove unused token IP.
566
567 2004-10-17  Michael Poole <mdpoole@troilus.org>
568
569         * ircd/crule.c (crule_via): Simplify the lookup for the directly
570         connected server name.
571
572 2004-10-16  Michael Poole <mdpoole@troilus.org>
573
574         * ircd/class.c: Make find_class() return NULL for unknown classes,
575         rather than returning the start of connClassList.
576
577         * ircd/match.c (parse_ipmask): Translate IPv4 masks as
578         IPv4-compatible addresses.
579         (check_ipmask): Fix comparison of IP masks.
580
581         * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that
582         uses CIDR style masks in the hostname field of a Motd block.
583
584 2004-10-16  Michael Poole <mdpoole@troilus.org>
585
586         * ircd/numeric.h: Remove the unused RPL_STATMEM and
587         RPL_STATMEMTOT.  Move the RPL_BOUNCE comment to its current
588         value (the former RPL_STATMEM).
589
590         * ircd/s_err.c: Remove format strings for RPL_STATMEM and
591         RPL_STATMEMTOT.
592
593 2004-10-16  Michael Poole <mdpoole@troilus.org>
594
595         * ircd/m_server.c: Look up server configuration by name of our
596         directly connected peer rather than the server being introduced.
597
598 2004-10-13  Michael Poole <mdpoole@troilus.org>
599
600         * include/channel.h: Delete MODE_LISTED and is_listed().  Replace
601         ListingArgs.chptr with ListingArgs.bucket.  Move declaration of
602         list_next_channels() to..
603
604         * include/hash.h: here, and drop the "nr" argument.
605
606         * ircd/channel.c: Remove redundant scan of local clients for
607         channels being listed.  Delete list_next_channels() function.
608
609         * ircd/hash.c: Add list_next_channels() here, revising to not use
610         MODE_LISTED and to use ListingArgs.bucket instead of chptr.  Also
611         decide when to stop sending RPL_LISTs based on a half-full sendq.
612
613         * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED.
614
615         * ircd/m_list.c: Delete mention of MODE_LISTED.  Unconditionally
616         call list_next_channels(sptr).
617
618         * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels().
619
620         * ircd/Makefile.in: Update dependencies (for hash.c).
621
622 2004-10-13  Michael Poole <mdpoole@troilus.org>
623
624         * ircd/ircd_parser.y: Consistently zero out global variables after
625         they are used (prevents double frees and other problems).
626
627 2004-10-12  Michael Poole <mdpoole@troilus.org>
628
629         * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas,
630         Set, Clr respectively.  Get rid of FLAG_CHKACCESS and FLAG_LOCAL.
631         Delete con_fd (get from con_socket) and con_port.  Move sentalong
632         from send.c to struct Connection, and cli_lasttime and cli_since
633         from struct Client to struct Connection.  Update cli_*() macros to
634         use con_*(cli_connect(cli)).
635
636         * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with
637         FlagClr(), PrivHas() with FlagHas().
638
639         * ircd/ircd_parser.y: Likewise.
640
641         * ircd/list.c: Remove assignment to cli_local() since it is now a
642         calculated value.
643
644         * ircd/s_bsd.c: Remove uses of cli_port().
645
646         * ircd/s_conf.c: Remove uses of ClearAccess().
647
648         * ircd/send.c: Delete sentalong array and replace with references
649         to con_sentalong().
650
651 2004-10-12  Michael Poole <mdpoole@troilus.org>
652
653         * doc/example.conf: Update example config to reflect the changes
654         made in the remainder of this patch.
655
656         * include/list.h: Make make_conf() take a type argument.
657
658         * include/s_conf.h: Delete CONF_LEAF and CONF_HUB.  Add "maximum"
659         and "hub_limit" to ConfItem to compensate.
660
661         * ircd/ircd_lexer.l: Recognize MAXHOPS token.
662
663         * ircd/ircd_parser.y: Get rid of aconf global variable and add
664         hub_limit global variable.  Add MAXHOPS token, and productions
665         inside connectblock to recognize it and hub masks.  Allow maxlinks
666         field in a Client block, rather than overloading password field.
667         Convert serverblock to uworldblock and remove extraneous fields.
668
669         * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and
670         calculate LHcptr and active_lh_line.  Merge some duplicated code
671         so handling active_lh_line cases is clearer.
672
673         * ircd/s_conf.c: Make make_conf() take a type argument.  Delete
674         CONF_LEAF and CONF_HUB.  Do not overwrite server name with what
675         is specified in the config file.
676
677         * ircd/s_err.c: Remove the unused RPL_STATSNLINE and
678         RPL_STATSHLINE.  Remove useless parameters and format fields from
679         RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and
680         RPL_STATSULINE.
681
682         * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB.
683
684         * ircd/s_stats.c: Get rid of report_array and make
685         stats_configured_links() directly use RPL_STATSxLINE (adding the
686         new fields for Server and Client blocks).  Remove /stats h, since
687         that has no meaning.
688
689 2004-10-12  Michael Poole <mdpoole@troilus.org>
690
691         * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by
692         default rather than by listing which should be wiped out.
693
694 2004-10-09  Michael Poole <mdpoole@troilus.org>
695
696         * ircd/m_server.c: Forward port checks for leaf and hub config
697         rules, and reorganize mr_server() and ms_server() by moving out
698         common code.  Add doxygen comments for the file.
699
700 2004-10-09  Michael Poole <mdpoole@troilus.org>
701
702         * ircd/hash.c: Fix thinko in hash function: It is not indexed
703         simply by character value, so we cannot just remap the values
704         by case.
705
706 2004-10-05  Michael Poole <mdpoole@troilus.org>
707
708         * ircd/hash.c: Replace the old hash function with one based on
709         randomized CRC-32.  The new one avoids a big table from the old
710         function.
711
712 2004-10-05  Michael Poole <mdpoole@troilus.org>
713
714         * ircd/random.c: Convert to use ircd_md5 interface and hopefully
715         keep more internal random state.
716
717 2004-10-05  Michael Poole <mdpoole@troilus.org>
718
719         * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c,
720         ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx
721         prefixes.
722
723 2004-10-05  Michael Poole <mdpoole@troilus.org>
724
725         * adns, lib/adns: Remove unused adns library.
726
727 2004-10-05  Michael Poole <mdpoole@troilus.org>, hikari <hikari@undernet.org>, Perry Lorier <isomer@undernet.org>
728
729         * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible
730         format, and add new comments where needed.
731
732         * Doxyfile: New file to tell Doxygen how to run.
733
734 2004-09-21  Michael Poole <mdpoole@troilus.org>
735
736         * ircd/s_auth.c (HeaderMessages): Make the compiler, not the
737         programmer, generate magic numbers.
738         (AuthIncompleteList): Remove.
739         (AuthPollList): Remove.
740
741 2004-09-19  Michael Poole <mdpoole@troilus.org>
742
743         * acinclude.m4: Clean up AC_DEFINE()s so we no longer need
744         acconfig.h.
745
746         * acconfig.h: Remove since it is now redundant.
747
748         * aclocal.m4, config.h.in, configure: Regenerate.
749
750 2004-09-19  hikari <hikari@undernet.org>
751
752         * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison 
753         aren't found as they're essential for compilation.  Regenerated files with 
754         autreconf.
755                 
756 2004-09-18  Michael Poole <mdpoole@troilus.org>
757
758         * doc/example.conf: Add NETWORK feature example.  Fix typos in
759         eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT.
760
761         * include.class.h: Make max_links and ref_count unsigned ints.
762         Make ping_freq and conn_freq unsigned short. (No more negative
763         numbers in /stats y.)
764
765         * ircd/ircd.c: Report configuration file name for "ircd -k".
766
767 2004-09-18  hikari <hikari@undernet.org>
768
769         * ircd/Makefile.in: Fixed a missing internal build dependency.
770         
771 2004-09-16  Michael Poole <mdpoole@troilus.org>
772
773         * INSTALL: Fix name of example.conf and mention its installed
774         location.
775
776         * include/supported.h (FEATURESVALUES2): Fix a reference to
777         channel mode +u that escaped earlier rename attempts.
778
779         * ircd/ircd_auth.c (iauth_connect): Assign port number after
780         zeroing out the destination address.
781         Add some additional debug statements to help follow operations.
782
783         * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set.
784
785 2004-09-11  Bas Steendijk <steendijk@xs4all.nl>
786
787         * include/channel.h, include/supported.h, ircd/channel.c,
788         ircd/s_err.c: Use +U instead of +u for user keys.
789
790 2004-09-13  Michael Poole <mdpoole@troilus.org>
791
792         * doc/example.conf: Remove sample VIRTUAL_HOST setting.
793
794         * doc/readme.features: Remove VIRTUAL_HOST documentation, and
795         update NODNS documentation to match current behavior.
796
797         * include/s_conf.h: Remove now-unused vhost_address field and
798         set_virtual_host() function.
799
800         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
801         Remove VIRTUAL_HOST.
802
803         * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address
804         if we do not have a more specific alternate.
805
806         * ircd/ircd_parser.y: Check for sanity in General blocks (from old
807         conf_add_local()) and assign vhost directly to VirtualHost.
808
809         * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any
810         value will be either != 0 or != 0xffff.
811
812         * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the
813         local addresses are specified as IPv4 addresses.
814
815         * ircd/s_conf.c: Remove unused conf_add_local() and
816         set_virtual_host().
817
818 2004-09-13  Michael Poole <mdpoole@troilus.org>
819
820         * ircd/listener.c (add_listener): Consolidate duplicated code, and
821         make sure listener->server is set before calling inetport() on it.
822
823 2004-09-12  Michael Poole <mdpoole@troilus.org>
824
825         * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
826         services (not normal opers) force a change of +A or +u.
827
828 2004-09-11  Michael Poole <mdpoole@troilus.org>
829
830         * include/s_stats.h: Add sd_name to struct StatDesc.  Stop
831         publishing the statsinfo and statsmap arrays; replace them with
832         stats_find().  Change argument list of StatFunc() to work with
833         names.
834
835         * ircd/m_stats.c: Use stats_find() instead of statsmap[].  Use the
836         full argument instead of just the first character in reports.
837
838         * ircd/s_stats.c: Adapt individual stats handler functions to new
839         argument list.  Add long names to statsinfo[].  Add new functions
840         stats_cmp(), stats_search(), stats_find().  Sort statsinfo[] in
841         stats_init().
842
843         * ircd/s_err.c: Change ENDOFSTATS to display a string rather than
844         a single character.
845
846         * ircd/s_user.c: Send an error to the user when a message loses
847         its target in transit.
848
849         * include/class.h include/gline.h include/ircd_features.h
850         include/listener.h include/motd.h include/msgq.h include/res.h
851         include/s_debug.h include/s_misc.h include/userload.h ircd/class.c
852         ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c
853         ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c
854         ircd/userload.c: Adjust stats handlers to new argument list.
855
856 2004-09-11  Michael Poole <mdpoole@troilus.org>
857
858         * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and
859         replace with RPL_TRACEEND.
860
861         * ircd/s_trace.c: Move all the duplicated code in m*_trace() to
862         do_trace().  Implement RPL_TRACEEND, per RFE#830291.
863
864 2003-06-20  Alexander Maassen <outsider@key2peace.org>
865
866         * ircd/m_topic.c : Don't allow banned users to set a topic in a
867         channel.
868
869 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
870
871         * config.h.in, tools/Makefile.crypt: Remove wrong pathname from
872         comment in header.
873
874         * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in
875         header comment.
876
877         * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c,
878         ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c,
879         ircd/m_version.c: Remove "template" moniker from comments.
880
881         * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from
882         channel prefix list.
883
884 2004-09-11  Michael Poole <mdpoole@troilus.org>
885
886         * doc/example.conf: Add examples for FEAT_HIS_* features.
887
888 2003-06-08 Matthias Crauwels <ultimate_@wol.be>
889         [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.]
890
891         * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
892
893         * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS
894
895         * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS
896
897         * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS
898
899         * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS
900
901 2004-09-11  Michael Poole <mdpoole@troilus.org>
902
903         * ircd/ircd_relay.c (server_relay_channel_message,
904         server_relay_channel_notice): Do not allow other servers to send
905         or relay to local channels.
906
907         * ircd/m_wallchops (ms_wallchops): Likewise.
908
909         * ircd/m_wallvoices (ms_wallvoices): Likewise.
910
911 2004-09-11  Kevin L Mitchell  <klmitch@mit.edu>
912
913         * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927)
914
915         * ircd/channel.c: removing limits shouldn't gobble an argument;
916         this was a subtle interaction issue with modebuf...fixed by adding
917         MODE_LIMIT to modebuf_flush_int() and short-circuiting
918         modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the
919         removal case.  Note that this is not proof against the sequence,
920         "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10);
921         modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);"
922         (Bug #916138)
923
924 2004-09-11  Michael Poole <mdpoole@troilus.org>
925
926         * include/supported.h: Kev pointed out I misinterpreted the
927         meaning of CHANMODES; fix this.  Also define CHANNELLEN and
928         STATUSMSG from the ISUPPORT draft.
929
930 2004-09-10  Michael Poole <mdpoole@troilus.org>
931
932         * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES
933         when oplevels are enabled.
934
935 2004-09-10  Michael Poole <mdpoole@troilus.org>
936
937         * ircd/channel.c (send_channel_modes): Only send oplevels for
938         channels that actually use them -- for -A channels, send chanops
939         as :o even if OPLEVELS is enabled.
940
941         * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help.
942
943         * ircd/numnicks.c (base64toip): Fill in the right number of 0
944         words when we see _ in a base64-encoded IPv6 address.
945
946 2004-09-10  Michael Poole <mdpoole@troilus.org>
947
948         * ircd/ircd.c: Add -k as a chkconf-like option to exit after
949         reading the configuration file.
950
951         * ircd/chkconf.c: Remove as unused.
952
953         * ircd/Makefile.in: Remove last mentions of chkconf from Makefile.
954
955 2004-09-10  Michael Poole <mdpoole@troilus.org>
956
957         * doc/example.conf: Remove examples for unused features (TIMESEC,
958         CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES).
959
960         * doc/readme.features: Remove documentation for unused features
961         (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges,
962         HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and
963         add documentation for ANNOUNCE_INVITES.
964
965         * include/ircd_features.h: Remove unused features (TIMESEC,
966         CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS).
967
968         * include/ircd_features.c: Likewise.
969
970         * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and
971         FEAT_IRCD_RES_TIMEOUT where appropriate.
972
973         * ircd/s_debug.c: Do not display setting of unused (and now
974         non-existent) FEAT_CRYPT_OPER_PASSWORD.
975
976 2004-09-10  Michael Poole <mdpoole@troilus.org>
977
978         * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
979         to use the correct address family and IP offset.
980
981 2004-09-10  Michael Poole <mdpoole@troilus.org>
982
983         * include/s_conf.h (struct ConfItem): Add origin and origin_name
984         fields.
985
986         * ircd/ircd_parser.y: Add new global variable "origin."  Add a new
987         "connectionvhost" production that accepts vhost = "IP" inside a
988         Connect block and assigns the IP to origin_name.
989
990         * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it
991         as the local address.  Otherwise, fall back to the old logic (if
992         VIRTUAL_HOST="TRUE", use the virtual host setting).
993
994         * ircd/s_conf.c (lookup_confhost): If the ConfItem has an
995         origin_name, try to parse it as an IP address.
996
997 2004-04-17  Isomer <isomer@undernet.org>
998         * ircd/parse.c: Don't rate limit /gline messages
999
1000 2004-09-10  Michael Poole <mdpoole@troilus.org>
1001
1002         * ircd/ircd_parser.y: Replace references to yylval.whatever with
1003         references to the appropriate term.  This fixes bugs like
1004         "1 hour 30 minutes" being misrecognized as 30 seconds.
1005
1006 2004-09-10  Michael Poole <mdpoole@troilus.org>
1007
1008         * ircd/ircd_features.c (features): Change default values for
1009         SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users
1010         need not specify them in ircd.conf.
1011
1012 2004-09-10  Michael Poole <mdpoole@troilus.org>
1013
1014         * ircd/ircd_parser.y (serverblock): Server blocks should default
1015         to CONF_LEAF status.
1016
1017         * doc/example.conf: Update example to reflect this.
1018
1019 2004-09-10  Michael Poole <mdpoole@troilus.org>
1020
1021         * ircd/parse.c (msg_tree_parse): Reject commands that contain
1022         non-alphabetic characters.
1023
1024 2004-09-09  Michael Poole <mdpoole@troilus.org>
1025
1026         * config.h.in: Remove duplicated and unused macro definitions.
1027
1028 2004-08-24  Michael Poole <mdpoole@troilus.org>
1029
1030         * ircd/client.h: Properly parenthesize "flag" argument to
1031         FLAGSET_INDEX() and FLAGSET_MASK() macros.
1032
1033 2004-08-22  Michael Poole <mdpoole@troilus.org>
1034
1035         * ircd/channel.c (send_channel_modes): If oplevels are disabled,
1036         send 'o' for chanops instead of the member's oplevel.
1037
1038 2004-08-22  Michael Poole <mdpoole@troilus.org>
1039
1040         * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp()
1041         instead of memcmp().  (Fixes IPv4 servers linking to an IPv6
1042         server.)
1043
1044 2004-08-22  Alex Badea  <decampos@users.sourceforge.net>
1045
1046         * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses
1047
1048 2004-08-19  Michael Poole <mdpoole@troilus.org>
1049
1050         * include/res.h: Remove unused function gethost_byname_type().
1051
1052         * ircd/ircd_res.c: Likewise, and clean up some small functions
1053         only used once (remove_dlink(), timeout_resolver()).  Use rand()
1054         for random request IDs instead of the deprecated *rand48().  Make
1055         resolver timeout event fire only when needed instead of once a
1056         second.
1057
1058 2004-08-17  Michael Poole <mdpoole@troilus.org>
1059
1060         IPv6 support, with lots of code and design borrowed from a patch
1061         by Alex Badea.
1062
1063         * config.h.in: Add place to #define IPV6 support.
1064
1065         * configure.in: Check for struct sockaddr_in6, and use that as
1066         the default choice for IPv6 support.
1067
1068         * configure: Regenerate.
1069
1070         * include/IPcheck.h, include/client.h, include/gline.h,
1071         include/ircd_string.h, include/listener.h, include/match.h,
1072         include/res.h, include/s_bsd.h: Convert from struct in_addr (from
1073         <netinet/in.h>) to struct irc_in_addr (from "res.h").
1074
1075         * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert
1076         from struct sockaddr_in (from <netinet/in.h>) to struct
1077         irc_sockaddr (from "res.h").  Add new functions os_socket(),
1078         os_accept(), os_sendto_nonb() to help abstract away actual
1079         sockaddr types.
1080
1081         * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark
1082         characters valid in IPv6 addresses.
1083
1084         * include/numnicks.h, ircd/numnicks.c: New functions iptobase64()
1085         and base64toip() to convert from base64 to struct irc_in_addr.
1086
1087         * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c,
1088         ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c,
1089         ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct
1090         irc_in_addr instead of unsigned int or struct in_addr.
1091
1092         * ircd/gline.c: Use new more-generic ipmask functions.
1093
1094         * ircd/ircd.c: Use struct irc_sockaddr instead of separate port
1095         fields.
1096
1097         * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton()
1098         instead of irc_ssaddr and irc_getaddrinfo().
1099
1100         * ircd/ircd_string.c: Implement new functions: IPv6-capable
1101         ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton().
1102
1103         * ircd/match.c: Delete IPv4-only matchcompIP().  Replace with
1104         IPv6-capable ipmask_parse() and ipmask_check().
1105
1106         * ircd/numnicks.c: Implement new functions: iptobase64() and
1107         base64toip().
1108
1109         * ircd/os_generic: Convert external parameters to be struct
1110         irc_addrinfo.  When using IPv6 support, sockaddr_in6 is native.
1111         Implement new functions os_sendto_nonb(), os_socket() and
1112         os_accept().
1113
1114         * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c,
1115         ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c,
1116         ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct
1117         irc_sockaddr instead of separate in_addr and port fields and new
1118         OS support functions.
1119
1120         * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c,
1121         ircd/ircd_getnameinfo.c: Remove, since these functions are no
1122         longer used.
1123
1124         * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c,
1125         ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove,
1126         since these are unused and not compatible with IPv6 support.
1127
1128         * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c.
1129         Regenerate dependencies.
1130
1131 2004-08-17  Michael Poole <mdpoole@troilus.org>
1132
1133         * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer
1134         states and be case-insensitive again.
1135
1136 2004-08-15  Michael Poole <mdpoole@troilus.org>
1137
1138         * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the
1139         former is from C99 (and the latter is absent on Solaris).
1140
1141         * configure.in: Remove check for inttypes.h (which is a C99 format
1142         string header); replace with check for stdint.h.  Add checks for
1143         sys/param.h and sys/socket.h.  Check for socklen_t being defined
1144         (OS X does not set it).  Run program tests for lex and yacc, and
1145         use them rather than assuming flex and bison.  Remove OSDEP_C and
1146         mention to adns.  Remove check for res_mkquery().
1147
1148         * config.h.in: Update u_intNN_t #undef lines.  Add #undef
1149         socklen_t so configure test can set it.
1150
1151         * configure: Regenerate.
1152
1153         * include/ircd_addrinfo.h: #include headers needed for netdb.h and
1154         to define struct addrinfo and uintNN_t.
1155
1156         * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t.
1157
1158         * include/res.h: #include "ircd_addrinfo.h" to get proper type
1159         definitions.  #define INADDR_NONE if it is not defined (as on
1160         Solaris).
1161
1162         * ircd/Makefile.in: Replace LEX and YACC definitions.  Remove
1163         OSDEP_C and OSDEP_SRC; always compile os_generic.c.  Remove adns
1164         directory from CPPFLAGS.  Regenerate dependencies.
1165
1166         * ircd/client.c: Return when no propagation set for oper, to
1167         squash warning about use of "defaults" before it is set.
1168
1169         * ircd/engine_epoll.c: #include correct C99 integer header.
1170
1171         * ircd/engine_poll.c: Last argument to getsockopt() should be of
1172         socklen_t, not size_t; fix.
1173
1174         * ircd/engine_select.c: Squash warning about bzero().
1175
1176         * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it
1177         with uint32_t.  We need <stdint.h> for that, so include it.
1178
1179         * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with
1180         uint32_t.
1181
1182         * ircd/ircd_lexer.l: Replace flex-isms with portable syntax.
1183         There is no portable way to do %option, so remove that.  lex on
1184         Solaris needs several of its internal tables to be bigger, so
1185         increase those sizes.
1186
1187         * ircd/ircd_parser.y: Remove the second declarations of two
1188         tokens, since standard yacc warns about changing precedence.
1189
1190         * ircd/os_generic.c: Make this compile on common OSes (Linux,
1191         Solaris, OS X, FreeBSD, OpenBSD).
1192
1193         * ircd/table_gen.c: Make arguments to isprint() all unsigned char
1194         to squash warnings on Solaris that array index is "char."
1195
1196         * ircd/umkpasswd.c: Remove #include <libgen.h> since it is not
1197         portable, and replace basename() with an equivalent.
1198
1199         * ircd/uping.c: Typecast printf arguments for 64-bit OSes.
1200
1201 2004-07-27  Michael Poole <mdpoole@troilus.org>
1202
1203         * ircd/m_burst.c: Add new netride_modes() function to check
1204         which modes could be used in a net.ride.  Use this instead
1205         of the old check for just +i or +k.
1206         (Based on patches by beware and pomac.)
1207
1208 2004-07-25  Michael Poole <mdpoole@troilus.org>
1209
1210         * ircd/ircd_parser.y: Remove redundant semicolon; it causes
1211         errors on some versions of yacc.
1212
1213 2004-07-21  Michael Poole <mdpoole@troilus.org>
1214
1215         * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c,
1216         ircd/ircd_reslib.c: Fix warnings from gcc -pedantic.
1217
1218 2004-07-21  Michael Poole <mdpoole@troilus.org>
1219
1220         New DNS resolver code, courtesy of Dianora and the rest of the
1221         Hybrid team.  (Bugs are of course my fault.)
1222
1223         * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and
1224         libresolv from the build process.  Update dependencies.
1225
1226         * configure: Regenerate.
1227
1228         * include/client.h: Change connection's DNS reply type.
1229
1230         * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a.
1231
1232         * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new
1233         RPL_STATSALINE and /stats a to list DNS servers.
1234
1235         * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h,
1236         ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c,
1237         ircd/ircd_reslib.c: New resolver files.
1238
1239         * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
1240         Update to new resolver callback interface and to only deal with
1241         one IP and one name per DNS reply.
1242
1243         * ircd/parse.c: Remove /DNS command, since new resolver does not
1244         track those statistics.
1245
1246 2004-07-20  Michael Poole <mdpoole@troilus.org>
1247
1248         * doc/readme.features: Change references to O:, Y:, etc lines into
1249         references to the appropriate block types.
1250
1251 2004-07-01  Michael Poole <mdpoole@troilus.org>
1252
1253         * include/fileio.h: Elaborate on "works for any file descriptor."
1254
1255         * include/iauth.h: Remove unused file.
1256
1257 2004-07-01  Michael Poole <mdpoole@troilus.org>
1258
1259         * include/map.h, ircd/map.c: Remove unused code.
1260
1261         * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of
1262         map.h and a call to map_update().
1263
1264         * ircd/Makefile.in: Remove map.c and regenerate dependencies.
1265
1266         * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder
1267         for the new config parser.
1268
1269         * ircd/match.c: Remove pointless pointer dereference (Reed points
1270         out that this generates a warning with old gcc).
1271
1272         * ircd/s_user.c: Display connection class in CONNEXIT connection
1273         notice as a string rather than an integer.
1274
1275         * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove
1276         lines (falsely) identifying ringlog as related to IRC; the files
1277         are general purpose.
1278
1279         * configure.in, include/ircd_snprintf.h: Add checks for
1280         va_copy()-like alternatives and use them if va_copy() is missing.
1281
1282         * configure, config.h.in: Regenerate.
1283
1284 2004-02-01  beware <steendijk@xs4all.nl>
1285
1286         * ircd/channel.c: Check bans that look like IP bans against user's
1287         hostname just in case they have a host like 1234.domain.tld.
1288
1289 2003-12-18  Timothy Grant Vogelsang <net@astrolink.org>
1290
1291         * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type
1292
1293 2004-04-02  Gavin Grieve <hektik@dimebox.net>
1294
1295         * ircd/ircd_parser.y: Fix rehash warnings for servername and
1296         numeric so they only warn if changed in the config file.
1297
1298 2004-06-30  Michael Poole <mdpoole@troilus.org>
1299
1300         * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New
1301         files.
1302
1303         * doc/example.conf: Illustrate IAUTH configuration.
1304
1305         * include/client.h: Add fields to record IAUTH status.
1306
1307         * ircd/Makefile.in: Add ircd_auth.c to Makefile.
1308
1309         * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section.
1310
1311         * ircd/s_conf.c: Notify IAUTH code when reloading a configuration
1312         so that an obsolete connection can be abandoned.
1313
1314         * ircd/s_misc.c: Report client exits via IAUTH.
1315
1316         * ircd/s_user.c: If IAUTH is active and a connecting user has not
1317         been checked against it, interrogate the IAUTH server.
1318
1319 2004-06-25  Michael Poole <mdpoole@troilus.org>
1320
1321         * configure.in: Check for crypt.h as well.
1322
1323         * configure: Regenerate.
1324
1325         * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they
1326         affect the first includes of system headers.  Include crypt.h if
1327         it is available.
1328
1329         * ircd/umkpasswd.c: Quash a gcc warning.
1330         
1331 2004-06-23  Michael Poole <mdpoole@troilus.org>
1332
1333         * doc/Authors: Add contributors to ircu2.10.11 and myself.
1334
1335         * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix.
1336
1337         * configure.in: Add missing check for inttypes.h; remove obsolete
1338         display of Head-in-sand, add display of epoll() engine.
1339
1340         * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how
1341         to use SourceForge's CVS server, from the u2.10.11 branch.
1342
1343 2003-11-09 beware <steendijk@xs4all.nl>
1344
1345         * ircd/s_user.c: move assigning a numeric to a local client from
1346         when nick is set, to when connection becomes client, to not waste
1347         numerics.
1348
1349 2004-06-08  Kevin L Mitchell  <klmitch@mit.edu>
1350
1351         * ircd/parse.c: don't let rank-and-file users escape HIS
1352         limitations with /jupe...
1353
1354 2004-06-18  Alex Badea  <decampos@users.sourceforge.net>
1355
1356         * ircd/gline.c (gline_lookup): only return a gline if it's
1357         active
1358
1359         * ircd/s_conf.c (find_kill): don't check for active gline,
1360         since gline_lookup does now
1361
1362 2002-11-11  hikari <shadow@undernet.org>
1363         * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and 
1364         modularise :P
1365
1366         * ircd/ircd_xopen.c: removed, superseded by new crypto system.
1367
1368         * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function,
1369         wrote ircd_crypt_mech_register() function, various other bits 
1370         designed to create a near-pluggable crypto system for ircu.  currently
1371         this code also loads the various mechanisms i've written code for.
1372
1373         * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from 
1374         elsewhere, manipulated to suit ircu, returns a salted MD5 password.
1375
1376         * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file,
1377         generate a crypted password using the systems native crypt() function.
1378
1379         * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really
1380         only be used for testing purposes.
1381
1382         * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from
1383         elsewhere, ircuified.
1384
1385         * ircd/umkpasswd.c: mkpasswd program for ircu.
1386
1387         * include/ircd_xopen.h: removed, superseded by new crypto system.
1388
1389         * include/ircd_crypt.h: external definitions for the new ircd_crypt()
1390         function and definition of the ircd_crypt_mech structure for containing
1391         crypto mechanism data.
1392
1393         * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5
1394         mechanism.
1395
1396         * include/ircd_crypt_native.h: sundary definitions for the native 
1397         crypt() mechanism.
1398
1399         * include/ircd_crypt_plain.h: sundary definitions for the plain text
1400         mechanism.
1401
1402         * include/umkpasswd.h: fluff for umkpasswd.
1403
1404 2003-03-11  Landon Fuller (landonf) <landonf@sf.net>
1405
1406         * configure.in: allow ircu to build on OS X.
1407
1408 2004-05-24  Michael Poole <mdpoole@troilus.org>
1409
1410         * ircd/m_invite.c (m_invite): Include channel name in invitation
1411         announcements.
1412         (ms_invite): Likewise, and also fix a use-before-assignment bug in
1413         them.
1414
1415 2004-05-18  Michael Poole <mdpoole@troilus.org>
1416
1417         Announce invitations to other channel operators.
1418
1419         * include/ircd_features.h, ircd/ircd_features.c
1420         (ANNOUNCE_INVITES): Add new boolean feature, default off.
1421
1422         * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new
1423         reply.
1424
1425         * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone):
1426         Add 'skip' parameter that is needed elsewhere.
1427         (sendcmdto_channel_servers_butone): New function.
1428
1429         * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c,
1430         ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b.
1431
1432         * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send
1433         the INVITE message to all interested servers, and send a numeric
1434         to all local chanops.
1435
1436 2004-05-18  Michael Poole <mdpoole@troilus.org>
1437
1438         * ircd/res_adns.c (res_ourserver): Remove unused function.
1439         (validate_name): Likewise.
1440
1441 2004-05-17  Michael Poole <mdpoole@troilus.org>
1442
1443         * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c:
1444         Rip out feature settings related to oper privileges.
1445
1446         * include/client.h: Comment a few unexplained privileges.
1447
1448         * ircd/ircd_lexer.l: Rename privilege keywords to match their
1449         names in code and /PRIVS output.  Add support for two "new"
1450         privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE).
1451
1452         * include/class.h, ircd/client.c, ircd/ircd_parser.y,
1453         ircd/m_oper.c: Replace the removed feature settings with
1454         per-connection class operator privileges.
1455
1456         * doc/example.conf: Document the change.
1457
1458         * ircd/ircd_parser.y (portblock): Fix slight memory leak.
1459
1460 2004-05-16  Michael Poole <mdpoole@troilus.org>
1461
1462         * doc/example.conf: Make this show the new NICKLEN default.
1463
1464 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
1465
1466         * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased
1467         to 12
1468
1469 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
1470
1471         * ircd/s_user.c: process account creation timestamp if present in
1472         user mode portion of a N protocol message; add account creation
1473         timestamp to outgoing N protocol messages if that timestamp is
1474         non-zero
1475
1476         * ircd/m_account.c: process account creation timestamp if present
1477         in AC protocol message
1478
1479         * include/struct.h: add account creation timestamp
1480
1481 2004-05-16  Michael Poole <mdpoole@troilus.org>
1482
1483         * doc/example.conf: Document operator privilege settings.
1484
1485 2004-05-16  Michael Poole <mdpoole@troilus.org>
1486
1487         Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead.
1488
1489         * ircd/ircd_parser.y (invert): New variable.
1490         (operlocal): Remove production.
1491         (operpriv): Use "invert" variable.
1492         (privtype): Add LOCAL alternative production.
1493
1494         * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace
1495         with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate.
1496
1497         * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact):
1498         Likewise.
1499
1500         * ircd/s_stats.c (report_array, statsinfo): Likewise.
1501
1502         * ircd/s_user.c (set_user_mode): Likewise.
1503
1504 2004-05-15  Michael Poole <mdpoole@troilus.org>
1505
1506         * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove
1507         patches obsoleted by F: lines.
1508
1509         * patches/diffs/topicburst.diff: Remove patch that was integrated
1510         into the main code.
1511
1512 2004-05-15  Isomer <isomer@undernet.org>
1513
1514         [Original ChangeLog date: 2003-11-05 -MDP]
1515
1516         * ircd/m_whois.c: On remote whois, show +s local channels with a *
1517         prefix to opers.
1518
1519 2004-05-15  Michael Poole <mdpoole@troilus.org>
1520
1521         * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot
1522         of gline-related fixes from 2.10.11.  Things that work are due to
1523         Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard
1524         to figure out who did what.  Any mistakes are mine.
1525
1526 2004-05-15  Isomer <isomer@undernet.org>
1527
1528         [Original ChangeLog date: 2003-11-05 -MDP]
1529
1530         * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT
1531         messages (so you can match EXIT's to CONN's)
1532
1533 2004-05-15  Reed Loden <reed@reedloden.com>
1534
1535         [Original ChangeLog date: 2003-05-01 -MDP]
1536
1537         * ircd/s_err.c: Added network to text and edited 001 a bit.
1538
1539         * ircd/s_user.c: Send network with 001.
1540
1541 2004-05-15  Michael Poole <mdpoole@troilus.org>
1542
1543         * ircd/s_user.c (add_target): Move free target invite check...
1544
1545         * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's
1546         behavior.
1547
1548 2004-05-15  Isomer <isomer@undernet.org>
1549
1550         [Original ChangeLog date: 2003-11-23 -MDP]
1551
1552         * ircd/s_user.c: Don't credit users with an extra attempt if they
1553         are klined/glined, throttle them!
1554
1555 2004-05-15  Jeekay <jeekay@netgamers.org>
1556
1557         [Original ChangeLog date: 2003-04-24 -MDP]
1558
1559         * ircd/s_user.c: Altered (K-lined) to depend on find_kill type
1560
1561 2004-05-15  splidge <splidge@quakenet.org>
1562
1563         [Original ChangeLog date: 2003-09-03 -MDP]
1564
1565         * ircd/s_user.c: Made hide_hostmask() not show bogus joins for
1566         channels where the user is a zombie.
1567
1568 2004-05-15  beware <steendijk@xs4all.nl>
1569
1570         [Original ChangeLog date: 2003-10-25 -MDP]
1571         
1572         * ircd/m_whois.c: Fixed /whois comma separated list with wildcards
1573         cpu hog bug
1574
1575 2004-05-15  Michael Poole <mdpoole@troilus.org>
1576
1577         * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since
1578         2.10.11 does.  Show ident and IP for clients being killed by new
1579         G-lines and K-lines.
1580
1581 2004-05-15  hikari <shadow@undernet.org>
1582
1583         [Original ChangeLog date: 2003-06-27 -MDP]
1584         
1585         * ircd/ircd.c: After thought, update the next check time based on
1586         when an unregistered client should expire.
1587
1588 2004-05-15   hikari <shadow@undernet.org>
1589
1590         [Original ChangeLog date: 2003-06-22 -MDP]
1591
1592         * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with
1593         clients not being able to connect anymore.
1594
1595 2004-05-15  Michael Poole <mdpoole@troilus.org>
1596
1597         * ircd/channel.c (can_join): Revert to using IsInvited() rather
1598         than walking the list directly.
1599         (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
1600         use feature_bool(FEAT_HIS_SNOTICES) instead.
1601
1602 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
1603
1604         [Original ChangeLog date: 2004-01-31 -MDP]
1605
1606         * ircd/channel.c (mode_parse_key): don't allow , in keys!
1607
1608 2003-04-12  David Mansell (splidge) <splidge@sf.net>
1609
1610         [Original ChangeLog date: 2003-04-14 -MDP]
1611
1612         * ircd/channel.c: When keys and limits conflict on burst, the key
1613         which is first alphabetically or the limit which is lower will be 
1614         used by both servers. This matches pre-2.10.11 behaviour.  
1615         Closes: (#713930)
1616
1617 2004-05-15  David Mansell <splidge@quakenet.org>
1618
1619         [Original ChangeLog date: 2002-12-28 -MDP]
1620
1621         * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
1622         set, don't allow -l with negative parameter (or unsigned >2^31).
1623  
1624 2004-05-15  David Mansell <splidge@quakenet.org>
1625
1626         [Original ChangeLog date: 2002-12-31 -MDP]
1627
1628         * ircd/m_burst.c (ms_burst): when kicking net riders, clear
1629         invites too.
1630
1631 2004-05-15  Isomer <isomer@undernet.org>
1632
1633         [Original ChangeLog date: 2003-11-04 -MDP]
1634
1635         * ircd/s_serv.c: Burst glines/jupes early
1636
1637 2004-05-15  volta <volta2@gmx.de>
1638
1639         [Original ChangeLog date: 2003-04-26 -MDP]
1640
1641          * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
1642          allows users to see their own ip & hostname. (Should solve
1643          all problems with dcc)
1644
1645 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
1646
1647         [Original ChangeLog date: 2003-06-13 -MDP]
1648
1649         * ircd/m_settime.c: it's supposed to be %ld, not %l
1650
1651 2004-05-15  Isomer <isomer@undernet.org>
1652
1653         [Original ChangeLog date: 2004-03-20 -MDP]
1654
1655         * ircd/m_invite.c: Disallow invites to non existant channels
1656
1657 2004-05-15  David Mansell <splidge@quakenet.org>
1658
1659         [Original ChangeLog date: 2003-04-26 -MDP]
1660
1661         * ircd/m_invite.c: let +k users invite into channels they aren't on.
1662
1663 2004-05-15  hikari <shadow@undernet.org>
1664
1665         [Original ChangeLog date: 2003-07-13 -MDP]
1666         
1667         * ircd/IPcheck.c: Fixed (another) overflow problem in
1668         ip_registry_check_local()
1669
1670         [Original ChangeLog date: 2003-06-29 -MDP]
1671
1672         * ircd/IPcheck.c: Fixed overflow problem in
1673         ip_registry_connect_fail()
1674
1675 2004-05-15 Isomer <isomer@undernet.org>
1676
1677         [Original ChangeLog date: 2003-05-02 -MDP]
1678         
1679         * ircd/IPcheck.c: Added assert()'s to check for underflow
1680
1681 2004-05-15  Kevin L Mitchell  <klmitch@mit.edu>
1682
1683         [Original ChangeLog date: 2003-11-22 -MDP]
1684
1685         * tools/wrapper.c: commit uid on chroot fix from ubra
1686
1687         * ircd/version.c.SH: fix generation generation
1688
1689 2004-05-15  Isomer <isomer@undernet.org>
1690
1691         [Original ChangeLog date: 2003-11-23 -MDP]
1692         
1693         * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
1694         to off.  if an admin is smart enough to understand these features
1695         they can enable them manually.
1696
1697 2004-05-15  splidge  <splidge@quakenet.org>
1698
1699         [Original ChangeLog date: 2003-03-26 -MDP]
1700
1701         * ircd/include/ircd_features.h, include/ircd_osdep.h,
1702           ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, 
1703           ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
1704           ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be 
1705           altered via F: lines
1706
1707 2004-05-15  Isomer <isomer@undernet.org>
1708
1709         [Original ChangeLog date: 2003-11-18 -MDP]
1710
1711         * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
1712         the preregistration subsystem allowing customisation of timers,
1713         make the dns resolver stats oper only, and make it much more clear
1714         what all the numbers are.
1715
1716 2004-05-15  Spike <spike@undernet.org>
1717
1718         [Original ChangeLog date: 2003-11-23 -MDP]
1719
1720         * ircd/IPcheck.c: Make IPcheck constants configurable
1721
1722 2004-05-14  Kevin L Mitchell  <klmitch@mit.edu>
1723
1724         [Original ChangeLog date: 2003-11-22 -MDP]
1725
1726         * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
1727         the maximum allowed length (NICKLEN) or the allowed nickname
1728         length specified as the NICKLEN feature
1729
1730         * ircd/ircd_features.c: declare NICKLEN and set its default value
1731         to 9
1732
1733         * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
1734         rearranging...
1735
1736         * include/ircd_features.h: add NICKLEN feature
1737
1738         * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
1739
1740         * doc/readme.features: document new NICKLEN feature
1741
1742         * doc/example.conf: list new NICKLEN F-line
1743
1744 2004-05-14  Matthias Crauwels <ultimate_@wol.be>
1745
1746         [Original ChangeLog date: 2003-06-08 -MDP]
1747         
1748         * ircd/gline.c: fixed the counting bug in gline_memory_count
1749  
1750         * ircd/jupe.c: fixed the counting bug in jupe_memory_count
1751
1752 2004-05-14  Michael Poole <mdpoole@troilus.org>
1753
1754         * ircd/m_mode.c (ms_mode): Do not always try to call
1755         set_user_mode() when parv[1] is a channel name.
1756
1757 2004-05-10  Michael Poole <mdpoole@troilus.org>
1758
1759         Implement a per-connection-class default usermode option.
1760
1761         * doc/example.conf: Illustrate how to use the option.
1762
1763         * include/class.h (struct ConnectionClass): New "default_umode"
1764         field.
1765         (ConfUmode): New macro.
1766
1767         * include/client.h (client_get_default_umode): New function.
1768
1769         * ircd/client.c (client_get_default_umode): Implement it.
1770
1771         * ircd/ircd_lexer.l (usermode): New token.
1772
1773         * ircd/ircd_parser.y (classblock, etc): New syntax.
1774
1775         * ircd/s_user.c (register_user): Set default user modes for user.
1776         This sends the new mode to the user, so the explicit send later
1777         is no longer necessary.
1778
1779 2004-05-10  Michael Poole <mdpoole@troilus.org>
1780
1781         Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
1782         patch set.
1783
1784         * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
1785
1786         * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
1787         also send a TOPIC to the peer.
1788
1789         * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
1790         feature, defaulting to FALSE.
1791
1792         * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
1793         and allow F:HIS_BANWHO to hide the originator of the topic.
1794         (ms_topic): Parse optional timestamp arguments to TOPIC, and use
1795         them to decide whether to ignore the topic.
1796
1797 2004-05-10  Michael Poole <mdpoole@troilus.org>
1798
1799         Forward port of delayed-join.patch from Quakenet's "Asuka" patch
1800         set (which was a port of code I wrote for the other ircu).
1801
1802         * include/channel.h (CHFL_DELAYED): New membership flag.
1803         (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
1804         (infochanmodes): Add +D to list of supported channel modes.
1805         (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
1806         (member_can_send_to_channel, client_can_send_to_channel): Add
1807         "reveal" parameter to indicate whether a request should cause
1808         a join-delayed user to become visible.
1809         (RevealDelayedJoin, CheckDelayedJoins): New functions.
1810
1811         * include/numeric.h (RPL_DELNAMREPLY): New numeric.
1812         
1813         * include/s_user.h (NAMES_DEL): New flag for do_names().
1814
1815         * include/supported.h (FEATURESVALUES2): Add +D to list of
1816         supported channel modes.
1817
1818         * ircd/channel.c (remove_member_from_channel,
1819         member_can_send_to_channel, client_can_send_to_channel,
1820         joinbuf_join): Handle join-delayed users.
1821         (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
1822         modebuf_extract, mode_process_clients, mode_parse_mode,
1823         mode_parse): Handle delayed-join channels.
1824         (RevealDelayedJoin, CheckDelayedJoins): New functions.
1825
1826         * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
1827         server_relay_channel_message, server_relay_channel_notice): Add
1828         argument for "reveal" parameter to client_can_send_to_channel().
1829
1830         * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
1831
1832         * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
1833
1834         * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
1835         channel with JOIN 0.
1836
1837         * ircd/m_kick.c (m_kick): For join-delayed members, only send the
1838         KICK to the kicker and kickee.  Then check whether +d can be
1839         removed.
1840
1841         * ircd/m_names.c (do_names): Show join-delayed users if and only
1842         if the NAMES_DEL flag is given.  If NAMES_DEL is given, also use
1843         RPL_DELNAMREPLY instead of RPL_NAMREPLY.
1844         (m_names): If NAMES -D, pass NAMES_DEL to do_names().
1845
1846         * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
1847         member_can_send_to_channel().  Set CHFL_DELAYED join in joinbuf if
1848         the user is join-delayed.
1849
1850         * ircd/m_quit.c (m_quit): Handle join-delayed users and new
1851         argument for member_can_send_to_channel().
1852
1853         * ircd/m_topic.c (do_settopic): If a join-delayed channel member
1854         changes the topic, reveal the member.
1855
1856         * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
1857         "reveal" parameter to client_can_send_to_channel().
1858
1859         * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
1860
1861         * ircd/m_who.c (m_who): Skip join-delayed members where we skip
1862         zombies.
1863
1864         * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
1865         users.  Use slightly more efficient macros rather than function
1866         calls to test for ops and voice.
1867
1868         * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
1869
1870         * ircd/s_user.c (hide_hostmask): For users with no modes in a
1871         join-delayed channel, do not send JOIN to other members after the
1872         QUIT :Registered.
1873
1874         * ircd/send.c (sendcmdto_common_channels_butone): Skip
1875         join-delayed users where we skip zombies.
1876         
1877 2004-05-10  Michael Poole <mdpoole@troilus.org>
1878
1879         * ircd/ircd_events.c: Actually reference and try to use the epoll
1880         event engine.  Omitted from yesterday's commit.
1881
1882 2004-05-09  Michael Poole <mdpoole@troilus.org>
1883
1884         Forward port of Paul "Zoot" Chang's pseudo-command.patch and
1885         pseudo-support.patch.
1886
1887         * doc/example.conf: Illustrate how to use the feature.
1888
1889         * include/handlers.h (m_pseudo): Declare new handler function.
1890
1891         * include/ircd_features.h (HIS_STATS_R): Add a feature to control
1892         user visibility of the pseudo-commands.
1893
1894         * include/msg.h: Add flag and field for the extra information used
1895         to select a pseudo-command's target.
1896
1897         * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
1898         definitions.
1899
1900         * include/parse.h (register_mapping, unregister_mapping): Declare.
1901
1902         * include/s_conf.h (struct nick_host, struct s_map,
1903         GlobalServiceMapList): Define.
1904
1905         * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC.  Add generated
1906         files to "make depend" dependency list.  Update dependencies.
1907
1908         * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
1909         default value.
1910
1911         * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
1912
1913         * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
1914
1915         * ircd/parse.c (msgtab): Add initializer for field "extra" to all
1916         commands.
1917         (msg_tree_insert, msg_tree_remove, register_mapping,
1918         unregister_mapping): New functions.
1919         (parse_client): Implement MFLG_EXTRA extra argument passing.
1920
1921         * ircd/s_conf.c (GlobalServiceMapList): New variable.
1922
1923         * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
1924         strings for new numeric responses.
1925
1926         * ircd/s_stats.c (stats_mapping): New function.
1927         (statsinfo): Add entry for /stats R and make old /stats r entry
1928         case-sensitive.
1929         
1930 2004-05-09  Michael Poole <mdpoole@troilus.org>
1931
1932         * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
1933         yyerror() so that configuration errors all go to the same place.
1934
1935         * ircd/s_conf.c: New variables conf_error and conf_already_read.
1936         conf_error is cleared by read_configuration_file() and set by
1937         yyerror(); conf_already_read is set by read_configuration_file()
1938         and never cleared.  Make yyerror() display error to stderr before
1939         conf_already_read is set.  Make configuration errors a fatal
1940         condition in init_conf().
1941
1942 2004-05-09  Michael Poole <mdpoole@troilus.org>
1943
1944         * ircd/Makefile.in: Pass the source directory as an argument to
1945         version.c.SH so it knows where to find the source files for an
1946         out-of-srcdir build.
1947
1948         * ircd/version.c.SH: Use that information.
1949
1950 2004-05-09  Michael Poole <mdpoole@troilus.org>
1951
1952         * Makefile.in: Ensure ${prefix}/include exists, since the adns
1953         install puts files in that directory.  (The adns Makefile does
1954         not use configure's ${includedir}.)
1955
1956 2004-05-09  Michael Poole <mdpoole@troilus.org>
1957
1958         * doc/readme.features: The logic for F:AUTOHIDE was removed, but
1959         not its documentation.  Fix that omission.
1960
1961         * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
1962         definitions for FEATURE_AUTOHIDE.
1963
1964 2004-05-09  Michael Poole <mdpoole@troilus.org>
1965
1966         * doc/readme.who: Document the support for account matching and
1967         display in the WHO command.
1968
1969 2004-05-09  Michael Poole <mdpoole@troilus.org>
1970
1971         * ircd/ircd.c (main): Move check_pid() call until after we read
1972         the configuration file so that F:PPATH works correctly.
1973
1974 2004-05-09  Michael Poole <mdpoole@troilus.org>
1975
1976         * ircd/match.c (match): Use ToLower() instead of tolower() for
1977         character comparisons.
1978
1979 2004-05-09  Michael Poole <mdpoole@troilus.org>
1980
1981         * ircd/s_user.c (register_user): Initialize "flag" (user's old
1982         modes) passed to send_umode() so that the real set of modes are
1983         sent to the user.
1984         
1985 2004-05-09  Michael Poole <mdpoole@troilus.org>
1986
1987         * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
1988         server, not to a hub between us and the new server.
1989
1990         * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
1991         on target server rather than FLAG_CHSERV (so that directed
1992         messages work at all).
1993
1994 2004-05-09  Michael Poole <mdpoole@troilus.org>
1995
1996         * configure.in: Add checks for epoll_* system call family.
1997
1998         * configure: Regenerate.
1999
2000         * ircd/engine_epoll.c: New file; forward ported from 2.10.11
2001         branch.
2002
2003 2004-05-09  Michael Poole <mdpoole@troilus.org>
2004
2005         * include/ircd_alloc.h: Add definitions for MyRealloc, since they
2006         are needed by kqueue and epoll event engines; kill #if 0'd block.
2007
2008         * include/memdebug.h: Declare dbg_realloc() helper function.
2009
2010         * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
2011
2012         * ircd/memdebug.c: Implement dbg_realloc() helper function.
2013
2014 2004-05-09  Michael Poole <mdpoole@troilus.org>
2015
2016         * ircd/channel.c (find_no_nickchange_channel): Disallow nick
2017         changes on a moderated channel with neither ops nor voice.
2018
2019         * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
2020
2021 2004-01-20  Perry Lorier <isomer@undernet.org>
2022
2023         * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
2024
2025 2004-01-21 Gavin Grieve <hektik@dimebox.net>
2026
2027         * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
2028           code to resolve the multiple part messages bug written by Entrope.
2029
2030 2003-08-12 Timothy Vogelsang <net@astrolink.org>
2031
2032         * ircd/match.c: (match) rewrote function based on existing
2033           code from the hybrid ircd -- death to goto
2034
2035 2003-07-07  Bas Steendijk <steendijk@xs4all.nl>
2036
2037         * ircd/s_user.c: invalidate ban cache for user on host hiding/account
2038
2039 2003-07-04  Bas Steendijk <steendijk@xs4all.nl>
2040
2041         * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
2042         ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
2043         B is an oper", appeared in a lot of places. made it a define SeeOper.
2044
2045 2003-07-04  Bas Steendijk  <steendijk@xs4all.nl>
2046         * ircd/s_user.c: umode_str (user modes in N token) internal flags var
2047         was not initialized to the user's flags, returned a string with
2048         random modes set.
2049
2050 2003-07-01  Bas Steendijk  <steendijk@xs4all.nl>
2051
2052         * ircd/m_names.c: length counter being incremented one too many
2053         for each nick, resulting names reply messages are about 50 chars
2054         shorter than possible. fixed.
2055
2056 2003-06-29  Bas Steendijk  <steendijk@xs4all.nl>
2057
2058         * ircd/channel.c: don't ever send mode changes for local channels to
2059         servers.
2060
2061 2003-06-27  Bas Steendijk  <steendijk@xs4all.nl>
2062
2063         * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
2064         moved the supported channel/user mode strings of the 004 reply from
2065         s_err.c to the header files where the channels/user modes are
2066         defined, and show or hide +Au based on OPLEVELS setting.
2067
2068 2003-06-25  Bas Steendijk  <steendijk@xs4all.nl>
2069
2070         * ircd/m_burst.c: Clear topic set by netrider on burst.
2071
2072 2003-08-05 Diane Bruce  <db@db.net>
2073
2074         * ircd/parse.c: Fixed the typo the fix of the typo created
2075
2076 2003-08-01 Diane Bruce  <db@db.net>
2077
2078         * ircd/parse.c: Fixed typo
2079
2080 2003-06-22  Diane Bruce  <db@db.net>
2081
2082         * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
2083
2084 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
2085
2086         * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
2087         ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: 
2088         Make ability to create local channels a feature which can be disabled.
2089
2090 2003-06-22  Bas Steendijk  <steendijk@xs4all.nl>
2091
2092         * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
2093         ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
2094         makes it possible to disable the +Au/oplevels functions.
2095
2096 2003-06-17  Alex Badea  <vampire@p16.pub.ro>
2097
2098         * ircd/res_adns.c: included sys/types.h, for non-Linux
2099         headers
2100
2101 2003-03-06  Kevin L. Mitchell  <klmitch@mit.edu>
2102
2103         * libs/dbprim: database primitives library, including
2104         flexible linked lists, auto-resizing hash tables, and sparse
2105         matrices.  Has a test suite for everything but portions of
2106         the sparse matrix routines (I'm lazy; someone help me write
2107         them!).  Documentation generated by doxygen--feel free to
2108         critique, suggest phrasing improvements, etc.
2109
2110 2003-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
2111         * libs: put third-party libraries in this subdirectory.
2112         Started by copying adns into it--will fix the rest and remove
2113         the top-level copy later.
2114
2115 2003-01-14  Andrew Miller <a1kmm@mware.virtualave.net>
2116         * ircd/m_settime.c: Fixed a minor format string issue.
2117         
2118 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
2119         * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
2120         ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
2121         bugs in transmit.c and m_opmode.c.
2122
2123 2003-01-12  Thomas Helvey <tom.helvey@cox.net>
2124         * include/class.h, include/ircd_string.h, ircd/class.c,
2125         ircd/gline.c, ircd_string.c: Fix undefined order
2126         of evaluation bug in gline.c, add general purpose hasher for
2127         conf entries. 
2128
2129 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
2130         * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
2131         ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
2132         ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
2133         ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
2134         ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
2135         ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
2136         with g++ again, type safety, const correctness fixes,
2137         remove C++ keywords again :/
2138
2139 2003-01-11  Thomas Helvey <tom.helvey@cox.net>
2140         * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
2141         table data was in a different order than the feature data
2142         structure, which resulted in a wild index being used in
2143         feature_bool. The feature_bool function didn't check it's
2144         index before indexing the features array resulting in
2145         a core dump on /oper.
2146
2147 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
2148         * include/client.h, include/res.h, include/s_bsd.h,
2149         ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
2150         ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
2151         Remove resolver cache wart, change hostent representation, cleanup
2152         resolver clients.
2153
2154 2003-01-10  Thomas Helvey <tom.helvey@cox.net>
2155         * ircd/map.c, ircd/Makefile.in, include/map.h: Remove 
2156         HEAD_IN_SAND macros to get server to build, rebuild dependencies.
2157
2158 2003-01-08  Fredrik Soderblom <froo@quakenet.org>
2159         * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
2160         RPL_HOSTHIDDEN and the use of it.
2161
2162 2003-01-07  Kevin L Mitchell  <klmitch@mit.edu>
2163
2164         * BUGS: removed from distribution
2165
2166         * ChangeLog.07: moved into doc/history
2167
2168         * ChangeLog.10: moved into doc/history
2169
2170         * INSTALL: pulled up from u2.10.11.04
2171
2172         * README: pulled up from u2.10.11.04
2173
2174         * README.FreeBSD: pulled up from u2.10.11.04
2175
2176         * README.Solaris: pulled up from u2.10.11.04
2177
2178         * RELEASE.NOTES: add sysctl note from u2.10.11.04
2179
2180         * TODO: removed from distribution
2181
2182         * configure.in: add extra check for res_mkquery; remove
2183         --disable-headinsand since it no longer has any effect; pull up
2184         "Enable" vs. "Disable" changes from u2.10.11.04
2185
2186         * doc/readme.asll: pulled up from u2.10.11.04
2187
2188         * doc/readme.features: pull up missing documentation, including a
2189         couple of corrections
2190
2191         * doc/readme.log: correct text to read FACILITY instead of SYSLOG
2192         in the documentation for configuring syslog facility
2193
2194         * include/channel.h: declare IsInvited()
2195
2196         * include/handlers.h: do some minor reorderings
2197
2198         * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
2199         #define's
2200
2201         * include/ircd_policy.h: removed from the distribution
2202
2203         * include/jupe.h: declare jupe_memory_count()
2204
2205         * include/msgq.h: remove MsgCounts structure
2206
2207         * include/numeric.h: add a blank line after RPL_STATSQLINE; add
2208         RPL_HOSTHIDDEN
2209
2210         * include/s_stats.h: include ircd_features.h for definition of the
2211         enum; remove extraneous declarations
2212
2213         * ircd/Makefile.in: add LDFLAGS to table_gen
2214
2215         * ircd/engine_poll.c: remove commented-out assertion
2216
2217         * ircd/ircd.c: include s_stats.h and call stats_init()
2218
2219         * ircd/ircd_features.c: feature names have to be case-sensitive
2220         because of some of the HIS features
2221
2222         * ircd/ircd_relay.c: reorder includes
2223
2224         * ircd/m_account.c: include string.h for strlen()
2225
2226         * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
2227         sure to refer to chname, not parv[1]
2228
2229         * ircd/m_create.c: remove the broken code that squits servers that
2230         are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
2231         desyncs
2232
2233         * ircd/m_gline.c: if it's a server, force the gline; don't
2234         gline_find() before determining if the oper had the privilege
2235
2236         * ircd/m_kick.c: kicks by servers should appear to be from the
2237         local server thanks to HIS
2238
2239         * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
2240
2241         * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
2242
2243         * ircd/m_nick.c: added an assertion and some explanatory comments
2244         pulled up from u2.10.11.04
2245
2246         * ircd/m_opmode.c: no longer requiring oper to be on the channel;
2247         search for quarantines before allowing ops
2248
2249         * ircd/m_privmsg.c: one character typo that probably means nothing
2250
2251         * ircd/m_settime.c: add back comments I left in the code
2252
2253         * ircd/m_squit.c: remove protocol_violation() notices
2254
2255         * ircd/m_userhost.c: return realhost if user is an oper
2256
2257         * ircd/m_wallvoices.c: only m_wallvoices() should add a +
2258
2259         * ircd/m_who.c: add handling for the 'a' field
2260
2261         * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
2262         FEAT_HIS_SERVERINFO
2263
2264         * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
2265         ancient bug fixes from the u2.10.11 branch
2266
2267         * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
2268         call motd_memory_count(), gline_memory_count(), and
2269         jupe_memory_count() when reporting memory usage; add back a
2270         comment regarding "DBuf caveats"
2271
2272         * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
2273         change to ERR_NOPRIVILEGES wording
2274
2275         * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
2276
2277         * ircd/s_stats.c: count from 0 and not 1 when initializing the
2278         stats
2279
2280         * ircd/s_user.c: comment out assertion; remove extraneous
2281         definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
2282         hidden" reply; don't detach oper confs unless sptr is not an oper
2283
2284         * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
2285         change channel name character range to be from '\041' (!) to
2286         UCHAR_MAX
2287
2288         * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
2289
2290         * tools/linesync/linesync.conf: pull up from u2.10.11.04
2291
2292         * tools/linesync/linesync.sh: pull up from u2.10.11.04
2293
2294 2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
2295         * almost everything: Forward ported numerous changes from .11 to .12
2296         
2297 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
2298         * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
2299         when they become a server.
2300         * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
2301         packet is sent.
2302         * ircd/class.c(make_class): Fixed an assert to be more useful.
2303         
2304 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
2305         * ircd/packet.c
2306         * ircd/packet.h: (connect_dopacket): Made a dopacket function for
2307         connecting links which sends the messages through the correct message
2308         handler.
2309         * ircd/s_bsd.c(read_packet): Put packets through the correct handler
2310         for connecting links. Properly handle unknown links becoming
2311         connecting or servers.
2312
2313 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
2314         * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
2315         with, this is used quite a lot.
2316         * ircd/class.c (make_class): Initialise the ref_count to 1 so that
2317         we don't leak.
2318         * ircd/class.c (add_class): When updating a class, free the old name
2319         first to prevent leakage.
2320         * ircd/class.c (class_delete_marked): Decrement the ref_count for the
2321         class after it is removed from the linked list.
2322         * ircd/ircd_parser.y: Changed a free to MyFree().
2323         * ircd/ircd_parser.y: Removed a few debugging messages.
2324
2325 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
2326         * s_bsd.c (read_packet): Our daily addition to the list of entities to
2327         treat as servers - Connecting servers.
2328         
2329 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
2330         * doc/debug_memleak_gc.patch,
2331         * include/ircd_ircd_alloc.h,
2332         * include/memdebug.h,
2333         * configure.in,
2334         * ircd/Makefile.in,
2335         * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
2336         and notify the operators.
2337         
2338 2002-06-29  Andrew Miller <a1kmm@mware.virtualave.net>
2339
2340         * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
2341         the dbufs.
2342         
2343 2002-06-18  Andrew Miller <a1kmm@mware.virtualave.net>
2344
2345         * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
2346         the server.
2347         
2348 2002-06-18  Alex Badea  <vampire@p16.pub.ro>
2349
2350         * ircd/m_burst.c (ms_burst): kick local members if the channel
2351         has a larger local TS and it's +i or +k remotely (anti net.ride)
2352
2353         * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
2354
2355         * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
2356
2357         * include/s_conf.h: externalized lookup_confhost
2358
2359         * adns/Makefile.in: compilation-outside-source-tree fix
2360
2361 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
2362
2363         * adns/*: added a slightly hacked copy of adns
2364
2365         * configure.in: added a --disable-adns switch if you want
2366         to use the old libresolv res.c
2367
2368         * configure: ran autoconf
2369
2370         * ircd/res_libresolv.c: renamed from res.c
2371
2372         * ircd/res_adns.c: added adns resolver
2373
2374 2002-06-17  Alex Badea  <vampire@p16.pub.ro>
2375
2376         * ircd/ircd_parser.y: fixed 'Connect' block processing so now
2377         you can actually connect to other servers
2378
2379 2002-06-04  Alex Badea  <vampire@p16.pub.ro>
2380
2381         * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
2382         it displays all servers, not just local connects
2383
2384 2002-05-30  Jean-Edouard Babin  <Jeb@jeb.com.fr>
2385
2386         * ircd/m_server.c (mr_server): fixed core bug on insufficient
2387         arguments
2388
2389 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
2390         
2391         * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
2392
2393 2002-05-26  Jeekay  <jeekay@irc.planetarion.com>
2394  
2395         * ircd/m_join.c (m_join,HasControlChars): check if a channel
2396         name has any control chars (<=32) in it before allowing a
2397         local user to join.
2398  
2399 2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
2400         * ircd/ircd_relay.c: stop an information leak about the
2401         the network topography from relayed messages.
2402
2403 2002-04-19  Alex Badea  <vampire@p16.pub.ro>
2404
2405         * ircd/m_who.c (m_who): disallow non-opers to /who server.name
2406
2407 2002-04-18  Alex Badea  <vampire@p16.pub.ro>
2408
2409         * ircd/s_err.c (RPL_STATSILINE): connection classes are now
2410         strings
2411
2412 2002-04-17  beware <steendijk@tomaatnet.nl>
2413
2414         * m_whois.c (m_whois): disallow remote queries for non-existent
2415         local users when originated by a non-oper
2416
2417 2002-04-16  Alex Badea  <vampire@p16.pub.ro>
2418
2419         * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
2420         reply if the servername contains a '*' and it doesn't exist
2421
2422         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
2423
2424 2002-04-16  beware <steendijk@tomaatnet.nl>
2425
2426         * ircd/m_whois.c: the previous patch broke whois, fixed it
2427         another way
2428
2429         * ircd/m_admin.c: cleaned up m_admin too while we're here,
2430         hunt_server_cmd can do all the work for us
2431
2432 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
2433
2434         * ircd/m_stats.c: added verbose server reporting (/stats v
2435         or /stats V for machine-readable format) (bugzilla bug 52)
2436
2437         * include/numeric.h: added RPL_STATSVERBOSE 236
2438
2439         * ircd/s_err.c: added RPL_STATSVERBOSE
2440
2441         * ircd/s_stats.c: added help for stats 'v'
2442
2443 2002-04-15  Alex Badea  <vampire@p16.pub.ro>
2444
2445         * ircd/class.c (get_client_class): fixed typo which caused
2446         /trace (and perhaps motd) to core
2447
2448 2002-04-15  beware <steendijk@tomaatnet.nl>
2449
2450         * ircd/m_whois.c: Fixed /whois servermask nomatch bug
2451         where normal users could use the function to discover servers,
2452         also the NOSUCHSERVER check code was missing.
2453
2454 2002-04-14  Alex Badea  <vampire@p16.pub.ro>
2455
2456         * ircd/ircd_parser.y: fixed cli_info(&me) not being set
2457         from 'description' conf
2458
2459 2002-04-13  Stephane Thiell <mbuna@undernet.org>
2460
2461         * ircd/m_whois.c: removed FindUser() in ms_whois to fix
2462         remote whois relaying.
2463
2464         * ircd/class.c: removed unused (and duplicated) code
2465         get_client_ping().
2466         
2467         * include/class.h: removed unused function prototype.
2468         
2469         * config.guess: upgraded with latest
2470         
2471         * config.sub: upgraded with latest
2472
2473 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
2474
2475         * ircd-patch: report which files failed the dry run (so the
2476         user may force the patch if the rejects are in less-than-vital
2477         files, such as ChangeLog or documentation)
2478
2479 2002-04-12  Alex Badea  <vampire@p16.pub.ro>
2480
2481         * ircd/m_invite.c: don't propagate invites for local channels
2482
2483         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
2484
2485 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
2486
2487         * ircd/ircd.c: The last fix broke autoconnects completely.
2488         Fixed it another way.
2489         
2490 2002-04-09  Brian Cline  <clineb@cs.winthrop.edu>
2491
2492         * ircd/ircd.c (try_connections): To avoid problems with infinite event
2493         loops, don't try connecting to servers whose connect frequency is 0.
2494         
2495 2002-04-10  Alex Badea  <vampire@p16.pub.ro>
2496
2497         * ircd/ircd_parser.y: fixed a "features" block parse bug
2498
2499         * tools/convert-conf.py: added a configuration file converter
2500         from 2.10.11 to 2.10.12 format
2501
2502         * ircd-patch: added GPL information to top of file
2503
2504 2002-04-09  Alex Badea  <vampire@p16.pub.ro>
2505
2506         * configure.in: added a human-readable report of configured
2507         options at the end of the configure process
2508
2509         * configure: regenerated with autoconf
2510
2511 2002-04-08  Gavin Grieve  <ggrieve@ihug.co.nz>
2512
2513         * include/supported.h: change CHARSET to CASEMAPPING after
2514         discussions as to what would be the preferred name.
2515
2516 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
2517         * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
2518         specification.
2519         * Fix a minor parser bug that meant rehash didn't always
2520         work correctly.
2521
2522 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
2523
2524         * include/channel.h: fix compiler warnings (paratheses around &&)
2525
2526         * ircd/channel.c (modebuf_extract): fix compiler warnings
2527         (uninitialized variables)
2528
2529         * ircd/Makefile.in: make ircd properly compile outside the
2530         source tree
2531
2532 2002-04-03  Alex Badea  <vampire@p16.pub.ro>
2533
2534         * include/s_user.h: added a sptr parameter to InfoFormatter
2535         function type
2536
2537         * ircd/m_who.c: don't match IPs for clients which have a hidden host,
2538         except when the inquiring user is an oper
2539
2540         * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
2541         target has a hidden host, but show real IP to opers
2542
2543         * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
2544         fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
2545         show real IP to opers
2546
2547         * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
2548
2549         * ircd/s_user.c (send_user_info): pass sptr to the formatting function
2550
2551         * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
2552         fake IP to show for clients with a hidden host)
2553
2554         * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
2555
2556         * doc/example.conf: default value for FEAT_HIDDEN_IP
2557
2558         * doc/readme.features: documented FEAT_HIDDEN_IP
2559
2560 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
2561         * doc/example.conf: Cleaned up some comments that ended up in
2562           strange places due to problems in the merge process.
2563         * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
2564           probably dates back to Jarkko code.
2565
2566 2002-04-02  Kevin L Mitchell  <klmitch@mit.edu>
2567
2568         * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
2569         from the path before calling do_kill(); add a msg argument to
2570         do_kill() and use it in preference to comment; remove all that old
2571         code that fiddled with the buf and the comment
2572
2573         * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
2574
2575         * include/ircd_log.h: add a seperate msg argument to
2576         log_write_kill()
2577
2578         * ircd/ircd.c: display event engine and MAXCONNECTIONS information
2579  
2580 2002-04-02  Alex Badea <vampire@p16.pub.ro>
2581
2582         * ircd-patch: Automatically generate a version string from patches
2583
2584 2002-04-02  Alex Badea <vampire@p16.pub.ro>
2585         
2586         * ircd-patch: Test before doing anything dangerous, provide -f to
2587                 to it anyway.  exit levels for easy scripting.
2588
2589 2002-04-01  Kevin L Mitchell  <klmitch@mit.edu>
2590
2591         * ircd/channel.c (joinbuf_join): don't add a channel to the list
2592         in the joinbuf unless when we flush it, we empty the list
2593
2594 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
2595         * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
2596           old configuration file format.
2597         * ircd/ircd_lexer.l
2598         * ircd/s_conf.c
2599         * doc/example.conf
2600
2601 2002-03-23 Bert Faes <bert.faes@pandora.be>
2602
2603         * s_misc.c made /trace reply always show the username
2604         
2605 2002-03-28  Kevin L Mitchell  <klmitch@mit.edu>
2606
2607         * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
2608         for setrlimit, getrusage, and times
2609
2610         * configure: rerun auto-conf
2611
2612         * config.h.in: rerun autoheader
2613
2614 2002-03-27  Kevin L Mitchell  <klmitch@mit.edu>
2615
2616         * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
2617         sending of the key to the channel
2618
2619         * ircd/channel.c (modebuf_flush_int): when processing keys, only
2620         include the actual key in the mode sent to the channel if
2621         MODEBUF_DEST_NOKEY is not set
2622
2623         * include/channel.h: needed more bits for MODEBUF_DEST_*,
2624         especially when adding MODEBUF_DEST_NOKEY to force keys in the
2625         BURST to be reported as "*" to the channel
2626
2627         * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
2628         inherited from the class associated with the O-line
2629
2630 2002-03-25  Kevin L Mitchell  <klmitch@mit.edu>
2631
2632         * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
2633         when a user changes his nickname so we can catch if he now matches
2634         a ban
2635
2636 2002-03-20 Reed Loden <reed@redmagnet.com>
2637         * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
2638
2639         * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
2640
2641 2002-03-20 LordLuke <lordluke@undernet.org>
2642         * ircd/client.c: Add LOCOP_LIST_CHAN feature.
2643
2644         * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
2645
2646 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
2647
2648         * ircd/m_links.c: Make /links behave like /map for head_in_sand.
2649         cleaned up excess code.
2650
2651         * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
2652         map_add() and map_update() for links changes.
2653
2654         * include/map.h: Added info and prot to struct Map
2655
2656         * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
2657         servers are cached in MapList
2658
2659         * ircd/s_misc.c: changed #ifdef for map_update()
2660
2661         * ircd/m_server.c: changed #ifdef for map_update()
2662
2663         * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
2664         hiding features.
2665
2666         * configure.in: add --disable-headinsand
2667
2668         * configure: Ran autoconf
2669
2670         * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show 
2671         connect limits
2672
2673         * ircd/s_stats.c: Made /stats i report connect limits
2674
2675         * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of 
2676         "*" for the password field.
2677         
2678 2002-03-19 LordLuke <lordluke@undernet.org>
2679
2680         * include/channel.h: Allow opers to view +s channels in /list
2681
2682         * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
2683
2684         * include/ircd_features.h: added "LIST_CHAN" feature
2685
2686         * ircd/channel.c: Allow opers to view +s channels in /list
2687
2688         * ircd/client.c: Add "PRIV_LIST_CHAN"
2689
2690         * ircd/ircd_features.c: Add "LIST_CHAN" feature
2691
2692 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
2693
2694         * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
2695         Must be more careful when forward porting by hand...
2696         
2697 2002-03-13  Carlo Wood  <run@alinoe.com>
2698
2699         * include/channel.h: CHFL_CHANNEL_MANAGER, new local
2700         channel flag set when someone creates a channel or joins
2701         using the Apass.  IsChannelManager(), SetChannelManager():
2702         macros to manipulate new channel flag.
2703         channel_modes: Added new argument to avoid calling
2704         find_member_link more often than needed.
2705
2706         * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
2707         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
2708         ERR_UPASSNOTSET: new numeric replies.
2709
2710         * ircd/channel.c: is_level0_op: removed.
2711         member_can_send_to_channel: disallow channel manager
2712         to talk.  channel_modes: show upass to level0 ops.
2713         mode_parse_upass: Only the channel manager is allowed
2714         to change the upass.  Only allow to set upass when apass
2715         is also set.  mode_parse_apass: Don't allow to change the
2716         Apass if the channel is older than 48 hours.  Only allow
2717         to remove the apass when upass is not set.  Send clear
2718         warnings regarding the importance of apass.
2719         mode_process_clients: Don't change the oplevel of an opped
2720         member in a channel where upass is not set.
2721
2722         * ircd/destruct_event.c: exec_expired_destruct_events:
2723         Bug fix: send DESTRUCT message when destructing a channel.
2724
2725         * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
2726         prefix for DESTRUCT message.
2727
2728         * ircd/m_join.c: m_join: Handle apass and upass.
2729
2730         * ircd/m_kick.c: m_kick: Don't allow to kick member with
2731         a higher or equal op-level.
2732
2733         * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
2734         ms_mode: Allow server to do modes on channels with apass
2735         set.
2736
2737         * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
2738         ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
2739         ERR_UPASSNOTSET: new numeric replies.
2740
2741
2742 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
2743
2744         * ircd/m_kill.c: Last of the bug fixes for do_kill()
2745
2746         * ircd/list.c: Don't remove clients from the linked list
2747         that aren't actually in the list.
2748         
2749 2002-03-08  Carlo Wood  <run@alinoe.com>
2750         * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
2751         and CHFL_BURST_ALREADY_VOICED.
2752
2753         * ircd/m_burst.c: Allow BURST outside net-burst
2754         and take into account that users are already joined
2755         to the channel in that case.
2756
2757         * ircd/m_destruct.c: Implementation of DESTRUCT
2758         handling code.
2759
2760         * ircd/m_join.c: Set the channel creationtime to
2761         the timestamp of a message when that timestamp is
2762         smaller.
2763 2002-02-27 Reed Loden <reed@redmagnet.com>
2764        * tools/crypter: Updated some variables, added another notice,
2765        added CVS Id tag, and updated Perl location.
2766
2767        * tools/ringlog.c: Added IRC - Internet Relay Chat, 
2768        tools/ringlog.c
2769
2770        * tools/ringlog.pl: Added IRC - Internet Relay Chat, 
2771        tools/ringlog.pl
2772
2773        * tools/wrapper.c: Added IRC - Internet Relay Chat, 
2774        tools/wrapper.c
2775
2776        * tools/mkpasswd.c: Added CVS Id tag
2777
2778        * tools/sums: Updated to comply with sums being moved to tools/
2779        and added CVS Id tag
2780
2781        * tools/README: Updated location of file and partly rewrote to fit 
2782        u2.10.11's Features
2783
2784        * tools/Makefile.crypt: Updated location of file and added CVS Id 
2785        tag
2786
2787        * acconfig.h: Updated location of file
2788
2789        * config.h.in: Updated location of file
2790
2791        * tools/Bounce/bounce.conf: Added CVS Id tag
2792
2793        * tools/Bounce/Bounce.cpp: Updated location of file
2794
2795        * tools/Bounce/Bounce.h: Updated location of file
2796
2797        * tools/hashtoy: Added CVS Id Tag
2798
2799 2002-02-27  Carlo Wood  <run@alinoe.com>
2800
2801         * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
2802
2803 2002-03-01  Carlo Wood  <run@alinoe.com>
2804
2805         * include/channel.h: struct Channel: new attribute destruct_event.
2806         Prototype for destruct_channel().
2807
2808         * include/destruct_event.h: new header file for destruct_event.c.
2809
2810         * ircd/Makefile.in: New source file: destruct_event.c.
2811
2812         * ircd/channel.c: sub1_from_channel: Don't destruct channel
2813         immedeately but instead schedule it for destruction after
2814         some time when a channel becomes empty (and clear invite
2815         only and limit in that case).
2816         destruct_channel: new function, was previously the destructing
2817         part of sub1_from_channel.
2818         add_user_to_channel: remove destruction request if any.
2819
2820         * ircd/destruct_event.c: New file.  Implementation of functions
2821         schedule_destruct_event_1m, schedule_destruct_event_48h,
2822         remove_destruct_event and exec_expired_destruct_events.
2823
2824         * ircd/ircd.c: destruct_event_timer: new timer.
2825         main: use destruct_event_timer to call exec_expired_destruct_events
2826         once per minute.
2827
2828         * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
2829         channels.  Schedule new empty channels for destruction.
2830
2831         * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
2832
2833 2002-03-01  Carlo Wood  <run@alinoe.com>
2834         * ircd/s_misc.c: exit_client: Only call map_update()
2835         for servers.
2836
2837 2002-02-28  Carlo Wood  <run@alinoe.com>
2838         * include/channel.h: New attribute 'oplevel' in struct Membership.
2839         Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
2840         New macros:  OpLevel(member): returns op-level of member and
2841         SetOpLevel(member, value): sets op-level of member.
2842         Prototype of add_user_to_channel: add oplevel to parameters.
2843         Prototype of mode_parse: add member to to parameters.
2844
2845         * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
2846
2847         * ircd/s_err.c: idem.
2848
2849         * ircd/channel.c: Removed unmatched '{' braces from comments
2850         (confuses vi).  add_user_to_channel: oplevel is passed to function
2851         and added in the created MemberShip structure.  send_channel_modes:
2852         Generate the nick:mode list of the BURST msg in the new style (with
2853         op-levels).  DONE_UPASS/DONE_APASS: fixed typo in comment.  struct
2854         ParseState: New attribute: member.  mode_process_clients: Disallow
2855         deopping someone with an equal or higher op-level, take care of
2856         inheritance of op-level.  mode_parse: member is passed to function      
2857         and added in the created ParseState structure.  joinbuf_join: pass 0
2858         as oplevel to add_user_to_channel as needed initialization of oplevel
2859         in struct MemberShip.
2860
2861         * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
2862         decoding of a BURST message and passing on a BURST message.
2863         Renamed default_mode to current_mode.
2864
2865         * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
2866
2867         * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
2868         to mode_parse (causes opped member to get op-level 0).                  
2869
2870 2002-02-25  Carlo Wood  <run@alinoe.com>
2871         * include/channel.h: Added two new strings to struct Mode,
2872         upass and apass, both with maximum length PASSLEN (a new
2873         define in this file).  Two new mode defines MODE_UPASS and
2874         MODE_APASS.
2875
2876         * ircd/channel.c: is_level0_op: Added as dummy function.
2877         channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
2878         Added support for MODE_APASS (+A) and MODE_UPASS (+u).
2879         mode_parse_upass: New function to parse mode +u.
2880         mode_parse_apass: New function to parse mode +A.
2881
2882         * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).            
2883
2884 2002-02-25  Carlo Wood  <carlo@alinoe.com>
2885
2886         * ircd/m_server.c: remove unused variables
2887
2888 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
2889
2890         * ircd/m_map.c: Modified to show a useful output to non-opered
2891           clients when HEAD_IN_SAND_MAP is defined. Servers are added to
2892           the list when first seen (after receiving SERVER) and that list
2893           is sent to clients. Servers are excluded from the list if they are
2894           hubs, services, or have been missing for more than 1 week.
2895         
2896         * ircd/map.c: Created file for map_* functions
2897
2898         * include/map.h: Created file for map_* functions
2899
2900         * ircd/m_server.c: Added calls to map_update()
2901
2902         * ircd/s_misc.c: Added call to map_update()
2903
2904         * ircd/parse.c: Changed to use m_map() and mo_map()
2905         
2906 2002-02-22 Reed Loden <reed@redmagnet.com>
2907
2908        * ircd/m_connect.c: Removed an extra : in remote connect message.
2909
2910 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
2911
2912         * ircd/whocmds.c: Local opers should also be able to
2913         see servernames in /who
2914
2915         * ircd/gline.c: Fix core bug in gline_find()
2916
2917         * ircd/m_kill.c: Bug fix for HIS_KILLWHO
2918
2919 2002-02-19 John Buttery <john@io.com>
2920
2921         * ircd/ircd.c: Updated "No such file" error message.
2922         
2923 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
2924
2925         * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
2926         a message handler, and some general cleanups and bug fixes. 
2927
2928         * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
2929         kill source.
2930         
2931 2002-02-16  Tim Vogelsang <net@astrolink.org>
2932
2933         * ircd/m_kill.c: added a new static function, m_kill, which
2934         performs the actual kill.
2935         
2936 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
2937
2938         * Added support for LIST STOP
2939         
2940 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
2941
2942         * Merged changes from u2_10_11 to main branch.
2943         
2944 2002-02-08  Tim Vogelsang  <net@astrolink.org>
2945
2946        * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
2947        reason is supplied.
2948
2949 2002-02-06  Kevin L Mitchell  <klmitch@mit.edu>
2950
2951         * ircd/s_auth.c (read_auth_reply): left out an = in an
2952         assertion--shouldn't have had any impact, though
2953
2954         * ircd/Makefile.in: add a hook for using ringlog; run make depend
2955
2956         * tools/ringlog.c: for the heck of it, add a comment including
2957         rules for /etc/magic
2958
2959 2002-02-05  Kevin L Mitchell  <klmitch@mit.edu>
2960
2961         * tools/ringlog.pl: perl script to take output from ringlog and
2962         pass it to addr2line to get function, file, and line number
2963         information
2964
2965         * tools/ringlog.c: program/object to help in building function
2966         trace information
2967
2968 2002-02-04  Alex Badea  <vampire@p16.pub.ro>
2969
2970         * include/ircd_features.h: added new feature MOTD_BANNER
2971
2972         * ircd/ircd_features.c: added new feature MOTD_BANNER
2973
2974         * ircd/motd.c (motd_signon): send a one-line banner from
2975         FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
2976         is set
2977
2978         * doc/example.conf: default value for MOTD_BANNER feature
2979
2980         * doc/readme.features: documented the MOTD_BANNER feature
2981
2982 2002-02-04  Kevin L Mitchell  <klmitch@mit.edu>
2983
2984         * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
2985         check; added character 'A' to the server options string to
2986         indicate when assertion checking is enabled
2987
2988 2002-02-03  Kevin L Mitchell  <klmitch@mit.edu>
2989
2990         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
2991
2992         * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
2993         event if the errno is EBADF, since the caller probably already
2994         knows about it and just hasn't gotten around to processing it yet
2995
2996         * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
2997         is generated; don't process socket_events() or socket_state() if
2998         an error occurred; add GEN_ERROR to list of flags in gen_flags()
2999
3000         * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
3001         clear it
3002
3003 2002-02-01  Kevin L Mitchell  <klmitch@mit.edu>
3004
3005         * ircd/channel.c: change make_nick_user_{ip,host} to not use a
3006         static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
3007         NUI_BUFSIZE--I confess they're not well-named) is allocated by the
3008         caller
3009
3010 2002-02-02  Alex Badea  <vampire@p16.pub.ro>
3011
3012         * include/client.h: added user flag FLAGS_HIDDENHOST
3013
3014         * include/ircd_features.h: added FEAT_HOST_HIDING and
3015         FEAT_HIDDEN_HOST
3016
3017         * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
3018         to report real hostnames and IPs to opers
3019
3020         * include/s_user.h: exported hide_hostmask()
3021
3022         * include/send.h: changed sendcmdto_channel_butserv to
3023         sendcmdto_channel_butserv_butone; ditto for
3024         sendcmdto_common_channels
3025
3026         * include/struct.h: added realhost to struct User
3027
3028         * include/whowas.h: added realhost to struct Whowas
3029
3030         * ircd/channel.c: match bans against both real and hidden
3031         hostmasks; moved some calls to use sendcmdto_*_butone
3032
3033         * ircd/gline.c: match glines agains real host
3034
3035         * ircd/ircd_features.c: added FEAT_HOST_HIDING and
3036         FEAT_HIDDEN_HOST
3037
3038         * ircd/m_account.c: call hide_hostmask() for possibly
3039         hiding the user's host
3040
3041         * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
3042
3043         * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
3044
3045         * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
3046         host
3047
3048         * ircd/m_who.c: match real hosts, if the query comes from an oper
3049
3050         * ircd/m_whois.c: report real hostname and IP to opers
3051
3052         * ircd/m_whowas.c: report real hostname to opers
3053
3054         * ircd/s_err.c: added user mode 'x' to the list of supported user
3055         modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
3056         real hostnames to opers
3057
3058         * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
3059
3060         * ircd/s_serv.c: send real hostname to servers
3061
3062         * ircd/s_user.c: send real hostname to servers; added processing
3063         of usermode 'x'; added hide_hostmask() which actually does the work
3064         of hiding a user's host; moved some calls to use sendcmdto_*_butone
3065
3066         * ircd/send.c: changed sendcmdto_channel_butserv to
3067         sendcmdto_channel_butserv_butone; ditto for
3068         sendcmdto_common_channels
3069
3070         * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
3071         it's host hidden
3072
3073         * ircd/whowas.c: if needed, store a user's real host so we can
3074         report it to opers later
3075
3076         * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
3077         features
3078
3079         * doc/example.conf: default values for HOST_HIDING and
3080         HIDDEN_HOST features
3081
3082 2002-02-01  Tim Vogelsang  <net@astrolink.org>
3083
3084         * ircd/send.c (sendwallto_group_butone): don't sent wallops to
3085         ordinary users
3086
3087 2002-01-28  Kevin L Mitchell  <klmitch@mit.edu>
3088
3089         * ircd/jupe.c (jupe_activate): remove a bogus assertion
3090
3091         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3092
3093         * ircd/s_err.c: added new channel mode 'r' to list of supported
3094         channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
3095         numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
3096         informing users why they can't join a +r channel
3097
3098         * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
3099         (+r) to do_clearmode(); note that it is *not* being added to the
3100         default clearmode mask!
3101
3102         * ircd/channel.c: don't allow non-+r users to send messages to +r
3103         channels from off the channel; add support for MODE_REGONLY (+r)
3104         to channel_modes(); don't allow non-+r users to join +r channels
3105         without an invite; add support for MODE_REGONLY to the modebuf_*()
3106         family of functions (changes in modebuf_flush_int(),
3107         modebuf_mode(), and modebuf_extract()); add support for
3108         MODE_REGONLY to mode_parse()
3109
3110         * include/supported.h (FEATURESVALUES2): added the new channel
3111         mode 'r' to the list of supported channel modes
3112
3113         * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
3114         conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
3115
3116         * include/channel.h: remove unused MODE_SENDTS; add new
3117         MODE_REGONLY
3118
3119         * ircd/s_bsd.c (read_packet): remove call to timer_verify()
3120
3121         * ircd/list.c: remove calls to timer_verify() from
3122         alloc_connection() and dealloc_connection()
3123
3124         * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
3125         from timer_run()
3126
3127 2002-01-27  Kevin L Mitchell  <klmitch@mit.edu>
3128
3129         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3130
3131         * ircd/ircd_events.c (timer_run): why did I ever use a next
3132         pointer when the algorithm guarantees that the head pointer will
3133         always be the next pointer?
3134
3135 2002-01-26  Kevin L Mitchell  <klmitch@mit.edu>
3136
3137         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3138
3139         * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
3140         client process timer to catch any list corruption
3141
3142         * ircd/list.c: surround alloc_connection() and
3143         dealloc_connection() with calls to timer_verify()
3144
3145         * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
3146         verify the timer list's structure; call it around timer_run()
3147
3148 2002-01-22  Kevin L Mitchell  <klmitch@mit.edu>
3149
3150         * ircd/send.c (sendcmdto_common_channels): don't send message to a
3151         channel that the source is a zombie on
3152
3153 2002-01-13  Kevin L Mitchell  <klmitch@mit.edu>
3154
3155         * ircd/ircd_events.c (timer_enqueue): one more assertion--make
3156         sure a timer has the ACTIVE flag set before enqueueing the timer
3157
3158         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3159
3160         * ircd/list.c (dealloc_connection): assert that the process timer
3161         has been removed from the timer queue before dealloc_connection()
3162         is called
3163
3164 2002-01-12  Kevin L Mitchell  <klmitch@mit.edu>
3165
3166         * ircd/res.c: don't accept T_A when we're looking for T_PTR
3167
3168         * ircd/channel.c (modebuf_flush_int): nuke the code that would
3169         send a HACK DESYNCH notice on a HACK(2)--it would be far too
3170         chatty
3171
3172         * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
3173
3174         * include/supported.h: add AWAYLEN to the list of supported
3175         features
3176
3177         * include/ircd_defs.h: add AWAYLEN to specify the maximum length
3178         of an away message
3179
3180         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3181
3182         * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
3183
3184         * ircd/channel.c: pass a buflen parameter to channel_modes() for
3185         pbuf--we were using sizeof(pbuf), which would always be
3186         sizeof(char*) before; change send_channel_modes() to pass extra
3187         parameter to channel_modes()
3188
3189         * include/channel.h: pass a buflen parameter to channel_modes()
3190         for pbuf
3191
3192         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3193
3194         * ircd/uping.c (uping_start): initialize some timers
3195
3196         * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
3197         out when we need to re-add the process timer
3198
3199         * ircd/s_auth.c (make_auth_request): initialize a timer
3200
3201         * ircd/res.c (init_resolver): initialize some timers
3202
3203         * ircd/list.c (alloc_connection): initialize the client process
3204         timer
3205
3206         * ircd/ircd_events.c: add a function, timer_init(), to initialize
3207         a struct Timer; recast timer_add() to catch when adding a marked
3208         timer and not re-enqueue it--but mark it for re-enqueuing; update
3209         timer_del() to turn off the GEN_READD flag and to ignore reference
3210         counts when destroying the timer--we're using GEN_MARKED as an
3211         ersatz referance count; changed timer_run() to work with the new
3212         way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
3213         map[]
3214
3215         * ircd/ircd.c: initialize some timers
3216
3217         * ircd/engine_select.c (engine_loop): initialize a timer
3218
3219         * ircd/engine_poll.c (engine_loop): initialize a timer
3220
3221         * ircd/engine_kqueue.c (engine_loop): initialize a timer
3222
3223         * ircd/engine_devpoll.c (engine_loop): initialize a timer
3224
3225         * ircd/IPcheck.c (IPcheck_init): initialize a timer
3226
3227         * include/ircd_events.h: add GEN_READD flag for timers to indicate
3228         that a timer must be readded; add t_onqueue() macro to check to
3229         see if a timer is on the queue (this is a hack, though); added
3230         timer_init() to initialize a struct Timer--we're no longer doing
3231         the initialization in timer_add()
3232
3233 2002-01-11  Kevin L Mitchell  <klmitch@mit.edu>
3234
3235         * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
3236         prevent a core bug *in* the assertion
3237
3238         * doc/readme.features: document new POLLS_PER_LOOP feature; change
3239         documentation to reflect that OPER_SET now defaults to FALSE
3240
3241         * doc/p10.html: documented the new ACCOUNT stuff
3242
3243         * doc/example.conf: document new POLLS_PER_LOOP default; change
3244         default for OPER_SET
3245
3246         * RELEASE.NOTES: changed documentation to reflect the fact that
3247         assertions are now enabled by default and do not cause memory
3248         leaks
3249
3250         * ircd/res.c (make_cache): removed a bogus assertion we probably
3251         never caught because assertions haven't been enabled on production
3252         servers for any length of time before
3253
3254         * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
3255
3256         * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
3257         instance of POLLS_PER_KQUEUE
3258
3259         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3260
3261         * ircd/s_bsd.c (client_timer_callback): only clear the
3262         FREEFLAG_TIMER flag when the timer is being destroyed
3263
3264         * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
3265         default it to 200; turn OPER_SET off by default
3266
3267         * ircd/engine_kqueue.c: dynamically allocate and reallocate the
3268         array of events to obtain from the kernel
3269
3270         * ircd/engine_devpoll.c: dynamically allocate and reallocate the
3271         array of events to obtain from the kernel
3272
3273         * include/ircd_features.h: add a new feature for tuning how many
3274         events to get from the kernel, for engines that support that
3275
3276         * ircd/Makefile.in: re-run make depend to correct dependancies
3277
3278         * ircd/m_who.c: remove unneeded inclusion of list.h
3279
3280         * ircd/ircd_events.c: remove unneeded inclusion of list.h
3281
3282         * ircd/whocmds.c (do_who): hide server name in /who unless
3283         requester is an operator; simplify hop count insertion
3284
3285         * ircd/s_misc.c (exit_one_client): make sure client's snomask is
3286         cleared
3287
3288         * ircd/parse.c: use mo_version and mo_admin when opers do /version
3289         or /admin
3290
3291         * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
3292         of the static string "*.undernet.org"
3293
3294         * ircd/m_version.c: only let ordinary users get version
3295         information for the server they are on
3296
3297         * ircd/m_admin.c: only let ordinary users get admin information
3298         for the server they are on
3299
3300         * ircd/channel.c (client_can_send_to_channel): check is_banned()
3301         before letting the client speak on a channel s/he is not on
3302
3303         * include/supported.h: add NETWORK to feature list
3304
3305         * include/handlers.h: declare mo_admin() and mo_version()
3306
3307 2002-01-10  Kevin L Mitchell  <klmitch@mit.edu>
3308
3309         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3310
3311         * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
3312         of !NDEBUG
3313
3314         * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
3315         !NDEBUG
3316
3317         * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
3318         !NDEBUG
3319
3320         * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
3321
3322         * ircd/Makefile.in: run make depend on chkconf.c as well
3323
3324         * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
3325         conditionalize on MDEBUG
3326
3327         * include/fda.h: instead of conditionalizing on !NDEBUG,
3328         conditionalize on MDEBUG
3329
3330         * configure: rebuild configure script
3331
3332         * configure.in: enable assertion checking by default, since we
3333         have now decoupled memory debugging from the NDEBUG macro
3334
3335         * ircd/s_user.c (set_nick_name): remove calls to
3336         verify_client_list()
3337
3338         * ircd/s_misc.c (exit_one_client): remove calls to
3339         verify_client_list()
3340
3341         * ircd/s_conf.c (rehash): remove calls to verify_client_list()
3342
3343         * ircd/m_who.c (m_who): remove calls to verify_client_list()
3344
3345         * ircd/list.c: remove calls to verify_client_list(); keep
3346         verify_client_list() around just in case we ever need it again,
3347         but never compile it in
3348
3349         * ircd/ircd_events.c (event_execute): remove calls to
3350         verify_client_list()
3351
3352         * ircd/client.c (client_get_ping): remove calls to
3353         verify_client_list()
3354
3355         * include/list.h (send_listinfo): remove temporary debugging
3356         function verify_client_list()
3357
3358         * ircd/uping.c: don't die if the event type is ET_ERROR in socket
3359         callback functions
3360
3361         * ircd/res.c (res_callback): don't die if the event type is
3362         ET_ERROR
3363
3364         * ircd/listener.c (accept_connection): don't die if the event type
3365         is ET_ERROR
3366
3367 2002-01-09  Kevin L Mitchell  <klmitch@mit.edu>
3368
3369         * ircd/s_user.c (set_nick_name): bracket call to
3370         add_client_to_list() with calls to verify_client_list()
3371
3372         * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
3373
3374         * ircd/list.c (verify_client_list): add a probabilistic loop
3375         detector: for every client added, there is a 2% probability that
3376         it will be used to replace the value of sentinel; if at any time,
3377         sentinel is found again, we know we're in a loop
3378
3379         * ircd/ircd_events.c (event_execute): add verify_client_list()
3380         calls wrapping event_execute; at the very least, I'll figure out
3381         what event the corruption occurred in
3382
3383         * ircd/list.c: moved verify_client_list() to try to keep it from
3384         being inlined
3385
3386         * ircd/Makefile.in (version.c): version.c wasn't dependant on
3387         version.h and patchlevel.h, like it was supposed to be
3388
3389         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3390
3391         * ircd/s_auth.c (destroy_auth_request): overload send_reports
3392         argument to also indicate whether or not to call
3393         release_auth_client() and thereby enter the client into the linked
3394         list
3395
3396         * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
3397
3398         * include/patchlevel.h (PATCHLEVEL): bump patchlevel
3399
3400         * ircd/list.c (free_client): verify that destroy_auth_request()
3401         didn't automagically re-add us to the list; we might have to think
3402         about this interaction more carefully, actually
3403
3404         * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
3405         calling free_client(); otherwise, free_client() will try to free
3406         the auth by calling destroy_auth_request(), which will call
3407         add_client_to_list()
3408
3409         * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
3410         verify_client_list() around to catch any corruption that might
3411         occur here
3412
3413         * ircd/s_conf.c (rehash): liberally sprinkle calls to
3414         verify_client_list() here, since this is about the only routine I
3415         can think of that could cause the "core on kill -HUP" bug
3416
3417         * ircd/m_who.c: sprinkle calls to verify_client_list() around
3418         liberally, since we've seen crashes here; temporarily include the
3419         otherwise unneeded list.h header
3420
3421         * ircd/list.c: sprinkle calls to verify_client_list() around quite
3422         liberally; add debugging asserts to list manipulation functions to
3423         catch strange settings for next and prev pointers; define
3424         verify_client_list(), which walks the client list and verifies
3425         that everything is as it's supposed to be
3426
3427         * ircd/client.c: wrap client_get_ping with calls to
3428         verify_client_list() to see if that's where we're dying
3429
3430         * include/patchlevel.h (PATCHLEVEL): bump to 03
3431
3432         * include/list.h: declare verify_client_list() if DEBUGMODE
3433         enabled; otherwise, define it to be empty
3434
3435 2002-01-08  Kevin L Mitchell  <klmitch@mit.edu>
3436
3437         * ircd/m_quit.c (m_quit): remove an unused variable
3438
3439         * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
3440
3441         * ircd/s_user.c: when building the user mode to send to the user,
3442         don't include +r; add an extra set of parens to squelch a warning
3443
3444         * ircd/m_quit.c (m_quit): use exit_client_msg()
3445
3446         * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
3447         keep track of who's running what version
3448
3449         * ircd/m_squit.c (ms_squit): remove debugging calls to
3450         protocol_violation()
3451
3452         * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
3453         new gmake "feature" (pull-up from trunk)
3454
3455         * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
3456         from trunk)
3457
3458 2002-01-07  Kevin L Mitchell  <klmitch@mit.edu>
3459
3460         * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
3461         list of user modes; process account name as part of user mode in
3462         NICK decoding (set_nick_name()); add account name to usermode when
3463         building the usermode to incorporate in outgoing NICK messages
3464
3465         * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
3466         user is logged in to
3467
3468         * ircd/parse.c: define the new ACCOUNT command, usable only by
3469         servers and ignored by everything else
3470
3471         * ircd/m_whois.c: report what account name is associated with a
3472         user, if any
3473
3474         * ircd/m_account.c: implement the ACCOUNT command
3475
3476         * ircd/Makefile.in: add m_account.c to the list of sources; ran
3477         make depend
3478
3479         * include/struct.h: add an account field to struct User
3480
3481         * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
3482         what username a user is logged in under
3483
3484         * include/msg.h: add ACCOUNT command and token (AC)
3485
3486         * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
3487         the maximum length of a username for X
3488
3489         * include/handlers.h: add declaration for ms_account()
3490
3491         * include/client.h: add FLAGS_ACCOUNT to flag when a user account
3492         name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
3493         IsAccount() and SetAccount() to manipulate the flag
3494
3495         * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
3496         name like "Amsterdam2.NL.EU.undernet.org", we get the struct
3497         Client for the server with numeric "Am", which happens to be
3498         stockholm!  To fix this, we look up the full name *first*; if that
3499         doesn't get it, *then* we look up by numeric.
3500
3501 2001-12-24  Perry Lorier <isomer@coders.net>
3502         * ircd/m_server.c: cleanups, maybe this will make the bug easier
3503         to find.
3504
3505         * ircd/m_stats.c: display maximum number of connects in an I:
3506
3507 2001-11-22  Perry Lorier  <isomer@coders.net>
3508         * ircd/m_squit.c: Bug fix in squit
3509
3510 2001-11-03  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3511         * ircd/parse.c, include/handlers.h: Give remote whois the correct
3512         handler.
3513         
3514 2001-11-01  Kevin L Mitchell  <klmitch@mit.edu>
3515
3516         * ircd/send.c: some minor white-space fiddling; recast selector
3517         test in sendwallto_group_butone() to remove a warning regarding
3518         putting & within parentheses
3519
3520         * ircd/m_create.c (ms_create): use time_t instead of int as a
3521         declaration for rate
3522
3523         * ircd/ircd_reply.c (protocol_violation): it's supposed to be
3524         WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
3525         wonder we weren't seeing any protocol violations!
3526
3527         * include/send.h: include time.h for time_t; move WALL_* closer to
3528         the function they're used in; some white-space fiddling; add
3529         declaration of sendto_opmask_butone_ratelimited()
3530
3531         * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
3532         cases where we ignore a squit, so we aren't taken by surprise, at
3533         least...
3534
3535         * ircd/m_create.c (ms_create): Display origin server, not origin
3536         user
3537
3538         * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
3539
3540 2001-10-31  Perry Lorier  <isomer@coders.net>
3541         * include/m_ping.c: Forward port ping bug
3542
3543 2001-10-31  Perry Lorier  <isomer@coders.net>
3544         * include/patchlevel.h: We're beta now
3545
3546 2001-10-31  Perry Lorier  <isomer@coders.net>
3547         * ircd/s_user.c: fixed hunt_server
3548
3549 2001-09-21  Perry Lorier  <isomer@coders.net>
3550         * ircd/send.c and various: replace sendcmdto_flag_butone with
3551         sendwallto_group_butone
3552
3553 2001-09-21  Vampire-  <unknown>
3554         * ircd/ircd_string.c: unique_name_vector round II.
3555
3556 2001-09-21  mbuna  <mbuna@undernet.org>
3557         * configure.in: Add support for darwin
3558
3559 2001-09-21  Perry Lorier  <isomer@coders.net>
3560         * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
3561
3562 2001-09-20  Perry Lorier  <isomer@coders.net>
3563
3564         * Pullups from 2.10.10.pl16
3565         * Added some warnings, and the concept of rate limited snotices
3566
3567 2001-08-31  Kevin L Mitchell  <klmitch@mit.edu>
3568
3569         * ircd/channel.c: use "%u" to format limit arguments; use
3570         strtoul() to process limit arguments in a /mode command--note:
3571         most clients seem to truncate the integer, probably because
3572         they're using atoi, and perhaps signed ints
3573
3574 2001-08-17  Kevin L Mitchell  <klmitch@mit.edu>
3575
3576         * ircd/numnicks.c: include stdlib.h for exit()
3577
3578         * ircd/ircd_log.c: include stdlib.h for exit()
3579
3580         * ircd/ircd_events.c: include stdlib.h for exit()
3581
3582         * ircd/s_stats.c: remove description of /stats v, since it's gone
3583
3584         * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
3585         /wallops to distinguish wallops from wallusers
3586
3587         * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
3588         in the "handshake" or "connecting" states--I think the latter will
3589         never happen, but...
3590
3591         * doc/Authors: apply delete's Authors patch
3592
3593         * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
3594         Braden's version
3595
3596         * README: rewrite README
3597
3598 2001-07-31  Kevin L. Mitchell  <klmitch@mit.edu>
3599
3600         * ircd/s_serv.c (server_estab): remove unused variable split
3601
3602         * ircd/parse.c: add mr_error to the parse table
3603
3604         * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
3605         unregistered connections--if IsUserPort() is true, the ERROR is
3606         ignored, otherwise, the message is saved
3607
3608 2001-07-28  Kevin L. Mitchell  <klmitch@mit.edu>
3609
3610         * ircd/m_kill.c (ms_kill): another minor typo *sigh*
3611
3612         * ircd/s_user.c (send_supported): oops, minor typo...
3613
3614         * ircd/s_user.c: implement send_supported() to send two ISUPPORT
3615         messages containing our feature buffers; make register_user() use
3616         send_supported()
3617
3618         * ircd/s_misc.c (exit_client): make sure not to give away a remote
3619         server in the ERROR message sent to the client; if the killer is a
3620         server, we substitute our name in its place
3621
3622         * ircd/m_version.c (m_version): use send_supported() to send the
3623         ISUPPORT values to the user
3624
3625         * ircd/m_nick.c: shave nick collision kills here a bit, too, for
3626         the same reasons as for m_kill.c
3627
3628         * ircd/m_kill.c: shave kills a bit so that the results look
3629         exactly the same no matter where you are; if we didn't do this, it
3630         would be possible to map the network by looking at the differences
3631         between kills originating under various circumstances
3632
3633         * include/supported.h: split the features into two, so as to not
3634         bust the parameter count when sending the features list
3635
3636         * include/s_user.h: declare new send_supported() function to send
3637         the ISUPPORT information
3638
3639 2001-07-27  Kevin L. Mitchell  <klmitch@mit.edu>
3640
3641         * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
3642         source-routed spoofing attacks; this is only available under
3643         u2.10.11, so don't even bother, since no one but testers are using
3644         the source base
3645
3646 2001-07-25  Kevin L. Mitchell  <klmitch@mit.edu>
3647
3648         * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
3649
3650         * ircd/s_err.c: put in a . for reporting link version on /trace,
3651         to match what /version does
3652
3653 2001-07-21  Kevin L. Mitchell  <klmitch@mit.edu>
3654
3655         * ircd/s_misc.c (exit_client): servers don't understand what the
3656         numeric nick ERROR is supposed to mean, so they ignore error
3657         messages, resulting in not knowing why we were rejected; use
3658         sendcmdto_one for servers and sendrawto_one for clients
3659
3660 2001-07-17  Kevin L. Mitchell  <klmitch@mit.edu>
3661
3662         * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
3663         a nick collide, a bare BURST may be propagated; adjust the
3664         enforced parameter count to accept the bare BURST
3665
3666 2001-07-12  Kevin L. Mitchell  <klmitch@mit.edu>
3667
3668         * ircd/s_bsd.c: mark a client as having been IP checked
3669
3670         * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
3671         second call to SetIPChecked()
3672
3673 2001-07-11  Kevin L. Mitchell  <klmitch@mit.edu>
3674
3675         * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
3676
3677         * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
3678
3679 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
3680
3681         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
3682         sections so that if neither is used, the declaration of buf will
3683         not elicit an "unused variable" warning under NetBSD
3684
3685         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
3686         on alpha)
3687
3688         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
3689         warnings on alpha)
3690
3691         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
3692         warnings on alpha)
3693
3694         * ircd/client.c: include string.h to declare memset (fix warnings
3695         on alpha)
3696
3697         * ircd/channel.c: remove unused functions next_overlapped_ban,
3698         del_banid, and is_deopped (fix warnings under -O1)
3699
3700         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
3701         warnings on alpha)
3702
3703 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
3704
3705         * ircd/s_user.c (set_user_mode): clear the snomask if the user
3706         isn't supposed to receive server notices anymore
3707
3708         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
3709
3710         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
3711         installation prefix; default devpoll and kqueue to on (they get
3712         turned off if the required headers aren't present)
3713
3714         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
3715         sprintf_irc(); it's a bit hackish, but it'll do for now
3716
3717         * ircd/support.c: remove unused #include
3718
3719         * ircd/send.c: remove unused #include
3720
3721         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
3722
3723         * ircd/s_serv.c: remove unused #include
3724
3725         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
3726         sprintf_irc() and friends
3727
3728         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
3729         ircd/s_err.c, which is the only other file to refer to it
3730
3731         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
3732         sprintf_irc()
3733
3734         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
3735         sprintf_irc()
3736
3737         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
3738
3739         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
3740
3741         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
3742
3743         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
3744
3745         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
3746
3747         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
3748
3749         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
3750         instead of sprintf_irc()
3751
3752         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
3753         make depend
3754
3755         * include/ircd_string.h: remove declaration of sprintf_irc() (what
3756         was it doing here anyway?)
3757
3758         * include/sprintf_irc.h: removed unneeded source file
3759
3760         * ircd/sprintf_irc.c: removed unneeded source file
3761
3762         * ircd/s_debug.c (count_memory): remove some dead code
3763
3764         * ircd/s_auth.c: remove some dead code
3765
3766         * ircd/res.c (update_list): remove some dead code
3767
3768         * ircd/m_whowas.c: remove some dead code
3769
3770         * ircd/m_whois.c: remove some dead code
3771
3772         * ircd/m_who.c: remove some dead code
3773
3774         * ircd/m_wallusers.c: remove some dead code
3775
3776         * ircd/m_wallops.c: remove some dead code
3777
3778         * ircd/m_wallchops.c: remove some dead code
3779
3780         * ircd/m_version.c: remove some dead code
3781
3782         * ircd/m_userip.c: remove some dead code
3783
3784         * ircd/m_userhost.c: remove some dead code
3785
3786         * ircd/m_uping.c: remove some dead code
3787
3788         * ircd/m_trace.c: remove some dead code
3789
3790         * ircd/m_topic.c: remove some dead code
3791
3792         * ircd/m_tmpl.c: remove some dead code
3793
3794         * ircd/m_time.c: remove some dead code
3795
3796         * ircd/m_squit.c: remove some dead code
3797
3798         * ircd/m_silence.c: remove some dead code
3799
3800         * ircd/m_settime.c: remove some dead code
3801
3802         * ircd/m_set.c: remove some dead code
3803
3804         * ircd/m_server.c: remove some dead code
3805
3806         * ircd/m_rpong.c: remove some dead code
3807
3808         * ircd/m_rping.c: remove some dead code
3809
3810         * ircd/m_restart.c: remove some dead code
3811
3812         * ircd/m_reset.c: remove some dead code
3813
3814         * ircd/m_rehash.c: remove some dead code
3815
3816         * ircd/m_quit.c: remove some dead code
3817
3818         * ircd/m_proto.c: remove some dead code
3819
3820         * ircd/m_privs.c: remove some dead code
3821
3822         * ircd/m_privmsg.c: remove some dead code
3823
3824         * ircd/m_pong.c: remove some dead code
3825
3826         * ircd/m_ping.c: remove some dead code
3827
3828         * ircd/m_pass.c: remove some dead code
3829
3830         * ircd/m_part.c: remove some dead code
3831
3832         * ircd/m_opmode.c: remove some dead code
3833
3834         * ircd/m_oper.c: remove some dead code
3835
3836         * ircd/m_notice.c: remove some dead code
3837
3838         * ircd/m_nick.c: remove some dead code
3839
3840         * ircd/m_map.c: remove some dead code
3841
3842         * ircd/m_lusers.c: remove some dead code
3843
3844         * ircd/m_list.c: remove some dead code
3845
3846         * ircd/m_links.c: remove some dead code
3847
3848         * ircd/m_kill.c: remove some dead code
3849
3850         * ircd/m_kick.c: remove some dead code
3851
3852         * ircd/m_jupe.c: remove some dead code
3853
3854         * ircd/m_join.c: remove some dead code
3855
3856         * ircd/m_ison.c: remove some dead code
3857
3858         * ircd/m_invite.c: remove some dead code
3859
3860         * ircd/m_info.c: remove some dead code
3861
3862         * ircd/m_help.c: remove some dead code
3863
3864         * ircd/m_gline.c: remove some dead code
3865
3866         * ircd/m_get.c: remove some dead code
3867
3868         * ircd/m_error.c: remove some dead code
3869
3870         * ircd/m_endburst.c: remove some dead code
3871
3872         * ircd/m_die.c: remove some dead code
3873
3874         * ircd/m_desynch.c: remove some dead code
3875
3876         * ircd/m_destruct.c: remove some dead code
3877
3878         * ircd/m_defaults.c: remove some dead code
3879
3880         * ircd/m_create.c: remove some dead code, along with an #if 1
3881
3882         * ircd/m_cprivmsg.c: remove some dead code
3883
3884         * ircd/m_connect.c: remove some dead code
3885
3886         * ircd/m_close.c: remove some dead code
3887
3888         * ircd/m_clearmode.c: remove some dead code
3889
3890         * ircd/m_burst.c: remove some dead code
3891
3892         * ircd/m_away.c: remove some dead code
3893
3894         * ircd/m_admin.c: remove some dead code
3895
3896         * ircd/listener.c (accept_connection): remove some dead code
3897
3898         * ircd/ircd_reply.c (need_more_params): remove some dead code
3899
3900         * ircd/channel.c (add_banid): remove some dead code
3901
3902         * include/support.h: remove some dead code
3903
3904         * include/querycmds.h: remove some dead code
3905
3906         * doc/readme.chroot: document how to do chroot operation
3907
3908 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
3909
3910         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
3911         force bin directory to be created if necessary prior to
3912         installation; run make depend
3913
3914         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
3915         the ${srcdir}
3916
3917         * Makefile.in: tune to detect Makefile.in changes in
3918         subdirectories and to create installation directory indicated by
3919         ${prefix}
3920
3921         * ircd/whocmds.c (count_users): routine to count the number of
3922         users matching a given user@host mask
3923
3924         * ircd/s_err.c: add error messages for ERR_LONGMASK,
3925         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
3926
3927         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
3928         from operators; only set GLINE_OPERFORCE flag if oper has the
3929         PRIV_WIDE_GLINE privilege
3930
3931         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
3932         maximum number of users a G-line can impact before it has to be
3933         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
3934         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
3935         operators to use ! to force a wide G-line to be set
3936
3937         * ircd/gline.c: make make_gline() be called with separate user and
3938         host arguments, and not call canon_userhost() directly; implement
3939         gline_checkmask() to verify that a host mask is acceptable; move
3940         BADCHAN check up in gline_add(), and check passed-in mask under
3941         certain circumstances for acceptability; fix call to
3942         sendto_opmask_butone() to handle separation of userhost into user
3943         and host in gline_add(); update call to make_gline()
3944
3945         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
3946         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
3947         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
3948
3949         * include/whocmds.h (count_users): declare routine to count users
3950         matching a given user@host mask
3951
3952         * include/numeric.h: added three new error returns: ERR_LONGMASK
3953         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
3954         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
3955         contains wildcards in the wrong places
3956
3957         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
3958         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
3959
3960         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
3961         to signal to gline_add() that the operator attempted to force the
3962         G-line to be set
3963
3964         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
3965
3966         * doc/readme.gline: update to document new "!" prefix to a G-line
3967         user@host mask
3968
3969         * doc/readme.features: document GLINEMAXUSERCOUNT,
3970         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
3971
3972         * doc/example.conf: update to mention new features along with
3973         their defaults
3974
3975 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
3976
3977         * doc/example.conf: updated example.conf from Braden
3978         <dbtem@yahoo.com>
3979
3980         * include/supported.h: forward-port from pl15
3981
3982 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
3983
3984         * ircd/whocmds.c: include ircd_policy.h and implement
3985         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
3986
3987         * ircd/m_whois.c: forward-port of the idle-time hiding code from
3988         pl15; this also required passing parc into do_whois(), which also
3989         meant passing parc into do_wilds()--*sigh*
3990
3991         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
3992         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
3993
3994 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
3995
3996         * tools/wrapper.c: add a wrapper program that can be used to
3997         adjust file descriptor limits and root directories; program must
3998         be run as root--NOT SETUID!--and given appropriate -u arguments
3999
4000         * doc/readme.log: documentation of how to configure logging
4001
4002         * doc/readme.features: documentation of each feature (except for
4003         logging)
4004
4005 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
4006
4007         * Makefile.in (config): add a deprecation notice with a pointer to
4008         tools/transition
4009
4010         * tools/transition: shell script to convert old compile-time
4011         options into new compile-time options and appropriate F-lines
4012
4013         * tools/mkchroot: shell-script to prepare the chroot area by
4014         copying over all the necessary libraries so they can be found
4015
4016 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
4017
4018         * INSTALL: partial update of INSTALL for u2.10.11 release...
4019
4020 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
4021
4022         * ircd/table_gen.c (makeTables): finally got tired of the
4023         "overflow in implicit conversion" warning, so just got rid of it
4024         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
4025         differences in the tables generated
4026
4027 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
4028
4029         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
4030         if a client is in the STAT_CONNECTING status
4031
4032 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
4033
4034         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
4035         into sendcmdto_one(); define new sendcmdto_prio_one(), which
4036         places the message into the priority queue
4037
4038         * ircd/s_user.c (hunt_server_prio_cmd): definition of
4039         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
4040         instead of sendcmdto_one()
4041
4042         * ircd/m_settime.c: use sendcmdto_prio_one() and
4043         hunt_server_prio_cmd() to send SETTIME
4044
4045         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
4046
4047         * include/send.h: removed declaration for unused vsendcmdto_one();
4048         added a declaration for sendcmdto_prio_one()
4049
4050         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
4051         sendcmdto_prio_one()
4052
4053         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
4054         put in the server's priority queue, too...
4055
4056         * ircd/ircd.c: don't check LPATH for accessibility at all
4057
4058 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
4059
4060         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
4061         command if we're configured as a hub; send individual server flags
4062         in SERVER commands
4063
4064         * ircd/s_bsd.c (completed_connection): send a +h flag in our
4065         SERVER command if we're configured as a hub
4066
4067         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
4068         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
4069         flag for a server; +hs sets both flags; also modify CMD_SERVER
4070         format string to send the flags
4071
4072         * include/client.h: define two new flags, FLAGS_HUB and
4073         FLAGS_SERVICE to mark services and hubs as such; define testing
4074         macros, setting macros
4075
4076         * ircd/s_user.c: remove deprecated struct Gline* argument to
4077         register_user(); remove GLINE rebroadcast; do not send GLINE
4078         acknowledgement parameter to NICK; do not look for GLINE
4079         acknowledgement parameter to NICK while parsing
4080
4081         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
4082         argument to server_estab(); do not send JUPE/GLINE acknowledgement
4083         parameters for SERVER or NICK
4084
4085         * ircd/m_user.c (m_user): remove deprecated argument to
4086         register_user()
4087
4088         * ircd/m_server.c: remove deprecated argument to server_estab();
4089         remove documentation comment regarding JUPE acknowledgement
4090         parameter to SERVER; remove JUPE rebroadcast
4091
4092         * ircd/m_pong.c (mr_pong): remove deprecated argument to
4093         register_user()
4094
4095         * ircd/m_nick.c: remove documentation comment regarding GLINE
4096         acknowledgement parameter to NICK
4097
4098         * ircd/jupe.c: use user's real name in JUPE server notices if
4099         HEAD_IN_SAND_SNOTICES is defined
4100
4101         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
4102         setuid code; correct ancient DEBUG vs DEBUGMODE typo
4103
4104         * ircd/gline.c: use user's real name in GLINE server notices if
4105         HEAD_IN_SAND_SNOTICES is defined
4106
4107         * ircd/channel.c (modebuf_flush_int): make apparent source be
4108         local server, not oper's server; use user's real name in hack
4109         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
4110
4111         * include/s_user.h: remove struct Gline pre-declaration; remove
4112         deprecated struct Gline argument from register_user()
4113
4114         * include/s_serv.h: remove struct Jupe pre-declaration; remove
4115         deprecated struct Jupe argument from server_estab()
4116
4117 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
4118
4119         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
4120         changes required to control remote stats
4121
4122         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
4123         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
4124         [forward-port from pl15]
4125
4126         * ircd/m_whowas.c (m_whowas): report server name only if requester
4127         is an operator [forward-port from pl15]
4128
4129         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
4130         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
4131         and obtain the report from the user's server [forward-port from
4132         pl15]
4133
4134         * ircd/m_who.c: add missing include for ircd_policy.h
4135         [forward-port from pl15]
4136
4137         * ircd/m_version.c (m_version): require oper access for remote
4138         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
4139
4140         * ircd/m_time.c (m_time): require oper access for remote /time if
4141         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
4142
4143         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
4144         missing semicolon [forward-port from pl15]
4145
4146         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
4147         kills [forward-port from pl15]
4148
4149         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
4150         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
4151
4152         * ircd/m_lusers.c (m_lusers): require oper access for remote
4153         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
4154
4155         * ircd/m_burst.c (ms_burst): server-added bans are stored using
4156         local server name, to hide remote server names; modes also are to
4157         originate from the local server [forward-port from pl15]
4158
4159         * ircd/m_admin.c (m_admin): require oper access for remote /admin
4160         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
4161
4162         * ircd/channel.c (add_banid): if a server is adding a ban, use my
4163         server name to hide the remote server's name [forward-port from
4164         pl15]
4165
4166         * ircd/Makefile.in: ran make depend
4167
4168         * include/s_stats.h: hunt_stats() has to have an extra argument to
4169         support the forward-port from pl15
4170
4171         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
4172         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
4173
4174         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
4175         forgot to check in the events branch
4176
4177 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
4178
4179         * ircd/res.c (init_resolver): don't start DNS expires with a 0
4180         relative timeout--if the server starts slow, timeouts could be
4181         messy...there's probably a better solution, but this'll do for now
4182
4183         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
4184         headers very well; include stropts.h; define an os_set_tos()
4185
4186         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
4187         os_generic.c
4188
4189         * ircd/ircd.c: if there are no C-lines, we don't want to have a
4190         timer that expires at the absolute time of 0--it kinda blocks all
4191         the other timers!
4192
4193         * ircd/engine_devpoll.c: some includes for open(); declare errcode
4194         and codesize in engine_loop()
4195
4196         * ircd/list.c (free_client): remove bogus check on timer active
4197         flag
4198
4199         * ircd/s_auth.c: pull out destruction code in
4200         auth_timeout_request() into an externally-visible
4201         destroy_auth_request(); manage cli_auth pointer in client
4202         structure; use it for an extra assertion check
4203
4204         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
4205         debugging notices to show flow when deallocating
4206         connections/clients; call destroy_auth_request() when free'ing a
4207         client that has an auth outstanding; don't free the connection if
4208         the process timer is unmarked but still active
4209
4210         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
4211         and reset it before calling the event handler for an ET_DESTROY
4212         event
4213
4214         * include/s_auth.h (destroy_auth_request): declare
4215         destroy_auth_request(), which can be used to destroy an
4216         outstanding auth request if a client socket goes away before the
4217         auth exchange is completed
4218
4219         * include/ircd_events.h: add an active flag to keep track of
4220         whether or not particular generators are active, for the
4221         convenience of functions using the API
4222
4223         * include/client.h: add a pointer for auth requests to struct
4224         Connection so we can kill outstanding auth requests if a client
4225         socket closes unexpectedly
4226
4227         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
4228         the sock or timer callback; take that into account in the assert
4229
4230         * ircd/list.c: add magic number checking and setting--magic
4231         numbers are zero'd on frees to detect double-frees; add back
4232         setting of cli_from() to 0 to break the back-link from the struct
4233         Connection (duh)
4234
4235         * ircd/ircd.c: set me's magic number correctly
4236
4237         * include/client.h: define magic numbers and accessor/verifier
4238         macros
4239
4240         * ircd/list.c: assert that dealloc_client() is called with
4241         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
4242         dealloc_client(); don't mess with cli_from(cptr)
4243
4244         * ircd/s_bsd.c: only attempt to dealloc a connection if the
4245         associated client has already been destroyed, or at least delinked
4246
4247 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
4248
4249         * ircd/list.c (free_client): only try to delete the socket when
4250         the fd hasn't already been closed, avoiding a double-free
4251
4252         * ircd/list.c (free_connection): make sure the client is really
4253         gone before doing away with the connection
4254
4255         * ircd/s_bsd.c: record that socket has been added in con_freeflag
4256         field; queue a socket_del() as soon as the socket is close()'d;
4257         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
4258         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
4259         then dealloc the connection if safe; mark socket as dead when
4260         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
4261         to client_timer_callback(); dealloc connection if safe upon
4262         ET_DESTROY event in client_timer_callback()
4263
4264         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
4265         the connection if both socket and timer have been destroyed;
4266         destroy both socket and timer explicitly and carefully
4267
4268         * include/client.h: replace the con_timer field with a
4269         con_freeflag field, to indicate what still needs freeing; define
4270         the freeflags
4271
4272         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
4273         become 0
4274
4275         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
4276         become 0
4277
4278         * ircd/s_bsd.c: add some extra assertions to try to track down a
4279         corruption problem
4280
4281         * ircd/engine_select.c (engine_loop): add an extra assert to try
4282         to track down a corruption problem
4283
4284         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
4285         track down a corruption problem
4286
4287         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
4288         to track down a corruption problem
4289
4290         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
4291         empty during processing; add an extra assert to try to track down
4292         a corruption problem
4293
4294         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
4295         entries
4296
4297 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
4298
4299         * ircd/s_bsd.c (client_sock_callback): client is no longer
4300         blocked, so we must mark it as unblocked
4301
4302         * ircd/engine_select.c: add Debug() calls galore; add handling for
4303         SS_NOTSOCK; use a dummy sock variable to keep things from
4304         disappearing on us; correct timeout calculation; update nfds for
4305         efficiency
4306
4307         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
4308         remove a spurious "if (sock)" which will always be true; update
4309         nfds for efficiency
4310
4311         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
4312         SS_NOTSOCK (just in case); correct timeout calculation
4313
4314         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
4315         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
4316
4317         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
4318         pretty-indent numbers
4319
4320         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
4321         case--it's not a socket; the check for writability is most likely
4322         not needed, but present for completeness
4323
4324 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
4325
4326         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
4327         no newline flag is set; call read_packet() when the timer expires,
4328         regardless of what's in the buffer--read_packet() should be able
4329         to deal properly
4330
4331         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
4332         sent to clients to include the client nickname (duh)
4333
4334         * ircd/ircd_events.c: don't destroy a timer if it's already marked
4335         for destruction; replace a missing ! in socket_del()
4336
4337         * ircd/engine_poll.c (engine_loop): reference a temporary variable
4338         so we don't have to worry about sockList[i] going away
4339
4340         * ircd/s_bsd.c (client_sock_callback): add Debug messages
4341
4342         * ircd/s_auth.c: add Debug messages all over the place
4343
4344         * ircd/ircd_events.c: add and edit some Debug messages; add a list
4345         of routines to convert some of the enums and flags from numbers
4346         into human-readable strings for the Debug messages
4347
4348         * ircd/engine_poll.c: hack some Debug messages to use the new name
4349         conversion routines in ircd_events.c; add an extra assert for a
4350         condition that shouldn't ever happen; apparently recv() can return
4351         EAGAIN when poll() returns readable--I wonder why...
4352
4353         * include/ircd_events.h: declare some helper routines under
4354         DEBUGMODE
4355
4356 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
4357
4358         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
4359         check
4360
4361         * ircd/s_auth.c: add more Debug messages
4362
4363         * ircd/list.c (make_client): add an extra assertion check
4364
4365         * ircd/ircd_events.c (socket_events): don't call the engine events
4366         changer if we haven't actually made any changes to the event mask
4367
4368         * ircd/uping.c: add some Debug messages
4369
4370         * ircd/s_stats.c: document new /STATS e
4371
4372         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
4373
4374         * ircd/s_bsd.c: remove static client_timer variable; in
4375         read_packet(), if there's still data in the client's recvQ after
4376         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
4377         of client_sock_callback to handle destroying the timer properly;
4378         rewrote client_timer_callback from scratch to be called on an
4379         individual client
4380
4381         * ircd/m_stats.c: add /STATS e to report the engine name
4382
4383         * ircd/list.c: deal with con_timer field in struct Connection
4384         properly; correct a core-level bug in remove_client_from_list--if
4385         the client is the only one in the list, we try to update
4386         GlobalClientList's cli_prev pointer--not good
4387
4388         * ircd/ircd.c: remove call to init_client_timer()
4389
4390         * ircd/engine_poll.c: made Debug messages more uniform by
4391         prepending "poll:" to them all; corrected an off-by-one error that
4392         caused poll_count to be 1 less than the actual count and removed
4393         my work-around; added Debug messages to indicate which socket is
4394         being checked and what the results are
4395
4396         * ircd/Makefile.in: ran a make depend
4397
4398         * include/s_bsd.h: remove init_client_timer(), since we're doing
4399         it differently now
4400
4401         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
4402         engine name
4403
4404         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
4405         reports for non-opers
4406
4407         * include/client.h: add con_timer and con_proc fields to struct
4408         Connection and define accessor macros--con_timer marks that
4409         con_proc contains a valid timer, and con_proc is used to pace user
4410         data
4411
4412         * ircd/s_bsd.c (close_connection): let free_client() destroy the
4413         socket
4414
4415         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
4416         auth has begun on a client
4417
4418         * ircd/ircd_events.c: ensure that event_execute() is called with a
4419         non-NULL event; modify event_add() macro to properly zero list
4420         bits; modify gen_dequeue() to not try to clip it out of a list
4421         it's already been clipped out of; change signal socket
4422         initialization to use state SS_NOTSOCK; permit timeout values of
4423         0 in add_timer(); add many Debug calls; change socket_del() and
4424         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
4425         timer_run() instead of GEN_DESTROY so that event_generate() will
4426         pass on the events; remove the switch and replace with a simpler
4427         if-then-else tree in timer_run(); don't allow destroyed sockets to
4428         be destroyed again, nor their states or event masks to be changed
4429
4430         * ircd/ircd.c: initialize "running" to 1
4431
4432         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
4433         messages all over the place; fix a counting problem in
4434         engine_add(); turn wait into a signed integer and set it to -1
4435         only if timer_next() returns 0; adjust wait time to be relative;
4436         don't call gen_ref_dec() if socket disappeared while we were
4437         processing it
4438
4439         * include/ircd_events.h: the pipe for signals is not a socket, so
4440         we must mark it as such--added SS_NOTSOCK for that special socket;
4441         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
4442         for the benefit of timer_run()
4443
4444         * configure.in: add --enable-pedantic and --enable-warnings to
4445         turn on (and off) -Wall -pedantic in CFLAGS
4446
4447 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
4448
4449         * ircd/s_conf.c: change "s_addr" element accesses to "address"
4450         element accesses
4451
4452         * include/s_conf.h: on some systems, "s_addr" is a macro; use
4453         "address" instead
4454
4455 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
4456
4457         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
4458         void in this file; add a missing semi-colon; declare errcode,
4459         codesize
4460
4461         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
4462
4463         * ircd/s_user.c (register_user): comment out spurious reference to
4464         nextping
4465
4466         * ircd/s_serv.c (server_estab): comment out spurious reference to
4467         nextping
4468
4469         * ircd/s_conf.c (read_configuration_file): comment out spurious
4470         reference to nextping and nextconnect
4471
4472         * ircd/s_bsd.c: comment out some spurious references to formerly
4473         global (now non-existant) variables; correct a couple of typos
4474
4475         * ircd/s_auth.c: pre-declare some functions referenced in the
4476         callback; correct a typo
4477
4478         * ircd/res.c (start_resolver): pass errno value of ENFILE
4479
4480         * ircd/listener.c (accept_connection): you know your API is messed
4481         up when...variables that shouldn't have been global crop up in
4482         other files
4483
4484         * ircd/list.c (free_client): substitution of == for =
4485
4486         * ircd/ircd_signal.c: include assert.h for assertion checking;
4487         check ev_data() to find out what signal generated event
4488
4489         * ircd/ircd_events.c: some references to the variable "timer"
4490         should have been references to the variable "ptr"
4491
4492         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
4493         ev_timer(ev) is already a timer pointer; declare codesize as a
4494         size_t to correct signedness issue; use timer_next(), not
4495         time_next()
4496
4497         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
4498         select fd out of struct pollfd in assertion checking; declare
4499         errcode and codesize; use timer_next(), not time_next()
4500
4501         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
4502         use function timer_next(), not time_next()
4503
4504         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
4505         use function timer_next(), not time_next()
4506
4507         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
4508         compiled sources; do make depend
4509
4510         * include/list.h: pre-declare struct Connection
4511
4512         * include/ircd_events.h (gen_ref_inc): cast to the right structure
4513         name
4514
4515         * include/s_auth.h: duh; missing */
4516
4517 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
4518
4519         * ircd/send.c: update write events status after sending data or
4520         accumulating data to be sent
4521
4522         * ircd/m_list.c (m_list): update write events status after
4523         canceling a running /list
4524
4525         * ircd/channel.c (list_next_channels): update write events status
4526         after listing a few channels
4527
4528         * ircd/s_bsd.c: extensive changes to update to new events model;
4529         remove on_write_unblocked() and the two implementations of
4530         read_message(), which have been deprecated by this change
4531
4532         * ircd/s_auth.c: set the socket events we're interested in for
4533         clients; simplify some logic that does the connect_nonb followed
4534         by the socket_add
4535
4536         * ircd/list.c: define free_connection() to free a connection
4537         that's become freeable once the struct Socket has been
4538         deallocated; fix up free_client() to take this new behavior into
4539         account
4540
4541         * ircd/ircd.c: call init_client_timer()
4542
4543         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
4544         to register connect-in-progress with events system; declare
4545         init_client_timer() (HACK!) to preserve rate-limiting behavior
4546
4547         * include/list.h: declare new free_connection()
4548
4549         * include/client.h: add a struct Socket to struct Connection
4550
4551 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
4552
4553         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
4554         SIGTERM into event callbacks; perform the actions in the
4555         callbacks, since they're not called in the context of the signal;
4556         set up the signal callbacks in the event engine
4557
4558         * ircd/ircd_events.c (signal_callback): we're supposed to look for
4559         a specific signal; don't generate an event if there is no signal
4560         structure for it
4561
4562         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
4563         connect_timer and ping_timer; massage try_connections() and
4564         check_pings() into timer callbacks that re-add themselves at the
4565         right time; remove ircd.c's "event_loop()"; initialize the event
4566         system and the connect_timer and ping_timer
4567
4568         * ircd/uping.c: correct a couple more typos
4569
4570         * ircd/s_auth.c: rework to use new events system
4571
4572         * ircd/os_solaris.c (os_connect_nonb): update to new interface
4573
4574         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
4575
4576         * ircd/os_linux.c (os_connect_nonb): update to new interface
4577
4578         * ircd/os_generic.c (os_connect_nonb): update to new interface
4579
4580         * ircd/os_bsd.c (os_connect_nonb): update to new interface
4581
4582         * include/s_auth.h: remove deprecated members of struct
4583         AuthRequest, replacing them with struct Socket and struct Timer
4584         structures; add flags to indicate when these structures have been
4585         released by the event system; remove the deprecated
4586         timeout_auth_queries()
4587
4588         * include/ircd_osdep.h (os_connect_nonb): connect could complete
4589         immediately, so change the interface to handle that possibility
4590
4591         * ircd/uping.c (uping_server): noticed and corrected a typo
4592
4593         * ircd/listener.c: set up to use ircd_event's struct Socket by
4594         adding an socket_add() call to inetport(), replacing
4595         free_listener() with socket_del() in close_listener(), and
4596         reworking accept_connection to be called as the callback
4597
4598         * ircd/ircd.c: add a call to IPcheck_init()
4599
4600         * ircd/IPcheck.c: remove IPcheck_expire(); rework
4601         ip_registry_expire() to be called from a timer; write
4602         IPcheck_init() to set up the expiration timer (hard-coded for a
4603         60-second expiration time)
4604
4605         * include/listener.h: add a struct Socket to the struct Listener;
4606         remove accept_connection()
4607
4608         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
4609
4610 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
4611
4612         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
4613         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
4614
4615         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
4616         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
4617
4618         * ircd/engine_poll.c: include config.h
4619
4620         * ircd/engine_kqueue.c: include config.h
4621
4622         * ircd/engine_devpoll.c: include config.h
4623
4624         * ircd/Makefile.in: include engine sources in compilation and make
4625         depend steps
4626
4627         * configure.in: add checks for enabling the /dev/poll- and
4628         kqueue-based engines
4629
4630         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
4631
4632         * ircd/Makefile.in: work in the engine sources
4633
4634 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
4635
4636         * ircd/m_settime.c: include ircd_snprintf.h
4637
4638         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
4639         parens around a construct that had both || and &&
4640
4641         * ircd/chkconf.c: #include "config.h" to get some important
4642         definitions
4643
4644         * ircd/Makefile.in: revamp ircd makefile for new build system
4645
4646         * doc/Makefile.in: revamp doc makefile for new build system
4647
4648         * config/*: Removed old build system files
4649
4650         * stamp-h.in: a stamp file
4651
4652         * install-sh: install-sh for new build system
4653
4654         * configure.in: configure.in for new build system
4655
4656         * configure: configure script for new build system (built by
4657         autoconf)
4658
4659         * config.sub: config.sub for new build system
4660
4661         * config.h.in: config.h.in for new build system (built by
4662         autoheader)
4663
4664         * config.guess: config.guess for new build system
4665
4666         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
4667         1.4)
4668
4669         * acinclude.m4: aclocal.m4 macros for new build system
4670
4671         * acconfig.h: config.h skeleton for new build system
4672
4673         * Makefile.in: modify for new build system
4674
4675 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
4676
4677         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
4678
4679         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
4680
4681         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
4682
4683 2001-05-01  Perry Lorier       <Isomer@coders.net>
4684         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
4685         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
4686                 when you have far far too many sockets in use.
4687         * {include,ircd}/iauth.c: A start on iauth support.
4688
4689 2001-05-01  Perry Lorier       <Isomer@coders.net>
4690         * ircd/s_err.c: Suggested wording change.
4691         * ircd/s_user.c: Users aren't target limited against +k users.
4692         * ircd/chkconf.c: Made it compile again, who knows if it works, but
4693                 now I can at least make install
4694         * various: Cleanups on m_*.c files.
4695
4696
4697 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
4698
4699         * ircd/s_misc.c (exit_client): make netsplit server notice say the
4700         right thing
4701
4702         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
4703         change to make Khaled happy...
4704
4705         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
4706         (do_whois): duh...
4707
4708 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
4709
4710         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
4711         turned up no more bugs
4712
4713         * ircd/ircd.c: use /* */ comments instead of // comments--all the
4714         world's not gcc :(
4715
4716         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
4717         // comments--all the world's not gcc :(
4718
4719         * ircd/runmalloc.c: finally garbage-collect unused file
4720
4721         * include/runmalloc.h: finally garbage-collect unused file
4722
4723         * ircd/<multiple files>: addition of '#include "config.h"' before
4724         all other includes in most .c files
4725
4726         * include/<multiple files>: remove includes of config.h, which are
4727         now going into the raw .c files
4728
4729 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
4730
4731         * ircd/m_whois.c (do_whois): display proper server name if the
4732         user is looking up himself
4733
4734         * ircd/m_who.c (m_who): disable match by servername or display of
4735         server names by non-opers
4736
4737         * include/ircd_policy.h: add define for
4738         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
4739         of CFV 165
4740
4741 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
4742
4743         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
4744         when we do a /stats k
4745
4746         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
4747         users from turning on +s and +g
4748
4749         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
4750         net.split notice
4751
4752         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
4753         /map for users
4754
4755         * ircd/m_whois.c (do_whois): pull-up of server name masking for
4756         /whois
4757
4758         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
4759         functions, pull-up
4760
4761         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
4762
4763         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
4764
4765         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
4766
4767         * ircd/channel.c (channel_modes): pull-up of channel key display
4768         as *
4769
4770         * include/ircd_policy.h: pull-up of ircd_policy.h
4771
4772         * include/client.h: pull-up of Set/ClearServNotice()
4773
4774         * ircd/gline.c (do_gline): report client name in G-line message
4775         (pull-up)
4776
4777         * ircd/s_user.c (register_user): pull-up--show IP address in some
4778         server notices dealing only with users; report which connection
4779         class has filled up
4780
4781         * ircd/s_stats.c (report_deny_list): use conf->flags &
4782         DENY_FLAGS_IP insteaf of conf->ip_kill
4783
4784         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
4785         insteaf of conf->ip_kill
4786
4787         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
4788         K-line by real name
4789
4790         * include/s_conf.h: use a flags field in struct DenyConf; define
4791         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
4792         pull-up of K-line by real name
4793
4794         * ircd/m_trace.c: pull-up of IP show for user connections
4795
4796         * doc/example.conf: pull-up of the realname K-line documentation
4797
4798         * ircd/ircd.c: forward port of pid file advisory locking mechanism
4799
4800 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
4801
4802         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
4803         all servers, rather than to only servers that have +w/+g/whatever
4804         users on them; among other things, this removes that atrocity
4805         known as sentalong[] from this function
4806
4807         * ircd/m_admin.c: must include ircd.h to declare "me"; must
4808         include hash.h to declare FindUser()
4809
4810         * ircd/m_wallusers.c: implementation of WALLUSERS
4811
4812         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
4813
4814         * ircd/m_wallops.c: only send WALLOPS to opers
4815
4816         * ircd/parse.c: add WALLUSERS command to parser table
4817
4818         * include/handlers.h: declare wallusers handlers
4819
4820         * include/msg.h: add WALLUSERS command
4821
4822         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
4823         flag, send only to appropriate opers
4824
4825 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
4826
4827         * ircd/uping.c: refit to use the new events interface
4828
4829         * ircd/res.c: refit to use the new events interface
4830
4831         * ircd/ircd_events.c: create timer_chg(), which permits a
4832         (non-periodic) timer's expire time to be modified; change the
4833         logic in timer_run() so that timers that were re-added while the
4834         event was being processed will not be destroyed prematurely
4835
4836         * include/uping.h: include the events header, declare some extra
4837         fields in struct UPing, remove timeout value, and define some
4838         flags for marking which cleanup items have yet to be done
4839
4840         * include/ircd_events.h: add a prototype for timer_chg() to change
4841         the expire time of a running timer
4842
4843 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
4844         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
4845         
4846 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
4847
4848         * config/configure.in: Add check for OpenBSD
4849
4850         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
4851         differs from generic BSD, particularly in its handling of
4852         _XOPEN_SOURCE.
4853         
4854 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
4855
4856         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
4857         have been added by a U-lined server, rather than going through the
4858         activate/deactivate logic; propagate G-line removals by U-lined
4859         servers as well
4860
4861         * ircd/gline.c: rename propagate_gline() to gline_propagate();
4862         make gline_propagate() return an int 0 (convenience return); only
4863         update lastmod in gline_activate() and gline_deactivate() if the
4864         current lastmod is non-zero, since 0 lastmod is our flag of a
4865         U-lined server having added a G-line
4866
4867         * include/gline.h (gline_propagate): exporting the G-line
4868         propagation function
4869
4870         * ircd/m_list.c (m_list): duh; permit explicit channel name
4871         specification only when /list gets two arguments ("Kev
4872         #wasteland") rather than when /list gets more than two
4873         arguments--nice braino
4874
4875 2001-01-29  Thomas Helvey <twhelvey1@home.com>
4876
4877         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
4878         unregistered clients to spam opers with protocol violation
4879         messages. Note: the bugfix may have eliminated some useful
4880         protocol violation messages.
4881         Please send protocol violation messages explicitly from the
4882         functions they are discovered in, you have much better context
4883         for the error there and it helps to document the behavior of the
4884         server. This was also a design bug in that it violated the
4885         "A function should do one thing" heuristic. Patching this one
4886         would have resulted in a continuous spawning of other bugs over
4887         the next 3 years, so I killed it. Check around for stuff this
4888         broke and readd the calls to protocol_violation in the functions
4889         that need to send the message.
4890
4891 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
4892
4893         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
4894         already existed, then the logic would (attempt to) skip it, but
4895         would not free the ban string; now the ban string is free'd and
4896         the ban count is decremented, releasing the ban for use
4897
4898         * ircd/s_user.c: make send_umode_out() take a prop argument
4899         instead of testing for the PRIV_PROPAGATE privilege itself; fix
4900         set_umode() to use this new argument, calculating it before
4901         calculating the new privileges for a -o'd user
4902
4903         * ircd/m_oper.c (m_oper): pass the new prop argument to
4904         send_umode_out()
4905
4906         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
4907         that we're not actually going to add because they already exist;
4908         test that particular bit before adding to the linked list
4909
4910         * include/s_user.h: add a prop argument to send_umode_out() to
4911         indicate whether or not to propagate the user mode
4912
4913 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
4914
4915         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
4916         it would have written; upper-bound the number to prevent overflows
4917         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
4918         into account the fact that ircd_vsnprintf() already takes the
4919         terminal \0 into account
4920
4921 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
4922
4923         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
4924         down an apparent buffer overflow; remove msgq_map(), since it's no
4925         longer used anywhere; slight tweaks to prevent off-by-one errors,
4926         but these can't explain the problems we've seen
4927
4928         * include/msgq.h: remove msgq_map(), since it's no longer used
4929         anywhere
4930
4931 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
4932
4933         * ircd/s_user.c (set_nick_name): call client_set_privs() after
4934         parsing user modes
4935
4936 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
4937
4938         * ircd/s_bsd.c (read_message): fix a typo in the select version of
4939         read_message()
4940
4941         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
4942         its argument to be an lvalue, which means we can't use
4943         whowas_clean()'s handy-dandy "return ww" feature
4944
4945         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
4946
4947 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
4948
4949         * ircd/ircd_events.c (timer_run): it's possible that the timer got
4950         deleted during the callback processing, so don't go to the bother
4951         of requeuing it if the destroy flag is set
4952
4953         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
4954         out of config.h if this is a *BSD; include errno.h (oops);
4955         decrement error count after an hour using a timer; use FD_SETSIZE
4956         constant instead of IRCD_FD_SETSIZE constant; fill in event
4957         processing code
4958
4959         * ircd/engine_poll.c: include errno.h (oops); decrement error
4960         count after an hour using a timer; fill in event processing code
4961
4962         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
4963         count after an hour using a timer; assert events filter is either
4964         EVFILT_READ or EVFILT_WRITE; fill in event processing code
4965
4966         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
4967         count after an hour using a timer; fill in event processing code
4968
4969 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
4970
4971         * ircd/client.c: fixed feattab; basically, when I changed features
4972         to use small integers specifying bit positions, instead of the
4973         bits themselves, I forgot to update feattab to not | these
4974         privileges together; also fixed a bug in the antiprivs masking
4975         loop in client_set_privs()--last index wouldn't get parsed
4976
4977 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
4978
4979         * ircd/ircd_events.c: call event_generate() with new data
4980         argument; make it set that field in struct Event; make
4981         socket_add() return the value of the eng_add callback
4982
4983         * ircd/engine_select.c: make engine_add() return a
4984         successful/unsuccessful status; add bounds-checking outside of an
4985         assert; use accessor macros; use log_write(), not the deprecated
4986         ircd_log(); add an assert to engine_loop() to double-check for
4987         data structure corruption
4988
4989         * ircd/engine_poll.c: make engine_add() return a
4990         successful/unsuccessful status; add bounds-checking outside of an
4991         assert; use accessor macros; use log_write(), not the deprecated
4992         ircd_log(); add an assert to engine_loop() to double-check for
4993         data structure corruption
4994
4995         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
4996
4997         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
4998
4999         * include/ircd_events.h: define some accessor macros; add ev_data
5000         to struct Event for certain important data--errno values, for
5001         instance; make EngineAdd callback tell us if it was successful or
5002         not; add extra argument to event_generate(); make socket_add()
5003         return the status from EngineAdd
5004
5005 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
5006
5007         * ircd/ircd_events.c: pass initializer information about how many
5008         total _filedescriptors_ may be opened at once
5009
5010         * ircd/ircd.c: use exported "running" instead of unexported
5011         thisServer.running
5012
5013         * ircd/engine_select.c: implementation of an event engine based on
5014         select()
5015
5016         * ircd/engine_poll.c: implementation of an event engine based on
5017         poll()
5018
5019         * include/ircd_events.h: pass the engine initializer an integer
5020         specifing how many _filedescriptors_ may be opened at once
5021
5022         * include/ircd.h: running has to be exported for the engine_*
5023         event loops
5024
5025 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
5026
5027         * ircd/ircd_events.c: include some needed headers; add some
5028         comments; make evEngines[] const; bundle sig_sock and sig_fd into
5029         a struct named sigInfo; rework struct evInfo to have a queue of
5030         _generators_, and only when threaded; added a gen_init() function
5031         to centralize generator initialization; fix various compile-time
5032         errors; rework event_add() for new queueing scheme and checked for
5033         compile-time errors; add casts where needed; spell evEngines[]
5034         correctly; make engine_name() return const char*
5035
5036         * include/ircd_events.h: type EventCallBack depends on struct
5037         Event, so pre-declare it; put _event_ queue into generators, and
5038         only when threaded; give engine data a union to store both ints
5039         and pointers; make engine name a const; fix gen_ref_dec() macro;
5040         make engine_name() return a const char*
5041
5042         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
5043         down with the non-static functions; modify event_execute() to use
5044         the new gen_ref_dec() to simplify code; make sure event_generate()
5045         does not generate new events for generators marked for destruction
5046
5047         * include/ircd_events.h: the engines, at least, may need to modify
5048         reference counts to keep generators from going away while
5049         something still points at them, so add reference counter
5050         manipulators and export gen_dequeue() for them
5051
5052         * ircd/ircd_events.c: set up the list of engines to try; set up
5053         the signal struct Socket; rename netInfo to evInfo; move static
5054         functions near the beginning of the file; do away with
5055         signal_signal() (since we no longer keep a signal count ourselves)
5056         and call event_generate() directly from signal_callback--also
5057         renamed some functions; allow signal_callback() to read up to
5058         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
5059         initialize the entire event system; add event_loop() to call the
5060         engine's event loop; initialize new struct GenHeader member,
5061         gh_engdata; remove timer_next(); add socket_add() function to add
5062         a socket; add socket_del() to mark a socket for deletion; add
5063         socket_state() to transition a socket between states; add
5064         socket_events() to set what events we're interested in on the
5065         socket; add engine_name() to retrieve event engine's name
5066
5067         * include/ircd_events.h: add engine data field to struct
5068         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
5069         note about states vs s_events; remove signal count; fold union
5070         Generator back into struct Event; remove count members from struct
5071         Generators; redefine engine callbacks to not take a struct
5072         Engine*; add explanatory comments to callback definitions; add
5073         some engine callbacks to handle operations; remove struct Engine
5074         flag member--can detect single flag from eng_signal member; add
5075         event_init(), event_loop(), engine_name(), and the socket_*()
5076         functions; make timer_next() a macro to avoid a function call
5077
5078 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
5079
5080         * include/ircd_events.h: rename to ircd_events.h, since it handles
5081         events, not just networking stuff; add signal support; more
5082         structural rearrangement
5083
5084         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
5085         events, not just networking stuff; add signal support; more
5086         structural rearrangement
5087
5088 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
5089
5090         * ircd/ircd_network.c: implement timer API; add reference counts
5091         appropriately
5092
5093         * include/ircd_network.h: firm up some pieces of the interface;
5094         split out members everything has into a separate structure; add
5095         reference counts; add timer API
5096
5097 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
5098
5099         * ircd/ircd_network.c: static data and event manipulation
5100         functions for new event processing system
5101
5102         * include/ircd_network.h: data structures for new event processing
5103         system
5104
5105 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
5106
5107         * ircd/whowas.c: Completely re-did the old allocation scheme by
5108         turning it into a linked list, permitting the
5109         NICKNAMEHISTORYLENGTH feature to be changed on the fly
5110
5111         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
5112         feature instead of old #define
5113
5114         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
5115         integer feature with a notify callback (whowas_realloc)
5116
5117         * ircd/client.c (client_set_privs): second memset was supposed to
5118         be over antiprivs, not privs; thanks, Chris Behrens
5119         <cbehrens@xo.com> for pointing that out...
5120
5121         * include/whowas.h: new elements for an extra linked list in
5122         struct Whowas; a notify function for feature value changes
5123
5124         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
5125
5126         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
5127
5128 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
5129
5130         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
5131         compile-time option--now in features subsystem
5132
5133         * ircd/motd.c (motd_init): rework motd_init() to be called as the
5134         notify function for MPATH and RPATH features (should probably
5135         split it up a bit, though...)
5136
5137         * ircd/m_privs.c (mo_privs): if called with no parameters, return
5138         privs of the caller, rather than an error
5139
5140         * ircd/m_list.c: pull usage message into its own function; pull
5141         list parameter processing into its own function that does not
5142         modify the contents of the parameter; add list_set_default() to
5143         set the default list parameter (uses the notify hook); rework
5144         m_list() to make use of these functions; removed dead code
5145
5146         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
5147         we have no notify handler
5148
5149         * ircd/ircd_features.c: add notify callback for notification of
5150         value changes; give mark callback an int return value to indicate
5151         whether or not to call the notify callback; fix up feature macros
5152         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
5153         string handling in feature_set() to deal with def_str being a null
5154         pointer; wrote feature_init() to set up all defaults appropriately
5155
5156         * ircd/ircd.c (main): call feature_init() instead of
5157         feature_mark(), to avoid calling notify functions while setting up
5158         defaults
5159
5160         * ircd/client.c: updated to deal with new privileges structure
5161
5162         * ircd/class.c: updated so init_class() can be called should one
5163         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
5164         DEFAULTMAXSENDQLENGTH be changed
5165
5166         * include/ircd_log.h: log_feature_mark() updated to fit with new
5167         API changes
5168
5169         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
5170         feature_init() function (found necessary since adding the notify
5171         stuff and notifying motd.c during start-up...before we defined
5172         RPATH!)
5173
5174         * include/client.h: move privs around to enable addition of more
5175         bits if necessary; based on the FD_* macros
5176
5177         * include/channel.h: declare list_set_default (actually located in
5178         m_list.c *blanche*)
5179
5180         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
5181         AVBANLEN*MAXSILES) from features subsystem
5182
5183         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
5184         anything anymore
5185
5186         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
5187         the features subsystem
5188
5189         * ircd/s_auth.c (start_auth): NODNS migrated to the features
5190         subsystem
5191
5192         * ircd/random.c: created random_seed_set() function to set seed
5193         value, along with some stuff to make ircrandom() a little more
5194         random--state preserving, xor of time instead of direct usage,
5195         etc.; it's still a pseudo-random number generator, though, and
5196         hopefully I haven't broken the randomness
5197
5198         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
5199
5200         * ircd/m_join.c: use features interface to retrieve
5201         MAXCHANNELSPERUSER
5202
5203         * ircd/ircd_features.c: add NODISP flag for super-secret features;
5204         add a whole bunch of new features migrated over from make config
5205
5206         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
5207         CONNECTTIMEOUT, and TIMESEC
5208
5209         * ircd/client.c (client_get_ping): use features interface to
5210         retrieve PINGFREQUENCY
5211
5212         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
5213         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
5214
5215         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
5216         features subsystem, we have to add something explicit
5217
5218         * ircd/channel.c: use features interface to retrieve
5219         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
5220         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
5221         and AVBANLEN
5222
5223         * ircd/Makefile.in: run make depend
5224
5225         * include/supported.h (FEATURESVALUES): update to reference
5226         feature settings
5227
5228         * include/random.h: add prototype for random_seed_set
5229
5230         * include/ircd_features.h: add several more features
5231
5232         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
5233         subsystem
5234
5235         * config/config-sh.in: feature-ized some more stuff
5236
5237         * include/motd.h: some new elements in motd.h for motd.c changes
5238
5239         * ircd/motd.c: motd_cache() now searches a list of already cached
5240         MOTD files; saves us from having duplicate caches in memory if
5241         there are two identical T-lines for two different sites...
5242
5243 2001-01-02  Perry Lorier <isomer@coders.net>
5244         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
5245         Amarande.
5246
5247 2001-01-02  Perry Lorier <isomer@coders.net>
5248         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
5249         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
5250                 to guppy for noticing, and hektik for providing the fix.
5251         * misc others: Minor cleanups, added more protocol_violations, ripped
5252                 out more P09 stuffs, bit more protocol neg stuff.
5253
5254 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
5255
5256         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
5257         space (*sigh* stupid clients...)
5258
5259         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
5260         ircd_features.[ch]
5261
5262         * ircd/s_err.c: get rid of GODMODE conditionals
5263
5264         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
5265         calls into the features subsystem for various serveropts
5266         characters
5267
5268         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
5269
5270         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
5271         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
5272         NOFLOWCONTROL conditional
5273
5274         * ircd/s_auth.c: use features subsystem to determine value of
5275         KILL_IPMISMATCH
5276
5277         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
5278         features subsystem to determine the setting of IDLE_FROM_MSG
5279
5280         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
5281
5282         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
5283         use features subsystem to get motd file names
5284
5285         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
5286         subsystem
5287
5288         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
5289         us no good; use features subsystem to figure out if we need to do
5290         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
5291         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
5292         features subsystem
5293
5294         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
5295
5296         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
5297         subsystem
5298
5299         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
5300
5301         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
5302         from getting marked if they were already set to something...
5303
5304         * ircd/ircd_features.c: add a flag to indicates read-only access;
5305         add several new features that used to be compile-time selected
5306
5307         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
5308         access to motd files (what the heck?); make sure to initialize the
5309         feature subsystem before trying to write the config file
5310
5311         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
5312         use feature_bool() to figure out if we're using the FERGUSON
5313         flusher
5314
5315         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
5316         remove the clause that creates empty files of that name; also ran
5317         make depend
5318
5319         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
5320         there is no easy way to bounds-check it at present
5321
5322         * include/querycmds.h: make sure ircd_features.h is included; use
5323         feature_str(FEAT_DOMAINNAME) in calls to match()
5324
5325         * include/ircd_features.h: many new features that used to be
5326         compile-time selected
5327
5328         * config/config-sh.in: add * to DOMAINNAME; try also using first
5329         argument to search in /etc/resolv.conf; removed many compile-time
5330         options that now can be configured through the features system
5331
5332 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
5333
5334         * doc/api/log.txt: how to use the logging API
5335
5336         * doc/api/features.txt: how to use the features API
5337
5338         * doc/api/api.txt: how to write API documentation
5339
5340         * include/ircd_features.h: rearranged a couple of features for
5341         neatness purposes
5342
5343         * ircd/ircd_features.c: cleaned up the macros some; rearranged
5344         some code to all go into the switch; rearranged a couple of
5345         features for neatness purposes
5346
5347 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
5348         * ircd/os_bsd.c: Added os_set_tos for BSD users.
5349
5350 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
5351
5352         * ircd/ircd_features.c: Isomer almost got it right; you need to
5353         use F_I(), since it's an integer value, not a boolean value.  The
5354         asserts in feature_int would catch you out...  Also made the F_*
5355         macros take flags
5356
5357         * ircd/s_err.c: define RPL_PRIVS reply
5358
5359         * ircd/parse.c: put new PRIVS command into command table
5360
5361         * ircd/m_privs.c (mo_privs): message handler to report operator
5362         privileges
5363
5364         * ircd/ircd_features.c: declare new features OPER_SET and
5365         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
5366         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
5367
5368         * ircd/client.c: simplify client_set_privs() with a table that
5369         defines what features to test for; add new client_report_privs()
5370
5371         * ircd/Makefile.in: compile new m_privs.c; run make depend
5372
5373         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
5374         an operator's privileges
5375
5376         * include/msg.h: define new command: PRIVS
5377
5378         * include/ircd_features.h: create new features OPER_SET and
5379         LOCOP_SET for controlling access to /set
5380
5381         * include/handlers.h (mo_privs): declare message handler for
5382         reporting oper privileges
5383
5384         * include/client.h (client_report_privs): declare function to
5385         report what privileges an oper has
5386
5387         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
5388         report that a user is an oper if the oper doing the /whois had
5389         PRIV_SEE_OPERS
5390
5391 2000-12-17  Isomer <Isomer@coders.net>
5392         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
5393
5394 2000-12-17  Isomer <Isomer@coders.net>
5395         * ircd/os_linux.c: add TOS stuffs
5396
5397         * ircd/listener.c: add TOS stuffs
5398
5399 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
5400
5401         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
5402         to indicate a user is an oper
5403
5404         * ircd/s_user.c: clear privileges setting when deopping; don't
5405         propagate +o unless user has PRIV_PROPAGATE privilege
5406
5407         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
5408         function and replaced how the server option string is generated
5409
5410         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
5411
5412         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
5413         not to indicate the user is an operator
5414
5415         * ircd/m_who.c: use HasPriv to determine whether or not a user
5416         should be displayed in the list of opers
5417
5418         * ircd/m_version.c: call debug_serveropts() to get server option
5419         string
5420
5421         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
5422         whether or not to show oper status
5423
5424         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
5425         whether or not to show oper status
5426
5427         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
5428         checks with HasPriv check; remove dead code
5429
5430         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
5431         checks with HasPriv check
5432
5433         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
5434         use feature_bool to check if disabled
5435
5436         * ircd/m_oper.c (m_oper): set oper priviliges
5437
5438         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
5439         check
5440
5441         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
5442         can kill
5443
5444         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
5445         check
5446
5447         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
5448         use feature_bool to check if disabled
5449
5450         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
5451         #ifdef conditional with a HasPriv check
5452
5453         * ircd/m_gline.c (mo_gline): rework permissions checking
5454         structure; use feature_bool to check if any part is disabled
5455
5456         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
5457         check; remove dead code
5458
5459         * ircd/m_clearmode.c: use feature_bool() to detect if we're
5460         disabled; use HasPriv to figure out what we're permitted to do;
5461         only allow clearmode on moded channels
5462
5463         * ircd/ircd_features.c: define various features; use HasPriv to
5464         verify permissions to set/reset
5465
5466         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
5467         conditionals
5468
5469         * ircd/client.c (client_set_privs): function to set an oper's
5470         privileges
5471
5472         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
5473
5474         * include/whocmds.h: deconditionalize several macros and
5475         substitute appropriate calls to HasPriv()
5476
5477         * include/s_debug.h: get rid of global serveropts[]; define new
5478         function debug_serveropts() to build that string on the fly
5479
5480         * include/ircd_features.h: define some features
5481
5482         * include/client.h: add privs member to struct Connection; define
5483         various priviledges
5484
5485         * include/channel.h: no longer using IsOperOnLocalChannel; remove
5486         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
5487
5488         * doc/Configure.help: remove help information for deprecated
5489         options
5490
5491         * config/config-sh.in: remove certain deprecated options having to
5492         do with what opers can and cannot do--first stage in moving
5493         compile-time constants into the .conf
5494
5495 2000-12-16  Isomer <Isomer@coders.net>
5496         * ircd/parse.c: detect if the prefix is missing and try and recover
5497         instead of coring.
5498
5499 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
5500
5501         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
5502         code that would sometimes result in the log file not being
5503         reopened--which meant that a user could connect and get the
5504         logging output--oops
5505
5506         * ircd/Makefile.in: run make depend...
5507
5508         * ircd/s_stats.c: get rid of report_feature_list()
5509
5510         * ircd/s_err.c: add the 'bad value' error message, shift error
5511         messages over somewhat
5512
5513         * ircd/s_debug.c (debug_init): call log_debug_init with the
5514         use_tty flag
5515
5516         * ircd/s_conf.c (read_configuration_file): unmark features before
5517         reading the config file, then reset unmarked features after
5518         reading the config file
5519
5520         * ircd/m_stats.c: use feature_report() instead of
5521         report_feature_list()
5522
5523         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
5524         special 'mark' flags and use them; add the stuff needed by the
5525         features API
5526
5527         * ircd/ircd_features.c: rework the features API and add gobs of
5528         comments to try to explain what some of these complex functions
5529         are actually doing
5530
5531         * include/s_stats.h: get rid of report_feature_list(); use
5532         feature_report() instead
5533
5534         * include/numeric.h: added a new error message and shifted old
5535         values over some--this is, after all, an alpha
5536
5537         * include/ircd_log.h: log_debug_init now takes an integer to tell
5538         it if it should be using the tty; added a couple of functions
5539         required by the features API
5540
5541         * include/ircd_features.h: add an enum and some more functions to
5542         flesh out the feature API--it should now be possible to put all
5543         those compile-time constants in the config file!
5544
5545         * ircd/send.c: got the direction of the assert incorrect...
5546
5547         * ircd/send.c: implement the efficiency of flush_connections by
5548         creating a linked list of struct Connection's with queued data;
5549         also get rid of flush_sendq_except and make sure to yank
5550         connections out of the list when their sendQs become empty (notice
5551         the assertion in flush_connections!)
5552
5553         * ircd/s_bsd.c (close_connection): must yank the Connection out of
5554         the sendq list
5555
5556         * ircd/list.c (dealloc_connection): must yank the Connection out
5557         of the sendq list
5558
5559         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
5560         deprecated flush_sendq_except
5561
5562         * ircd/client.c: define a couple new helper functions for sendq
5563         threading--this will make the flush_connections function in send.c
5564         considerably more efficient by creating a linked list of
5565         Connections that have queued data to send
5566
5567         * include/send.h: remove flush_sendq_except, as it's not used
5568         anymore
5569
5570         * include/client.h: declare a couple new helper functions for the
5571         sendq threading system
5572
5573 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
5574
5575         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
5576         parse all arguments
5577
5578         * ircd/s_debug.c (count_memory): modify to report for clients and
5579         connections, not local clients and remote clients
5580
5581         * ircd/list.c: fiddle with the client-fiddling functions to take
5582         into account the divorce of struct Connection from struct Client
5583
5584         * ircd/ircd.c: define a struct Connection for me, initialize it,
5585         and link it into the right place (ewww, globals!)
5586
5587         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
5588         struct Client into struct Client and struct Connection; redefine
5589         local-portion accessor macros to go through struct Client to the
5590         struct Connection; define struct Connection accessor macros
5591
5592 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
5593
5594         * ircd/whowas.c: missed a couple of accesses to a struct Client
5595
5596         * ircd/uping.c: missed a couple of accesses to a struct Client
5597
5598         * ircd/send.c: missed a couple of accesses to a struct Client
5599
5600         * ircd/s_user.c: missed a couple of accesses to a struct Client
5601
5602         * ircd/s_misc.c: missed a couple of accesses to a struct Client
5603
5604         * ircd/s_conf.c: missed a couple of accesses to a struct Client
5605
5606         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
5607
5608         * ircd/s_auth.c: missed a couple of accesses to a struct Client
5609
5610         * ircd/res.c: missed a couple of accesses to a struct Client
5611
5612         * ircd/parse.c: missed a couple of accesses to a struct Client
5613
5614         * ircd/m_whois.c: use new accessor macros for struct Client
5615
5616         * ircd/m_who.c: use new accessor macros for struct Client
5617
5618         * ircd/m_wallchops.c: use new accessor macros for struct Client
5619
5620         * ircd/m_version.c: use new accessor macros for struct Client
5621
5622         * ircd/m_userip.c: use new accessor macros for struct Client
5623
5624         * ircd/m_userhost.c: use new accessor macros for struct Client
5625
5626         * ircd/m_user.c: use new accessor macros for struct Client
5627
5628         * ircd/m_uping.c: use new accessor macros for struct Client
5629
5630         * ircd/m_trace.c: use new accessor macros for struct Client
5631
5632         * ircd/m_topic.c: use new accessor macros for struct Client
5633
5634         * ircd/m_time.c: use new accessor macros for struct Client
5635
5636         * ircd/m_stats.c: use new accessor macros for struct Client
5637
5638         * ircd/m_squit.c: use new accessor macros for struct Client
5639
5640         * ircd/m_silence.c: use new accessor macros for struct Client
5641
5642         * ircd/m_server.c: use new accessor macros for struct Client;
5643         remove dead code
5644
5645         * ircd/m_rpong.c: use new accessor macros for struct Client
5646
5647         * ircd/m_rping.c: use new accessor macros for struct Client
5648
5649         * ircd/m_quit.c: use new accessor macros for struct Client
5650
5651         * ircd/m_privmsg.c: use new accessor macros for struct Client
5652
5653         * ircd/m_pong.c: use new accessor macros for struct Client; remove
5654         dead code
5655
5656         * ircd/m_ping.c: use new accessor macros for struct Client
5657
5658         * ircd/m_pass.c: use new accessor macros for struct Client
5659
5660         * ircd/m_part.c: use new accessor macros for struct Client
5661
5662         * ircd/m_oper.c: use new accessor macros for struct Client
5663
5664         * ircd/m_notice.c: use new accessor macros for struct Client
5665
5666         * ircd/m_nick.c: use new accessor macros for struct Client
5667
5668         * ircd/m_names.c: use new accessor macros for struct Client
5669
5670         * ircd/m_mode.c: use new accessor macros for struct Client
5671
5672         * ircd/m_map.c: use new accessor macros for struct Client
5673
5674         * ircd/m_list.c: use new accessor macros for struct Client
5675
5676         * ircd/m_links.c: use new accessor macros for struct Client;
5677         remove some dead code
5678
5679         * ircd/m_kill.c: use new accessor macros for struct Client; remove
5680         some dead code
5681
5682         * ircd/m_kick.c: use new accessor macros for struct Client
5683
5684         * ircd/m_join.c: use new accessor macros for struct Client; remove
5685         some dead code
5686
5687         * ircd/m_ison.c: use new accessor macros for struct Client
5688
5689         * ircd/m_invite.c: use new accessor macros for struct Client
5690
5691         * ircd/m_info.c: use new accessor macros for struct Client
5692
5693         * ircd/m_gline.c: use new accessor macros for struct Client
5694
5695         * ircd/m_error.c: use new accessor macros for struct Client
5696
5697         * ircd/m_create.c: use new accessor macros for struct Client
5698
5699         * ircd/m_connect.c: use new accessor macros for struct Client;
5700         removed some dead code
5701
5702         * ircd/m_burst.c: use new accessor macros for struct Client
5703
5704         * ircd/m_away.c: use new accessor macros for struct Client
5705
5706         * ircd/m_admin.c: use new accessor macros for struct Client
5707
5708         * ircd/hash.c: missed a couple of accesses to a struct Client
5709
5710         * ircd/gline.c: missed a couple of accesses to a struct Client
5711
5712         * ircd/crule.c: missed a couple of accesses to a struct Client
5713
5714         * ircd/class.c: missed an access to a struct Client
5715
5716         * ircd/channel.c: missed a couple of accesses to a struct Client
5717
5718         * ircd/IPcheck.c: missed an access to a struct Client
5719
5720         * include/querycmds.h: fix a couple of stats macros to use
5721         structure accessor macros
5722
5723         * include/client.h: change structure member names to highlight any
5724         places in the code I've missed
5725
5726 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
5727
5728         * ircd/whowas.c: use new struct Client accessor macros
5729
5730         * ircd/whocmds.c: use new struct Client accessor macros
5731
5732         * ircd/send.c: use new struct Client accessor macros
5733
5734         * ircd/s_user.c: use new struct Client accessor macros; removed
5735         some dead code
5736
5737         * ircd/s_serv.c: use new struct Client accessor macros; removed
5738         some dead code
5739
5740         * ircd/s_numeric.c: use new struct Client accessor macros
5741
5742         * ircd/s_misc.c: use new struct Client accessor macros
5743
5744         * ircd/s_debug.c: use new struct Client accessor macros
5745
5746         * ircd/s_conf.c: use new struct Client accessor macros
5747
5748         * ircd/s_bsd.c: use new struct Client accessor macros
5749
5750         * ircd/s_auth.c: use new struct Client accessor macros
5751
5752         * ircd/parse.c: use new struct Client accessor macros
5753
5754         * ircd/packet.c: use new struct Client accessor macros
5755
5756         * ircd/numnicks.c: use new struct Client accessor macros
5757
5758         * ircd/motd.c: use new struct Client accessor macros
5759
5760         * ircd/listener.c: use new struct Client accessor macros
5761
5762         * ircd/list.c: use new struct Client accessor macros
5763
5764         * ircd/jupe.c: use new struct Client accessor macros
5765
5766         * ircd/ircd_snprintf.c: use new struct Client accessor macros
5767
5768         * ircd/ircd_reply.c: use new struct Client accessor macros
5769
5770         * ircd/ircd_relay.c: use new struct Client accessor macros
5771
5772         * ircd/ircd.c: use new struct Client accessor macros
5773
5774         * ircd/gline.c: catch some instances of me.<stuff> I missed
5775         previously
5776
5777         * ircd/client.c: use cli_ instead of con_
5778
5779         * ircd/class.c: use cli_ instead of con_
5780
5781         * ircd/channel.c: use cli_ instead of con_
5782
5783         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
5784         of me.<stuff> I missed previously
5785
5786         * include/client.h: use cli_ instead of con_...seemed like a good
5787         idea at the time *shrug*
5788
5789 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
5790
5791         * ircd/hash.c: use struct Client accessor macros
5792
5793         * ircd/gline.c: use struct Client accessor macros
5794
5795         * ircd/crule.c: use struct Client accessor macros
5796
5797         * ircd/client.c: use struct Client accessor macros; remove some
5798         dead code
5799
5800         * ircd/class.c: use struct Client accessor macros
5801
5802         * ircd/channel.c: use struct Client accessor macros; remove some
5803         dead code
5804
5805         * ircd/IPcheck.c: use struct Client accessor macros
5806
5807         * include/numnicks.h: use struct Client accessor macros
5808
5809         * include/client.h: first step to divorcing struct Client and
5810         struct Connection--define accessor macros and use them
5811
5812         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
5813         uplink would remove them.  This is because the removal protocol
5814         message wasn't being sent to the uplinks.  This is fixed by fixing
5815         propagate_gline() to send the proper number of arguments depending
5816         on whether or not we're adding or deleting the Uworld gline, and
5817         by having gline_deactivate() make sure to turn off the active bit
5818         and call propagate_gline() if it's a Uworld gline
5819
5820 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
5821
5822         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
5823
5824         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
5825         anywhere intelligent...
5826
5827 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
5828
5829         * ircd/send.c (send_queued): call deliver_it with appropriate
5830         arguments
5831
5832         * ircd/s_serv.c: reorder a couple of headers--cosmetic
5833
5834         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
5835         MsgQ
5836
5837         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
5838         with appropriate iovec
5839
5840         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
5841         with appropriate iovec
5842
5843         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
5844         with appropriate iovec
5845
5846         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
5847         appropriate iovec
5848
5849         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
5850         exactly how much we're trying to write out to the fd
5851
5852         * include/s_bsd.h: make deliver_it take a struct MsgQ
5853
5854         * include/msgq.h: add a len_p argument to msgq_mapiov to help
5855         detect short writes that indicate possible socket blocking
5856
5857         * include/ircd_osdep.h: declare os_sendv_nonb()
5858
5859         * ircd/channel.c (modebuf_mode): don't add empty modes...
5860
5861 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
5862
5863         * include/send.h: add prio argument to send_buffer to select
5864         between normal and priority queues
5865
5866         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
5867         call
5868
5869         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
5870
5871         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
5872         call
5873
5874         * ircd/channel.c (send_channel_modes): add prio argument to
5875         send_buffer call
5876
5877         * ircd/send.c (send_buffer): add a prio argument to select the
5878         priority queue; update send.c functions to use it
5879
5880         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
5881         msgq_add; add a prio argument to msgq_add to select the priority
5882         queue
5883
5884         * include/msgq.h: remove msgq_prio; add a prio argument to
5885         msgq_add
5886
5887         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
5888         using msgq functions instead of dbuf functions; remove old, dead
5889         sendto_* functions; redo send_buffer to take a struct MsgBuf;
5890         rework sendcmdto_* functions to make use of the new struct MsgBuf
5891
5892         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
5893         make appropriate use of struct MsgBuf
5894
5895         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
5896         system and report it
5897
5898         * ircd/s_conf.c (read_configuration_file): use
5899         sendto_opmask_butone instead of the now dead sendto_op_mask
5900
5901         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
5902         calls on sendQ
5903
5904         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
5905
5906         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
5907         msgq_clean
5908
5909         * ircd/m_version.c: fix spelling in comments marking dead code
5910
5911         * ircd/m_userip.c (userip_formatter): restructure to make use of
5912         struct MsgBuf
5913
5914         * ircd/m_userhost.c (userhost_formatter): restructure to make use
5915         of struct MsgBuf
5916
5917         * ircd/m_stats.c: use MsgQLength on a sendQ
5918
5919         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
5920         sendQ; mark a piece of dead code
5921
5922         * ircd/m_names.c: use send_reply instead of sendto_one
5923
5924         * ircd/m_mode.c: use new mode; remove old dead code
5925
5926         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
5927
5928         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
5929         dead code
5930
5931         * ircd/listener.c (accept_connection): use sendto_opmask_butone
5932         instead of sendto_op_mask
5933
5934         * ircd/list.c (free_client): use MsgQClear to clear sendQ
5935
5936         * ircd/ircd_reply.c: remove send_error_to_client; restructure
5937         send_reply to make use of struct MsgBuf
5938
5939         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
5940         since its no longer used (at least currently)
5941
5942         * ircd/channel.c: restructure send_channel_modes to make use of
5943         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
5944         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
5945
5946         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
5947
5948         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
5949
5950         * include/send.h: send_buffer now takes a struct MsgBuf * instead
5951         of a char *; flush_sendq_except now takes no arguments, as sendq
5952         flushing currently only happens in dbuf.h and sendQ is a struct
5953         MsgQ; remove prototypes for a lot of old sendto_* functions that
5954         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
5955         no longer needed, and the latter is identical to BUFSIZE in
5956         ircd_defs.h
5957
5958         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
5959         instead of a char *; also make it return void, instead of char *
5960
5961         * include/msgq.h: add msgq_append and msgq_bufleft functions
5962
5963         * include/client.h: use a struct MsgQ instead of a struct DBuf for
5964         sendq
5965
5966         * doc/Configure.help: Remove help for compile-time options that
5967         have gone away
5968
5969         * config/config-sh.in: remove CONFIG_NEWMODE
5970
5971         * ircd/m_server.c (mr_server): don't send server IPs in any server
5972         notices
5973
5974         * ircd/msgq.c (msgq_vmake): add \r\n to messages
5975
5976 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
5977
5978         * include/msgq.h: declare the MsgQ API
5979
5980         * ircd/msgq.c: implementation of new MsgQ system
5981
5982 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
5983
5984         * ircd/ircd_features.c: #include was supposed to be for
5985           ircd_features.h, not features.h--missed when I had to do a
5986           rename because of namespace collision
5987
5988 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
5989         * ircd/m_topic.c: Added missing braces that caused all remote
5990           topics to be ignored.
5991
5992 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
5993
5994         * ircd/m_create.c: I'm tired of the exit_client warning :)
5995         (ms_create): discovered that exit_client() was being called with
5996         too few arguments
5997
5998         * ircd/s_misc.c (exit_client): remove all dependance on
5999         FNAME_USERLOG, since that's now gone; log only to LS_USER
6000
6001         * ircd/s_debug.c: USE_SYSLOG no longer means anything
6002
6003         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
6004         log to LS_OPER
6005
6006         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
6007
6008         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
6009
6010         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
6011         the same purpose as LS_USER and LS_OPER
6012
6013         * config/config-sh.in: remove no longer relevant log config
6014         variables
6015
6016         * ircd/uping.c (uping_init): use log_write instead of ircd_log
6017
6018         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
6019
6020         * ircd/s_conf.c: use log_write instead of ircd_log
6021
6022         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
6023
6024         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
6025         ircd_log
6026
6027         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
6028
6029         * ircd/m_who.c: use log_write instead of write_log; no longer
6030         conditionalize on WPATH; mark dead ircd_log calls
6031
6032         * ircd/m_uping.c: mark dead ircd_log call
6033
6034         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
6035
6036         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
6037         ircd_log calls
6038
6039         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
6040
6041         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
6042         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
6043
6044         * ircd/m_kill.c: mark dead ircd_log calls
6045
6046         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
6047         ircd_log
6048
6049         * ircd/m_clearmode.c: use log_write instead of write_log; no
6050         longer conditionalize on OPATH
6051
6052         * ircd/jupe.c: use log_write instead of write_log; no longer
6053         conditionalize on JPATH
6054
6055         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
6056         function; fix a couple of bugs
6057
6058         * ircd/ircd_alloc.c: fixed a comment
6059
6060         * ircd/ircd.c: use log_write instead of ircd_log; fold server
6061         notice generation in a couple of cases
6062
6063         * ircd/gline.c: use log_write instead of write_log; no longer
6064         conditionalize on GPATH
6065
6066         * ircd/channel.c (modebuf_flush_int): use log_write instead of
6067         write_log; no longer conditionalize on OPATH
6068
6069         * ircd/Makefile.in: run make depend, since dependencies have
6070         changed
6071
6072         * doc/example.conf: add system USER to documentation
6073
6074         * include/ircd_log.h: add system USER; remove old ircd_log()
6075         declarations
6076
6077 2000-12-04  Isomer <isomer@coders.net>
6078         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
6079         'end_of_names' reply when done.
6080         * ircd/m_join.c: use NAMES_EON as mentioned above
6081
6082 2000-12-01  net  <simms@LUCIDA.QC.CA>
6083
6084         * ircd/motd.c: add a freelist for struct Motds
6085
6086 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
6087
6088         * ircd/s_stats.c (report_feature_list): report features--only
6089         local opers can see logging configuration, since it doesn't really
6090         mean anything to users
6091
6092         * ircd/s_err.c: add reply messages for new feature subsystem
6093
6094         * ircd/s_conf.c: add F lines to .conf
6095
6096         * ircd/parse.c: add the message descriptions for /set, /reset, and
6097         /get
6098
6099         * ircd/m_stats.c: add /stats f
6100
6101         * ircd/m_set.c (mo_set): implement /set
6102
6103         * ircd/m_reset.c (mo_reset): implement /reset
6104
6105         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
6106         reopens log files (for log file rotation)
6107
6108         * ircd/m_get.c (mo_get): implement /get
6109
6110         * ircd/ircd_log.c: use int instead of void return value; add
6111         log_report_features() and log_canon(); fix a function that
6112         disappears if DEBUGMODE not #define'd
6113
6114         * ircd/ircd_features.c: functions to manipulate feature settings
6115         either from the config file or with the new /set, /reset, and /get
6116         commands
6117
6118         * ircd/Makefile.in: add new .c files, run make depend
6119
6120         * include/s_stats.h: declare report_feature_list() (/stats f
6121         handler)
6122
6123         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
6124         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
6125         reply numerics
6126
6127         * include/msg.h: add defines for SET, RESET, and GET
6128
6129         * include/ircd_log.h: add a function to canonicalize subsystem
6130         names; change some void return values to int
6131
6132         * include/ircd_features.h: new features subsystem handles all the
6133         manipulation of special features, like log files
6134
6135         * include/handlers.h: declare new mo_{s,res,g}et message handlers
6136         for fiddling with features run-time
6137
6138         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
6139         seemed like a good idea at the time...
6140
6141         * doc/example.conf: document new F lines
6142
6143 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
6144
6145         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
6146         new logging functions, which have special support for the debug
6147         log; added loop detection to vdebug(), so that I can
6148         sendto_opmask_butone() from log_vwrite() without incurring another
6149         call to vdebug()
6150
6151         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
6152         this allows log file rotations
6153
6154         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
6155
6156         * ircd/ircd_log.c: much more work fleshing out the interface;
6157         removed old interface; included backwards-compat ircd_log()
6158         function that logs to subsystem LS_OLDLOG
6159
6160         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
6161         functions
6162
6163         * include/ircd_log.h: include stdarg.h for va_list; move ordering
6164         warning to top of file; fill out LogSys enum; declare new
6165         log_debug_init(), log_vwrite(), log_write_kill(), and
6166         log_[sg]et_*() functions; add flags argument to log_write();
6167         defined flags to inhibit various logging actions
6168
6169         * include/client.h: added support for new SNO_DEBUG, enabled only
6170         if DEBUGMODE is defined
6171
6172 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
6173
6174         * ircd/ircd_log.c: make sure the various LOG_* constants are
6175         defined (probably not needed, since #include <syslog.h> isn't
6176         conditional); various static data needed for the new logging
6177         functions; definitions of new logging functions
6178
6179         * include/ircd_log.h: new LogSys enum, declarations for part of
6180         new logging API
6181
6182         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
6183         which was of course stupid; switched to using switch/case in
6184         initialization in motd_create(); zero the MotdList.other pointer
6185         from motd_clear()
6186
6187         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
6188         or we overwrite init_conf()'s hard work with respect to T-lines
6189
6190 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
6191
6192         * ircd/s_stats.c: comment out report_motd_list and include a
6193         reference to motd_report()
6194
6195         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
6196         motd_add() from the conf parser; call motd_clear() from the rehash
6197         routine; remove the no longer needed memory clearing and reloading
6198         stuff from the rehash service routine
6199
6200         * ircd/motd.c: loads new API, including static internal functions
6201         to do allocation/deallocation, etc.
6202
6203         * ircd/m_stats.c: use new motd_report() instead of
6204         report_motd_list()
6205
6206         * ircd/m_motd.c: use new syntax for motd_send()
6207
6208         * ircd/ircd.c: use new motd_init() function
6209
6210         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
6211         Makefile.(in); also ran make depend
6212
6213         * include/motd.h: don't need config.h, but now do need time.h;
6214         define new structures and constants; redefine old API and define
6215         new functions
6216
6217 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
6218
6219         * ircd/s_user.c (register_user): use motd_signon() instead of
6220         calling m_motd; much cleaner this way
6221
6222         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
6223         less of a crock
6224
6225         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
6226         functions
6227
6228         * include/motd.h: define new MOTD API stuff
6229
6230 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
6231
6232         * ircd/ircd_reply.c (protocol_violation): rewrite
6233         protocol_violation so it'll actually work
6234
6235         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
6236         the client's real name in there.
6237
6238         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
6239         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
6240         gets called from register_user with a NULL sptr.  This is probably
6241         a design problem, but this bandaid will do for now...
6242
6243 2000-11-19  Isomer <isomer@coders.net>
6244         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
6245         to problems in the server<->server protocol.
6246
6247         * ircd/m_connect.c: allow remote connects with a port of '0'
6248         meaning to use the port in the config file.
6249
6250         * ircd/m_create.c: Enable hacking protection, lets see how far we
6251         get.
6252
6253         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
6254         clients, so we don't any more.
6255
6256         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
6257         and the user@host is displayed of the victim.
6258
6259         * ircd/m_map.c: reloaded 'dump_map'.
6260
6261         * ircd/m_trace.c: allow per class T:
6262
6263         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
6264
6265 2000-11-17  Isomer <isomer@coders.net>
6266
6267         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
6268         that were the *same* instead of different.  Oh the embarrasment!
6269
6270         * ircd/IPcheck.c: Merged net's fix.
6271
6272 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
6273
6274         * ircd/m_whois.c: remove compiler warning by adding a newline to
6275         end of file
6276
6277         * ircd/m_names.c: moved the flags up to s_user.h
6278
6279         * ircd/m_join.c: call do_names instead of m_names; restructure
6280         ms_join to never transmute a JOIN into a CREATE, but use the TS in
6281         the JOIN (if present) to timestamp the channel
6282
6283         * ircd/channel.c: send JOINs individually, instead of grouping
6284         them, so that we can send the channel's creation time
6285
6286         * include/s_user.h: declare do_names()
6287
6288 2000-10-30  Isomer <isomer@coders.net>
6289         * ircd/m_oper.c: Fixed warning
6290
6291 2000-10-30  Isomer <isomer@coders.net>
6292         * ircd/m_oper.c: Fixed over agressive cut and no paste
6293
6294 2000-10-30  Isomer <isomer@coders.net>
6295
6296         * ircd/m_topic.c: Restructured, fixed bug where topics on local
6297         channels are propergated (I forget who pointed this out to me, but
6298         thanks anyway).  Also to save bandwidth don't send the topic to
6299         users if the topic is already the same on the server (but still
6300         propergate to other servers).  X/W's "autotopic" feature must
6301         chew a lot of bandwidth, hopefully this will help reduce this.
6302
6303         * doc/rfc1459.rfc: Updated documentation on /topic.
6304
6305         * ircd/listener.c: snotice warnings about failed accept()'s
6306         potentially warning admins that they're running out of fd's.
6307
6308         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
6309         people in a class in /stats y
6310
6311         * ircd/m_create.c: Checks for timewarp hacking and squit's
6312         evil servers. (currently disabled)
6313         
6314
6315 2000-10-30  net <simms@lucida.qc.ca>
6316         
6317         * ircd/gline.c: Fixed various bugs Isomer left behind.
6318
6319 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
6320
6321         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
6322         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
6323
6324 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
6325
6326         * ircd/channel.c: ok, now last mode rules; mode +ps will always
6327         result in +s (and won't send a mode if the channel is already +s);
6328         mode +sp will always result in +p; -n+n on a +n channel results in
6329         no mode change; -n+n on a -n channel results in a +n mode change;
6330         etc.
6331
6332 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
6333
6334         * ircd/channel.c: add "add" and "del" elements to ParseState to
6335         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
6336         mode_parse_limit that caused it to clear all channel modes
6337         prematurely; restructure mode_parse_mode to avoid calling
6338         modebuf_mode too early (ties in with first mentioned change);
6339         better logic for +p/+s mutual exclusivity; initialize "add" and
6340         "del" elements in mode_parse; send simple modes down to
6341         modebuf_mode after the loop in mode_parse
6342
6343 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
6344         * ircd/m_names.c: Fixed a non-lethal logic error that 
6345         triggers an assert() in find_member_link while debugging.
6346         (Spotted by Maniac-).
6347 2000-09-19  Thomas Helvey <helveytw@home.com>
6348         * ircd/s_conf.c: move K:lines to their own list and data
6349         structures, add supporting code.
6350         * ircd/m_stats.c: cleanup stats processing a bit move
6351         kline listing code to a new function, haven't figured
6352         out where it goes yet tho'
6353         * ircd/s_stats.c: added K:line bulk lister
6354         * include/s_conf.h: added new DenyConf struct
6355         * *[ch]: fixeup code that depended on changes
6356
6357 2000-09-17  Thomas Helvey <helveytw@home.com>
6358         * ircd/class.c: encapsulate class list
6359         * include/class.h: clean up classes
6360         * * fixup code that depended on changes
6361
6362 2000-09-17  Thomas Helvey <helveytw@home.com>
6363         * ircd/s_conf.c: add me to local conf
6364         * include/s_conf.h: move CONF_ME macro to chkconf.c
6365         * ircd/s_bsd.c: cleanup initialization, allow virtual host
6366         to be changed by rehash
6367
6368 2000-09-17  Thomas Helvey <helveytw@home.com>
6369         * include/class.h: add missing prototype
6370         * ircd/class.c: make argument to get_conf_class const
6371
6372 2000-09-17  Thomas Helvey <helveytw@home.com>
6373         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
6374         merge conflicts.
6375         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
6376         merge conflicts
6377
6378 2000-09-16  Thomas Helvey <helveytw@home.com>
6379         * ircd/s_conf.c: add code for server struct
6380         * ircd/client.c: copy of class.c sort of, new file for client
6381         specific operations, will move things here as appropriate,
6382         currently only one function is exported from here.
6383         * ircd/*.c: general logic cleanups, convert negatives to
6384         positives in places.
6385
6386 2000-09-16  Thomas Helvey <helveytw@home.com>
6387         * ircd/s_conf.c: add code for new crule data structs, strip quotes
6388         * ircd/crule.c: clean up scary casting a bit, type safety stuff
6389         * include/s_conf.h: add CRuleConf struct and support, remove
6390         unused constants
6391         * include/crule.h: type safety cleanups
6392         * ircd/*.c: fixup code that depended on stuff I changed
6393
6394 2000-09-15  Thomas Helvey <helveytw@home.com>
6395         * ircd/s_conf.c: start adding code for new conf data structs, changed
6396         listeners, admin line, motd lines, class lines. Move validate_hostent
6397         to resolver. General mayhem.
6398         * include/s_conf.h: new data structs and accessors
6399         * ircd/res.c: move validate_hostent here, rewrite, use regular
6400         expression for validation.
6401         * doc/example.conf: update docs for port
6402
6403 2000-09-14  Thomas Helvey <helveytw@home.com>
6404         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
6405         up conf_init into managable chunks.
6406         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
6407         * include/s_conf.h: add new data struct for local info (unwinding the mess).
6408
6409 2000-09-13  Thomas Helvey <helveytw@home.com>
6410         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
6411         local clients.
6412         * ircd/list.c: put SLinks in free lists
6413         * ircd/channel.c: put Memberships in free lists
6414         * ircd/ircd.c: rearrange initializations a bit in main
6415         Note: With these changes, ircd NEVER frees Clients, SLinks or
6416         Memberships. It will also rarely need to allocate new
6417         ones during net bursts and other disruptions. This should
6418         cut down on memory fragmentation a bit as well.
6419
6420 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
6421
6422         * ircd/m_names.c (do_names): pull-up from do_names fix in
6423         u2.10.10.pl11
6424
6425 2000-07-15  Perry Lorier       <Isomer@coders.net>
6426         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
6427                  match()'s.  Major Major cpu savings.  Also speed up the
6428                  other case slightly.  As a side effect you can now
6429                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
6430                  3am.
6431
6432 2000-07-15  Perry Lorier       <Isomer@coders.net>
6433         * various: Fixed warnings after compiling on an alpha.
6434 2000-07-09  Perry Lorier       <Isomer@coders.net>
6435         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
6436                       changes suggested by various other people.
6437         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
6438                         that it gets a corrupt entry somehow.
6439 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
6440         * ircd/m_oper.c: Clean up compiler warning.
6441
6442 2000-07-08  Perry Lorier       <Isomer@coders.net>
6443         * doc/ircd.8: Updated the documentation, it was slightly out of date
6444                       being updated around 1989.
6445         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
6446                           fixed a few minor glitches.
6447         * doc/rfc1459.unet: Updated.
6448         * ircd/IPcheck.c: Fixed more bugs.
6449         * ircd/s_bsd.c: We now keep track of servers we've conected.
6450
6451 2000-07-02  Perry Lorier       <Isomer@coders.net>
6452         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
6453                         me.  Thanks to Hektik, thanks thanks thanks thanks
6454                         thanks thanks thanks thanks thank thanks thank thanks
6455
6456 2000-07-01  Perry Lorier       <Isomer@coders.net>
6457         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
6458         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
6459
6460 2000-06-22  Perry Lorier       <Isomer@coders.net>
6461         * ircd/IPcheck.c: Large chunks redone.
6462         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
6463                         single AND double digit limits are allowed now.
6464         * misc other: Changes to IPcheck.
6465
6466 2000-06-30  Perry Lorier       <Isomer@coders.net>
6467         * ircd/ircd.c: Fix command line parameter bugs.
6468
6469 2000-06-30  Perry Lorier       <Isomer@coders.net>
6470         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
6471         * ircd/m_nick.c: Tidied things up.
6472
6473 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
6474         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
6475         
6476 2000-05-29  Perry Lorier       <Isomer@coders.net>
6477         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
6478         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
6479                         you think it'll get bored and fix itself?
6480
6481 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
6482
6483         * ircd/m_names.c: Clean up compiler warnings.
6484
6485 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
6486
6487         * ircd/channel.c (mode_parse_client): don't send warning if
6488         there's not enough arguments for a +/-o/v; means the habit of
6489         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
6490         error messages
6491
6492 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
6493
6494         * ircd/m_names.c: Re-factor code to remove unneccessary
6495         GlobalChannelList iteration every time someone joins a channel.
6496
6497 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
6498
6499         * ircd/s_user.c: add struct Gline * argument to register_user;
6500         look up global glines and repropagate them if necessary; send
6501         acknowledgement of gline to remote servers when registering users
6502
6503         * ircd/s_serv.c (server_estab): don't send acknowledgement of
6504         local glines to remote servers; do send gline acknowledgement of
6505         bursted users
6506
6507         * ircd/m_user.c (m_user): pass new struct Gline * argument to
6508         register_user
6509
6510         * ircd/m_pong.c: pass new struct Gline * argument to register_user
6511
6512         * ircd/m_nick.c (ms_nick): document protocol change
6513
6514         * ircd/gline.c: support GLINE_LASTMOD
6515
6516         * include/s_user.h: add struct Gline * argument to register_user
6517
6518         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
6519
6520         * ircd/s_conf.c (find_kill): add unsigned int argument to
6521         gline_lookup()
6522
6523         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
6524         glines; add unsigned int argument to gline_lookup()
6525
6526         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
6527         argument to gline_lookup()
6528
6529         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
6530         parameter, or when it falls out of bounds: see comments prior to
6531         call to jupe_resend(); call server_estab with struct Jupe
6532         parameter, so that we place the appropriate %<lastmod> in the
6533         appropriate place.
6534
6535         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
6536         server, as well as for servers when we're sending the BURST
6537
6538         * include/s_serv.h: add a struct Jupe * to the arguments for
6539         server_estab() so that we can send the appropriate lastmod
6540         parameter
6541
6542         * ircd/m_gline.c (ms_gline): actually, this should be the
6543         slightest bit more efficient...
6544
6545         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
6546         bit more efficient...
6547
6548         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
6549         during netburst
6550
6551         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
6552         netburst
6553
6554         * ircd/channel.c (joinbuf_join): really remove user from local
6555         channels
6556
6557 2000-05-29  Perry Lorier       <Isomer@coders.net>
6558         * ircd/m_names.c: Removed redundant space. 
6559         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
6560
6561 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
6562
6563         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
6564         a " "
6565
6566 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
6567
6568         * ircd/channel.c: replace bogus assertions with returns, which is
6569         logically correct; only wipe out limit/key if they were originally
6570         set in the first place; remove user from channel when doing a
6571         PARTALL; only send MODE +o for user CREATEing channel if user is
6572         not MyUser--CREATE will only be used if the channel did not
6573         originally exist, therefore we can assume no one local is on the
6574         channel anyway, and we don't exactly need for the user to see an
6575         explicit +o for themselves
6576
6577         * doc/readme.gline: describe the syntax of the GLINE command
6578
6579         * doc/readme.jupe: update to reflect a couple of changes to JUPE
6580
6581         * ircd/gline.c: don't propagate local changes
6582
6583         * ircd/jupe.c: don't propagate local changes
6584
6585         * ircd/m_gline.c (mo_gline): force local flag when deactivating
6586         glines with 0 lastmod
6587
6588         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
6589         are now removed instead of being deactivated
6590
6591         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
6592         -<mask>" be accepted
6593
6594         * ircd/channel.c (send_channel_modes): deal with one of the last
6595         vestiges of sendbuf
6596
6597         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
6598         debugging hooks
6599
6600         * ircd/channel.c (modebuf_extract): remove debugging
6601         sendto_opmask_butone calls
6602
6603 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
6604
6605         * ircd/channel.c: support a couple of new flags to support using
6606         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
6607         of modebuf_extract to extract added flags for use by ms_burst
6608
6609         * include/channel.h: a couple of new flags to support using
6610         mode_parse inside ms_burst
6611
6612         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
6613
6614         * ircd/m_endburst.c: add loop to processing of end_of_burst to
6615         free empty channels after the BURST is over.
6616
6617         * ircd/m_server.c: convert to use new send.c functions--I wanted
6618         to rewrite it from scratch, but the logic's pretty complex; I may
6619         still rewrite it, though...
6620
6621 2000-05-02  Thomas Helvey <tomh@inxpress.net>
6622
6623         * ircd/ircd.c: fix broken header include ordering
6624
6625 2000-05-02  Thomas Helvey <tomh@inxpress.net>
6626         
6627         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
6628         review emailed privately
6629
6630         * include/IPcheck.h: removed unneeded include
6631
6632 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
6633
6634         * ircd/s_user.c (hunt_server): throw in a comment so I know what
6635         the sendto_one is for
6636
6637         * include/querycmds.h (Count_unknownbecomesclient): convert to
6638         sendto_opmask_butone
6639
6640         * ircd/send.c: start removing dead code
6641
6642         * include/send.h: start removing dead code
6643
6644         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
6645         hunt_server_cmd
6646
6647         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
6648
6649 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
6650
6651         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
6652
6653         * ircd/m_kick.c: Completely reimplement m_kick
6654
6655         * ircd/channel.c: send_user_joins removed; it was dead code,
6656         anyway...
6657
6658 2000-05-01  Perry Lorier <isomer@coders.net>
6659         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
6660         * ircd/channels.c: My fix for the part problem.  Untested, probably
6661                 won't work.  Can't be much worse than the current problem.
6662                 it'll either work or core, take your pick.
6663
6664
6665 2000-04-30  Perry Lorier <isomer@coders.net>
6666         * config/config-sh.in: Fix for CONNEXIT
6667         * ircd/s_{user,misc}.c: Fix for CONNEXIT
6668         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
6669                         (Kev: Want to come talk to me about this?)
6670
6671 2000-04-30  Steven M. Doyle <steven@doyle.net>
6672         * ircd/ircd.c
6673           - general cleanups and readability enhancements
6674           - rewrite of setuid/chroot code.
6675           - server will no longer run as root
6676           - -DPROFIL compile option removed
6677           - Fixed IPcheck API calls
6678  
6679         * config/config-sh.in
6680           - Fixed up chroot compile options
6681           - Added options for debug and profile compiles
6682  
6683         * config/gen.ircd.Makefile
6684           - Support for new debug/profile options
6685  
6686         * ircd/Makefile.in
6687           - Support for new debug/profile options
6688  
6689         * ircd/ircd_signal.c
6690           - Removed -DPROFIL
6691
6692         * include/IPcheck.h
6693           - Removed old API prototypes, added new ones
6694         
6695         * ircd/IPcheck.c
6696           - Readability cleanups (well, I -think-...)
6697           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
6698             used unsigned short was probably causing interesting things after
6699             a client had been connected longer than about 65,535 seconds...
6700           - Removed old API functions.
6701
6702         * ircd/whocmds.c
6703           - Removed IPcheck.h include
6704         
6705         * Additionally modified IPcheck API calls in:
6706           - ircd/m_nick.c
6707           - ircd/m_auth.c
6708           - ircd/s_bsd.c
6709           - ircd/s_conf.c
6710           - ircd/s_misc.c
6711           - ircd/s_serv.c
6712           - ircd/s_user.c
6713         
6714         
6715 2000-04-30  Perry Lorier <isomer@coders.net>
6716         * ircd/s_bsd.c: Sigh. :)
6717         * ircd/m_mode.c: fix for modeless channels by poptix.
6718
6719 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
6720
6721         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
6722
6723         * ircd/channel.c (clean_channelname): make clean_channelname also
6724         truncate long channel names
6725
6726 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
6727
6728         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
6729
6730         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
6731         joinbuf_flush
6732
6733         * include/channel.h: definitions and declarations for the struct
6734         JoinBuf abstraction
6735
6736 2000-04-29  Perry Lorier <isomer@coders.net>
6737         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
6738
6739 2000-04-29  Perry Lorier <isomer@coders.net>
6740         * ircd/s_bsd.c: Add debugging code to IPcheck
6741
6742 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
6743
6744         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
6745
6746         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
6747         RPL_EXPLICIT
6748
6749         * ircd/m_userhost.c (m_userhost): add a dead code comment
6750
6751         * ircd/m_desynch.c: forgot one...
6752
6753         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
6754
6755         * ircd/m_proto.c (proto_send_supported): just change a comment so
6756         it doesn't show up in my scans
6757
6758         * ircd/ircd_reply.c (send_reply): fix a slight bug...
6759
6760         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
6761         kinda hackish...
6762
6763         * ircd/parse.c (parse_server): argument wrangling to make
6764         processing in do_numeric a little easier to deal with
6765
6766         * ircd/s_serv.c (server_estab): SERVER should come from
6767         acptr->serv->up, not &me
6768
6769         * ircd/m_lusers.c: accidentally left out sptr for a %C
6770
6771         * ircd/send.c: hack to support doing wallchops...
6772
6773         * ircd/m_whowas.c: convert to new send functions
6774
6775         * ircd/m_whois.c: convert to new send functions
6776
6777         * ircd/m_who.c: convert to new send functions
6778
6779         * ircd/m_wallops.c: convert to new send functions
6780
6781         * ircd/m_wallchops.c: convert to new send functions
6782
6783         * ircd/m_version.c: convert to new send functions
6784
6785         * ircd/m_userip.c: convert to new send functions
6786
6787         * ircd/m_userhost.c: convert to new send functions
6788
6789         * ircd/m_uping.c: convert to new send functions
6790
6791         * ircd/m_trace.c: convert to new send functions
6792
6793         * ircd/m_topic.c: convert to new send functions
6794
6795         * ircd/m_time.c: convert to new send functions
6796
6797         * ircd/m_squit.c: convert to new send functions
6798
6799         * ircd/m_silence.c: convert to new send functions
6800
6801         * ircd/m_settime.c: convert to new send functions
6802
6803         * ircd/m_restart.c: convert to new send functions
6804
6805         * ircd/m_rehash.c: convert to new send functions
6806
6807         * ircd/m_privmsg.c: convert to new send functions
6808
6809         * ircd/m_pong.c: convert to new send functions
6810
6811         * ircd/m_ping.c: convert to new send functions
6812
6813         * ircd/m_pass.c: convert to new send functions
6814
6815         * ircd/m_opmode.c: convert to new send functions
6816
6817         * ircd/m_oper.c: convert to new send functions
6818
6819         * ircd/m_notice.c: convert to new send functions
6820
6821         * ircd/m_nick.c: convert to new send functions
6822
6823         * ircd/m_names.c: convert to new send functions
6824
6825         * ircd/m_motd.c: convert to new send functions
6826
6827         * ircd/m_mode.c: convert to new send functions
6828
6829         * ircd/m_map.c: convert to new send functions
6830
6831         * ircd/m_lusers.c: convert to new send functions
6832
6833         * ircd/m_list.c: convert to new send functions
6834
6835         * ircd/m_links.c: convert to new send functions
6836
6837         * ircd/m_kill.c: convert to new send functions
6838
6839         * ircd/m_jupe.c: convert to new send functions
6840
6841         * ircd/m_invite.c: convert to new send functions
6842
6843         * ircd/m_info.c: convert to new send functions
6844
6845         * ircd/m_help.c: convert to new send functions
6846
6847         * ircd/m_gline.c: convert to new send functions
6848
6849         * ircd/m_error.c: convert to new send functions
6850
6851         * ircd/m_endburst.c: convert to new send functions
6852
6853         * ircd/m_die.c: convert to new send functions
6854
6855         * ircd/m_destruct.c: convert to new send functions
6856
6857         * ircd/m_defaults.c: convert to new send functions
6858
6859         * ircd/m_connect.c: convert to new send functions
6860
6861 2000-04-28  Perry Lorier <isomer@coders.net>
6862         * RELEASE.NOTES: Describe a few more undocumented features.
6863         * config/config-sh.in: change the default paths for logging
6864         and the recommended number of channels.
6865         * include/supported.h: Rearrange slightly, added CHANTYPE's
6866
6867 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
6868
6869         * ircd/m_close.c: convert to send_reply
6870
6871         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
6872
6873         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
6874
6875         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
6876
6877         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
6878         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
6879         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
6880         carefully rethought...
6881
6882         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
6883
6884         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
6885
6886         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
6887         numeric nick; therefore, we have to use the server name
6888
6889         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
6890
6891         * ircd/send.c: fix minor bugs
6892
6893         * ircd/s_user.c (check_target_limit): mark dead code so I filter
6894         it when I grep
6895
6896         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
6897         when I grep
6898
6899         * ircd/parse.c: mark dead code so I filter it when I grep
6900
6901         * ircd/map.c: mark dead code so I filter it when I grep
6902
6903         * ircd/ircd.c: mark dead code so I filter it when I grep
6904
6905         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
6906         functions
6907
6908         * ircd/channel.c: mark dead code so I filter it when I grep
6909
6910         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
6911         hope I'm not stepping on toes...
6912
6913         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
6914         conversions; use ircd_snprintf in a couple of cases to negate the
6915         possibility of buffer overflow
6916
6917 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
6918
6919         * ircd/channel.c: convert as much as possible to new send
6920         semantics
6921
6922         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
6923         test member->user->from->fd, not from->fd
6924
6925         * ircd/gline.c (gline_add): go ahead and add badchans; we just
6926         won't look for them in m_gline; this way, they always work...
6927
6928         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
6929
6930         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
6931         ircd_vsnprintf conversion specifiers
6932
6933         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
6934         I have my conversion specifiers
6935
6936         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
6937
6938         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
6939         local users
6940
6941         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
6942         little less brain-dead
6943
6944         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
6945
6946         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
6947         RPL_STATSDEBUG
6948
6949         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
6950         RPL_STATSDEBUG
6951
6952         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
6953         for RPL_STATSDEBUG
6954
6955         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
6956
6957         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
6958
6959         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
6960         ERR_INVALIDUSERNAME
6961
6962         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
6963
6964         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
6965         a numeric as needing to use an explicit pattern, which will be the
6966         first argument in the variable argument list
6967
6968         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
6969         non-prefixed nospoof PING
6970
6971         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
6972         non-prefixed SERVER login
6973
6974         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
6975         a numeric usage further up)
6976
6977         * include/send.h: declare sendrawto_one
6978
6979         * ircd/send.c (sendrawto_one): new function to use ONLY for
6980         non-prefixed commands, like PING to client, or PASS/SERVER on
6981         server registration
6982
6983 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
6984
6985         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
6986         future expansion (channel numerics?)
6987
6988         * include/ircd_snprintf.h: added documentation to # to explain use
6989         with %C; added documentation for : to explain use with %C; added
6990         documentation for %H for channels
6991
6992         * ircd/whocmds.c: use send_reply
6993
6994         * ircd/userload.c: use sendcmdto_one
6995
6996         * ircd/uping.c: use sendcmdto_one
6997
6998         * ircd/send.c: use new flags to %C format string; ':' prefixes
6999         client name with a colon for local connects, '#' uses
7000         nick!user@host form for local connects
7001
7002         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
7003         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
7004
7005         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
7006
7007         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
7008         sendcmdto_one
7009
7010         * ircd/s_auth.c: use sendto_opmask_butone
7011
7012         * ircd/res.c: use sendcmdto_one
7013
7014         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
7015         debugging assertions
7016
7017 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
7018
7019         * ircd/support.c: dumpcore is no longer used, so get rid of it
7020
7021         * ircd/parse.c: use send_reply, sendcmdto_one
7022
7023         * ircd/map.c: use send_reply
7024
7025         * ircd/listener.c: use send_reply
7026
7027         * ircd/jupe.c: use sendto_opmask_butone, send_reply
7028
7029         * ircd/ircd_reply.c: use send_reply
7030
7031         * ircd/ircd.c: use sendto_opmask_butone
7032
7033         * ircd/gline.c: use sendto_opmask_butone, send_reply
7034
7035         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
7036         registered clients; make FLAG_ALT print nick!user@host; make
7037         FLAG_COLON print :blah
7038
7039         * ircd/class.c (report_classes): use send_reply instead of
7040         sendto_one
7041
7042         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
7043
7044         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
7045         sendto_one with sendcmdto_one
7046
7047 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
7048
7049         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
7050         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
7051         sendcmdto_match_butone
7052
7053         * include/send.h: declare sendcmdto_match_butone
7054
7055 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
7056
7057         * ircd/jupe.c: update to use send_reply()
7058
7059         * ircd/gline.c: update to use send_reply()
7060
7061         * include/ircd_reply.h: declare send_reply
7062
7063         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
7064         replies; uses ircd_snprintf
7065
7066         * ircd/send.c: added comments to redirect searchers to appropriate
7067         sendcmdto_* function; moved new functions to end of file; added
7068         explanatory comments; reordered arguments; defined new functions
7069         mentioned below
7070
7071         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
7072
7073         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
7074
7075         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
7076
7077         * ircd/gline.c: reorder arguments to sendcmdto_* functions
7078
7079         * include/send.h: reorder arguments, add explanatory comments,
7080         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
7081         and vsendto_opmask_butone
7082
7083 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
7084
7085         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
7086         vsendto_op_mask that uses '*' instead of the receiving client
7087         nickname
7088
7089         * include/send.h: declare sendcmdto_channel_butone; takes a skip
7090         argument that allows you to skip (or not to skip) deaf users,
7091         users behind bursting servers, and non channel operators
7092
7093 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
7094
7095         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
7096         sendto_channel_butserv has a subtle bug; also wrote
7097         sendcmdto_common_channels.
7098
7099         * include/send.h: declare new sendcmdto_* functions
7100
7101         * ircd/jupe.c: support local deactivations of jupes
7102
7103         * ircd/gline.c: support local deactivations of glines
7104
7105         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
7106         deactivated; if they aren't locally deactivated, then it slaves to
7107         the net-wide activation status; JupeIsRemActive() tests only
7108         whether the jupe is active everywhere else
7109
7110         * include/gline.h: GLINE_LDEACT allows glines to be locally
7111         deactivated; if they aren't locally deactivated, then it slaves to
7112         the net-wide activation status; GlineIsRemActive() tests only
7113         whether the gline is active everywhere else
7114
7115         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
7116         gline expires after the new one will, we drop the new one,
7117         otherwise we add the G-line after that one (so the wide one will
7118         apply first); if the new one contains an existing G-line and if it
7119         will expire after the existing one, we drop the existing one to
7120         save memory
7121
7122         * ircd/m_gline.c (mo_gline): opers could issue remote local
7123         glines when CONFIG_OPERCMDS was off; fixed
7124
7125 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
7126
7127         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
7128         this is a local JUPE
7129
7130         * ircd/gline.c: add flags argument to gline_activate and
7131         gline_deactivate for future expansion
7132
7133         * ircd/m_gline.c: pass flags to gline_activate and
7134         gline_deactivate
7135
7136         * include/gline.h: add flags argument to gline_activate and
7137         gline_deactivate
7138
7139         * ircd/jupe.c: add flags argument to jupe_activate and
7140         jupe_deactivate for future expansion
7141
7142         * include/jupe.h: add flags argument to jupe_activate and
7143         jupe_deactivate
7144
7145         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
7146         local, active; pass flags to jupe_activate and jupe_deactivate
7147
7148         * include/gline.h: remove dead code
7149
7150         * ircd/gline.c: make gline expire times relative to CurrentTime,
7151         since that should be monotonically increasing, instead of
7152         TStime(), which can be set backwards, and which can therefore
7153         cause an expire time to increase; make local glines be removed
7154         instead of just deactivated; don't let gline_find() look for
7155         user@host glines if the mask being looked up is a channel mask
7156
7157         * ircd/send.c (vsendcmdto_one): forgot to account for the case
7158         where origin is a server and destination is a user
7159
7160         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
7161         since that should be monotonically increasing, instead of
7162         TStime(), which can be set backwards, and which can therefore
7163         cause an expire time to increase; make local jupes be removed
7164         instead of just deactivated
7165
7166         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
7167         limit is fine.  any other warnings I should know about?
7168
7169 2000-04-15  Thomas Helvey <tomh@inxpress.net>
7170
7171         * ircd/*.c: const correctness and type safety cleanups to
7172         get code to compile with C++ compiler. Still has
7173         signed/unsigned comparison warnings.
7174
7175 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7176
7177         * ircd/userload.c: change <sys/time.h> include to <time.h> for
7178           portability.
7179
7180 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
7181
7182         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
7183         and convert acptr...
7184
7185         * ircd/s_user.c: move gline_lookup function call into
7186         register_user, where it'll have a username to lookup!
7187
7188         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
7189         functions; also stuff send_error_to_client into return clauses
7190
7191         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
7192         functions; also use send_error_to_client where that makes sense
7193
7194         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
7195         functions; also use send_error_to_client where that makes sense
7196
7197         * ircd/gline.c: modify to utilize new sendcmdto_* series of
7198         functions; also fix gline_lookup() to deal properly with remote
7199         clients--boy, do struct Client and struct User need to be cleaned
7200         up!
7201
7202         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
7203         too...
7204
7205         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
7206         sendcmdto_serv_butone(), all utilizing the %v conversion of
7207         ircd_snprintf()
7208
7209         * include/send.h: define IRC_BUFSIZE, max size of a message;
7210         declare sendcmdto_one(), vsendcmdto_one(), and
7211         sendcmdto_serv_butone()
7212
7213         * include/msg.h: define all the CMD_* constants needed to utilize
7214         the new sendcmdto_* series of functions
7215
7216         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
7217
7218         * ircd/gline.c: remove old, dead code.
7219
7220         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
7221         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
7222         (don't advertise proxies); remove dead code
7223
7224         * ircd/parse.c: oper handler for JUPE only lists jupes unless
7225         CONFIG_OPERCMDS is enabled
7226
7227         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
7228         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
7229
7230         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
7231         always return ERR_DISABLED
7232
7233         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
7234         enabled, always return ERR_DISABLED
7235
7236         * ircd/s_err.c: add error message to indicate disabled commands
7237
7238         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
7239
7240         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
7241
7242         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
7243         CONFIG_NEW_MODE to 'y' for now
7244
7245         * ircd/gline.c (gline_list): fix a minor formatting bogon
7246
7247         * BUGS: since I fixed that bug, might as well mark it fixed.
7248
7249         * ircd/m_join.c: look up badchans with GLINE_EXACT
7250
7251         * ircd/m_gline.c: fix parc count problems; look up existing
7252         G-lines with GLINE_EXACT; only set new lastmod when
7253         activating/deactivating existing glines if old lastmod was not 0
7254
7255         * ircd/gline.c: forgot to copy the gline reason over; don't
7256         propagate a gline with 0 lastmod if origin is user; add
7257         GLINE_EXACT to force exact matching of gline mask
7258
7259         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
7260         flag properly
7261
7262         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
7263         but gline_lookup() actually takes a client--d'oh.
7264
7265 2000-04-13  Thomas Helvey <tomh@inxpress.net>
7266         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
7267
7268 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7269
7270         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
7271           "/who * x"
7272           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
7273           (Found by Plexus).
7274
7275         * ircd/whocmds.c: Change idle time calc from socket idle to user
7276           idle.
7277
7278 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
7279
7280         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
7281         too, for ircd_snprintf.c
7282
7283         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
7284         comments; mostly descended from the Linux manpage for printf, but
7285         also documenting the extensions.
7286
7287         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
7288         client; make 'q' be the same as 'L'; remove __inline__; only
7289         define EXTENSION if HAVE_LONG_LONG is defined
7290
7291         * include/handlers.h: declare m_gline()
7292
7293         * ircd/parse.c: gline can be called by users, but it only lists
7294         the glines.
7295
7296         * ircd/s_user.c (set_nick_name): resend gline if a remote server
7297         introduces a glined client
7298
7299         * ircd/s_serv.c (server_estab): burst glines, too
7300
7301         * ircd/gline.c: fix up all the expire times to be offsets;
7302         simplify gline_resend()
7303
7304         * ircd/m_gline.c: begin coding replacements for ms_gline(),
7305         mo_gline(), and m_gline()
7306
7307         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
7308         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
7309
7310 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7311
7312         * tools/Bouncer/*: Add comments/documentation/tags.
7313         * tools/Bouncer/*: Add debug defines, make task fork().
7314
7315 2000-04-12  Thomas Helvey <tomh@inxpress.net>
7316         * ircd/s_err.c: Cleanup s_err.c make one table so we
7317         don't have to do anything tricky to get an error string.
7318
7319 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7320         * Add port bouncer for http (x/w)
7321
7322 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
7323
7324         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
7325         call to gline_find(); also used GlineReason() instead of direct
7326         reference to structure member
7327
7328         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
7329         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
7330         is active
7331
7332         * ircd/channel.c: nothing seems to be called anywhere...
7333
7334         * ircd/s_err.c: update a couple of replies to dovetail with new
7335         semantics
7336
7337         * ircd/gline.c: begin complete re-implementation of gline.c along
7338         the lines of the final design of jupe.c
7339
7340         * include/gline.h: begin complete re-implementation of gline.c
7341         along the lines of the final design of jupe.c
7342
7343         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
7344         %s by %s" message...
7345
7346         * ircd/ircd_snprintf.c: my new snprintf()-like functions
7347
7348         * include/ircd_snprintf.h: my new snprintf()-like functions
7349
7350 2000-04-11  Thomas Helvey <tomh@inxpress.net>
7351         * ircd/IPcheck.c: removed old dead code
7352         * ircd/s_user.c (send_user_info): removed non-standard
7353           user not found message for userhost/userip
7354
7355 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
7356
7357         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
7358         * doc/p10.html: Work on chapter 4.
7359
7360 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
7361
7362         * ircd/channel.c (mode_parse_client): fix coredump on /mode
7363         #foobar +o nosuchnick
7364
7365 2000-04-10  Perry Lorier  <Isomer@coders.net>
7366         * BUGS: Added bug.
7367
7368 2000-04-09  Thomas Helvey <tomh@inxpress.net>
7369         * include/IPcheck.h: fix prototype
7370         * ircd/s_user.c: fix usage of IPcheck_remote_connect
7371         * ircd/IPcheck.c: removed unused args
7372
7373 2000-04-09  Thomas Helvey <tomh@inxpress.net>
7374         * include/IPcheck.h: add proto for IPcheck_expire
7375
7376         * ircd/IPcheck.c: Rewrote
7377
7378         * ircd/ircd.c: Add IPcheck_expire to main message loop
7379
7380         * ircd/s_user.c: Redo target hashing, refactor target code
7381
7382         * include/numeric.h: Cleaned up numerics, added which ones are
7383         in use by other networks and what they are in use for.
7384
7385         * ircd/channel.c: cleaned can_join(), allow anyone through anything
7386         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
7387         will get a message explaining to them not to cheat.
7388
7389         * ircd/m_join.c: cleaned up the various join functions, should be
7390         a lot more efficient.  Still needs work.  Now assumes that s<->s
7391         won't send it a JOIN 0.  Service coders - note this and tread with
7392         care.
7393
7394         * ircd/m_stats.c: added Gte-'s stats doc patch.
7395
7396         * ircd/m_version.c: /version now returns the 005 numeric as well.
7397         as requested by Liandrin.
7398
7399
7400 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
7401
7402         * ircd/m_clearmode.c: add include for support.h for write_log()
7403
7404         * configure: move ircd/crypt/* to tools/*
7405
7406 2000-04-06  Thomas Helvey <tomh@inxpress.net>
7407         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
7408           set client host to server alias if connection from localhost
7409
7410 2000-04-06  Perry Lorier <isomer@coders.net>
7411         * ircd/ircd.c: Fix core during pinging (oops)
7412         
7413 2000-04-06  Perry Lorier <isomer@coders.net>
7414         * ircd/send.c: fixed wrong ident being sent to channels bug.
7415         * include/numerics.h: Updated some of the numerics from other
7416         networks.  Flagged some as 'unused' by undernet.
7417
7418 2000-03-30  Perry Lorier <isomer@coders.net>
7419         * ircd/ircd.c: Lets see if this helps the ping problem at all.
7420         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
7421         time for local clients. (as requested), extended who now returns all
7422         the flags (@+!) so you can tell the complete state of a client.
7423
7424 2000-03-30  Thomas Helvey <tomh@inxpress.net>
7425         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
7426
7427 2000-03-30  Perry Lorier <isomer@coders.net>
7428         * ircd/parse.c: oops, missed opers.
7429
7430 2000-03-30  Perry Lorier <isomer@coders.net>
7431         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
7432         for so long.  Remember: m_ping MUST be in the parse array. :)
7433
7434 2000-03-30  Perry Lorier <isomer@coders.net>
7435         * ircd/ircd.c: test in check_pings was wrong.  I move that we
7436         disallow cvs commit after 10pm localtime....
7437
7438 2000-03-30  Perry Lorier <isomer@coders.net>
7439         * ircd/m_pong.c: Fix it for servers too.
7440
7441 2000-03-30  Perry Lorier <isomer@coders.net>
7442         * ircd/m_pong.c: Fix ping timeout bugs
7443
7444 2000-03-30  Perry Lorier <isomer@coders.net>
7445         * ircd/channel.c: Bans had CurrentTime in their when field instead
7446         of TStime()
7447
7448 2000-03-31  Thomas Helvey <tomh@ixpress.net>
7449         * ircd/numnicks.c (SetXYYCapacity): fix for extended
7450         numerics.
7451
7452 2000-03-30  Perry Lorier <isomer@coders.net>
7453         * ircd/m_nick.c: send kills both ways so when we add nick change
7454         on collision we don't desync the network.
7455
7456         * ircd/map.c: Fixup the map a bit more.
7457
7458 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
7459
7460         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
7461
7462         * ircd/m_opmode.c: Log the mode changes to OPATH
7463
7464         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
7465         OPATH
7466
7467         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
7468         OPATH
7469
7470         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
7471
7472         * config/config-sh.in: added OPATH for opmode log file
7473
7474         * ircd/m_clearmode.c (do_clearmode): updated uses of
7475         modebuf_mode_string() for the new usage
7476
7477         * ircd/channel.c: added flag MODE_FREE and an int argument to
7478         modebuf_mode_string() to indicate that the string must be free'd;
7479         updated calls to modebuf_mode_string() for the new usage; called
7480         collapse(pretty_mask()) on the ban string and use allocated memory
7481         for it; added ban list length accounting; fixed a number of small
7482         bugs in ban processing
7483
7484         * include/channel.h: added flag MODE_FREE and an int argument to
7485         modebuf_mode_string() to indicate that the string must be free'd
7486
7487         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
7488         keys and limits that are set
7489
7490 2000-03-30  Perry Lorier <isomer@coders.net>
7491         * ircd/ircd.c: rewrote check_pings() for maintainability
7492         and speed.  Also changed quit msg's so they don't have
7493         redundant nick[host] info in them.
7494
7495         * ircd/send.c: Changed write errors to report what error
7496         occured (if possible).
7497
7498         * ircd/gline.c: added gline comment to the quit.
7499
7500         * ircd/m_server.c: Added suggestions to server quits mentioning
7501         what went wrong so the admin can fix it earlier instead of asking
7502         questions...
7503
7504         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
7505         servers that aren't fully burst yet.  And show '(--s)' for servers
7506         where its not sure.
7507
7508         * doc/example.conf: Fixed wrapped U:
7509
7510 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
7511
7512         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
7513         mode_parse() (version selectable at compile time)
7514
7515         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
7516
7517         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
7518
7519         * config/config-sh.in: add new config option to enable new m_mode
7520         implementation
7521
7522         * doc/Configure.help: add documentation for new config option
7523         CONFIG_NEW_MODE
7524
7525         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
7526         MODE -v : Not enough parameters
7527
7528         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
7529         +k and +l even if they weren't set...
7530
7531         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
7532
7533         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
7534         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
7535         for; test the 0-th member, not the i-th member, of the client
7536         change state stuff
7537
7538         * ircd/m_clearmode.c (do_clearmode): use the new
7539         mode_invite_clear() function
7540
7541         * ircd/channel.c: cleared up all the compile-time warnings and
7542         errors
7543
7544         * include/channel.h: added declarations for mode_ban_invalidate()
7545         and mode_invite_clear()
7546
7547         * ircd/channel.c: finished mode_parse(), then broke it up into a
7548         dozen or so helper functions to make the code easier to read
7549
7550 2000-03-29  Thomas Helvey <tomh@inxpress.net>
7551         * ircd/ircd.c: refactor server initialization a bit, use
7552         getopt for parsing command line, refactor init_sys, main,
7553         and other bits.
7554
7555         * ircd/s_bsd.c: add functions for initialization to clean
7556         up logic a bit and remove duplicated code.
7557
7558         * include/ircd.h: add struct for server process related
7559         variables.
7560
7561 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
7562
7563         * ircd/channel.c: initial definition of mode_parse(); flags to
7564         prevent doing the same thing multiple times; helper method
7565         send_notoper() to send a "Not oper"/"Not on channel" notice
7566
7567         * include/channel.h: declare mode_parse() and helper flags
7568
7569         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
7570         sending to match the current action of set_mode() closely enough
7571         that hopefully there won't be major conflicts
7572
7573         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
7574         building logic, reversed the order of the arguments to mode
7575         commands to have '-' preceed '+'
7576
7577 2000-03-29  Thomas Helvey <tomh@inxpress.net>
7578         * ircd/s_bsd.c (add_connection): don't disable socket options
7579         let OS tune itself and allow important performance tweaks to 
7580         work.
7581
7582 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
7583
7584         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
7585         confused by set_mode, which is doing some really weird logic;
7586         guess what I'm going to rewrite next?  ;)
7587
7588 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
7589
7590         * include/channel.h: added MODE_SAVE for the bounds checking stuff
7591         in modebuf_flush
7592
7593         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
7594         make it do bounds checking on the buffer; all modes are sent only
7595         if the all parameter is 1; modebuf_flush is the exported wrapper
7596
7597         * include/channel.h: add BOUNCE, renumber flags to get a little
7598         more space
7599
7600         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
7601         BOUNCE; send DESYNCH message
7602
7603 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
7604
7605         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
7606         channel actually has in effect for deletion
7607
7608         * ircd/channel.c: added explanatory comments to all added
7609         functions; made flushing take place at the correct place even if
7610         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
7611         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
7612         is empty, fixed the apparent source, removed some bogus string
7613         termination code, properly terminate the mode strings, add support
7614         for HACK2 and HACK3, made limit strings not be sent if the limit
7615         is being removed, changed where '+' and '-' come from in sent
7616         strings, added support for DEOP flag, set up bouncing code for
7617         HACK2
7618
7619         * ircd/Makefile.in: ran make depend
7620
7621         * include/channel.h: added new defines for future functionality,
7622         made modebuf_flush() return int so I can use tail recursion
7623
7624         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
7625         to make it all compile
7626
7627         * ircd/m_opmode.c: add msg.h to includes...
7628
7629         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
7630
7631         * ircd/channel.c (modebuf_flush): realized I forgot to
7632         nul-terminate addbuf/rembuf properly...
7633
7634         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
7635
7636         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
7637         sendto_serv_butone--blah^2
7638
7639         * ircd/send.c (sendto_serv_butone): stupid comments confused me
7640
7641         * ircd/channel.c (modebuf_flush): if there are no mode changes to
7642         propagate, we're done...
7643
7644         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
7645         not sendto_all_butone
7646
7647         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
7648
7649         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
7650
7651         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
7652         the list
7653
7654         * ircd/parse.c: added messages for opmode and clearmode
7655
7656         * include/handlers.h: added declarations for mo_opmode(),
7657         ms_opmode(), mo_clearmode(), and ms_clearmode()
7658
7659         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
7660         TOK_CLEARMODE
7661
7662         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
7663         MODEBUF_DEST_OPMODE flag
7664
7665         * ircd/channel.c (modebuf_flush): added new flag,
7666         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
7667         to originate from source's server (or source itself, if
7668         IsServer(source)); also causes a server-level MODE to be sent as
7669         OPMODE instead
7670
7671         * include/channel.h: defined MODEBUF_DEST_SERVER,
7672         MODEBUF_DEST_HACK4
7673
7674         * ircd/channel.c: Add another argument to build_string() to handle
7675         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
7676         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
7677         to be sent out
7678
7679 2000-03-27  Perry Lorier <isomer@coders.net>
7680
7681         * ircd/s_bsd.c: fixed missing 'u' typo.
7682
7683 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
7684
7685         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
7686         _mode_string(), _mode_client(), _flush(); also implemented a
7687         simple build_string()
7688
7689         * include/channel.h: added definition of ModeBuf, modebuf_*
7690         manipulation functions, and a couple of helper macros
7691