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