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