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