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