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