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