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