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