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