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