1 2004-05-15 Michael Poole <mdpoole@troilus.org>
3 * ircd/channel.c (can_join): Revert to using IsInvited() rather
4 than walking the list directly.
5 (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to
6 use feature_bool(FEAT_HIS_SNOTICES) instead.
8 2004-05-15 Kevin L Mitchell <klmitch@mit.edu>
10 [Original ChangeLog date: 2004-01-31 -MDP]
12 * ircd/channel.c (mode_parse_key): don't allow , in keys!
14 2003-04-12 David Mansell (splidge) <splidge@sf.net>
16 [Original ChangeLog date: 2003-04-14 -MDP]
18 * ircd/channel.c: When keys and limits conflict on burst, the key
19 which is first alphabetically or the limit which is lower will be
20 used by both servers. This matches pre-2.10.11 behaviour.
23 2004-05-15 David Mansell <splidge@quakenet.org>
25 [Original ChangeLog date: 2002-12-28 -MDP]
27 * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is
28 set, don't allow -l with negative parameter (or unsigned >2^31).
30 2004-05-15 David Mansell <splidge@quakenet.org>
32 [Original ChangeLog date: 2002-12-31 -MDP]
34 * ircd/m_burst.c (ms_burst): when kicking net riders, clear
37 2004-05-15 Isomer <isomer@undernet.org>
39 [Original ChangeLog date: 2003-11-04 -MDP]
41 * ircd/s_serv.c: Burst glines/jupes early
43 2004-05-15 volta <volta2@gmx.de>
45 [Original ChangeLog date: 2003-04-26 -MDP]
47 * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that
48 allows users to see their own ip & hostname. (Should solve
49 all problems with dcc)
51 2004-05-15 Kevin L Mitchell <klmitch@mit.edu>
53 [Original ChangeLog date: 2003-06-13 -MDP]
55 * ircd/m_settime.c: it's supposed to be %ld, not %l
57 2004-05-15 Isomer <isomer@undernet.org>
59 [Original ChangeLog date: 2004-03-20 -MDP]
61 * ircd/m_invite.c: Disallow invites to non existant channels
63 2004-05-15 David Mansell <splidge@quakenet.org>
65 [Original ChangeLog date: 2003-04-26 -MDP]
67 * ircd/m_invite.c: let +k users invite into channels they aren't on.
69 2004-05-15 hikari <shadow@undernet.org>
71 [Original ChangeLog date: 2003-07-13 -MDP]
73 * ircd/IPcheck.c: Fixed (another) overflow problem in
74 ip_registry_check_local()
76 [Original ChangeLog date: 2003-06-29 -MDP]
78 * ircd/IPcheck.c: Fixed overflow problem in
79 ip_registry_connect_fail()
81 2004-05-15 Isomer <isomer@undernet.org>
83 [Original ChangeLog date: 2003-05-02 -MDP]
85 * ircd/IPcheck.c: Added assert()'s to check for underflow
87 2004-05-15 Kevin L Mitchell <klmitch@mit.edu>
89 [Original ChangeLog date: 2003-11-22 -MDP]
91 * tools/wrapper.c: commit uid on chroot fix from ubra
93 * ircd/version.c.SH: fix generation generation
95 2004-05-15 Isomer <isomer@undernet.org>
97 [Original ChangeLog date: 2003-11-23 -MDP]
99 * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes
100 to off. if an admin is smart enough to understand these features
101 they can enable them manually.
103 2004-05-15 splidge <splidge@quakenet.org>
105 [Original ChangeLog date: 2003-03-26 -MDP]
107 * ircd/include/ircd_features.h, include/ircd_osdep.h,
108 ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c,
109 ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c
110 ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be
113 2004-05-15 Isomer <isomer@undernet.org>
115 [Original ChangeLog date: 2003-11-18 -MDP]
117 * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up
118 the preregistration subsystem allowing customisation of timers,
119 make the dns resolver stats oper only, and make it much more clear
120 what all the numbers are.
122 2004-05-15 Spike <spike@undernet.org>
124 [Original ChangeLog date: 2003-11-23 -MDP]
126 * ircd/IPcheck.c: Make IPcheck constants configurable
128 2004-05-14 Kevin L Mitchell <klmitch@mit.edu>
130 [Original ChangeLog date: 2003-11-22 -MDP]
132 * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of
133 the maximum allowed length (NICKLEN) or the allowed nickname
134 length specified as the NICKLEN feature
136 * ircd/ircd_features.c: declare NICKLEN and set its default value
139 * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little
142 * include/ircd_features.h: add NICKLEN feature
144 * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15
146 * doc/readme.features: document new NICKLEN feature
148 * doc/example.conf: list new NICKLEN F-line
150 2004-05-14 Matthias Crauwels <ultimate_@wol.be>
152 [Original ChangeLog date: 2003-06-08 -MDP]
154 * ircd/gline.c: fixed the counting bug in gline_memory_count
156 * ircd/jupe.c: fixed the counting bug in jupe_memory_count
158 2004-05-14 Michael Poole <mdpoole@troilus.org>
160 * ircd/m_mode.c (ms_mode): Do not always try to call
161 set_user_mode() when parv[1] is a channel name.
163 2004-05-10 Michael Poole <mdpoole@troilus.org>
165 Implement a per-connection-class default usermode option.
167 * doc/example.conf: Illustrate how to use the option.
169 * include/class.h (struct ConnectionClass): New "default_umode"
171 (ConfUmode): New macro.
173 * include/client.h (client_get_default_umode): New function.
175 * ircd/client.c (client_get_default_umode): Implement it.
177 * ircd/ircd_lexer.l (usermode): New token.
179 * ircd/ircd_parser.y (classblock, etc): New syntax.
181 * ircd/s_user.c (register_user): Set default user modes for user.
182 This sends the new mode to the user, so the explicit send later
183 is no longer necessary.
185 2004-05-10 Michael Poole <mdpoole@troilus.org>
187 Forward port of asuka-topicburst.patch from Quakenet's "Asuka"
190 * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature.
192 * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE,
193 also send a TOPIC to the peer.
195 * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean
196 feature, defaulting to FALSE.
198 * ircd/m_topic.c (do_settopic): Add argument for topic timestamp,
199 and allow F:HIS_BANWHO to hide the originator of the topic.
200 (ms_topic): Parse optional timestamp arguments to TOPIC, and use
201 them to decide whether to ignore the topic.
203 2004-05-10 Michael Poole <mdpoole@troilus.org>
205 Forward port of delayed-join.patch from Quakenet's "Asuka" patch
206 set (which was a port of code I wrote for the other ircu).
208 * include/channel.h (CHFL_DELAYED): New membership flag.
209 (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes.
210 (infochanmodes): Add +D to list of supported channel modes.
211 (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros.
212 (member_can_send_to_channel, client_can_send_to_channel): Add
213 "reveal" parameter to indicate whether a request should cause
214 a join-delayed user to become visible.
215 (RevealDelayedJoin, CheckDelayedJoins): New functions.
217 * include/numeric.h (RPL_DELNAMREPLY): New numeric.
219 * include/s_user.h (NAMES_DEL): New flag for do_names().
221 * include/supported.h (FEATURESVALUES2): Add +D to list of
222 supported channel modes.
224 * ircd/channel.c (remove_member_from_channel,
225 member_can_send_to_channel, client_can_send_to_channel,
226 joinbuf_join): Handle join-delayed users.
227 (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush,
228 modebuf_extract, mode_process_clients, mode_parse_mode,
229 mode_parse): Handle delayed-join channels.
230 (RevealDelayedJoin, CheckDelayedJoins): New functions.
232 * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice,
233 server_relay_channel_message, server_relay_channel_notice): Add
234 argument for "reveal" parameter to client_can_send_to_channel().
236 * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels.
238 * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D.
240 * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a
243 * ircd/m_kick.c (m_kick): For join-delayed members, only send the
244 KICK to the kicker and kickee. Then check whether +d can be
247 * ircd/m_names.c (do_names): Show join-delayed users if and only
248 if the NAMES_DEL flag is given. If NAMES_DEL is given, also use
249 RPL_DELNAMREPLY instead of RPL_NAMREPLY.
250 (m_names): If NAMES -D, pass NAMES_DEL to do_names().
252 * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for
253 member_can_send_to_channel(). Set CHFL_DELAYED join in joinbuf if
254 the user is join-delayed.
256 * ircd/m_quit.c (m_quit): Handle join-delayed users and new
257 argument for member_can_send_to_channel().
259 * ircd/m_topic.c (do_settopic): If a join-delayed channel member
260 changes the topic, reveal the member.
262 * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for
263 "reveal" parameter to client_can_send_to_channel().
265 * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise.
267 * ircd/m_who.c (m_who): Skip join-delayed members where we skip
270 * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed
271 users. Use slightly more efficient macros rather than function
272 calls to test for ops and voice.
274 * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string.
276 * ircd/s_user.c (hide_hostmask): For users with no modes in a
277 join-delayed channel, do not send JOIN to other members after the
280 * ircd/send.c (sendcmdto_common_channels_butone): Skip
281 join-delayed users where we skip zombies.
283 2004-05-10 Michael Poole <mdpoole@troilus.org>
285 * ircd/ircd_events.c: Actually reference and try to use the epoll
286 event engine. Omitted from yesterday's commit.
288 2004-05-09 Michael Poole <mdpoole@troilus.org>
290 Forward port of Paul "Zoot" Chang's pseudo-command.patch and
291 pseudo-support.patch.
293 * doc/example.conf: Illustrate how to use the feature.
295 * include/handlers.h (m_pseudo): Declare new handler function.
297 * include/ircd_features.h (HIS_STATS_R): Add a feature to control
298 user visibility of the pseudo-commands.
300 * include/msg.h: Add flag and field for the extra information used
301 to select a pseudo-command's target.
303 * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add
306 * include/parse.h (register_mapping, unregister_mapping): Declare.
308 * include/s_conf.h (struct nick_host, struct s_map,
309 GlobalServiceMapList): Define.
311 * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC. Add generated
312 files to "make depend" dependency list. Update dependencies.
314 * ircd/ircd_features.c (HIS_STATS_R): Define feature type and
317 * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens.
319 * ircd/ircd_parser.y: Support "Pseudo" configuration blocks.
321 * ircd/parse.c (msgtab): Add initializer for field "extra" to all
323 (msg_tree_insert, msg_tree_remove, register_mapping,
324 unregister_mapping): New functions.
325 (parse_client): Implement MFLG_EXTRA extra argument passing.
327 * ircd/s_conf.c (GlobalServiceMapList): New variable.
329 * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format
330 strings for new numeric responses.
332 * ircd/s_stats.c (stats_mapping): New function.
333 (statsinfo): Add entry for /stats R and make old /stats r entry
336 2004-05-09 Michael Poole <mdpoole@troilus.org>
338 * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for
339 yyerror() so that configuration errors all go to the same place.
341 * ircd/s_conf.c: New variables conf_error and conf_already_read.
342 conf_error is cleared by read_configuration_file() and set by
343 yyerror(); conf_already_read is set by read_configuration_file()
344 and never cleared. Make yyerror() display error to stderr before
345 conf_already_read is set. Make configuration errors a fatal
346 condition in init_conf().
348 2004-05-09 Michael Poole <mdpoole@troilus.org>
350 * ircd/Makefile.in: Pass the source directory as an argument to
351 version.c.SH so it knows where to find the source files for an
354 * ircd/version.c.SH: Use that information.
356 2004-05-09 Michael Poole <mdpoole@troilus.org>
358 * Makefile.in: Ensure ${prefix}/include exists, since the adns
359 install puts files in that directory. (The adns Makefile does
360 not use configure's ${includedir}.)
362 2004-05-09 Michael Poole <mdpoole@troilus.org>
364 * doc/readme.features: The logic for F:AUTOHIDE was removed, but
365 not its documentation. Fix that omission.
367 * include/ircd_features.h, ircd/ircd_features.c: Remove the unused
368 definitions for FEATURE_AUTOHIDE.
370 2004-05-09 Michael Poole <mdpoole@troilus.org>
372 * doc/readme.who: Document the support for account matching and
373 display in the WHO command.
375 2004-05-09 Michael Poole <mdpoole@troilus.org>
377 * ircd/ircd.c (main): Move check_pid() call until after we read
378 the configuration file so that F:PPATH works correctly.
380 2004-05-09 Michael Poole <mdpoole@troilus.org>
382 * ircd/match.c (match): Use ToLower() instead of tolower() for
383 character comparisons.
385 2004-05-09 Michael Poole <mdpoole@troilus.org>
387 * ircd/s_user.c (register_user): Initialize "flag" (user's old
388 modes) passed to send_umode() so that the real set of modes are
391 2004-05-09 Michael Poole <mdpoole@troilus.org>
393 * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new
394 server, not to a hub between us and the new server.
396 * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE
397 on target server rather than FLAG_CHSERV (so that directed
398 messages work at all).
400 2004-05-09 Michael Poole <mdpoole@troilus.org>
402 * configure.in: Add checks for epoll_* system call family.
404 * configure: Regenerate.
406 * ircd/engine_epoll.c: New file; forward ported from 2.10.11
409 2004-05-09 Michael Poole <mdpoole@troilus.org>
411 * include/ircd_alloc.h: Add definitions for MyRealloc, since they
412 are needed by kqueue and epoll event engines; kill #if 0'd block.
414 * include/memdebug.h: Declare dbg_realloc() helper function.
416 * ircd/ircd_alloc.c: Implement DoRealloc() helper function.
418 * ircd/memdebug.c: Implement dbg_realloc() helper function.
420 2004-05-09 Michael Poole <mdpoole@troilus.org>
422 * ircd/channel.c (find_no_nickchange_channel): Disallow nick
423 changes on a moderated channel with neither ops nor voice.
425 * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match.
427 2004-01-20 Perry Lorier <isomer@undernet.org>
429 * ircd/ircd_parser.y: Fixed parser to work with a more modern bison
431 2004-01-21 Gavin Grieve <hektik@dimebox.net>
433 * ircd/channel.c, include/channel.h: bring forward the IsUserParting()
434 code to resolve the multiple part messages bug written by Entrope.
436 2003-08-12 Timothy Vogelsang <net@astrolink.org>
438 * ircd/match.c: (match) rewrote function based on existing
439 code from the hybrid ircd -- death to goto
441 2003-07-07 Bas Steendijk <steendijk@xs4all.nl>
443 * ircd/s_user.c: invalidate ban cache for user on host hiding/account
445 2003-07-04 Bas Steendijk <steendijk@xs4all.nl>
447 * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c,
448 ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user
449 B is an oper", appeared in a lot of places. made it a define SeeOper.
451 2003-07-04 Bas Steendijk <steendijk@xs4all.nl>
452 * ircd/s_user.c: umode_str (user modes in N token) internal flags var
453 was not initialized to the user's flags, returned a string with
456 2003-07-01 Bas Steendijk <steendijk@xs4all.nl>
458 * ircd/m_names.c: length counter being incremented one too many
459 for each nick, resulting names reply messages are about 50 chars
460 shorter than possible. fixed.
462 2003-06-29 Bas Steendijk <steendijk@xs4all.nl>
464 * ircd/channel.c: don't ever send mode changes for local channels to
467 2003-06-27 Bas Steendijk <steendijk@xs4all.nl>
469 * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c:
470 moved the supported channel/user mode strings of the 004 reply from
471 s_err.c to the header files where the channels/user modes are
472 defined, and show or hide +Au based on OPLEVELS setting.
474 2003-06-25 Bas Steendijk <steendijk@xs4all.nl>
476 * ircd/m_burst.c: Clear topic set by netrider on burst.
478 2003-08-05 Diane Bruce <db@db.net>
480 * ircd/parse.c: Fixed the typo the fix of the typo created
482 2003-08-01 Diane Bruce <db@db.net>
484 * ircd/parse.c: Fixed typo
486 2003-06-22 Diane Bruce <db@db.net>
488 * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora
490 2003-06-22 Bas Steendijk <steendijk@xs4all.nl>
492 * include/ircd_features.h, include/supported.h, ircd/ircd_features.c,
493 ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf:
494 Make ability to create local channels a feature which can be disabled.
496 2003-06-22 Bas Steendijk <steendijk@xs4all.nl>
498 * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c,
499 ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which
500 makes it possible to disable the +Au/oplevels functions.
502 2003-06-17 Alex Badea <vampire@p16.pub.ro>
504 * ircd/res_adns.c: included sys/types.h, for non-Linux
508 2003-03-06 Kevin L. Mitchell <klmitch@mit.edu>
510 * libs/dbprim: database primitives library, including
511 flexible linked lists, auto-resizing hash tables, and sparse
512 matrices. Has a test suite for everything but portions of
513 the sparse matrix routines (I'm lazy; someone help me write
514 them!). Documentation generated by doxygen--feel free to
515 critique, suggest phrasing improvements, etc.
517 2003-01-22 Kevin L. Mitchell <klmitch@mit.edu>
518 * libs: put third-party libraries in this subdirectory.
519 Started by copying adns into it--will fix the rest and remove
520 the top-level copy later.
522 2003-01-14 Andrew Miller <a1kmm@mware.virtualave.net>
523 * ircd/m_settime.c: Fixed a minor format string issue.
525 2003-01-12 Thomas Helvey <tom.helvey@cox.net>
526 * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c,
527 ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence
528 bugs in transmit.c and m_opmode.c.
530 2003-01-12 Thomas Helvey <tom.helvey@cox.net>
531 * include/class.h, include/ircd_string.h, ircd/class.c,
532 ircd/gline.c, ircd_string.c: Fix undefined order
533 of evaluation bug in gline.c, add general purpose hasher for
536 2003-01-11 Thomas Helvey <tom.helvey@cox.net>
537 * include/channel.h, include/ircd_alloc.h, ircd/channel.c,
538 ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c,
539 ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y,
540 ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c,
541 ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c,
542 ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles
543 with g++ again, type safety, const correctness fixes,
544 remove C++ keywords again :/
546 2003-01-11 Thomas Helvey <tom.helvey@cox.net>
547 * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature
548 table data was in a different order than the feature data
549 structure, which resulted in a wild index being used in
550 feature_bool. The feature_bool function didn't check it's
551 index before indexing the features array resulting in
552 a core dump on /oper.
554 2003-01-10 Thomas Helvey <tom.helvey@cox.net>
555 * include/client.h, include/res.h, include/s_bsd.h,
556 ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c,
557 ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c:
558 Remove resolver cache wart, change hostent representation, cleanup
561 2003-01-10 Thomas Helvey <tom.helvey@cox.net>
562 * ircd/map.c, ircd/Makefile.in, include/map.h: Remove
563 HEAD_IN_SAND macros to get server to build, rebuild dependencies.
565 2003-01-08 Fredrik Soderblom <froo@quakenet.org>
566 * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify
567 RPL_HOSTHIDDEN and the use of it.
569 2003-01-07 Kevin L Mitchell <klmitch@mit.edu>
571 * BUGS: removed from distribution
573 * ChangeLog.07: moved into doc/history
575 * ChangeLog.10: moved into doc/history
577 * INSTALL: pulled up from u2.10.11.04
579 * README: pulled up from u2.10.11.04
581 * README.FreeBSD: pulled up from u2.10.11.04
583 * README.Solaris: pulled up from u2.10.11.04
585 * RELEASE.NOTES: add sysctl note from u2.10.11.04
587 * TODO: removed from distribution
589 * configure.in: add extra check for res_mkquery; remove
590 --disable-headinsand since it no longer has any effect; pull up
591 "Enable" vs. "Disable" changes from u2.10.11.04
593 * doc/readme.asll: pulled up from u2.10.11.04
595 * doc/readme.features: pull up missing documentation, including a
596 couple of corrections
598 * doc/readme.log: correct text to read FACILITY instead of SYSLOG
599 in the documentation for configuring syslog facility
601 * include/channel.h: declare IsInvited()
603 * include/handlers.h: do some minor reorderings
605 * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS
608 * include/ircd_policy.h: removed from the distribution
610 * include/jupe.h: declare jupe_memory_count()
612 * include/msgq.h: remove MsgCounts structure
614 * include/numeric.h: add a blank line after RPL_STATSQLINE; add
617 * include/s_stats.h: include ircd_features.h for definition of the
618 enum; remove extraneous declarations
620 * ircd/Makefile.in: add LDFLAGS to table_gen
622 * ircd/engine_poll.c: remove commented-out assertion
624 * ircd/ircd.c: include s_stats.h and call stats_init()
626 * ircd/ircd_features.c: feature names have to be case-sensitive
627 because of some of the HIS features
629 * ircd/ircd_relay.c: reorder includes
631 * ircd/m_account.c: include string.h for strlen()
633 * ircd/m_clearmode.c: remove extraneous clean_channelname(); make
634 sure to refer to chname, not parv[1]
636 * ircd/m_create.c: remove the broken code that squits servers that
637 are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op
640 * ircd/m_gline.c: if it's a server, force the gline; don't
641 gline_find() before determining if the oper had the privilege
643 * ircd/m_kick.c: kicks by servers should appear to be from the
644 local server thanks to HIS
646 * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h
648 * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h
650 * ircd/m_nick.c: added an assertion and some explanatory comments
651 pulled up from u2.10.11.04
653 * ircd/m_opmode.c: no longer requiring oper to be on the channel;
654 search for quarantines before allowing ops
656 * ircd/m_privmsg.c: one character typo that probably means nothing
658 * ircd/m_settime.c: add back comments I left in the code
660 * ircd/m_squit.c: remove protocol_violation() notices
662 * ircd/m_userhost.c: return realhost if user is an oper
664 * ircd/m_wallvoices.c: only m_wallvoices() should add a +
666 * ircd/m_who.c: add handling for the 'a' field
668 * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for
671 * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some
672 ancient bug fixes from the u2.10.11 branch
674 * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h;
675 call motd_memory_count(), gline_memory_count(), and
676 jupe_memory_count() when reporting memory usage; add back a
677 comment regarding "DBuf caveats"
679 * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up
680 change to ERR_NOPRIVILEGES wording
682 * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h
684 * ircd/s_stats.c: count from 0 and not 1 when initializing the
687 * ircd/s_user.c: comment out assertion; remove extraneous
688 definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now
689 hidden" reply; don't detach oper confs unless sptr is not an oper
691 * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +);
692 change channel name character range to be from '\041' (!) to
695 * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04
697 * tools/linesync/linesync.conf: pull up from u2.10.11.04
699 * tools/linesync/linesync.sh: pull up from u2.10.11.04
701 2003-01-07 Andrew Miller <a1kmm@mware.virtualave.net>
702 * almost everything: Forward ported numerous changes from .11 to .12
704 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
705 * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket
706 when they become a server.
707 * ircd/s_bsd.c(read_packet): Check they are now a server *after* the
709 * ircd/class.c(make_class): Fixed an assert to be more useful.
711 2002-07-05 Andrew Miller <a1kmm@mware.virtualave.net>
713 * ircd/packet.h: (connect_dopacket): Made a dopacket function for
714 connecting links which sends the messages through the correct message
716 * ircd/s_bsd.c(read_packet): Put packets through the correct handler
717 for connecting links. Properly handle unknown links becoming
718 connecting or servers.
720 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
721 * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing
722 with, this is used quite a lot.
723 * ircd/class.c (make_class): Initialise the ref_count to 1 so that
725 * ircd/class.c (add_class): When updating a class, free the old name
726 first to prevent leakage.
727 * ircd/class.c (class_delete_marked): Decrement the ref_count for the
728 class after it is removed from the linked list.
729 * ircd/ircd_parser.y: Changed a free to MyFree().
730 * ircd/ircd_parser.y: Removed a few debugging messages.
732 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
733 * s_bsd.c (read_packet): Our daily addition to the list of entities to
734 treat as servers - Connecting servers.
736 2002-07-01 Andrew Miller <a1kmm@mware.virtualave.net>
737 * doc/debug_memleak_gc.patch,
738 * include/ircd_ircd_alloc.h,
739 * include/memdebug.h,
742 * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks
743 and notify the operators.
745 2002-06-29 Andrew Miller <a1kmm@mware.virtualave.net>
747 * ircd/s_bsd.c (read_packet): don't make handshaking servers go through
750 2002-06-18 Andrew Miller <a1kmm@mware.virtualave.net>
752 * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood
755 2002-06-18 Alex Badea <vampire@p16.pub.ro>
757 * ircd/m_burst.c (ms_burst): kick local members if the channel
758 has a larger local TS and it's +i or +k remotely (anti net.ride)
760 * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines
762 * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE)
764 * include/s_conf.h: externalized lookup_confhost
766 * adns/Makefile.in: compilation-outside-source-tree fix
768 2002-06-17 Alex Badea <vampire@p16.pub.ro>
770 * adns/*: added a slightly hacked copy of adns
772 * configure.in: added a --disable-adns switch if you want
773 to use the old libresolv res.c
775 * configure: ran autoconf
777 * ircd/res_libresolv.c: renamed from res.c
779 * ircd/res_adns.c: added adns resolver
781 2002-06-17 Alex Badea <vampire@p16.pub.ro>
783 * ircd/ircd_parser.y: fixed 'Connect' block processing so now
784 you can actually connect to other servers
786 2002-06-04 Alex Badea <vampire@p16.pub.ro>
788 * ircd/m_stats.c (report_servers_verbose): oops, fixed it so
789 it displays all servers, not just local connects
791 2002-05-30 Jean-Edouard Babin <Jeb@jeb.com.fr>
793 * ircd/m_server.c (mr_server): fixed core bug on insufficient
796 2002-05-26 Jeekay <jeekay@irc.planetarion.com>
798 * ircd/m_join.c (HasControlChars): fixed unsigned vs signed
800 2002-05-26 Jeekay <jeekay@irc.planetarion.com>
802 * ircd/m_join.c (m_join,HasControlChars): check if a channel
803 name has any control chars (<=32) in it before allowing a
806 2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
807 * ircd/ircd_relay.c: stop an information leak about the
808 the network topography from relayed messages.
810 2002-04-19 Alex Badea <vampire@p16.pub.ro>
812 * ircd/m_who.c (m_who): disallow non-opers to /who server.name
814 2002-04-18 Alex Badea <vampire@p16.pub.ro>
816 * ircd/s_err.c (RPL_STATSILINE): connection classes are now
819 2002-04-17 beware <steendijk@tomaatnet.nl>
821 * m_whois.c (m_whois): disallow remote queries for non-existent
822 local users when originated by a non-oper
824 2002-04-16 Alex Badea <vampire@p16.pub.ro>
826 * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
827 reply if the servername contains a '*' and it doesn't exist
829 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
831 2002-04-16 beware <steendijk@tomaatnet.nl>
833 * ircd/m_whois.c: the previous patch broke whois, fixed it
836 * ircd/m_admin.c: cleaned up m_admin too while we're here,
837 hunt_server_cmd can do all the work for us
839 2002-04-15 Alex Badea <vampire@p16.pub.ro>
841 * ircd/m_stats.c: added verbose server reporting (/stats v
842 or /stats V for machine-readable format) (bugzilla bug 52)
844 * include/numeric.h: added RPL_STATSVERBOSE 236
846 * ircd/s_err.c: added RPL_STATSVERBOSE
848 * ircd/s_stats.c: added help for stats 'v'
850 2002-04-15 Alex Badea <vampire@p16.pub.ro>
852 * ircd/class.c (get_client_class): fixed typo which caused
853 /trace (and perhaps motd) to core
855 2002-04-15 beware <steendijk@tomaatnet.nl>
857 * ircd/m_whois.c: Fixed /whois servermask nomatch bug
858 where normal users could use the function to discover servers,
859 also the NOSUCHSERVER check code was missing.
861 2002-04-14 Alex Badea <vampire@p16.pub.ro>
863 * ircd/ircd_parser.y: fixed cli_info(&me) not being set
864 from 'description' conf
866 2002-04-13 Stephane Thiell <mbuna@undernet.org>
868 * ircd/m_whois.c: removed FindUser() in ms_whois to fix
869 remote whois relaying.
871 * ircd/class.c: removed unused (and duplicated) code
874 * include/class.h: removed unused function prototype.
876 * config.guess: upgraded with latest
878 * config.sub: upgraded with latest
880 2002-04-12 Alex Badea <vampire@p16.pub.ro>
882 * ircd-patch: report which files failed the dry run (so the
883 user may force the patch if the rejects are in less-than-vital
884 files, such as ChangeLog or documentation)
886 2002-04-12 Alex Badea <vampire@p16.pub.ro>
888 * ircd/m_invite.c: don't propagate invites for local channels
890 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
892 2002-04-10 Joseph Bongaarts <foxxe@wtfs.net>
894 * ircd/ircd.c: The last fix broke autoconnects completely.
895 Fixed it another way.
897 2002-04-09 Brian Cline <clineb@cs.winthrop.edu>
899 * ircd/ircd.c (try_connections): To avoid problems with infinite event
900 loops, don't try connecting to servers whose connect frequency is 0.
902 2002-04-10 Alex Badea <vampire@p16.pub.ro>
904 * ircd/ircd_parser.y: fixed a "features" block parse bug
906 * tools/convert-conf.py: added a configuration file converter
907 from 2.10.11 to 2.10.12 format
909 * ircd-patch: added GPL information to top of file
911 2002-04-09 Alex Badea <vampire@p16.pub.ro>
913 * configure.in: added a human-readable report of configured
914 options at the end of the configure process
916 * configure: regenerated with autoconf
918 2002-04-08 Gavin Grieve <ggrieve@ihug.co.nz>
920 * include/supported.h: change CHARSET to CASEMAPPING after
921 discussions as to what would be the preferred name.
923 2002-04-05 Andrew Miller <a1kmm@mware.virtualave.net>
924 * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege
926 * Fix a minor parser bug that meant rehash didn't always
929 2002-04-03 Alex Badea <vampire@p16.pub.ro>
931 * include/channel.h: fix compiler warnings (paratheses around &&)
933 * ircd/channel.c (modebuf_extract): fix compiler warnings
934 (uninitialized variables)
936 * ircd/Makefile.in: make ircd properly compile outside the
939 2002-04-03 Alex Badea <vampire@p16.pub.ro>
941 * include/s_user.h: added a sptr parameter to InfoFormatter
944 * ircd/m_who.c: don't match IPs for clients which have a hidden host,
945 except when the inquiring user is an oper
947 * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the
948 target has a hidden host, but show real IP to opers
950 * ircd/m_userip.c (userip_formatter): add sptr parameter; show the
951 fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but
952 show real IP to opers
954 * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter
956 * ircd/s_user.c (send_user_info): pass sptr to the formatting function
958 * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which
959 fake IP to show for clients with a hidden host)
961 * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP
963 * doc/example.conf: default value for FEAT_HIDDEN_IP
965 * doc/readme.features: documented FEAT_HIDDEN_IP
967 2002-04-03 Andrew Miller <a1kmm@mware.virtualave.net>
968 * doc/example.conf: Cleaned up some comments that ended up in
969 strange places due to problems in the merge process.
970 * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that
971 probably dates back to Jarkko code.
973 2002-04-02 Kevin L Mitchell <klmitch@mit.edu>
975 * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message
976 from the path before calling do_kill(); add a msg argument to
977 do_kill() and use it in preference to comment; remove all that old
978 code that fiddled with the buf and the comment
980 * ircd/ircd_log.c (log_write_kill): add a seperate msg argument
982 * include/ircd_log.h: add a seperate msg argument to
985 * ircd/ircd.c: display event engine and MAXCONNECTIONS information
987 2002-04-02 Alex Badea <vampire@p16.pub.ro>
989 * ircd-patch: Automatically generate a version string from patches
991 2002-04-02 Alex Badea <vampire@p16.pub.ro>
993 * ircd-patch: Test before doing anything dangerous, provide -f to
994 to it anyway. exit levels for easy scripting.
996 2002-04-01 Kevin L Mitchell <klmitch@mit.edu>
998 * ircd/channel.c (joinbuf_join): don't add a channel to the list
999 in the joinbuf unless when we flush it, we empty the list
1001 2002-04-02 Andrew Miller <a1kmm@mware.virtualave.net>
1002 * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the
1003 old configuration file format.
1008 2002-03-23 Bert Faes <bert.faes@pandora.be>
1010 * s_misc.c made /trace reply always show the username
1012 2002-03-28 Kevin L Mitchell <klmitch@mit.edu>
1014 * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test
1015 for setrlimit, getrusage, and times
1017 * configure: rerun auto-conf
1019 * config.h.in: rerun autoheader
1021 2002-03-27 Kevin L Mitchell <klmitch@mit.edu>
1023 * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress
1024 sending of the key to the channel
1026 * ircd/channel.c (modebuf_flush_int): when processing keys, only
1027 include the actual key in the mode sent to the channel if
1028 MODEBUF_DEST_NOKEY is not set
1030 * include/channel.h: needed more bits for MODEBUF_DEST_*,
1031 especially when adding MODEBUF_DEST_NOKEY to force keys in the
1032 BURST to be reported as "*" to the channel
1034 * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets
1035 inherited from the class associated with the O-line
1037 2002-03-25 Kevin L Mitchell <klmitch@mit.edu>
1039 * ircd/s_user.c (set_nick_name): invalidate all ban valid caching
1040 when a user changes his nickname so we can catch if he now matches
1043 2002-03-20 Reed Loden <reed@redmagnet.com>
1044 * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
1046 * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN.
1048 2002-03-20 LordLuke <lordluke@undernet.org>
1049 * ircd/client.c: Add LOCOP_LIST_CHAN feature.
1051 * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature.
1053 2002-03-19 Joseph Bongaarts <foxxe@wtfs.net>
1055 * ircd/m_links.c: Make /links behave like /map for head_in_sand.
1056 cleaned up excess code.
1058 * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in
1059 map_add() and map_update() for links changes.
1061 * include/map.h: Added info and prot to struct Map
1063 * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time
1064 servers are cached in MapList
1066 * ircd/s_misc.c: changed #ifdef for map_update()
1068 * ircd/m_server.c: changed #ifdef for map_update()
1070 * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of
1073 * configure.in: add --disable-headinsand
1075 * configure: Ran autoconf
1077 * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show
1080 * ircd/s_stats.c: Made /stats i report connect limits
1082 * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of
1083 "*" for the password field.
1085 2002-03-19 LordLuke <lordluke@undernet.org>
1087 * include/channel.h: Allow opers to view +s channels in /list
1089 * include/client.h: Add "PRIV_LIST_CHAN" oper privilege
1091 * include/ircd_features.h: added "LIST_CHAN" feature
1093 * ircd/channel.c: Allow opers to view +s channels in /list
1095 * ircd/client.c: Add "PRIV_LIST_CHAN"
1097 * ircd/ircd_features.c: Add "LIST_CHAN" feature
1099 2002-03-13 Joseph Bongaarts <foxxe@wtfs.net>
1101 * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike).
1102 Must be more careful when forward porting by hand...
1104 2002-03-13 Carlo Wood <run@alinoe.com>
1106 * include/channel.h: CHFL_CHANNEL_MANAGER, new local
1107 channel flag set when someone creates a channel or joins
1108 using the Apass. IsChannelManager(), SetChannelManager():
1109 macros to manipulate new channel flag.
1110 channel_modes: Added new argument to avoid calling
1111 find_member_link more often than needed.
1113 * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
1114 ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
1115 ERR_UPASSNOTSET: new numeric replies.
1117 * ircd/channel.c: is_level0_op: removed.
1118 member_can_send_to_channel: disallow channel manager
1119 to talk. channel_modes: show upass to level0 ops.
1120 mode_parse_upass: Only the channel manager is allowed
1121 to change the upass. Only allow to set upass when apass
1122 is also set. mode_parse_apass: Don't allow to change the
1123 Apass if the channel is older than 48 hours. Only allow
1124 to remove the apass when upass is not set. Send clear
1125 warnings regarding the importance of apass.
1126 mode_process_clients: Don't change the oplevel of an opped
1127 member in a channel where upass is not set.
1129 * ircd/destruct_event.c: exec_expired_destruct_events:
1130 Bug fix: send DESTRUCT message when destructing a channel.
1132 * ircd/m_destruct.c: ms_destruct: Bug fix: use self as
1133 prefix for DESTRUCT message.
1135 * ircd/m_join.c: m_join: Handle apass and upass.
1137 * ircd/m_kick.c: m_kick: Don't allow to kick member with
1138 a higher or equal op-level.
1140 * ircd/m_mode.c: m_mode: Now pass member to channel_modes.
1141 ms_mode: Allow server to do modes on channels with apass
1144 * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL,
1145 ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET,
1146 ERR_UPASSNOTSET: new numeric replies.
1149 2002-03-10 Joseph Bongaarts <foxxe@wtfs.net>
1151 * ircd/m_kill.c: Last of the bug fixes for do_kill()
1153 * ircd/list.c: Don't remove clients from the linked list
1154 that aren't actually in the list.
1156 2002-03-08 Carlo Wood <run@alinoe.com>
1157 * include/channel.h: Added CHFL_BURST_ALREADY_OPPED
1158 and CHFL_BURST_ALREADY_VOICED.
1160 * ircd/m_burst.c: Allow BURST outside net-burst
1161 and take into account that users are already joined
1162 to the channel in that case.
1164 * ircd/m_destruct.c: Implementation of DESTRUCT
1167 * ircd/m_join.c: Set the channel creationtime to
1168 the timestamp of a message when that timestamp is
1170 2002-02-27 Reed Loden <reed@redmagnet.com>
1171 * tools/crypter: Updated some variables, added another notice,
1172 added CVS Id tag, and updated Perl location.
1174 * tools/ringlog.c: Added IRC - Internet Relay Chat,
1177 * tools/ringlog.pl: Added IRC - Internet Relay Chat,
1180 * tools/wrapper.c: Added IRC - Internet Relay Chat,
1183 * tools/mkpasswd.c: Added CVS Id tag
1185 * tools/sums: Updated to comply with sums being moved to tools/
1186 and added CVS Id tag
1188 * tools/README: Updated location of file and partly rewrote to fit
1191 * tools/Makefile.crypt: Updated location of file and added CVS Id
1194 * acconfig.h: Updated location of file
1196 * config.h.in: Updated location of file
1198 * tools/Bounce/bounce.conf: Added CVS Id tag
1200 * tools/Bounce/Bounce.cpp: Updated location of file
1202 * tools/Bounce/Bounce.h: Updated location of file
1204 * tools/hashtoy: Added CVS Id Tag
1206 2002-02-27 Carlo Wood <run@alinoe.com>
1208 * /ircd/ircd.c: check_pings: First check if a PING was sent at all.
1210 2002-03-01 Carlo Wood <run@alinoe.com>
1212 * include/channel.h: struct Channel: new attribute destruct_event.
1213 Prototype for destruct_channel().
1215 * include/destruct_event.h: new header file for destruct_event.c.
1217 * ircd/Makefile.in: New source file: destruct_event.c.
1219 * ircd/channel.c: sub1_from_channel: Don't destruct channel
1220 immedeately but instead schedule it for destruction after
1221 some time when a channel becomes empty (and clear invite
1222 only and limit in that case).
1223 destruct_channel: new function, was previously the destructing
1224 part of sub1_from_channel.
1225 add_user_to_channel: remove destruction request if any.
1227 * ircd/destruct_event.c: New file. Implementation of functions
1228 schedule_destruct_event_1m, schedule_destruct_event_48h,
1229 remove_destruct_event and exec_expired_destruct_events.
1231 * ircd/ircd.c: destruct_event_timer: new timer.
1232 main: use destruct_event_timer to call exec_expired_destruct_events
1235 * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty
1236 channels. Schedule new empty channels for destruction.
1238 * ircd/m_join.c: m_join: Destruct just-created channel immedeately.
1240 2002-03-01 Carlo Wood <run@alinoe.com>
1241 * ircd/s_misc.c: exit_client: Only call map_update()
1244 2002-02-28 Carlo Wood <run@alinoe.com>
1245 * include/channel.h: New attribute 'oplevel' in struct Membership.
1246 Added defines MAXOPLEVELDIGITS and MAXOPLEVEL.
1247 New macros: OpLevel(member): returns op-level of member and
1248 SetOpLevel(member, value): sets op-level of member.
1249 Prototype of add_user_to_channel: add oplevel to parameters.
1250 Prototype of mode_parse: add member to to parameters.
1252 * include/numeric.h: added ERR_NOTLOWEROPLEVEL.
1254 * ircd/s_err.c: idem.
1256 * ircd/channel.c: Removed unmatched '{' braces from comments
1257 (confuses vi). add_user_to_channel: oplevel is passed to function
1258 and added in the created MemberShip structure. send_channel_modes:
1259 Generate the nick:mode list of the BURST msg in the new style (with
1260 op-levels). DONE_UPASS/DONE_APASS: fixed typo in comment. struct
1261 ParseState: New attribute: member. mode_process_clients: Disallow
1262 deopping someone with an equal or higher op-level, take care of
1263 inheritance of op-level. mode_parse: member is passed to function
1264 and added in the created ParseState structure. joinbuf_join: pass 0
1265 as oplevel to add_user_to_channel as needed initialization of oplevel
1266 in struct MemberShip.
1268 * ircd/m_burst.c: ms_burst: Implementation of op-levels in the
1269 decoding of a BURST message and passing on a BURST message.
1270 Renamed default_mode to current_mode.
1272 * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse.
1274 * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member
1275 to mode_parse (causes opped member to get op-level 0).
1277 2002-02-25 Carlo Wood <run@alinoe.com>
1278 * include/channel.h: Added two new strings to struct Mode,
1279 upass and apass, both with maximum length PASSLEN (a new
1280 define in this file). Two new mode defines MODE_UPASS and
1283 * ircd/channel.c: is_level0_op: Added as dummy function.
1284 channel_modes/modebuf_flush_int/modebuf_extract/mode_parse:
1285 Added support for MODE_APASS (+A) and MODE_UPASS (+u).
1286 mode_parse_upass: New function to parse mode +u.
1287 mode_parse_apass: New function to parse mode +A.
1289 * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO).
1291 2002-02-25 Carlo Wood <carlo@alinoe.com>
1293 * ircd/m_server.c: remove unused variables
1295 2002-02-25 Joseph Bongaarts <foxxe@wtfs.net>
1297 * ircd/m_map.c: Modified to show a useful output to non-opered
1298 clients when HEAD_IN_SAND_MAP is defined. Servers are added to
1299 the list when first seen (after receiving SERVER) and that list
1300 is sent to clients. Servers are excluded from the list if they are
1301 hubs, services, or have been missing for more than 1 week.
1303 * ircd/map.c: Created file for map_* functions
1305 * include/map.h: Created file for map_* functions
1307 * ircd/m_server.c: Added calls to map_update()
1309 * ircd/s_misc.c: Added call to map_update()
1311 * ircd/parse.c: Changed to use m_map() and mo_map()
1313 2002-02-22 Reed Loden <reed@redmagnet.com>
1315 * ircd/m_connect.c: Removed an extra : in remote connect message.
1317 2002-02-19 Joseph Bongaarts <foxxe@wtfs.net>
1319 * ircd/whocmds.c: Local opers should also be able to
1320 see servernames in /who
1322 * ircd/gline.c: Fix core bug in gline_find()
1324 * ircd/m_kill.c: Bug fix for HIS_KILLWHO
1326 2002-02-19 John Buttery <john@io.com>
1328 * ircd/ircd.c: Updated "No such file" error message.
1330 2002-02-18 Joseph Bongaarts <foxxe@wtfs.net>
1332 * ircd/m_kill.c: Changed m_kill() to do_kill() because its not
1333 a message handler, and some general cleanups and bug fixes.
1335 * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding
1338 2002-02-16 Tim Vogelsang <net@astrolink.org>
1340 * ircd/m_kill.c: added a new static function, m_kill, which
1341 performs the actual kill.
1343 2002-02-14 Joseph Bongaarts <foxxe@wtfs.net>
1345 * Added support for LIST STOP
1347 2002-02-13 Joseph Bongaarts <foxxe@wtfs.net>
1349 * Merged changes from u2_10_11 to main branch.
1351 2002-02-08 Tim Vogelsang <net@astrolink.org>
1353 * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a
1356 2002-02-06 Kevin L Mitchell <klmitch@mit.edu>
1358 * ircd/s_auth.c (read_auth_reply): left out an = in an
1359 assertion--shouldn't have had any impact, though
1361 * ircd/Makefile.in: add a hook for using ringlog; run make depend
1363 * tools/ringlog.c: for the heck of it, add a comment including
1364 rules for /etc/magic
1366 2002-02-05 Kevin L Mitchell <klmitch@mit.edu>
1368 * tools/ringlog.pl: perl script to take output from ringlog and
1369 pass it to addr2line to get function, file, and line number
1372 * tools/ringlog.c: program/object to help in building function
1375 2002-02-04 Alex Badea <vampire@p16.pub.ro>
1377 * include/ircd_features.h: added new feature MOTD_BANNER
1379 * ircd/ircd_features.c: added new feature MOTD_BANNER
1381 * ircd/motd.c (motd_signon): send a one-line banner from
1382 FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD
1385 * doc/example.conf: default value for MOTD_BANNER feature
1387 * doc/readme.features: documented the MOTD_BANNER feature
1389 2002-02-04 Kevin L Mitchell <klmitch@mit.edu>
1391 * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR
1392 check; added character 'A' to the server options string to
1393 indicate when assertion checking is enabled
1395 2002-02-03 Kevin L Mitchell <klmitch@mit.edu>
1397 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1399 * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR
1400 event if the errno is EBADF, since the caller probably already
1401 knows about it and just hasn't gotten around to processing it yet
1403 * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event
1404 is generated; don't process socket_events() or socket_state() if
1405 an error occurred; add GEN_ERROR to list of flags in gen_flags()
1407 * include/ircd_events.h: define new GEN_ERROR flag; add a macro to
1410 2002-02-01 Kevin L Mitchell <klmitch@mit.edu>
1412 * ircd/channel.c: change make_nick_user_{ip,host} to not use a
1413 static buffer--instead, a buffer of the right size (NUH_BUFSIZE or
1414 NUI_BUFSIZE--I confess they're not well-named) is allocated by the
1417 2002-02-02 Alex Badea <vampire@p16.pub.ro>
1419 * include/client.h: added user flag FLAGS_HIDDENHOST
1421 * include/ircd_features.h: added FEAT_HOST_HIDING and
1424 * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY)
1425 to report real hostnames and IPs to opers
1427 * include/s_user.h: exported hide_hostmask()
1429 * include/send.h: changed sendcmdto_channel_butserv to
1430 sendcmdto_channel_butserv_butone; ditto for
1431 sendcmdto_common_channels
1433 * include/struct.h: added realhost to struct User
1435 * include/whowas.h: added realhost to struct Whowas
1437 * ircd/channel.c: match bans against both real and hidden
1438 hostmasks; moved some calls to use sendcmdto_*_butone
1440 * ircd/gline.c: match glines agains real host
1442 * ircd/ircd_features.c: added FEAT_HOST_HIDING and
1445 * ircd/m_account.c: call hide_hostmask() for possibly
1446 hiding the user's host
1448 * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone
1450 * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone
1452 * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden
1455 * ircd/m_who.c: match real hosts, if the query comes from an oper
1457 * ircd/m_whois.c: report real hostname and IP to opers
1459 * ircd/m_whowas.c: report real hostname to opers
1461 * ircd/s_err.c: added user mode 'x' to the list of supported user
1462 modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting
1463 real hostnames to opers
1465 * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone
1467 * ircd/s_serv.c: send real hostname to servers
1469 * ircd/s_user.c: send real hostname to servers; added processing
1470 of usermode 'x'; added hide_hostmask() which actually does the work
1471 of hiding a user's host; moved some calls to use sendcmdto_*_butone
1473 * ircd/send.c: changed sendcmdto_channel_butserv to
1474 sendcmdto_channel_butserv_butone; ditto for
1475 sendcmdto_common_channels
1477 * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has
1480 * ircd/whowas.c: if needed, store a user's real host so we can
1481 report it to opers later
1483 * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST
1486 * doc/example.conf: default values for HOST_HIDING and
1487 HIDDEN_HOST features
1489 2002-02-01 Tim Vogelsang <net@astrolink.org>
1491 * ircd/send.c (sendwallto_group_butone): don't sent wallops to
1494 2002-01-28 Kevin L Mitchell <klmitch@mit.edu>
1496 * ircd/jupe.c (jupe_activate): remove a bogus assertion
1498 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1500 * ircd/s_err.c: added new channel mode 'r' to list of supported
1501 channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use
1502 numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for
1503 informing users why they can't join a +r channel
1505 * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY
1506 (+r) to do_clearmode(); note that it is *not* being added to the
1507 default clearmode mask!
1509 * ircd/channel.c: don't allow non-+r users to send messages to +r
1510 channels from off the channel; add support for MODE_REGONLY (+r)
1511 to channel_modes(); don't allow non-+r users to join +r channels
1512 without an invite; add support for MODE_REGONLY to the modebuf_*()
1513 family of functions (changes in modebuf_flush_int(),
1514 modebuf_mode(), and modebuf_extract()); add support for
1515 MODE_REGONLY to mode_parse()
1517 * include/supported.h (FEATURESVALUES2): added the new channel
1518 mode 'r' to the list of supported channel modes
1520 * include/numeric.h: move RPL_USERIP to 340 to avoid the 307
1521 conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels
1523 * include/channel.h: remove unused MODE_SENDTS; add new
1526 * ircd/s_bsd.c (read_packet): remove call to timer_verify()
1528 * ircd/list.c: remove calls to timer_verify() from
1529 alloc_connection() and dealloc_connection()
1531 * ircd/ircd_events.c: turn off timer_verify(); remove calls to it
1534 2002-01-27 Kevin L Mitchell <klmitch@mit.edu>
1536 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1538 * ircd/ircd_events.c (timer_run): why did I ever use a next
1539 pointer when the algorithm guarantees that the head pointer will
1540 always be the next pointer?
1542 2002-01-26 Kevin L Mitchell <klmitch@mit.edu>
1544 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1546 * ircd/s_bsd.c (read_packet): call timer_verify() after adding the
1547 client process timer to catch any list corruption
1549 * ircd/list.c: surround alloc_connection() and
1550 dealloc_connection() with calls to timer_verify()
1552 * ircd/ircd_events.c: add sledgehammer known as timer_verify() to
1553 verify the timer list's structure; call it around timer_run()
1555 2002-01-22 Kevin L Mitchell <klmitch@mit.edu>
1557 * ircd/send.c (sendcmdto_common_channels): don't send message to a
1558 channel that the source is a zombie on
1560 2002-01-13 Kevin L Mitchell <klmitch@mit.edu>
1562 * ircd/ircd_events.c (timer_enqueue): one more assertion--make
1563 sure a timer has the ACTIVE flag set before enqueueing the timer
1565 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1567 * ircd/list.c (dealloc_connection): assert that the process timer
1568 has been removed from the timer queue before dealloc_connection()
1571 2002-01-12 Kevin L Mitchell <klmitch@mit.edu>
1573 * ircd/res.c: don't accept T_A when we're looking for T_PTR
1575 * ircd/channel.c (modebuf_flush_int): nuke the code that would
1576 send a HACK DESYNCH notice on a HACK(2)--it would be far too
1579 * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN
1581 * include/supported.h: add AWAYLEN to the list of supported
1584 * include/ircd_defs.h: add AWAYLEN to specify the maximum length
1587 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1589 * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes()
1591 * ircd/channel.c: pass a buflen parameter to channel_modes() for
1592 pbuf--we were using sizeof(pbuf), which would always be
1593 sizeof(char*) before; change send_channel_modes() to pass extra
1594 parameter to channel_modes()
1596 * include/channel.h: pass a buflen parameter to channel_modes()
1599 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1601 * ircd/uping.c (uping_start): initialize some timers
1603 * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure
1604 out when we need to re-add the process timer
1606 * ircd/s_auth.c (make_auth_request): initialize a timer
1608 * ircd/res.c (init_resolver): initialize some timers
1610 * ircd/list.c (alloc_connection): initialize the client process
1613 * ircd/ircd_events.c: add a function, timer_init(), to initialize
1614 a struct Timer; recast timer_add() to catch when adding a marked
1615 timer and not re-enqueue it--but mark it for re-enqueuing; update
1616 timer_del() to turn off the GEN_READD flag and to ignore reference
1617 counts when destroying the timer--we're using GEN_MARKED as an
1618 ersatz referance count; changed timer_run() to work with the new
1619 way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s
1622 * ircd/ircd.c: initialize some timers
1624 * ircd/engine_select.c (engine_loop): initialize a timer
1626 * ircd/engine_poll.c (engine_loop): initialize a timer
1628 * ircd/engine_kqueue.c (engine_loop): initialize a timer
1630 * ircd/engine_devpoll.c (engine_loop): initialize a timer
1632 * ircd/IPcheck.c (IPcheck_init): initialize a timer
1634 * include/ircd_events.h: add GEN_READD flag for timers to indicate
1635 that a timer must be readded; add t_onqueue() macro to check to
1636 see if a timer is on the queue (this is a hack, though); added
1637 timer_init() to initialize a struct Timer--we're no longer doing
1638 the initialization in timer_add()
1640 2002-01-11 Kevin L Mitchell <klmitch@mit.edu>
1642 * ircd/engine_devpoll.c (engine_loop): relocate an assertion to
1643 prevent a core bug *in* the assertion
1645 * doc/readme.features: document new POLLS_PER_LOOP feature; change
1646 documentation to reflect that OPER_SET now defaults to FALSE
1648 * doc/p10.html: documented the new ACCOUNT stuff
1650 * doc/example.conf: document new POLLS_PER_LOOP default; change
1651 default for OPER_SET
1653 * RELEASE.NOTES: changed documentation to reflect the fact that
1654 assertions are now enabled by default and do not cause memory
1657 * ircd/res.c (make_cache): removed a bogus assertion we probably
1658 never caught because assertions haven't been enabled on production
1659 servers for any length of time before
1661 * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL
1663 * ircd/engine_kqueue.c (engine_loop): stupid me forgot one
1664 instance of POLLS_PER_KQUEUE
1666 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1668 * ircd/s_bsd.c (client_timer_callback): only clear the
1669 FREEFLAG_TIMER flag when the timer is being destroyed
1671 * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and
1672 default it to 200; turn OPER_SET off by default
1674 * ircd/engine_kqueue.c: dynamically allocate and reallocate the
1675 array of events to obtain from the kernel
1677 * ircd/engine_devpoll.c: dynamically allocate and reallocate the
1678 array of events to obtain from the kernel
1680 * include/ircd_features.h: add a new feature for tuning how many
1681 events to get from the kernel, for engines that support that
1683 * ircd/Makefile.in: re-run make depend to correct dependancies
1685 * ircd/m_who.c: remove unneeded inclusion of list.h
1687 * ircd/ircd_events.c: remove unneeded inclusion of list.h
1689 * ircd/whocmds.c (do_who): hide server name in /who unless
1690 requester is an operator; simplify hop count insertion
1692 * ircd/s_misc.c (exit_one_client): make sure client's snomask is
1695 * ircd/parse.c: use mo_version and mo_admin when opers do /version
1698 * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead
1699 of the static string "*.undernet.org"
1701 * ircd/m_version.c: only let ordinary users get version
1702 information for the server they are on
1704 * ircd/m_admin.c: only let ordinary users get admin information
1705 for the server they are on
1707 * ircd/channel.c (client_can_send_to_channel): check is_banned()
1708 before letting the client speak on a channel s/he is not on
1710 * include/supported.h: add NETWORK to feature list
1712 * include/handlers.h: declare mo_admin() and mo_version()
1714 2002-01-10 Kevin L Mitchell <klmitch@mit.edu>
1716 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1718 * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead
1721 * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of
1724 * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on
1727 * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG
1729 * ircd/Makefile.in: run make depend on chkconf.c as well
1731 * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG,
1732 conditionalize on MDEBUG
1734 * include/fda.h: instead of conditionalizing on !NDEBUG,
1735 conditionalize on MDEBUG
1737 * configure: rebuild configure script
1739 * configure.in: enable assertion checking by default, since we
1740 have now decoupled memory debugging from the NDEBUG macro
1742 * ircd/s_user.c (set_nick_name): remove calls to
1743 verify_client_list()
1745 * ircd/s_misc.c (exit_one_client): remove calls to
1746 verify_client_list()
1748 * ircd/s_conf.c (rehash): remove calls to verify_client_list()
1750 * ircd/m_who.c (m_who): remove calls to verify_client_list()
1752 * ircd/list.c: remove calls to verify_client_list(); keep
1753 verify_client_list() around just in case we ever need it again,
1754 but never compile it in
1756 * ircd/ircd_events.c (event_execute): remove calls to
1757 verify_client_list()
1759 * ircd/client.c (client_get_ping): remove calls to
1760 verify_client_list()
1762 * include/list.h (send_listinfo): remove temporary debugging
1763 function verify_client_list()
1765 * ircd/uping.c: don't die if the event type is ET_ERROR in socket
1768 * ircd/res.c (res_callback): don't die if the event type is
1771 * ircd/listener.c (accept_connection): don't die if the event type
1774 2002-01-09 Kevin L Mitchell <klmitch@mit.edu>
1776 * ircd/s_user.c (set_nick_name): bracket call to
1777 add_client_to_list() with calls to verify_client_list()
1779 * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again)
1781 * ircd/list.c (verify_client_list): add a probabilistic loop
1782 detector: for every client added, there is a 2% probability that
1783 it will be used to replace the value of sentinel; if at any time,
1784 sentinel is found again, we know we're in a loop
1786 * ircd/ircd_events.c (event_execute): add verify_client_list()
1787 calls wrapping event_execute; at the very least, I'll figure out
1788 what event the corruption occurred in
1790 * ircd/list.c: moved verify_client_list() to try to keep it from
1793 * ircd/Makefile.in (version.c): version.c wasn't dependant on
1794 version.h and patchlevel.h, like it was supposed to be
1796 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1798 * ircd/s_auth.c (destroy_auth_request): overload send_reports
1799 argument to also indicate whether or not to call
1800 release_auth_client() and thereby enter the client into the linked
1803 * ircd/engine_devpoll.c (engine_loop): remove bogus assertion
1805 * include/patchlevel.h (PATCHLEVEL): bump patchlevel
1807 * ircd/list.c (free_client): verify that destroy_auth_request()
1808 didn't automagically re-add us to the list; we might have to think
1809 about this interaction more carefully, actually
1811 * ircd/s_auth.c (auth_kill_client): zero the auth pointer before
1812 calling free_client(); otherwise, free_client() will try to free
1813 the auth by calling destroy_auth_request(), which will call
1814 add_client_to_list()
1816 * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to
1817 verify_client_list() around to catch any corruption that might
1820 * ircd/s_conf.c (rehash): liberally sprinkle calls to
1821 verify_client_list() here, since this is about the only routine I
1822 can think of that could cause the "core on kill -HUP" bug
1824 * ircd/m_who.c: sprinkle calls to verify_client_list() around
1825 liberally, since we've seen crashes here; temporarily include the
1826 otherwise unneeded list.h header
1828 * ircd/list.c: sprinkle calls to verify_client_list() around quite
1829 liberally; add debugging asserts to list manipulation functions to
1830 catch strange settings for next and prev pointers; define
1831 verify_client_list(), which walks the client list and verifies
1832 that everything is as it's supposed to be
1834 * ircd/client.c: wrap client_get_ping with calls to
1835 verify_client_list() to see if that's where we're dying
1837 * include/patchlevel.h (PATCHLEVEL): bump to 03
1839 * include/list.h: declare verify_client_list() if DEBUGMODE
1840 enabled; otherwise, define it to be empty
1842 2002-01-08 Kevin L Mitchell <klmitch@mit.edu>
1844 * ircd/m_quit.c (m_quit): remove an unused variable
1846 * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2
1848 * ircd/s_user.c: when building the user mode to send to the user,
1849 don't include +r; add an extra set of parens to squelch a warning
1851 * ircd/m_quit.c (m_quit): use exit_client_msg()
1853 * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can
1854 keep track of who's running what version
1856 * ircd/m_squit.c (ms_squit): remove debugging calls to
1857 protocol_violation()
1859 * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a
1860 new gmake "feature" (pull-up from trunk)
1862 * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up
1865 2002-01-07 Kevin L Mitchell <klmitch@mit.edu>
1867 * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the
1868 list of user modes; process account name as part of user mode in
1869 NICK decoding (set_nick_name()); add account name to usermode when
1870 building the usermode to incorporate in outgoing NICK messages
1872 * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a
1873 user is logged in to
1875 * ircd/parse.c: define the new ACCOUNT command, usable only by
1876 servers and ignored by everything else
1878 * ircd/m_whois.c: report what account name is associated with a
1881 * ircd/m_account.c: implement the ACCOUNT command
1883 * ircd/Makefile.in: add m_account.c to the list of sources; ran
1886 * include/struct.h: add an account field to struct User
1888 * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting
1889 what username a user is logged in under
1891 * include/msg.h: add ACCOUNT command and token (AC)
1893 * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches
1894 the maximum length of a username for X
1896 * include/handlers.h: add declaration for ms_account()
1898 * include/client.h: add FLAGS_ACCOUNT to flag when a user account
1899 name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added
1900 IsAccount() and SetAccount() to manipulate the flag
1902 * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server
1903 name like "Amsterdam2.NL.EU.undernet.org", we get the struct
1904 Client for the server with numeric "Am", which happens to be
1905 stockholm! To fix this, we look up the full name *first*; if that
1906 doesn't get it, *then* we look up by numeric.
1908 2001-12-24 Perry Lorier <isomer@coders.net>
1909 * ircd/m_server.c: cleanups, maybe this will make the bug easier
1912 * ircd/m_stats.c: display maximum number of connects in an I:
1914 2001-11-22 Perry Lorier <isomer@coders.net>
1915 * ircd/m_squit.c: Bug fix in squit
1917 2001-11-03 Greg Sikorski <gte@atomicrevs.demon.co.uk>
1918 * ircd/parse.c, include/handlers.h: Give remote whois the correct
1921 2001-11-01 Kevin L Mitchell <klmitch@mit.edu>
1923 * ircd/send.c: some minor white-space fiddling; recast selector
1924 test in sendwallto_group_butone() to remove a warning regarding
1925 putting & within parentheses
1927 * ircd/m_create.c (ms_create): use time_t instead of int as a
1928 declaration for rate
1930 * ircd/ircd_reply.c (protocol_violation): it's supposed to be
1931 WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no
1932 wonder we weren't seeing any protocol violations!
1934 * include/send.h: include time.h for time_t; move WALL_* closer to
1935 the function they're used in; some white-space fiddling; add
1936 declaration of sendto_opmask_butone_ratelimited()
1938 * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the
1939 cases where we ignore a squit, so we aren't taken by surprise, at
1942 * ircd/m_create.c (ms_create): Display origin server, not origin
1945 * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice
1947 2001-10-31 Perry Lorier <isomer@coders.net>
1948 * include/m_ping.c: Forward port ping bug
1950 2001-10-31 Perry Lorier <isomer@coders.net>
1951 * include/patchlevel.h: We're beta now
1953 2001-10-31 Perry Lorier <isomer@coders.net>
1954 * ircd/s_user.c: fixed hunt_server
1956 2001-09-21 Perry Lorier <isomer@coders.net>
1957 * ircd/send.c and various: replace sendcmdto_flag_butone with
1958 sendwallto_group_butone
1960 2001-09-21 Vampire- <unknown>
1961 * ircd/ircd_string.c: unique_name_vector round II.
1963 2001-09-21 mbuna <mbuna@undernet.org>
1964 * configure.in: Add support for darwin
1966 2001-09-21 Perry Lorier <isomer@coders.net>
1967 * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out
1969 2001-09-20 Perry Lorier <isomer@coders.net>
1971 * Pullups from 2.10.10.pl16
1972 * Added some warnings, and the concept of rate limited snotices
1974 2001-08-31 Kevin L Mitchell <klmitch@mit.edu>
1976 * ircd/channel.c: use "%u" to format limit arguments; use
1977 strtoul() to process limit arguments in a /mode command--note:
1978 most clients seem to truncate the integer, probably because
1979 they're using atoi, and perhaps signed ints
1981 2001-08-17 Kevin L Mitchell <klmitch@mit.edu>
1983 * ircd/numnicks.c: include stdlib.h for exit()
1985 * ircd/ircd_log.c: include stdlib.h for exit()
1987 * ircd/ircd_events.c: include stdlib.h for exit()
1989 * ircd/s_stats.c: remove description of /stats v, since it's gone
1991 * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of
1992 /wallops to distinguish wallops from wallusers
1994 * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't
1995 in the "handshake" or "connecting" states--I think the latter will
1996 never happen, but...
1998 * doc/Authors: apply delete's Authors patch
2000 * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on
2003 * README: rewrite README
2005 2001-07-31 Kevin L. Mitchell <klmitch@mit.edu>
2007 * ircd/s_serv.c (server_estab): remove unused variable split
2009 * ircd/parse.c: add mr_error to the parse table
2011 * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from
2012 unregistered connections--if IsUserPort() is true, the ERROR is
2013 ignored, otherwise, the message is saved
2015 2001-07-28 Kevin L. Mitchell <klmitch@mit.edu>
2017 * ircd/m_kill.c (ms_kill): another minor typo *sigh*
2019 * ircd/s_user.c (send_supported): oops, minor typo...
2021 * ircd/s_user.c: implement send_supported() to send two ISUPPORT
2022 messages containing our feature buffers; make register_user() use
2025 * ircd/s_misc.c (exit_client): make sure not to give away a remote
2026 server in the ERROR message sent to the client; if the killer is a
2027 server, we substitute our name in its place
2029 * ircd/m_version.c (m_version): use send_supported() to send the
2030 ISUPPORT values to the user
2032 * ircd/m_nick.c: shave nick collision kills here a bit, too, for
2033 the same reasons as for m_kill.c
2035 * ircd/m_kill.c: shave kills a bit so that the results look
2036 exactly the same no matter where you are; if we didn't do this, it
2037 would be possible to map the network by looking at the differences
2038 between kills originating under various circumstances
2040 * include/supported.h: split the features into two, so as to not
2041 bust the parameter count when sending the features list
2043 * include/s_user.h: declare new send_supported() function to send
2044 the ISUPPORT information
2046 2001-07-27 Kevin L. Mitchell <klmitch@mit.edu>
2048 * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent
2049 source-routed spoofing attacks; this is only available under
2050 u2.10.11, so don't even bother, since no one but testers are using
2053 2001-07-25 Kevin L. Mitchell <klmitch@mit.edu>
2055 * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default
2057 * ircd/s_err.c: put in a . for reporting link version on /trace,
2058 to match what /version does
2060 2001-07-21 Kevin L. Mitchell <klmitch@mit.edu>
2062 * ircd/s_misc.c (exit_client): servers don't understand what the
2063 numeric nick ERROR is supposed to mean, so they ignore error
2064 messages, resulting in not knowing why we were rejected; use
2065 sendcmdto_one for servers and sendrawto_one for clients
2067 2001-07-17 Kevin L. Mitchell <klmitch@mit.edu>
2069 * ircd/m_burst.c (ms_burst): in the case of a modeless channel and
2070 a nick collide, a bare BURST may be propagated; adjust the
2071 enforced parameter count to accept the bare BURST
2073 2001-07-12 Kevin L. Mitchell <klmitch@mit.edu>
2075 * ircd/s_bsd.c: mark a client as having been IP checked
2077 * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded
2078 second call to SetIPChecked()
2080 2001-07-11 Kevin L. Mitchell <klmitch@mit.edu>
2082 * ircd/engine_poll.c: deal with POLLHUP properly (hopefully)
2084 * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully)
2086 2001-07-09 Kevin L. Mitchell <klmitch@mit.edu>
2088 * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
2089 sections so that if neither is used, the declaration of buf will
2090 not elicit an "unused variable" warning under NetBSD
2092 * ircd/m_map.c: include string.h to declare strcpy (fix warnings
2095 * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
2098 * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
2101 * ircd/client.c: include string.h to declare memset (fix warnings
2104 * ircd/channel.c: remove unused functions next_overlapped_ban,
2105 del_banid, and is_deopped (fix warnings under -O1)
2107 * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
2110 2001-06-29 Kevin L. Mitchell <klmitch@mit.edu>
2112 * ircd/s_user.c (set_user_mode): clear the snomask if the user
2113 isn't supposed to receive server notices anymore
2115 * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
2117 * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
2118 installation prefix; default devpoll and kqueue to on (they get
2119 turned off if the required headers aren't present)
2121 * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
2122 sprintf_irc(); it's a bit hackish, but it'll do for now
2124 * ircd/support.c: remove unused #include
2126 * ircd/send.c: remove unused #include
2128 * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
2130 * ircd/s_serv.c: remove unused #include
2132 * ircd/s_misc.c: use ircd_snprintf() and friends instead of
2133 sprintf_irc() and friends
2135 * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
2136 ircd/s_err.c, which is the only other file to refer to it
2138 * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
2141 * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
2144 * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
2146 * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
2148 * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
2150 * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
2152 * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
2154 * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
2156 * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
2157 instead of sprintf_irc()
2159 * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
2162 * include/ircd_string.h: remove declaration of sprintf_irc() (what
2163 was it doing here anyway?)
2165 * include/sprintf_irc.h: removed unneeded source file
2167 * ircd/sprintf_irc.c: removed unneeded source file
2169 * ircd/s_debug.c (count_memory): remove some dead code
2171 * ircd/s_auth.c: remove some dead code
2173 * ircd/res.c (update_list): remove some dead code
2175 * ircd/m_whowas.c: remove some dead code
2177 * ircd/m_whois.c: remove some dead code
2179 * ircd/m_who.c: remove some dead code
2181 * ircd/m_wallusers.c: remove some dead code
2183 * ircd/m_wallops.c: remove some dead code
2185 * ircd/m_wallchops.c: remove some dead code
2187 * ircd/m_version.c: remove some dead code
2189 * ircd/m_userip.c: remove some dead code
2191 * ircd/m_userhost.c: remove some dead code
2193 * ircd/m_uping.c: remove some dead code
2195 * ircd/m_trace.c: remove some dead code
2197 * ircd/m_topic.c: remove some dead code
2199 * ircd/m_tmpl.c: remove some dead code
2201 * ircd/m_time.c: remove some dead code
2203 * ircd/m_squit.c: remove some dead code
2205 * ircd/m_silence.c: remove some dead code
2207 * ircd/m_settime.c: remove some dead code
2209 * ircd/m_set.c: remove some dead code
2211 * ircd/m_server.c: remove some dead code
2213 * ircd/m_rpong.c: remove some dead code
2215 * ircd/m_rping.c: remove some dead code
2217 * ircd/m_restart.c: remove some dead code
2219 * ircd/m_reset.c: remove some dead code
2221 * ircd/m_rehash.c: remove some dead code
2223 * ircd/m_quit.c: remove some dead code
2225 * ircd/m_proto.c: remove some dead code
2227 * ircd/m_privs.c: remove some dead code
2229 * ircd/m_privmsg.c: remove some dead code
2231 * ircd/m_pong.c: remove some dead code
2233 * ircd/m_ping.c: remove some dead code
2235 * ircd/m_pass.c: remove some dead code
2237 * ircd/m_part.c: remove some dead code
2239 * ircd/m_opmode.c: remove some dead code
2241 * ircd/m_oper.c: remove some dead code
2243 * ircd/m_notice.c: remove some dead code
2245 * ircd/m_nick.c: remove some dead code
2247 * ircd/m_map.c: remove some dead code
2249 * ircd/m_lusers.c: remove some dead code
2251 * ircd/m_list.c: remove some dead code
2253 * ircd/m_links.c: remove some dead code
2255 * ircd/m_kill.c: remove some dead code
2257 * ircd/m_kick.c: remove some dead code
2259 * ircd/m_jupe.c: remove some dead code
2261 * ircd/m_join.c: remove some dead code
2263 * ircd/m_ison.c: remove some dead code
2265 * ircd/m_invite.c: remove some dead code
2267 * ircd/m_info.c: remove some dead code
2269 * ircd/m_help.c: remove some dead code
2271 * ircd/m_gline.c: remove some dead code
2273 * ircd/m_get.c: remove some dead code
2275 * ircd/m_error.c: remove some dead code
2277 * ircd/m_endburst.c: remove some dead code
2279 * ircd/m_die.c: remove some dead code
2281 * ircd/m_desynch.c: remove some dead code
2283 * ircd/m_destruct.c: remove some dead code
2285 * ircd/m_defaults.c: remove some dead code
2287 * ircd/m_create.c: remove some dead code, along with an #if 1
2289 * ircd/m_cprivmsg.c: remove some dead code
2291 * ircd/m_connect.c: remove some dead code
2293 * ircd/m_close.c: remove some dead code
2295 * ircd/m_clearmode.c: remove some dead code
2297 * ircd/m_burst.c: remove some dead code
2299 * ircd/m_away.c: remove some dead code
2301 * ircd/m_admin.c: remove some dead code
2303 * ircd/listener.c (accept_connection): remove some dead code
2305 * ircd/ircd_reply.c (need_more_params): remove some dead code
2307 * ircd/channel.c (add_banid): remove some dead code
2309 * include/support.h: remove some dead code
2311 * include/querycmds.h: remove some dead code
2313 * doc/readme.chroot: document how to do chroot operation
2315 2001-06-28 Kevin L. Mitchell <klmitch@mit.edu>
2317 * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
2318 force bin directory to be created if necessary prior to
2319 installation; run make depend
2321 * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
2324 * Makefile.in: tune to detect Makefile.in changes in
2325 subdirectories and to create installation directory indicated by
2328 * ircd/whocmds.c (count_users): routine to count the number of
2329 users matching a given user@host mask
2331 * ircd/s_err.c: add error messages for ERR_LONGMASK,
2332 ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
2334 * ircd/m_gline.c: look for and advance past '!' flag on G-lines
2335 from operators; only set GLINE_OPERFORCE flag if oper has the
2336 PRIV_WIDE_GLINE privilege
2338 * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
2339 maximum number of users a G-line can impact before it has to be
2340 forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
2341 wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
2342 operators to use ! to force a wide G-line to be set
2344 * ircd/gline.c: make make_gline() be called with separate user and
2345 host arguments, and not call canon_userhost() directly; implement
2346 gline_checkmask() to verify that a host mask is acceptable; move
2347 BADCHAN check up in gline_add(), and check passed-in mask under
2348 certain circumstances for acceptability; fix call to
2349 sendto_opmask_butone() to handle separation of userhost into user
2350 and host in gline_add(); update call to make_gline()
2352 * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
2353 FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
2354 PRIV_WIDE_GLINE to privtab[] for client_report_privs()
2356 * include/whocmds.h (count_users): declare routine to count users
2357 matching a given user@host mask
2359 * include/numeric.h: added three new error returns: ERR_LONGMASK
2360 -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
2361 many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
2362 contains wildcards in the wrong places
2364 * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
2365 FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
2367 * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
2368 to signal to gline_add() that the operator attempted to force the
2371 * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
2373 * doc/readme.gline: update to document new "!" prefix to a G-line
2376 * doc/readme.features: document GLINEMAXUSERCOUNT,
2377 OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
2379 * doc/example.conf: update to mention new features along with
2382 2001-06-27 Kevin L. Mitchell <klmitch@mit.edu>
2384 * doc/example.conf: updated example.conf from Braden
2387 * include/supported.h: forward-port from pl15
2389 2001-06-25 Kevin L. Mitchell <klmitch@mit.edu>
2391 * ircd/whocmds.c: include ircd_policy.h and implement
2392 HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
2394 * ircd/m_whois.c: forward-port of the idle-time hiding code from
2395 pl15; this also required passing parc into do_whois(), which also
2396 meant passing parc into do_wilds()--*sigh*
2398 * include/ircd_policy.h: add a couple more HEAD_IN_SAND
2399 #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
2401 2001-06-22 Kevin L. Mitchell <klmitch@mit.edu>
2403 * tools/wrapper.c: add a wrapper program that can be used to
2404 adjust file descriptor limits and root directories; program must
2405 be run as root--NOT SETUID!--and given appropriate -u arguments
2407 * doc/readme.log: documentation of how to configure logging
2409 * doc/readme.features: documentation of each feature (except for
2412 2001-06-21 Kevin L. Mitchell <klmitch@mit.edu>
2414 * Makefile.in (config): add a deprecation notice with a pointer to
2417 * tools/transition: shell script to convert old compile-time
2418 options into new compile-time options and appropriate F-lines
2420 * tools/mkchroot: shell-script to prepare the chroot area by
2421 copying over all the necessary libraries so they can be found
2423 2001-06-20 Kevin L. Mitchell <klmitch@mit.edu>
2425 * INSTALL: partial update of INSTALL for u2.10.11 release...
2427 2001-06-14 Kevin L. Mitchell <klmitch@mit.edu>
2429 * ircd/table_gen.c (makeTables): finally got tired of the
2430 "overflow in implicit conversion" warning, so just got rid of it
2431 by explicitly casting UCHAR_MAX to a (default) char; diffs show no
2432 differences in the tables generated
2434 2001-06-11 Kevin L. Mitchell <klmitch@mit.edu>
2436 * ircd/send.c (sendcmdto_match_butone): don't let the server crash
2437 if a client is in the STAT_CONNECTING status
2439 2001-06-10 Kevin L. Mitchell <klmitch@mit.edu>
2441 * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
2442 into sendcmdto_one(); define new sendcmdto_prio_one(), which
2443 places the message into the priority queue
2445 * ircd/s_user.c (hunt_server_prio_cmd): definition of
2446 hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
2447 instead of sendcmdto_one()
2449 * ircd/m_settime.c: use sendcmdto_prio_one() and
2450 hunt_server_prio_cmd() to send SETTIME
2452 * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
2454 * include/send.h: removed declaration for unused vsendcmdto_one();
2455 added a declaration for sendcmdto_prio_one()
2457 * include/s_user.h: declare hunt_server_prio_cmd(), which calls
2458 sendcmdto_prio_one()
2460 * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
2461 put in the server's priority queue, too...
2463 * ircd/ircd.c: don't check LPATH for accessibility at all
2465 2001-06-08 Kevin L. Mitchell <klmitch@mit.edu>
2467 * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
2468 command if we're configured as a hub; send individual server flags
2471 * ircd/s_bsd.c (completed_connection): send a +h flag in our
2472 SERVER command if we're configured as a hub
2474 * ircd/m_server.c: implement parv[7] as a mode-like string; +h
2475 sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
2476 flag for a server; +hs sets both flags; also modify CMD_SERVER
2477 format string to send the flags
2479 * include/client.h: define two new flags, FLAGS_HUB and
2480 FLAGS_SERVICE to mark services and hubs as such; define testing
2481 macros, setting macros
2483 * ircd/s_user.c: remove deprecated struct Gline* argument to
2484 register_user(); remove GLINE rebroadcast; do not send GLINE
2485 acknowledgement parameter to NICK; do not look for GLINE
2486 acknowledgement parameter to NICK while parsing
2488 * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
2489 argument to server_estab(); do not send JUPE/GLINE acknowledgement
2490 parameters for SERVER or NICK
2492 * ircd/m_user.c (m_user): remove deprecated argument to
2495 * ircd/m_server.c: remove deprecated argument to server_estab();
2496 remove documentation comment regarding JUPE acknowledgement
2497 parameter to SERVER; remove JUPE rebroadcast
2499 * ircd/m_pong.c (mr_pong): remove deprecated argument to
2502 * ircd/m_nick.c: remove documentation comment regarding GLINE
2503 acknowledgement parameter to NICK
2505 * ircd/jupe.c: use user's real name in JUPE server notices if
2506 HEAD_IN_SAND_SNOTICES is defined
2508 * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
2509 setuid code; correct ancient DEBUG vs DEBUGMODE typo
2511 * ircd/gline.c: use user's real name in GLINE server notices if
2512 HEAD_IN_SAND_SNOTICES is defined
2514 * ircd/channel.c (modebuf_flush_int): make apparent source be
2515 local server, not oper's server; use user's real name in hack
2516 notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
2518 * include/s_user.h: remove struct Gline pre-declaration; remove
2519 deprecated struct Gline argument from register_user()
2521 * include/s_serv.h: remove struct Jupe pre-declaration; remove
2522 deprecated struct Jupe argument from server_estab()
2524 2001-06-07 Kevin L. Mitchell <klmitch@mit.edu>
2526 * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
2527 changes required to control remote stats
2529 * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
2530 recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
2531 [forward-port from pl15]
2533 * ircd/m_whowas.c (m_whowas): report server name only if requester
2534 is an operator [forward-port from pl15]
2536 * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
2537 my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
2538 and obtain the report from the user's server [forward-port from
2541 * ircd/m_who.c: add missing include for ircd_policy.h
2542 [forward-port from pl15]
2544 * ircd/m_version.c (m_version): require oper access for remote
2545 /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
2547 * ircd/m_time.c (m_time): require oper access for remote /time if
2548 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
2550 * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
2551 missing semicolon [forward-port from pl15]
2553 * ircd/m_nick.c (ms_nick): hide the origin of certain collision
2554 kills [forward-port from pl15]
2556 * ircd/m_motd.c (m_motd): require oper access for remote /motd if
2557 HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
2559 * ircd/m_lusers.c (m_lusers): require oper access for remote
2560 /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
2562 * ircd/m_burst.c (ms_burst): server-added bans are stored using
2563 local server name, to hide remote server names; modes also are to
2564 originate from the local server [forward-port from pl15]
2566 * ircd/m_admin.c (m_admin): require oper access for remote /admin
2567 if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
2569 * ircd/channel.c (add_banid): if a server is adding a ban, use my
2570 server name to hide the remote server's name [forward-port from
2573 * ircd/Makefile.in: ran make depend
2575 * include/s_stats.h: hunt_stats() has to have an extra argument to
2576 support the forward-port from pl15
2578 * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
2579 HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
2581 * ircd/engine_poll.c (engine_loop): remove bogus assert that I
2582 forgot to check in the events branch
2584 2001-06-06 Kevin L. Mitchell <klmitch@mit.edu>
2586 * ircd/res.c (init_resolver): don't start DNS expires with a 0
2587 relative timeout--if the server starts slow, timeouts could be
2588 messy...there's probably a better solution, but this'll do for now
2590 * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
2591 headers very well; include stropts.h; define an os_set_tos()
2593 * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
2596 * ircd/ircd.c: if there are no C-lines, we don't want to have a
2597 timer that expires at the absolute time of 0--it kinda blocks all
2600 * ircd/engine_devpoll.c: some includes for open(); declare errcode
2601 and codesize in engine_loop()
2603 * ircd/list.c (free_client): remove bogus check on timer active
2606 * ircd/s_auth.c: pull out destruction code in
2607 auth_timeout_request() into an externally-visible
2608 destroy_auth_request(); manage cli_auth pointer in client
2609 structure; use it for an extra assertion check
2611 * ircd/list.c: include s_auth.h for destroy_auth_request(); add
2612 debugging notices to show flow when deallocating
2613 connections/clients; call destroy_auth_request() when free'ing a
2614 client that has an auth outstanding; don't free the connection if
2615 the process timer is unmarked but still active
2617 * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
2618 and reset it before calling the event handler for an ET_DESTROY
2621 * include/s_auth.h (destroy_auth_request): declare
2622 destroy_auth_request(), which can be used to destroy an
2623 outstanding auth request if a client socket goes away before the
2624 auth exchange is completed
2626 * include/ircd_events.h: add an active flag to keep track of
2627 whether or not particular generators are active, for the
2628 convenience of functions using the API
2630 * include/client.h: add a pointer for auth requests to struct
2631 Connection so we can kill outstanding auth requests if a client
2632 socket closes unexpectedly
2634 * ircd/s_bsd.c: cli_connect() could become 0 during the course of
2635 the sock or timer callback; take that into account in the assert
2637 * ircd/list.c: add magic number checking and setting--magic
2638 numbers are zero'd on frees to detect double-frees; add back
2639 setting of cli_from() to 0 to break the back-link from the struct
2642 * ircd/ircd.c: set me's magic number correctly
2644 * include/client.h: define magic numbers and accessor/verifier
2647 * ircd/list.c: assert that dealloc_client() is called with
2648 cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
2649 dealloc_client(); don't mess with cli_from(cptr)
2651 * ircd/s_bsd.c: only attempt to dealloc a connection if the
2652 associated client has already been destroyed, or at least delinked
2654 2001-06-05 Kevin L. Mitchell <klmitch@mit.edu>
2656 * ircd/list.c (free_client): only try to delete the socket when
2657 the fd hasn't already been closed, avoiding a double-free
2659 * ircd/list.c (free_connection): make sure the client is really
2660 gone before doing away with the connection
2662 * ircd/s_bsd.c: record that socket has been added in con_freeflag
2663 field; queue a socket_del() as soon as the socket is close()'d;
2664 use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
2665 FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
2666 then dealloc the connection if safe; mark socket as dead when
2667 there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
2668 to client_timer_callback(); dealloc connection if safe upon
2669 ET_DESTROY event in client_timer_callback()
2671 * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
2672 the connection if both socket and timer have been destroyed;
2673 destroy both socket and timer explicitly and carefully
2675 * include/client.h: replace the con_timer field with a
2676 con_freeflag field, to indicate what still needs freeing; define
2679 * ircd/engine_select.c (engine_loop): duh...sockList[i] could
2682 * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
2685 * ircd/s_bsd.c: add some extra assertions to try to track down a
2688 * ircd/engine_select.c (engine_loop): add an extra assert to try
2689 to track down a corruption problem
2691 * ircd/engine_poll.c (engine_loop): add an extra assert to try to
2692 track down a corruption problem
2694 * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
2695 to track down a corruption problem
2697 * ircd/engine_devpoll.c (engine_loop): skip slots that have become
2698 empty during processing; add an extra assert to try to track down
2699 a corruption problem
2701 * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
2704 2001-06-04 Kevin L. Mitchell <klmitch@mit.edu>
2706 * ircd/s_bsd.c (client_sock_callback): client is no longer
2707 blocked, so we must mark it as unblocked
2709 * ircd/engine_select.c: add Debug() calls galore; add handling for
2710 SS_NOTSOCK; use a dummy sock variable to keep things from
2711 disappearing on us; correct timeout calculation; update nfds for
2714 * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
2715 remove a spurious "if (sock)" which will always be true; update
2718 * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
2719 SS_NOTSOCK (just in case); correct timeout calculation
2721 * ircd/engine_devpoll.c: add Debug() calls galore; add handling
2722 for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
2724 * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
2725 pretty-indent numbers
2727 * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
2728 case--it's not a socket; the check for writability is most likely
2729 not needed, but present for completeness
2731 2001-05-24 Kevin L. Mitchell <klmitch@mit.edu>
2733 * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
2734 no newline flag is set; call read_packet() when the timer expires,
2735 regardless of what's in the buffer--read_packet() should be able
2738 * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
2739 sent to clients to include the client nickname (duh)
2741 * ircd/ircd_events.c: don't destroy a timer if it's already marked
2742 for destruction; replace a missing ! in socket_del()
2744 * ircd/engine_poll.c (engine_loop): reference a temporary variable
2745 so we don't have to worry about sockList[i] going away
2747 * ircd/s_bsd.c (client_sock_callback): add Debug messages
2749 * ircd/s_auth.c: add Debug messages all over the place
2751 * ircd/ircd_events.c: add and edit some Debug messages; add a list
2752 of routines to convert some of the enums and flags from numbers
2753 into human-readable strings for the Debug messages
2755 * ircd/engine_poll.c: hack some Debug messages to use the new name
2756 conversion routines in ircd_events.c; add an extra assert for a
2757 condition that shouldn't ever happen; apparently recv() can return
2758 EAGAIN when poll() returns readable--I wonder why...
2760 * include/ircd_events.h: declare some helper routines under
2763 2001-05-23 Kevin L. Mitchell <klmitch@mit.edu>
2765 * ircd/s_bsd.c (client_sock_callback): add an extra assertion
2768 * ircd/s_auth.c: add more Debug messages
2770 * ircd/list.c (make_client): add an extra assertion check
2772 * ircd/ircd_events.c (socket_events): don't call the engine events
2773 changer if we haven't actually made any changes to the event mask
2775 * ircd/uping.c: add some Debug messages
2777 * ircd/s_stats.c: document new /STATS e
2779 * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
2781 * ircd/s_bsd.c: remove static client_timer variable; in
2782 read_packet(), if there's still data in the client's recvQ after
2783 parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
2784 of client_sock_callback to handle destroying the timer properly;
2785 rewrote client_timer_callback from scratch to be called on an
2788 * ircd/m_stats.c: add /STATS e to report the engine name
2790 * ircd/list.c: deal with con_timer field in struct Connection
2791 properly; correct a core-level bug in remove_client_from_list--if
2792 the client is the only one in the list, we try to update
2793 GlobalClientList's cli_prev pointer--not good
2795 * ircd/ircd.c: remove call to init_client_timer()
2797 * ircd/engine_poll.c: made Debug messages more uniform by
2798 prepending "poll:" to them all; corrected an off-by-one error that
2799 caused poll_count to be 1 less than the actual count and removed
2800 my work-around; added Debug messages to indicate which socket is
2801 being checked and what the results are
2803 * ircd/Makefile.in: ran a make depend
2805 * include/s_bsd.h: remove init_client_timer(), since we're doing
2808 * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
2811 * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
2812 reports for non-opers
2814 * include/client.h: add con_timer and con_proc fields to struct
2815 Connection and define accessor macros--con_timer marks that
2816 con_proc contains a valid timer, and con_proc is used to pace user
2819 * ircd/s_bsd.c (close_connection): let free_client() destroy the
2822 * ircd/s_auth.c (start_auth): add a Debug call to indicate when
2823 auth has begun on a client
2825 * ircd/ircd_events.c: ensure that event_execute() is called with a
2826 non-NULL event; modify event_add() macro to properly zero list
2827 bits; modify gen_dequeue() to not try to clip it out of a list
2828 it's already been clipped out of; change signal socket
2829 initialization to use state SS_NOTSOCK; permit timeout values of
2830 0 in add_timer(); add many Debug calls; change socket_del() and
2831 timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
2832 timer_run() instead of GEN_DESTROY so that event_generate() will
2833 pass on the events; remove the switch and replace with a simpler
2834 if-then-else tree in timer_run(); don't allow destroyed sockets to
2835 be destroyed again, nor their states or event masks to be changed
2837 * ircd/ircd.c: initialize "running" to 1
2839 * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
2840 messages all over the place; fix a counting problem in
2841 engine_add(); turn wait into a signed integer and set it to -1
2842 only if timer_next() returns 0; adjust wait time to be relative;
2843 don't call gen_ref_dec() if socket disappeared while we were
2846 * include/ircd_events.h: the pipe for signals is not a socket, so
2847 we must mark it as such--added SS_NOTSOCK for that special socket;
2848 events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
2849 for the benefit of timer_run()
2851 * configure.in: add --enable-pedantic and --enable-warnings to
2852 turn on (and off) -Wall -pedantic in CFLAGS
2854 2001-05-21 Kevin L. Mitchell <klmitch@mit.edu>
2856 * ircd/s_conf.c: change "s_addr" element accesses to "address"
2859 * include/s_conf.h: on some systems, "s_addr" is a macro; use
2862 2001-05-18 Kevin L. Mitchell <klmitch@mit.edu>
2864 * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
2865 void in this file; add a missing semi-colon; declare errcode,
2868 * ircd/uping.c (uping_sender_callback): it's pptr, not uping
2870 * ircd/s_user.c (register_user): comment out spurious reference to
2873 * ircd/s_serv.c (server_estab): comment out spurious reference to
2876 * ircd/s_conf.c (read_configuration_file): comment out spurious
2877 reference to nextping and nextconnect
2879 * ircd/s_bsd.c: comment out some spurious references to formerly
2880 global (now non-existant) variables; correct a couple of typos
2882 * ircd/s_auth.c: pre-declare some functions referenced in the
2883 callback; correct a typo
2885 * ircd/res.c (start_resolver): pass errno value of ENFILE
2887 * ircd/listener.c (accept_connection): you know your API is messed
2888 up when...variables that shouldn't have been global crop up in
2891 * ircd/list.c (free_client): substitution of == for =
2893 * ircd/ircd_signal.c: include assert.h for assertion checking;
2894 check ev_data() to find out what signal generated event
2896 * ircd/ircd_events.c: some references to the variable "timer"
2897 should have been references to the variable "ptr"
2899 * ircd/engine_select.c: it's struct fd_set, not struct fdset;
2900 ev_timer(ev) is already a timer pointer; declare codesize as a
2901 size_t to correct signedness issue; use timer_next(), not
2904 * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
2905 select fd out of struct pollfd in assertion checking; declare
2906 errcode and codesize; use timer_next(), not time_next()
2908 * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
2909 use function timer_next(), not time_next()
2911 * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
2912 use function timer_next(), not time_next()
2914 * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
2915 compiled sources; do make depend
2917 * include/list.h: pre-declare struct Connection
2919 * include/ircd_events.h (gen_ref_inc): cast to the right structure
2922 * include/s_auth.h: duh; missing */
2924 2001-05-10 Kevin L. Mitchell <klmitch@mit.edu>
2926 * ircd/send.c: update write events status after sending data or
2927 accumulating data to be sent
2929 * ircd/m_list.c (m_list): update write events status after
2930 canceling a running /list
2932 * ircd/channel.c (list_next_channels): update write events status
2933 after listing a few channels
2935 * ircd/s_bsd.c: extensive changes to update to new events model;
2936 remove on_write_unblocked() and the two implementations of
2937 read_message(), which have been deprecated by this change
2939 * ircd/s_auth.c: set the socket events we're interested in for
2940 clients; simplify some logic that does the connect_nonb followed
2943 * ircd/list.c: define free_connection() to free a connection
2944 that's become freeable once the struct Socket has been
2945 deallocated; fix up free_client() to take this new behavior into
2948 * ircd/ircd.c: call init_client_timer()
2950 * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
2951 to register connect-in-progress with events system; declare
2952 init_client_timer() (HACK!) to preserve rate-limiting behavior
2954 * include/list.h: declare new free_connection()
2956 * include/client.h: add a struct Socket to struct Connection
2958 2001-05-09 Kevin L. Mitchell <klmitch@mit.edu>
2960 * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
2961 SIGTERM into event callbacks; perform the actions in the
2962 callbacks, since they're not called in the context of the signal;
2963 set up the signal callbacks in the event engine
2965 * ircd/ircd_events.c (signal_callback): we're supposed to look for
2966 a specific signal; don't generate an event if there is no signal
2969 * ircd/ircd.c: nuke nextconnect and nextping and replace them with
2970 connect_timer and ping_timer; massage try_connections() and
2971 check_pings() into timer callbacks that re-add themselves at the
2972 right time; remove ircd.c's "event_loop()"; initialize the event
2973 system and the connect_timer and ping_timer
2975 * ircd/uping.c: correct a couple more typos
2977 * ircd/s_auth.c: rework to use new events system
2979 * ircd/os_solaris.c (os_connect_nonb): update to new interface
2981 * ircd/os_openbsd.c (os_connect_nonb): update to new interface
2983 * ircd/os_linux.c (os_connect_nonb): update to new interface
2985 * ircd/os_generic.c (os_connect_nonb): update to new interface
2987 * ircd/os_bsd.c (os_connect_nonb): update to new interface
2989 * include/s_auth.h: remove deprecated members of struct
2990 AuthRequest, replacing them with struct Socket and struct Timer
2991 structures; add flags to indicate when these structures have been
2992 released by the event system; remove the deprecated
2993 timeout_auth_queries()
2995 * include/ircd_osdep.h (os_connect_nonb): connect could complete
2996 immediately, so change the interface to handle that possibility
2998 * ircd/uping.c (uping_server): noticed and corrected a typo
3000 * ircd/listener.c: set up to use ircd_event's struct Socket by
3001 adding an socket_add() call to inetport(), replacing
3002 free_listener() with socket_del() in close_listener(), and
3003 reworking accept_connection to be called as the callback
3005 * ircd/ircd.c: add a call to IPcheck_init()
3007 * ircd/IPcheck.c: remove IPcheck_expire(); rework
3008 ip_registry_expire() to be called from a timer; write
3009 IPcheck_init() to set up the expiration timer (hard-coded for a
3010 60-second expiration time)
3012 * include/listener.h: add a struct Socket to the struct Listener;
3013 remove accept_connection()
3015 * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
3017 2001-05-08 Kevin L. Mitchell <klmitch@mit.edu>
3019 * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
3020 USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
3022 * ircd/engine_select.c: include config.h; set FD_SETSIZE to
3023 MAXCONNECTIONS, not IRCD_FD_SETSIZE...
3025 * ircd/engine_poll.c: include config.h
3027 * ircd/engine_kqueue.c: include config.h
3029 * ircd/engine_devpoll.c: include config.h
3031 * ircd/Makefile.in: include engine sources in compilation and make
3034 * configure.in: add checks for enabling the /dev/poll- and
3035 kqueue-based engines
3037 * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
3039 * ircd/Makefile.in: work in the engine sources
3041 2001-05-07 Kevin L. Mitchell <klmitch@mit.edu>
3043 * ircd/m_settime.c: include ircd_snprintf.h
3045 * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
3046 parens around a construct that had both || and &&
3048 * ircd/chkconf.c: #include "config.h" to get some important
3051 * ircd/Makefile.in: revamp ircd makefile for new build system
3053 * doc/Makefile.in: revamp doc makefile for new build system
3055 * config/*: Removed old build system files
3057 * stamp-h.in: a stamp file
3059 * install-sh: install-sh for new build system
3061 * configure.in: configure.in for new build system
3063 * configure: configure script for new build system (built by
3066 * config.sub: config.sub for new build system
3068 * config.h.in: config.h.in for new build system (built by
3071 * config.guess: config.guess for new build system
3073 * aclocal.m4: aclocal.m4 for new build system (built by aclocal
3076 * acinclude.m4: aclocal.m4 macros for new build system
3078 * acconfig.h: config.h skeleton for new build system
3080 * Makefile.in: modify for new build system
3082 2001-05-01 Kevin L. Mitchell <klmitch@mit.edu>
3084 * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
3086 * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
3088 * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
3090 2001-05-01 Perry Lorier <Isomer@coders.net>
3091 * doc/iauth.doc: Protocol for iauth server. (from hybrid).
3092 * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
3093 when you have far far too many sockets in use.
3094 * {include,ircd}/iauth.c: A start on iauth support.
3096 2001-05-01 Perry Lorier <Isomer@coders.net>
3097 * ircd/s_err.c: Suggested wording change.
3098 * ircd/s_user.c: Users aren't target limited against +k users.
3099 * ircd/chkconf.c: Made it compile again, who knows if it works, but
3100 now I can at least make install
3101 * various: Cleanups on m_*.c files.
3104 2001-04-23 Kevin L. Mitchell <klmitch@mit.edu>
3106 * ircd/s_misc.c (exit_client): make netsplit server notice say the
3109 * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
3110 change to make Khaled happy...
3112 * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
3115 2001-04-21 Kevin L. Mitchell <klmitch@mit.edu>
3117 * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
3118 turned up no more bugs
3120 * ircd/ircd.c: use /* */ comments instead of // comments--all the
3123 * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
3124 // comments--all the world's not gcc :(
3126 * ircd/runmalloc.c: finally garbage-collect unused file
3128 * include/runmalloc.h: finally garbage-collect unused file
3130 * ircd/<multiple files>: addition of '#include "config.h"' before
3131 all other includes in most .c files
3133 * include/<multiple files>: remove includes of config.h, which are
3134 now going into the raw .c files
3136 2001-04-20 Kevin L. Mitchell <klmitch@mit.edu>
3138 * ircd/m_whois.c (do_whois): display proper server name if the
3139 user is looking up himself
3141 * ircd/m_who.c (m_who): disable match by servername or display of
3142 server names by non-opers
3144 * include/ircd_policy.h: add define for
3145 HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
3148 2001-04-18 Kevin L. Mitchell <klmitch@mit.edu>
3150 * ircd/s_conf.c: keep the $R in memory so we can see it clearly
3151 when we do a /stats k
3153 * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
3154 users from turning on +s and +g
3156 * ircd/s_misc.c (exit_client): pull-up of changes to turn off
3159 * ircd/parse.c: pull-up of changes to disable /trace, /links, and
3162 * ircd/m_whois.c (do_whois): pull-up of server name masking for
3165 * ircd/m_user.c (m_user): removal of umode and snomask defaulting
3168 * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
3170 * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
3172 * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
3174 * ircd/channel.c (channel_modes): pull-up of channel key display
3177 * include/ircd_policy.h: pull-up of ircd_policy.h
3179 * include/client.h: pull-up of Set/ClearServNotice()
3181 * ircd/gline.c (do_gline): report client name in G-line message
3184 * ircd/s_user.c (register_user): pull-up--show IP address in some
3185 server notices dealing only with users; report which connection
3188 * ircd/s_stats.c (report_deny_list): use conf->flags &
3189 DENY_FLAGS_IP insteaf of conf->ip_kill
3191 * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
3192 insteaf of conf->ip_kill
3194 * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
3197 * include/s_conf.h: use a flags field in struct DenyConf; define
3198 DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
3199 pull-up of K-line by real name
3201 * ircd/m_trace.c: pull-up of IP show for user connections
3203 * doc/example.conf: pull-up of the realname K-line documentation
3205 * ircd/ircd.c: forward port of pid file advisory locking mechanism
3207 2001-04-16 Kevin L. Mitchell <klmitch@mit.edu>
3209 * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
3210 all servers, rather than to only servers that have +w/+g/whatever
3211 users on them; among other things, this removes that atrocity
3212 known as sentalong[] from this function
3214 * ircd/m_admin.c: must include ircd.h to declare "me"; must
3215 include hash.h to declare FindUser()
3217 * ircd/m_wallusers.c: implementation of WALLUSERS
3219 * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
3221 * ircd/m_wallops.c: only send WALLOPS to opers
3223 * ircd/parse.c: add WALLUSERS command to parser table
3225 * include/handlers.h: declare wallusers handlers
3227 * include/msg.h: add WALLUSERS command
3229 * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
3230 flag, send only to appropriate opers
3232 2001-04-13 Kevin L. Mitchell <klmitch@mit.edu>
3234 * ircd/uping.c: refit to use the new events interface
3236 * ircd/res.c: refit to use the new events interface
3238 * ircd/ircd_events.c: create timer_chg(), which permits a
3239 (non-periodic) timer's expire time to be modified; change the
3240 logic in timer_run() so that timers that were re-added while the
3241 event was being processed will not be destroyed prematurely
3243 * include/uping.h: include the events header, declare some extra
3244 fields in struct UPing, remove timeout value, and define some
3245 flags for marking which cleanup items have yet to be done
3247 * include/ircd_events.h: add a prototype for timer_chg() to change
3248 the expire time of a running timer
3250 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
3251 * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
3253 2001-03-07 Joseph Bongaarts <foxxe@wtfs.net>
3255 * config/configure.in: Add check for OpenBSD
3257 * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
3258 differs from generic BSD, particularly in its handling of
3261 2001-02-12 Kevin L. Mitchell <klmitch@mit.edu>
3263 * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
3264 have been added by a U-lined server, rather than going through the
3265 activate/deactivate logic; propagate G-line removals by U-lined
3268 * ircd/gline.c: rename propagate_gline() to gline_propagate();
3269 make gline_propagate() return an int 0 (convenience return); only
3270 update lastmod in gline_activate() and gline_deactivate() if the
3271 current lastmod is non-zero, since 0 lastmod is our flag of a
3272 U-lined server having added a G-line
3274 * include/gline.h (gline_propagate): exporting the G-line
3275 propagation function
3277 * ircd/m_list.c (m_list): duh; permit explicit channel name
3278 specification only when /list gets two arguments ("Kev
3279 #wasteland") rather than when /list gets more than two
3280 arguments--nice braino
3282 2001-01-29 Thomas Helvey <twhelvey1@home.com>
3284 * ircd/ircd_reply.c (need_more_params): fix bug that allowed
3285 unregistered clients to spam opers with protocol violation
3286 messages. Note: the bugfix may have eliminated some useful
3287 protocol violation messages.
3288 Please send protocol violation messages explicitly from the
3289 functions they are discovered in, you have much better context
3290 for the error there and it helps to document the behavior of the
3291 server. This was also a design bug in that it violated the
3292 "A function should do one thing" heuristic. Patching this one
3293 would have resulted in a continuous spawning of other bugs over
3294 the next 3 years, so I killed it. Check around for stuff this
3295 broke and readd the calls to protocol_violation in the functions
3296 that need to send the message.
3298 2001-01-29 Kevin L. Mitchell <klmitch@mit.edu>
3300 * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
3301 already existed, then the logic would (attempt to) skip it, but
3302 would not free the ban string; now the ban string is free'd and
3303 the ban count is decremented, releasing the ban for use
3305 * ircd/s_user.c: make send_umode_out() take a prop argument
3306 instead of testing for the PRIV_PROPAGATE privilege itself; fix
3307 set_umode() to use this new argument, calculating it before
3308 calculating the new privileges for a -o'd user
3310 * ircd/m_oper.c (m_oper): pass the new prop argument to
3313 * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
3314 that we're not actually going to add because they already exist;
3315 test that particular bit before adding to the linked list
3317 * include/s_user.h: add a prop argument to send_umode_out() to
3318 indicate whether or not to propagate the user mode
3320 2001-01-24 Kevin L. Mitchell <klmitch@mit.edu>
3322 * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
3323 it would have written; upper-bound the number to prevent overflows
3324 by proxy; also, tune buffer size given to ircd_vsnprintf() to take
3325 into account the fact that ircd_vsnprintf() already takes the
3326 terminal \0 into account
3328 2001-01-22 Kevin L. Mitchell <klmitch@mit.edu>
3330 * ircd/msgq.c: add an incredibly ugly hack to attempt to track
3331 down an apparent buffer overflow; remove msgq_map(), since it's no
3332 longer used anywhere; slight tweaks to prevent off-by-one errors,
3333 but these can't explain the problems we've seen
3335 * include/msgq.h: remove msgq_map(), since it's no longer used
3338 2001-01-18 Kevin L. Mitchell <klmitch@mit.edu>
3340 * ircd/s_user.c (set_nick_name): call client_set_privs() after
3343 2001-01-17 Kevin L. Mitchell <klmitch@mit.edu>
3345 * ircd/s_bsd.c (read_message): fix a typo in the select version of
3348 * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
3349 its argument to be an lvalue, which means we can't use
3350 whowas_clean()'s handy-dandy "return ww" feature
3352 * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
3354 2001-01-16 Kevin L. Mitchell <klmitch@mit.edu>
3356 * ircd/ircd_events.c (timer_run): it's possible that the timer got
3357 deleted during the callback processing, so don't go to the bother
3358 of requeuing it if the destroy flag is set
3360 * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
3361 out of config.h if this is a *BSD; include errno.h (oops);
3362 decrement error count after an hour using a timer; use FD_SETSIZE
3363 constant instead of IRCD_FD_SETSIZE constant; fill in event
3366 * ircd/engine_poll.c: include errno.h (oops); decrement error
3367 count after an hour using a timer; fill in event processing code
3369 * ircd/engine_kqueue.c: include errno.h (oops); decrement error
3370 count after an hour using a timer; assert events filter is either
3371 EVFILT_READ or EVFILT_WRITE; fill in event processing code
3373 * ircd/engine_devpoll.c: include errno.h (oops); decrement error
3374 count after an hour using a timer; fill in event processing code
3376 2001-01-15 Kevin L. Mitchell <klmitch@mit.edu>
3378 * ircd/client.c: fixed feattab; basically, when I changed features
3379 to use small integers specifying bit positions, instead of the
3380 bits themselves, I forgot to update feattab to not | these
3381 privileges together; also fixed a bug in the antiprivs masking
3382 loop in client_set_privs()--last index wouldn't get parsed
3384 2001-01-11 Kevin L. Mitchell <klmitch@mit.edu>
3386 * ircd/ircd_events.c: call event_generate() with new data
3387 argument; make it set that field in struct Event; make
3388 socket_add() return the value of the eng_add callback
3390 * ircd/engine_select.c: make engine_add() return a
3391 successful/unsuccessful status; add bounds-checking outside of an
3392 assert; use accessor macros; use log_write(), not the deprecated
3393 ircd_log(); add an assert to engine_loop() to double-check for
3394 data structure corruption
3396 * ircd/engine_poll.c: make engine_add() return a
3397 successful/unsuccessful status; add bounds-checking outside of an
3398 assert; use accessor macros; use log_write(), not the deprecated
3399 ircd_log(); add an assert to engine_loop() to double-check for
3400 data structure corruption
3402 * ircd/engine_kqueue.c: implementation of an engine for kqueue()
3404 * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
3406 * include/ircd_events.h: define some accessor macros; add ev_data
3407 to struct Event for certain important data--errno values, for
3408 instance; make EngineAdd callback tell us if it was successful or
3409 not; add extra argument to event_generate(); make socket_add()
3410 return the status from EngineAdd
3412 2001-01-10 Kevin L. Mitchell <klmitch@mit.edu>
3414 * ircd/ircd_events.c: pass initializer information about how many
3415 total _filedescriptors_ may be opened at once
3417 * ircd/ircd.c: use exported "running" instead of unexported
3420 * ircd/engine_select.c: implementation of an event engine based on
3423 * ircd/engine_poll.c: implementation of an event engine based on
3426 * include/ircd_events.h: pass the engine initializer an integer
3427 specifing how many _filedescriptors_ may be opened at once
3429 * include/ircd.h: running has to be exported for the engine_*
3432 2001-01-09 Kevin L. Mitchell <klmitch@mit.edu>
3434 * ircd/ircd_events.c: include some needed headers; add some
3435 comments; make evEngines[] const; bundle sig_sock and sig_fd into
3436 a struct named sigInfo; rework struct evInfo to have a queue of
3437 _generators_, and only when threaded; added a gen_init() function
3438 to centralize generator initialization; fix various compile-time
3439 errors; rework event_add() for new queueing scheme and checked for
3440 compile-time errors; add casts where needed; spell evEngines[]
3441 correctly; make engine_name() return const char*
3443 * include/ircd_events.h: type EventCallBack depends on struct
3444 Event, so pre-declare it; put _event_ queue into generators, and
3445 only when threaded; give engine data a union to store both ints
3446 and pointers; make engine name a const; fix gen_ref_dec() macro;
3447 make engine_name() return a const char*
3449 * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
3450 down with the non-static functions; modify event_execute() to use
3451 the new gen_ref_dec() to simplify code; make sure event_generate()
3452 does not generate new events for generators marked for destruction
3454 * include/ircd_events.h: the engines, at least, may need to modify
3455 reference counts to keep generators from going away while
3456 something still points at them, so add reference counter
3457 manipulators and export gen_dequeue() for them
3459 * ircd/ircd_events.c: set up the list of engines to try; set up
3460 the signal struct Socket; rename netInfo to evInfo; move static
3461 functions near the beginning of the file; do away with
3462 signal_signal() (since we no longer keep a signal count ourselves)
3463 and call event_generate() directly from signal_callback--also
3464 renamed some functions; allow signal_callback() to read up to
3465 SIGS_PER_SOCK at once from the signal pipe; add event_init() to
3466 initialize the entire event system; add event_loop() to call the
3467 engine's event loop; initialize new struct GenHeader member,
3468 gh_engdata; remove timer_next(); add socket_add() function to add
3469 a socket; add socket_del() to mark a socket for deletion; add
3470 socket_state() to transition a socket between states; add
3471 socket_events() to set what events we're interested in on the
3472 socket; add engine_name() to retrieve event engine's name
3474 * include/ircd_events.h: add engine data field to struct
3475 GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
3476 note about states vs s_events; remove signal count; fold union
3477 Generator back into struct Event; remove count members from struct
3478 Generators; redefine engine callbacks to not take a struct
3479 Engine*; add explanatory comments to callback definitions; add
3480 some engine callbacks to handle operations; remove struct Engine
3481 flag member--can detect single flag from eng_signal member; add
3482 event_init(), event_loop(), engine_name(), and the socket_*()
3483 functions; make timer_next() a macro to avoid a function call
3485 2001-01-08 Kevin L. Mitchell <klmitch@mit.edu>
3487 * include/ircd_events.h: rename to ircd_events.h, since it handles
3488 events, not just networking stuff; add signal support; more
3489 structural rearrangement
3491 * ircd/ircd_events.c: rename to ircd_events.c, since it handles
3492 events, not just networking stuff; add signal support; more
3493 structural rearrangement
3495 2001-01-07 Kevin L. Mitchell <klmitch@mit.edu>
3497 * ircd/ircd_network.c: implement timer API; add reference counts
3500 * include/ircd_network.h: firm up some pieces of the interface;
3501 split out members everything has into a separate structure; add
3502 reference counts; add timer API
3504 2001-01-06 Kevin L. Mitchell <klmitch@mit.edu>
3506 * ircd/ircd_network.c: static data and event manipulation
3507 functions for new event processing system
3509 * include/ircd_network.h: data structures for new event processing
3512 2001-01-03 Kevin L. Mitchell <klmitch@mit.edu>
3514 * ircd/whowas.c: Completely re-did the old allocation scheme by
3515 turning it into a linked list, permitting the
3516 NICKNAMEHISTORYLENGTH feature to be changed on the fly
3518 * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
3519 feature instead of old #define
3521 * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
3522 integer feature with a notify callback (whowas_realloc)
3524 * ircd/client.c (client_set_privs): second memset was supposed to
3525 be over antiprivs, not privs; thanks, Chris Behrens
3526 <cbehrens@xo.com> for pointing that out...
3528 * include/whowas.h: new elements for an extra linked list in
3529 struct Whowas; a notify function for feature value changes
3531 * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
3533 * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
3535 2001-01-02 Kevin L. Mitchell <klmitch@mit.edu>
3537 * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
3538 compile-time option--now in features subsystem
3540 * ircd/motd.c (motd_init): rework motd_init() to be called as the
3541 notify function for MPATH and RPATH features (should probably
3542 split it up a bit, though...)
3544 * ircd/m_privs.c (mo_privs): if called with no parameters, return
3545 privs of the caller, rather than an error
3547 * ircd/m_list.c: pull usage message into its own function; pull
3548 list parameter processing into its own function that does not
3549 modify the contents of the parameter; add list_set_default() to
3550 set the default list parameter (uses the notify hook); rework
3551 m_list() to make use of these functions; removed dead code
3553 * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
3554 we have no notify handler
3556 * ircd/ircd_features.c: add notify callback for notification of
3557 value changes; give mark callback an int return value to indicate
3558 whether or not to call the notify callback; fix up feature macros
3559 for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
3560 string handling in feature_set() to deal with def_str being a null
3561 pointer; wrote feature_init() to set up all defaults appropriately
3563 * ircd/ircd.c (main): call feature_init() instead of
3564 feature_mark(), to avoid calling notify functions while setting up
3567 * ircd/client.c: updated to deal with new privileges structure
3569 * ircd/class.c: updated so init_class() can be called should one
3570 of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
3571 DEFAULTMAXSENDQLENGTH be changed
3573 * include/ircd_log.h: log_feature_mark() updated to fit with new
3576 * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
3577 feature_init() function (found necessary since adding the notify
3578 stuff and notifying motd.c during start-up...before we defined
3581 * include/client.h: move privs around to enable addition of more
3582 bits if necessary; based on the FD_* macros
3584 * include/channel.h: declare list_set_default (actually located in
3587 * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
3588 AVBANLEN*MAXSILES) from features subsystem
3590 * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
3593 * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
3594 the features subsystem
3596 * ircd/s_auth.c (start_auth): NODNS migrated to the features
3599 * ircd/random.c: created random_seed_set() function to set seed
3600 value, along with some stuff to make ircrandom() a little more
3601 random--state preserving, xor of time instead of direct usage,
3602 etc.; it's still a pseudo-random number generator, though, and
3603 hopefully I haven't broken the randomness
3605 * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
3607 * ircd/m_join.c: use features interface to retrieve
3610 * ircd/ircd_features.c: add NODISP flag for super-secret features;
3611 add a whole bunch of new features migrated over from make config
3613 * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
3614 CONNECTTIMEOUT, and TIMESEC
3616 * ircd/client.c (client_get_ping): use features interface to
3617 retrieve PINGFREQUENCY
3619 * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
3620 CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
3622 * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
3623 features subsystem, we have to add something explicit
3625 * ircd/channel.c: use features interface to retrieve
3626 KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
3627 note that MAXBANLENGTH is now calculated dynamically from MAXBANS
3630 * ircd/Makefile.in: run make depend
3632 * include/supported.h (FEATURESVALUES): update to reference
3635 * include/random.h: add prototype for random_seed_set
3637 * include/ircd_features.h: add several more features
3639 * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
3642 * config/config-sh.in: feature-ized some more stuff
3644 * include/motd.h: some new elements in motd.h for motd.c changes
3646 * ircd/motd.c: motd_cache() now searches a list of already cached
3647 MOTD files; saves us from having duplicate caches in memory if
3648 there are two identical T-lines for two different sites...
3650 2001-01-02 Perry Lorier <isomer@coders.net>
3651 * ircd/motd.c: don't core if the motd isn't found. Bug found by
3654 2001-01-02 Perry Lorier <isomer@coders.net>
3655 * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic.
3656 * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
3657 to guppy for noticing, and hektik for providing the fix.
3658 * misc others: Minor cleanups, added more protocol_violations, ripped
3659 out more P09 stuffs, bit more protocol neg stuff.
3661 2000-12-19 Kevin L. Mitchell <klmitch@mit.edu>
3663 * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
3664 space (*sigh* stupid clients...)
3666 * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
3669 * ircd/s_err.c: get rid of GODMODE conditionals
3671 * ircd/s_debug.c (debug_serveropts): switch to using appropriate
3672 calls into the features subsystem for various serveropts
3675 * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
3677 * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
3678 to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
3679 NOFLOWCONTROL conditional
3681 * ircd/s_auth.c: use features subsystem to determine value of
3684 * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
3685 features subsystem to determine the setting of IDLE_FROM_MSG
3687 * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
3689 * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
3690 use features subsystem to get motd file names
3692 * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
3695 * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
3696 us no good; use features subsystem to figure out if we need to do
3697 HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
3698 the Debug(()) macro instead; get value of RELIABLE_CLOCK from
3701 * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
3703 * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
3706 * ircd/m_connect.c: get SERVER_PORT from the features subsystem
3708 * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
3709 from getting marked if they were already set to something...
3711 * ircd/ircd_features.c: add a flag to indicates read-only access;
3712 add several new features that used to be compile-time selected
3714 * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
3715 access to motd files (what the heck?); make sure to initialize the
3716 feature subsystem before trying to write the config file
3718 * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
3719 use feature_bool() to figure out if we're using the FERGUSON
3722 * ircd/Makefile.in: MPATH and RPATH are now done differently, so
3723 remove the clause that creates empty files of that name; also ran
3726 * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
3727 there is no easy way to bounds-check it at present
3729 * include/querycmds.h: make sure ircd_features.h is included; use
3730 feature_str(FEAT_DOMAINNAME) in calls to match()
3732 * include/ircd_features.h: many new features that used to be
3733 compile-time selected
3735 * config/config-sh.in: add * to DOMAINNAME; try also using first
3736 argument to search in /etc/resolv.conf; removed many compile-time
3737 options that now can be configured through the features system
3739 2000-12-18 Kevin L. Mitchell <klmitch@mit.edu>
3741 * doc/api/log.txt: how to use the logging API
3743 * doc/api/features.txt: how to use the features API
3745 * doc/api/api.txt: how to write API documentation
3747 * include/ircd_features.h: rearranged a couple of features for
3750 * ircd/ircd_features.c: cleaned up the macros some; rearranged
3751 some code to all go into the switch; rearranged a couple of
3752 features for neatness purposes
3754 2000-12-16 Greg Sikorski <gte@atomicrevs.demon.co.uk>
3755 * ircd/os_bsd.c: Added os_set_tos for BSD users.
3757 2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
3759 * ircd/ircd_features.c: Isomer almost got it right; you need to
3760 use F_I(), since it's an integer value, not a boolean value. The
3761 asserts in feature_int would catch you out... Also made the F_*
3764 * ircd/s_err.c: define RPL_PRIVS reply
3766 * ircd/parse.c: put new PRIVS command into command table
3768 * ircd/m_privs.c (mo_privs): message handler to report operator
3771 * ircd/ircd_features.c: declare new features OPER_SET and
3772 LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
3773 ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
3775 * ircd/client.c: simplify client_set_privs() with a table that
3776 defines what features to test for; add new client_report_privs()
3778 * ircd/Makefile.in: compile new m_privs.c; run make depend
3780 * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
3781 an operator's privileges
3783 * include/msg.h: define new command: PRIVS
3785 * include/ircd_features.h: create new features OPER_SET and
3786 LOCOP_SET for controlling access to /set
3788 * include/handlers.h (mo_privs): declare message handler for
3789 reporting oper privileges
3791 * include/client.h (client_report_privs): declare function to
3792 report what privileges an oper has
3794 * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
3795 report that a user is an oper if the oper doing the /whois had
3798 2000-12-17 Isomer <Isomer@coders.net>
3799 * ircd/listener.c: added support for TOS twiddling as a 'feature'.
3801 2000-12-17 Isomer <Isomer@coders.net>
3802 * ircd/os_linux.c: add TOS stuffs
3804 * ircd/listener.c: add TOS stuffs
3806 2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
3808 * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
3809 to indicate a user is an oper
3811 * ircd/s_user.c: clear privileges setting when deopping; don't
3812 propagate +o unless user has PRIV_PROPAGATE privilege
3814 * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
3815 function and replaced how the server option string is generated
3817 * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
3819 * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
3820 not to indicate the user is an operator
3822 * ircd/m_who.c: use HasPriv to determine whether or not a user
3823 should be displayed in the list of opers
3825 * ircd/m_version.c: call debug_serveropts() to get server option
3828 * ircd/m_userip.c (userip_formatter): use HasPriv to determine
3829 whether or not to show oper status
3831 * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
3832 whether or not to show oper status
3834 * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
3835 checks with HasPriv check; remove dead code
3837 * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
3838 checks with HasPriv check
3840 * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
3841 use feature_bool to check if disabled
3843 * ircd/m_oper.c (m_oper): set oper priviliges
3845 * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
3848 * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
3851 * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
3854 * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
3855 use feature_bool to check if disabled
3857 * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
3858 #ifdef conditional with a HasPriv check
3860 * ircd/m_gline.c (mo_gline): rework permissions checking
3861 structure; use feature_bool to check if any part is disabled
3863 * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
3864 check; remove dead code
3866 * ircd/m_clearmode.c: use feature_bool() to detect if we're
3867 disabled; use HasPriv to figure out what we're permitted to do;
3868 only allow clearmode on moded channels
3870 * ircd/ircd_features.c: define various features; use HasPriv to
3871 verify permissions to set/reset
3873 * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
3876 * ircd/client.c (client_set_privs): function to set an oper's
3879 * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
3881 * include/whocmds.h: deconditionalize several macros and
3882 substitute appropriate calls to HasPriv()
3884 * include/s_debug.h: get rid of global serveropts[]; define new
3885 function debug_serveropts() to build that string on the fly
3887 * include/ircd_features.h: define some features
3889 * include/client.h: add privs member to struct Connection; define
3892 * include/channel.h: no longer using IsOperOnLocalChannel; remove
3893 conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
3895 * doc/Configure.help: remove help information for deprecated
3898 * config/config-sh.in: remove certain deprecated options having to
3899 do with what opers can and cannot do--first stage in moving
3900 compile-time constants into the .conf
3902 2000-12-16 Isomer <Isomer@coders.net>
3903 * ircd/parse.c: detect if the prefix is missing and try and recover
3906 2000-12-15 Kevin L. Mitchell <klmitch@mit.edu>
3908 * ircd/ircd_log.c: found and fixed some bugs in the debug logging
3909 code that would sometimes result in the log file not being
3910 reopened--which meant that a user could connect and get the
3911 logging output--oops
3913 * ircd/Makefile.in: run make depend...
3915 * ircd/s_stats.c: get rid of report_feature_list()
3917 * ircd/s_err.c: add the 'bad value' error message, shift error
3918 messages over somewhat
3920 * ircd/s_debug.c (debug_init): call log_debug_init with the
3923 * ircd/s_conf.c (read_configuration_file): unmark features before
3924 reading the config file, then reset unmarked features after
3925 reading the config file
3927 * ircd/m_stats.c: use feature_report() instead of
3928 report_feature_list()
3930 * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
3931 special 'mark' flags and use them; add the stuff needed by the
3934 * ircd/ircd_features.c: rework the features API and add gobs of
3935 comments to try to explain what some of these complex functions
3938 * include/s_stats.h: get rid of report_feature_list(); use
3939 feature_report() instead
3941 * include/numeric.h: added a new error message and shifted old
3942 values over some--this is, after all, an alpha
3944 * include/ircd_log.h: log_debug_init now takes an integer to tell
3945 it if it should be using the tty; added a couple of functions
3946 required by the features API
3948 * include/ircd_features.h: add an enum and some more functions to
3949 flesh out the feature API--it should now be possible to put all
3950 those compile-time constants in the config file!
3952 * ircd/send.c: got the direction of the assert incorrect...
3954 * ircd/send.c: implement the efficiency of flush_connections by
3955 creating a linked list of struct Connection's with queued data;
3956 also get rid of flush_sendq_except and make sure to yank
3957 connections out of the list when their sendQs become empty (notice
3958 the assertion in flush_connections!)
3960 * ircd/s_bsd.c (close_connection): must yank the Connection out of
3963 * ircd/list.c (dealloc_connection): must yank the Connection out
3966 * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
3967 deprecated flush_sendq_except
3969 * ircd/client.c: define a couple new helper functions for sendq
3970 threading--this will make the flush_connections function in send.c
3971 considerably more efficient by creating a linked list of
3972 Connections that have queued data to send
3974 * include/send.h: remove flush_sendq_except, as it's not used
3977 * include/client.h: declare a couple new helper functions for the
3978 sendq threading system
3980 2000-12-14 Kevin L. Mitchell <klmitch@mit.edu>
3982 * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
3985 * ircd/s_debug.c (count_memory): modify to report for clients and
3986 connections, not local clients and remote clients
3988 * ircd/list.c: fiddle with the client-fiddling functions to take
3989 into account the divorce of struct Connection from struct Client
3991 * ircd/ircd.c: define a struct Connection for me, initialize it,
3992 and link it into the right place (ewww, globals!)
3994 * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
3995 struct Client into struct Client and struct Connection; redefine
3996 local-portion accessor macros to go through struct Client to the
3997 struct Connection; define struct Connection accessor macros
3999 2000-12-13 Kevin L. Mitchell <klmitch@mit.edu>
4001 * ircd/whowas.c: missed a couple of accesses to a struct Client
4003 * ircd/uping.c: missed a couple of accesses to a struct Client
4005 * ircd/send.c: missed a couple of accesses to a struct Client
4007 * ircd/s_user.c: missed a couple of accesses to a struct Client
4009 * ircd/s_misc.c: missed a couple of accesses to a struct Client
4011 * ircd/s_conf.c: missed a couple of accesses to a struct Client
4013 * ircd/s_bsd.c: missed a couple of accesses to a struct Client
4015 * ircd/s_auth.c: missed a couple of accesses to a struct Client
4017 * ircd/res.c: missed a couple of accesses to a struct Client
4019 * ircd/parse.c: missed a couple of accesses to a struct Client
4021 * ircd/m_whois.c: use new accessor macros for struct Client
4023 * ircd/m_who.c: use new accessor macros for struct Client
4025 * ircd/m_wallchops.c: use new accessor macros for struct Client
4027 * ircd/m_version.c: use new accessor macros for struct Client
4029 * ircd/m_userip.c: use new accessor macros for struct Client
4031 * ircd/m_userhost.c: use new accessor macros for struct Client
4033 * ircd/m_user.c: use new accessor macros for struct Client
4035 * ircd/m_uping.c: use new accessor macros for struct Client
4037 * ircd/m_trace.c: use new accessor macros for struct Client
4039 * ircd/m_topic.c: use new accessor macros for struct Client
4041 * ircd/m_time.c: use new accessor macros for struct Client
4043 * ircd/m_stats.c: use new accessor macros for struct Client
4045 * ircd/m_squit.c: use new accessor macros for struct Client
4047 * ircd/m_silence.c: use new accessor macros for struct Client
4049 * ircd/m_server.c: use new accessor macros for struct Client;
4052 * ircd/m_rpong.c: use new accessor macros for struct Client
4054 * ircd/m_rping.c: use new accessor macros for struct Client
4056 * ircd/m_quit.c: use new accessor macros for struct Client
4058 * ircd/m_privmsg.c: use new accessor macros for struct Client
4060 * ircd/m_pong.c: use new accessor macros for struct Client; remove
4063 * ircd/m_ping.c: use new accessor macros for struct Client
4065 * ircd/m_pass.c: use new accessor macros for struct Client
4067 * ircd/m_part.c: use new accessor macros for struct Client
4069 * ircd/m_oper.c: use new accessor macros for struct Client
4071 * ircd/m_notice.c: use new accessor macros for struct Client
4073 * ircd/m_nick.c: use new accessor macros for struct Client
4075 * ircd/m_names.c: use new accessor macros for struct Client
4077 * ircd/m_mode.c: use new accessor macros for struct Client
4079 * ircd/m_map.c: use new accessor macros for struct Client
4081 * ircd/m_list.c: use new accessor macros for struct Client
4083 * ircd/m_links.c: use new accessor macros for struct Client;
4084 remove some dead code
4086 * ircd/m_kill.c: use new accessor macros for struct Client; remove
4089 * ircd/m_kick.c: use new accessor macros for struct Client
4091 * ircd/m_join.c: use new accessor macros for struct Client; remove
4094 * ircd/m_ison.c: use new accessor macros for struct Client
4096 * ircd/m_invite.c: use new accessor macros for struct Client
4098 * ircd/m_info.c: use new accessor macros for struct Client
4100 * ircd/m_gline.c: use new accessor macros for struct Client
4102 * ircd/m_error.c: use new accessor macros for struct Client
4104 * ircd/m_create.c: use new accessor macros for struct Client
4106 * ircd/m_connect.c: use new accessor macros for struct Client;
4107 removed some dead code
4109 * ircd/m_burst.c: use new accessor macros for struct Client
4111 * ircd/m_away.c: use new accessor macros for struct Client
4113 * ircd/m_admin.c: use new accessor macros for struct Client
4115 * ircd/hash.c: missed a couple of accesses to a struct Client
4117 * ircd/gline.c: missed a couple of accesses to a struct Client
4119 * ircd/crule.c: missed a couple of accesses to a struct Client
4121 * ircd/class.c: missed an access to a struct Client
4123 * ircd/channel.c: missed a couple of accesses to a struct Client
4125 * ircd/IPcheck.c: missed an access to a struct Client
4127 * include/querycmds.h: fix a couple of stats macros to use
4128 structure accessor macros
4130 * include/client.h: change structure member names to highlight any
4131 places in the code I've missed
4133 2000-12-12 Kevin L. Mitchell <klmitch@mit.edu>
4135 * ircd/whowas.c: use new struct Client accessor macros
4137 * ircd/whocmds.c: use new struct Client accessor macros
4139 * ircd/send.c: use new struct Client accessor macros
4141 * ircd/s_user.c: use new struct Client accessor macros; removed
4144 * ircd/s_serv.c: use new struct Client accessor macros; removed
4147 * ircd/s_numeric.c: use new struct Client accessor macros
4149 * ircd/s_misc.c: use new struct Client accessor macros
4151 * ircd/s_debug.c: use new struct Client accessor macros
4153 * ircd/s_conf.c: use new struct Client accessor macros
4155 * ircd/s_bsd.c: use new struct Client accessor macros
4157 * ircd/s_auth.c: use new struct Client accessor macros
4159 * ircd/parse.c: use new struct Client accessor macros
4161 * ircd/packet.c: use new struct Client accessor macros
4163 * ircd/numnicks.c: use new struct Client accessor macros
4165 * ircd/motd.c: use new struct Client accessor macros
4167 * ircd/listener.c: use new struct Client accessor macros
4169 * ircd/list.c: use new struct Client accessor macros
4171 * ircd/jupe.c: use new struct Client accessor macros
4173 * ircd/ircd_snprintf.c: use new struct Client accessor macros
4175 * ircd/ircd_reply.c: use new struct Client accessor macros
4177 * ircd/ircd_relay.c: use new struct Client accessor macros
4179 * ircd/ircd.c: use new struct Client accessor macros
4181 * ircd/gline.c: catch some instances of me.<stuff> I missed
4184 * ircd/client.c: use cli_ instead of con_
4186 * ircd/class.c: use cli_ instead of con_
4188 * ircd/channel.c: use cli_ instead of con_
4190 * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
4191 of me.<stuff> I missed previously
4193 * include/client.h: use cli_ instead of con_...seemed like a good
4194 idea at the time *shrug*
4196 2000-12-11 Kevin L. Mitchell <klmitch@mit.edu>
4198 * ircd/hash.c: use struct Client accessor macros
4200 * ircd/gline.c: use struct Client accessor macros
4202 * ircd/crule.c: use struct Client accessor macros
4204 * ircd/client.c: use struct Client accessor macros; remove some
4207 * ircd/class.c: use struct Client accessor macros
4209 * ircd/channel.c: use struct Client accessor macros; remove some
4212 * ircd/IPcheck.c: use struct Client accessor macros
4214 * include/numnicks.h: use struct Client accessor macros
4216 * include/client.h: first step to divorcing struct Client and
4217 struct Connection--define accessor macros and use them
4219 * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
4220 uplink would remove them. This is because the removal protocol
4221 message wasn't being sent to the uplinks. This is fixed by fixing
4222 propagate_gline() to send the proper number of arguments depending
4223 on whether or not we're adding or deleting the Uworld gline, and
4224 by having gline_deactivate() make sure to turn off the active bit
4225 and call propagate_gline() if it's a Uworld gline
4227 2000-12-10 Kevin L. Mitchell <klmitch@mit.edu>
4229 * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
4231 * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
4232 anywhere intelligent...
4234 2000-12-09 Kevin L. Mitchell <klmitch@mit.edu>
4236 * ircd/send.c (send_queued): call deliver_it with appropriate
4239 * ircd/s_serv.c: reorder a couple of headers--cosmetic
4241 * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
4244 * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
4245 with appropriate iovec
4247 * ircd/os_linux.c (os_sendv_nonb): function for calling writev
4248 with appropriate iovec
4250 * ircd/os_generic.c (os_sendv_nonb): function for calling writev
4251 with appropriate iovec
4253 * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
4256 * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
4257 exactly how much we're trying to write out to the fd
4259 * include/s_bsd.h: make deliver_it take a struct MsgQ
4261 * include/msgq.h: add a len_p argument to msgq_mapiov to help
4262 detect short writes that indicate possible socket blocking
4264 * include/ircd_osdep.h: declare os_sendv_nonb()
4266 * ircd/channel.c (modebuf_mode): don't add empty modes...
4268 2000-12-08 Kevin L. Mitchell <klmitch@mit.edu>
4270 * include/send.h: add prio argument to send_buffer to select
4271 between normal and priority queues
4273 * ircd/s_user.c (send_user_info): add prio argument to send_buffer
4276 * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
4278 * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
4281 * ircd/channel.c (send_channel_modes): add prio argument to
4284 * ircd/send.c (send_buffer): add a prio argument to select the
4285 priority queue; update send.c functions to use it
4287 * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
4288 msgq_add; add a prio argument to msgq_add to select the priority
4291 * include/msgq.h: remove msgq_prio; add a prio argument to
4294 * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
4295 using msgq functions instead of dbuf functions; remove old, dead
4296 sendto_* functions; redo send_buffer to take a struct MsgBuf;
4297 rework sendcmdto_* functions to make use of the new struct MsgBuf
4299 * ircd/s_user.c: remove hunt_server; restructure send_user_info to
4300 make appropriate use of struct MsgBuf
4302 * ircd/s_debug.c (count_memory): count memory used by the MsgQ
4303 system and report it
4305 * ircd/s_conf.c (read_configuration_file): use
4306 sendto_opmask_butone instead of the now dead sendto_op_mask
4308 * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
4311 * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
4313 * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
4316 * ircd/m_version.c: fix spelling in comments marking dead code
4318 * ircd/m_userip.c (userip_formatter): restructure to make use of
4321 * ircd/m_userhost.c (userhost_formatter): restructure to make use
4324 * ircd/m_stats.c: use MsgQLength on a sendQ
4326 * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
4327 sendQ; mark a piece of dead code
4329 * ircd/m_names.c: use send_reply instead of sendto_one
4331 * ircd/m_mode.c: use new mode; remove old dead code
4333 * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
4335 * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
4338 * ircd/listener.c (accept_connection): use sendto_opmask_butone
4339 instead of sendto_op_mask
4341 * ircd/list.c (free_client): use MsgQClear to clear sendQ
4343 * ircd/ircd_reply.c: remove send_error_to_client; restructure
4344 send_reply to make use of struct MsgBuf
4346 * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
4347 since its no longer used (at least currently)
4349 * ircd/channel.c: restructure send_channel_modes to make use of
4350 struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
4351 and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
4353 * ircd/Makefile.in: add msgq.c to list of sources; run make depend
4355 * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
4357 * include/send.h: send_buffer now takes a struct MsgBuf * instead
4358 of a char *; flush_sendq_except now takes no arguments, as sendq
4359 flushing currently only happens in dbuf.h and sendQ is a struct
4360 MsgQ; remove prototypes for a lot of old sendto_* functions that
4361 aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
4362 no longer needed, and the latter is identical to BUFSIZE in
4365 * include/s_user.h: make InfoFormatter take a struct MsgBuf*
4366 instead of a char *; also make it return void, instead of char *
4368 * include/msgq.h: add msgq_append and msgq_bufleft functions
4370 * include/client.h: use a struct MsgQ instead of a struct DBuf for
4373 * doc/Configure.help: Remove help for compile-time options that
4376 * config/config-sh.in: remove CONFIG_NEWMODE
4378 * ircd/m_server.c (mr_server): don't send server IPs in any server
4381 * ircd/msgq.c (msgq_vmake): add \r\n to messages
4383 2000-12-07 Kevin L. Mitchell <klmitch@mit.edu>
4385 * include/msgq.h: declare the MsgQ API
4387 * ircd/msgq.c: implementation of new MsgQ system
4389 2000-12-06 Kevin L. Mitchell <klmitch@mit.edu>
4391 * ircd/ircd_features.c: #include was supposed to be for
4392 ircd_features.h, not features.h--missed when I had to do a
4393 rename because of namespace collision
4395 2000-12-05 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4396 * ircd/m_topic.c: Added missing braces that caused all remote
4397 topics to be ignored.
4399 2000-12-04 Kevin L. Mitchell <klmitch@mit.edu>
4401 * ircd/m_create.c: I'm tired of the exit_client warning :)
4402 (ms_create): discovered that exit_client() was being called with
4405 * ircd/s_misc.c (exit_client): remove all dependance on
4406 FNAME_USERLOG, since that's now gone; log only to LS_USER
4408 * ircd/s_debug.c: USE_SYSLOG no longer means anything
4410 * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
4413 * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
4415 * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
4417 * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
4418 the same purpose as LS_USER and LS_OPER
4420 * config/config-sh.in: remove no longer relevant log config
4423 * ircd/uping.c (uping_init): use log_write instead of ircd_log
4425 * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
4427 * ircd/s_conf.c: use log_write instead of ircd_log
4429 * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
4431 * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
4434 * ircd/res.c (send_res_msg): use log_write instead of ircd_log
4436 * ircd/m_who.c: use log_write instead of write_log; no longer
4437 conditionalize on WPATH; mark dead ircd_log calls
4439 * ircd/m_uping.c: mark dead ircd_log call
4441 * ircd/m_server.c (mr_server): use log_write instead of ircd_log
4443 * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
4446 * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
4448 * ircd/m_oper.c: use log_write instead of ircd_log; no longer
4449 conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
4451 * ircd/m_kill.c: mark dead ircd_log calls
4453 * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
4456 * ircd/m_clearmode.c: use log_write instead of write_log; no
4457 longer conditionalize on OPATH
4459 * ircd/jupe.c: use log_write instead of write_log; no longer
4460 conditionalize on JPATH
4462 * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
4463 function; fix a couple of bugs
4465 * ircd/ircd_alloc.c: fixed a comment
4467 * ircd/ircd.c: use log_write instead of ircd_log; fold server
4468 notice generation in a couple of cases
4470 * ircd/gline.c: use log_write instead of write_log; no longer
4471 conditionalize on GPATH
4473 * ircd/channel.c (modebuf_flush_int): use log_write instead of
4474 write_log; no longer conditionalize on OPATH
4476 * ircd/Makefile.in: run make depend, since dependencies have
4479 * doc/example.conf: add system USER to documentation
4481 * include/ircd_log.h: add system USER; remove old ircd_log()
4484 2000-12-04 Isomer <isomer@coders.net>
4485 * ircd/m_names.c: Add NAMES_EON to do_names to say add a
4486 'end_of_names' reply when done.
4487 * ircd/m_join.c: use NAMES_EON as mentioned above
4489 2000-12-01 net <simms@LUCIDA.QC.CA>
4491 * ircd/motd.c: add a freelist for struct Motds
4493 2000-11-30 Kevin L. Mitchell <klmitch@mit.edu>
4495 * ircd/s_stats.c (report_feature_list): report features--only
4496 local opers can see logging configuration, since it doesn't really
4497 mean anything to users
4499 * ircd/s_err.c: add reply messages for new feature subsystem
4501 * ircd/s_conf.c: add F lines to .conf
4503 * ircd/parse.c: add the message descriptions for /set, /reset, and
4506 * ircd/m_stats.c: add /stats f
4508 * ircd/m_set.c (mo_set): implement /set
4510 * ircd/m_reset.c (mo_reset): implement /reset
4512 * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
4513 reopens log files (for log file rotation)
4515 * ircd/m_get.c (mo_get): implement /get
4517 * ircd/ircd_log.c: use int instead of void return value; add
4518 log_report_features() and log_canon(); fix a function that
4519 disappears if DEBUGMODE not #define'd
4521 * ircd/ircd_features.c: functions to manipulate feature settings
4522 either from the config file or with the new /set, /reset, and /get
4525 * ircd/Makefile.in: add new .c files, run make depend
4527 * include/s_stats.h: declare report_feature_list() (/stats f
4530 * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
4531 ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
4534 * include/msg.h: add defines for SET, RESET, and GET
4536 * include/ircd_log.h: add a function to canonicalize subsystem
4537 names; change some void return values to int
4539 * include/ircd_features.h: new features subsystem handles all the
4540 manipulation of special features, like log files
4542 * include/handlers.h: declare new mo_{s,res,g}et message handlers
4543 for fiddling with features run-time
4545 * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
4546 seemed like a good idea at the time...
4548 * doc/example.conf: document new F lines
4550 2000-11-29 Kevin L. Mitchell <klmitch@mit.edu>
4552 * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
4553 new logging functions, which have special support for the debug
4554 log; added loop detection to vdebug(), so that I can
4555 sendto_opmask_butone() from log_vwrite() without incurring another
4558 * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
4559 this allows log file rotations
4561 * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
4563 * ircd/ircd_log.c: much more work fleshing out the interface;
4564 removed old interface; included backwards-compat ircd_log()
4565 function that logs to subsystem LS_OLDLOG
4567 * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
4570 * include/ircd_log.h: include stdarg.h for va_list; move ordering
4571 warning to top of file; fill out LogSys enum; declare new
4572 log_debug_init(), log_vwrite(), log_write_kill(), and
4573 log_[sg]et_*() functions; add flags argument to log_write();
4574 defined flags to inhibit various logging actions
4576 * include/client.h: added support for new SNO_DEBUG, enabled only
4577 if DEBUGMODE is defined
4579 2000-11-28 Kevin L. Mitchell <klmitch@mit.edu>
4581 * ircd/ircd_log.c: make sure the various LOG_* constants are
4582 defined (probably not needed, since #include <syslog.h> isn't
4583 conditional); various static data needed for the new logging
4584 functions; definitions of new logging functions
4586 * include/ircd_log.h: new LogSys enum, declarations for part of
4589 * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
4590 which was of course stupid; switched to using switch/case in
4591 initialization in motd_create(); zero the MotdList.other pointer
4594 * ircd/ircd.c (main): motd_init() has to come before init_conf(),
4595 or we overwrite init_conf()'s hard work with respect to T-lines
4597 2000-11-27 Kevin L. Mitchell <klmitch@mit.edu>
4599 * ircd/s_stats.c: comment out report_motd_list and include a
4600 reference to motd_report()
4602 * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
4603 motd_add() from the conf parser; call motd_clear() from the rehash
4604 routine; remove the no longer needed memory clearing and reloading
4605 stuff from the rehash service routine
4607 * ircd/motd.c: loads new API, including static internal functions
4608 to do allocation/deallocation, etc.
4610 * ircd/m_stats.c: use new motd_report() instead of
4613 * ircd/m_motd.c: use new syntax for motd_send()
4615 * ircd/ircd.c: use new motd_init() function
4617 * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
4618 Makefile.(in); also ran make depend
4620 * include/motd.h: don't need config.h, but now do need time.h;
4621 define new structures and constants; redefine old API and define
4624 2000-11-22 Kevin L. Mitchell <klmitch@mit.edu>
4626 * ircd/s_user.c (register_user): use motd_signon() instead of
4627 calling m_motd; much cleaner this way
4629 * ircd/motd.c: write the new motd_* stuff to make MOTD handling
4632 * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
4635 * include/motd.h: define new MOTD API stuff
4637 2000-11-20 Kevin L. Mitchell <klmitch@mit.edu>
4639 * ircd/ircd_reply.c (protocol_violation): rewrite
4640 protocol_violation so it'll actually work
4642 oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
4643 the client's real name in there.
4645 * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
4646 resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
4647 gets called from register_user with a NULL sptr. This is probably
4648 a design problem, but this bandaid will do for now...
4650 2000-11-19 Isomer <isomer@coders.net>
4651 * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
4652 to problems in the server<->server protocol.
4654 * ircd/m_connect.c: allow remote connects with a port of '0'
4655 meaning to use the port in the config file.
4657 * ircd/m_create.c: Enable hacking protection, lets see how far we
4660 * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
4661 clients, so we don't any more.
4663 * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
4664 and the user@host is displayed of the victim.
4666 * ircd/m_map.c: reloaded 'dump_map'.
4668 * ircd/m_trace.c: allow per class T:
4670 * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
4672 2000-11-17 Isomer <isomer@coders.net>
4674 * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
4675 that were the *same* instead of different. Oh the embarrasment!
4677 * ircd/IPcheck.c: Merged net's fix.
4679 2000-11-02 Kevin L. Mitchell <klmitch@mit.edu>
4681 * ircd/m_whois.c: remove compiler warning by adding a newline to
4684 * ircd/m_names.c: moved the flags up to s_user.h
4686 * ircd/m_join.c: call do_names instead of m_names; restructure
4687 ms_join to never transmute a JOIN into a CREATE, but use the TS in
4688 the JOIN (if present) to timestamp the channel
4690 * ircd/channel.c: send JOINs individually, instead of grouping
4691 them, so that we can send the channel's creation time
4693 * include/s_user.h: declare do_names()
4695 2000-10-30 Isomer <isomer@coders.net>
4696 * ircd/m_oper.c: Fixed warning
4698 2000-10-30 Isomer <isomer@coders.net>
4699 * ircd/m_oper.c: Fixed over agressive cut and no paste
4701 2000-10-30 Isomer <isomer@coders.net>
4703 * ircd/m_topic.c: Restructured, fixed bug where topics on local
4704 channels are propergated (I forget who pointed this out to me, but
4705 thanks anyway). Also to save bandwidth don't send the topic to
4706 users if the topic is already the same on the server (but still
4707 propergate to other servers). X/W's "autotopic" feature must
4708 chew a lot of bandwidth, hopefully this will help reduce this.
4710 * doc/rfc1459.rfc: Updated documentation on /topic.
4712 * ircd/listener.c: snotice warnings about failed accept()'s
4713 potentially warning admins that they're running out of fd's.
4715 * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
4716 people in a class in /stats y
4718 * ircd/m_create.c: Checks for timewarp hacking and squit's
4719 evil servers. (currently disabled)
4722 2000-10-30 net <simms@lucida.qc.ca>
4724 * ircd/gline.c: Fixed various bugs Isomer left behind.
4726 2000-10-26 Kevin L. Mitchell <klmitch@mit.edu>
4728 * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
4729 channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
4731 2000-10-24 Kevin L. Mitchell <klmitch@mit.edu>
4733 * ircd/channel.c: ok, now last mode rules; mode +ps will always
4734 result in +s (and won't send a mode if the channel is already +s);
4735 mode +sp will always result in +p; -n+n on a +n channel results in
4736 no mode change; -n+n on a -n channel results in a +n mode change;
4739 2000-10-23 Kevin L. Mitchell <klmitch@mit.edu>
4741 * ircd/channel.c: add "add" and "del" elements to ParseState to
4742 avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
4743 mode_parse_limit that caused it to clear all channel modes
4744 prematurely; restructure mode_parse_mode to avoid calling
4745 modebuf_mode too early (ties in with first mentioned change);
4746 better logic for +p/+s mutual exclusivity; initialize "add" and
4747 "del" elements in mode_parse; send simple modes down to
4748 modebuf_mode after the loop in mode_parse
4750 2000-09-28 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4751 * ircd/m_names.c: Fixed a non-lethal logic error that
4752 triggers an assert() in find_member_link while debugging.
4753 (Spotted by Maniac-).
4754 2000-09-19 Thomas Helvey <helveytw@home.com>
4755 * ircd/s_conf.c: move K:lines to their own list and data
4756 structures, add supporting code.
4757 * ircd/m_stats.c: cleanup stats processing a bit move
4758 kline listing code to a new function, haven't figured
4759 out where it goes yet tho'
4760 * ircd/s_stats.c: added K:line bulk lister
4761 * include/s_conf.h: added new DenyConf struct
4762 * *[ch]: fixeup code that depended on changes
4764 2000-09-17 Thomas Helvey <helveytw@home.com>
4765 * ircd/class.c: encapsulate class list
4766 * include/class.h: clean up classes
4767 * * fixup code that depended on changes
4769 2000-09-17 Thomas Helvey <helveytw@home.com>
4770 * ircd/s_conf.c: add me to local conf
4771 * include/s_conf.h: move CONF_ME macro to chkconf.c
4772 * ircd/s_bsd.c: cleanup initialization, allow virtual host
4773 to be changed by rehash
4775 2000-09-17 Thomas Helvey <helveytw@home.com>
4776 * include/class.h: add missing prototype
4777 * ircd/class.c: make argument to get_conf_class const
4779 2000-09-17 Thomas Helvey <helveytw@home.com>
4780 * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
4782 * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
4785 2000-09-16 Thomas Helvey <helveytw@home.com>
4786 * ircd/s_conf.c: add code for server struct
4787 * ircd/client.c: copy of class.c sort of, new file for client
4788 specific operations, will move things here as appropriate,
4789 currently only one function is exported from here.
4790 * ircd/*.c: general logic cleanups, convert negatives to
4791 positives in places.
4793 2000-09-16 Thomas Helvey <helveytw@home.com>
4794 * ircd/s_conf.c: add code for new crule data structs, strip quotes
4795 * ircd/crule.c: clean up scary casting a bit, type safety stuff
4796 * include/s_conf.h: add CRuleConf struct and support, remove
4798 * include/crule.h: type safety cleanups
4799 * ircd/*.c: fixup code that depended on stuff I changed
4801 2000-09-15 Thomas Helvey <helveytw@home.com>
4802 * ircd/s_conf.c: start adding code for new conf data structs, changed
4803 listeners, admin line, motd lines, class lines. Move validate_hostent
4804 to resolver. General mayhem.
4805 * include/s_conf.h: new data structs and accessors
4806 * ircd/res.c: move validate_hostent here, rewrite, use regular
4807 expression for validation.
4808 * doc/example.conf: update docs for port
4810 2000-09-14 Thomas Helvey <helveytw@home.com>
4811 * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
4812 up conf_init into managable chunks.
4813 * ircd/listener.c (set_listener_mask): fix logic bug core dump.
4814 * include/s_conf.h: add new data struct for local info (unwinding the mess).
4816 2000-09-13 Thomas Helvey <helveytw@home.com>
4817 * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
4819 * ircd/list.c: put SLinks in free lists
4820 * ircd/channel.c: put Memberships in free lists
4821 * ircd/ircd.c: rearrange initializations a bit in main
4822 Note: With these changes, ircd NEVER frees Clients, SLinks or
4823 Memberships. It will also rarely need to allocate new
4824 ones during net bursts and other disruptions. This should
4825 cut down on memory fragmentation a bit as well.
4827 2000-08-30 Kevin L. Mitchell <klmitch@mit.edu>
4829 * ircd/m_names.c (do_names): pull-up from do_names fix in
4832 2000-07-15 Perry Lorier <Isomer@coders.net>
4833 * various: IP only k:'s and G:'s now do bit tests instead of two(!)
4834 match()'s. Major Major cpu savings. Also speed up the
4835 other case slightly. As a side effect you can now
4836 k/Gline *@10.0.0.0/8. I'll do bans tomorrow, it's nearing
4839 2000-07-15 Perry Lorier <Isomer@coders.net>
4840 * various: Fixed warnings after compiling on an alpha.
4841 2000-07-09 Perry Lorier <Isomer@coders.net>
4842 * doc/ircd.8: Applied grammitical changes by Liandrin, applied
4843 changes suggested by various other people.
4844 * ircd/IPcheck.c: More bug fixes. Current problem appears to be
4845 that it gets a corrupt entry somehow.
4846 2000-07-09 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4847 * ircd/m_oper.c: Clean up compiler warning.
4849 2000-07-08 Perry Lorier <Isomer@coders.net>
4850 * doc/ircd.8: Updated the documentation, it was slightly out of date
4851 being updated around 1989.
4852 * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
4853 fixed a few minor glitches.
4854 * doc/rfc1459.unet: Updated.
4855 * ircd/IPcheck.c: Fixed more bugs.
4856 * ircd/s_bsd.c: We now keep track of servers we've conected.
4858 2000-07-02 Perry Lorier <Isomer@coders.net>
4859 * ircd/s_misc.c: Fixed remote IPcheck bug. Ok, I'm a moron, so sue
4860 me. Thanks to Hektik, thanks thanks thanks thanks
4861 thanks thanks thanks thanks thank thanks thank thanks
4863 2000-07-01 Perry Lorier <Isomer@coders.net>
4864 * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
4865 * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
4867 2000-06-22 Perry Lorier <Isomer@coders.net>
4868 * ircd/IPcheck.c: Large chunks redone.
4869 * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
4870 single AND double digit limits are allowed now.
4871 * misc other: Changes to IPcheck.
4873 2000-06-30 Perry Lorier <Isomer@coders.net>
4874 * ircd/ircd.c: Fix command line parameter bugs.
4876 2000-06-30 Perry Lorier <Isomer@coders.net>
4877 * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
4878 * ircd/m_nick.c: Tidied things up.
4880 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
4881 * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
4883 2000-05-29 Perry Lorier <Isomer@coders.net>
4884 * ircd/m_stats.c: add /stats v to do only the last part of the /trace
4885 * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
4886 you think it'll get bored and fix itself?
4888 2000-06-09 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4890 * ircd/m_names.c: Clean up compiler warnings.
4892 2000-06-09 Kevin L. Mitchell <klmitch@mit.edu>
4894 * ircd/channel.c (mode_parse_client): don't send warning if
4895 there's not enough arguments for a +/-o/v; means the habit of
4896 doing "/mode #channel +oooooo bob" doesn't result in a bunch of
4899 2000-06-04 Greg Sikorski <gte@atomicrevs.demon.co.uk>
4901 * ircd/m_names.c: Re-factor code to remove unneccessary
4902 GlobalChannelList iteration every time someone joins a channel.
4904 2000-06-02 Kevin L. Mitchell <klmitch@mit.edu>
4906 * ircd/s_user.c: add struct Gline * argument to register_user;
4907 look up global glines and repropagate them if necessary; send
4908 acknowledgement of gline to remote servers when registering users
4910 * ircd/s_serv.c (server_estab): don't send acknowledgement of
4911 local glines to remote servers; do send gline acknowledgement of
4914 * ircd/m_user.c (m_user): pass new struct Gline * argument to
4917 * ircd/m_pong.c: pass new struct Gline * argument to register_user
4919 * ircd/m_nick.c (ms_nick): document protocol change
4921 * ircd/gline.c: support GLINE_LASTMOD
4923 * include/s_user.h: add struct Gline * argument to register_user
4925 * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
4927 * ircd/s_conf.c (find_kill): add unsigned int argument to
4930 * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
4931 glines; add unsigned int argument to gline_lookup()
4933 * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
4934 argument to gline_lookup()
4936 * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
4937 parameter, or when it falls out of bounds: see comments prior to
4938 call to jupe_resend(); call server_estab with struct Jupe
4939 parameter, so that we place the appropriate %<lastmod> in the
4942 * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
4943 server, as well as for servers when we're sending the BURST
4945 * include/s_serv.h: add a struct Jupe * to the arguments for
4946 server_estab() so that we can send the appropriate lastmod
4949 * ircd/m_gline.c (ms_gline): actually, this should be the
4950 slightest bit more efficient...
4952 * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
4953 bit more efficient...
4955 * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
4958 * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
4961 * ircd/channel.c (joinbuf_join): really remove user from local
4964 2000-05-29 Perry Lorier <Isomer@coders.net>
4965 * ircd/m_names.c: Removed redundant space.
4966 * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
4968 2000-05-18 Kevin L. Mitchell <klmitch@mit.edu>
4970 * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
4973 2000-05-04 Kevin L. Mitchell <klmitch@mit.edu>
4975 * ircd/channel.c: replace bogus assertions with returns, which is
4976 logically correct; only wipe out limit/key if they were originally
4977 set in the first place; remove user from channel when doing a
4978 PARTALL; only send MODE +o for user CREATEing channel if user is
4979 not MyUser--CREATE will only be used if the channel did not
4980 originally exist, therefore we can assume no one local is on the
4981 channel anyway, and we don't exactly need for the user to see an
4982 explicit +o for themselves
4984 * doc/readme.gline: describe the syntax of the GLINE command
4986 * doc/readme.jupe: update to reflect a couple of changes to JUPE
4988 * ircd/gline.c: don't propagate local changes
4990 * ircd/jupe.c: don't propagate local changes
4992 * ircd/m_gline.c (mo_gline): force local flag when deactivating
4993 glines with 0 lastmod
4995 * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
4996 are now removed instead of being deactivated
4998 * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
4999 -<mask>" be accepted
5001 * ircd/channel.c (send_channel_modes): deal with one of the last
5004 * ircd/m_burst.c (ms_burst): debugged ban processing; removed
5007 * ircd/channel.c (modebuf_extract): remove debugging
5008 sendto_opmask_butone calls
5010 2000-05-03 Kevin L. Mitchell <klmitch@mit.edu>
5012 * ircd/channel.c: support a couple of new flags to support using
5013 mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
5014 of modebuf_extract to extract added flags for use by ms_burst
5016 * include/channel.h: a couple of new flags to support using
5017 mode_parse inside ms_burst
5019 * ircd/m_burst.c (ms_burst): brand new implementation of BURST
5021 * ircd/m_endburst.c: add loop to processing of end_of_burst to
5022 free empty channels after the BURST is over.
5024 * ircd/m_server.c: convert to use new send.c functions--I wanted
5025 to rewrite it from scratch, but the logic's pretty complex; I may
5026 still rewrite it, though...
5028 2000-05-02 Thomas Helvey <tomh@inxpress.net>
5030 * ircd/ircd.c: fix broken header include ordering
5032 2000-05-02 Thomas Helvey <tomh@inxpress.net>
5034 * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
5035 review emailed privately
5037 * include/IPcheck.h: removed unneeded include
5039 2000-05-02 Kevin L. Mitchell <klmitch@mit.edu>
5041 * ircd/s_user.c (hunt_server): throw in a comment so I know what
5042 the sendto_one is for
5044 * include/querycmds.h (Count_unknownbecomesclient): convert to
5045 sendto_opmask_butone
5047 * ircd/send.c: start removing dead code
5049 * include/send.h: start removing dead code
5051 * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
5054 * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
5056 2000-05-01 Kevin L. Mitchell <klmitch@mit.edu>
5058 * ircd/m_stats.c: convert to sendcmdto_one / send_reply
5060 * ircd/m_kick.c: Completely reimplement m_kick
5062 * ircd/channel.c: send_user_joins removed; it was dead code,
5065 2000-05-01 Perry Lorier <isomer@coders.net>
5066 * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
5067 * ircd/channels.c: My fix for the part problem. Untested, probably
5068 won't work. Can't be much worse than the current problem.
5069 it'll either work or core, take your pick.
5072 2000-04-30 Perry Lorier <isomer@coders.net>
5073 * config/config-sh.in: Fix for CONNEXIT
5074 * ircd/s_{user,misc}.c: Fix for CONNEXIT
5075 * ircd/m_invite.c: Fix for incorrectly numnickified invite.
5076 (Kev: Want to come talk to me about this?)
5078 2000-04-30 Steven M. Doyle <steven@doyle.net>
5080 - general cleanups and readability enhancements
5081 - rewrite of setuid/chroot code.
5082 - server will no longer run as root
5083 - -DPROFIL compile option removed
5084 - Fixed IPcheck API calls
5086 * config/config-sh.in
5087 - Fixed up chroot compile options
5088 - Added options for debug and profile compiles
5090 * config/gen.ircd.Makefile
5091 - Support for new debug/profile options
5094 - Support for new debug/profile options
5096 * ircd/ircd_signal.c
5100 - Removed old API prototypes, added new ones
5103 - Readability cleanups (well, I -think-...)
5104 - Changed IPRegistryEntry.last_connect to a time_t. The previously
5105 used unsigned short was probably causing interesting things after
5106 a client had been connected longer than about 65,535 seconds...
5107 - Removed old API functions.
5110 - Removed IPcheck.h include
5112 * Additionally modified IPcheck API calls in:
5122 2000-04-30 Perry Lorier <isomer@coders.net>
5123 * ircd/s_bsd.c: Sigh. :)
5124 * ircd/m_mode.c: fix for modeless channels by poptix.
5126 2000-04-29 Kevin L. Mitchell <klmitch@mit.edu>
5128 * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
5130 * ircd/channel.c (clean_channelname): make clean_channelname also
5131 truncate long channel names
5133 2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
5135 * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
5137 * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
5140 * include/channel.h: definitions and declarations for the struct
5143 2000-04-29 Perry Lorier <isomer@coders.net>
5144 * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
5146 2000-04-29 Perry Lorier <isomer@coders.net>
5147 * ircd/s_bsd.c: Add debugging code to IPcheck
5149 2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
5151 * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
5153 * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
5156 * ircd/m_userhost.c (m_userhost): add a dead code comment
5158 * ircd/m_desynch.c: forgot one...
5160 * ircd/m_rehash.c (mo_rehash): er, duplicates :)
5162 * ircd/m_proto.c (proto_send_supported): just change a comment so
5163 it doesn't show up in my scans
5165 * ircd/ircd_reply.c (send_reply): fix a slight bug...
5167 * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
5170 * ircd/parse.c (parse_server): argument wrangling to make
5171 processing in do_numeric a little easier to deal with
5173 * ircd/s_serv.c (server_estab): SERVER should come from
5174 acptr->serv->up, not &me
5176 * ircd/m_lusers.c: accidentally left out sptr for a %C
5178 * ircd/send.c: hack to support doing wallchops...
5180 * ircd/m_whowas.c: convert to new send functions
5182 * ircd/m_whois.c: convert to new send functions
5184 * ircd/m_who.c: convert to new send functions
5186 * ircd/m_wallops.c: convert to new send functions
5188 * ircd/m_wallchops.c: convert to new send functions
5190 * ircd/m_version.c: convert to new send functions
5192 * ircd/m_userip.c: convert to new send functions
5194 * ircd/m_userhost.c: convert to new send functions
5196 * ircd/m_uping.c: convert to new send functions
5198 * ircd/m_trace.c: convert to new send functions
5200 * ircd/m_topic.c: convert to new send functions
5202 * ircd/m_time.c: convert to new send functions
5204 * ircd/m_squit.c: convert to new send functions
5206 * ircd/m_silence.c: convert to new send functions
5208 * ircd/m_settime.c: convert to new send functions
5210 * ircd/m_restart.c: convert to new send functions
5212 * ircd/m_rehash.c: convert to new send functions
5214 * ircd/m_privmsg.c: convert to new send functions
5216 * ircd/m_pong.c: convert to new send functions
5218 * ircd/m_ping.c: convert to new send functions
5220 * ircd/m_pass.c: convert to new send functions
5222 * ircd/m_opmode.c: convert to new send functions
5224 * ircd/m_oper.c: convert to new send functions
5226 * ircd/m_notice.c: convert to new send functions
5228 * ircd/m_nick.c: convert to new send functions
5230 * ircd/m_names.c: convert to new send functions
5232 * ircd/m_motd.c: convert to new send functions
5234 * ircd/m_mode.c: convert to new send functions
5236 * ircd/m_map.c: convert to new send functions
5238 * ircd/m_lusers.c: convert to new send functions
5240 * ircd/m_list.c: convert to new send functions
5242 * ircd/m_links.c: convert to new send functions
5244 * ircd/m_kill.c: convert to new send functions
5246 * ircd/m_jupe.c: convert to new send functions
5248 * ircd/m_invite.c: convert to new send functions
5250 * ircd/m_info.c: convert to new send functions
5252 * ircd/m_help.c: convert to new send functions
5254 * ircd/m_gline.c: convert to new send functions
5256 * ircd/m_error.c: convert to new send functions
5258 * ircd/m_endburst.c: convert to new send functions
5260 * ircd/m_die.c: convert to new send functions
5262 * ircd/m_destruct.c: convert to new send functions
5264 * ircd/m_defaults.c: convert to new send functions
5266 * ircd/m_connect.c: convert to new send functions
5268 2000-04-28 Perry Lorier <isomer@coders.net>
5269 * RELEASE.NOTES: Describe a few more undocumented features.
5270 * config/config-sh.in: change the default paths for logging
5271 and the recommended number of channels.
5272 * include/supported.h: Rearrange slightly, added CHANTYPE's
5274 2000-04-27 Kevin L. Mitchell <klmitch@mit.edu>
5276 * ircd/m_close.c: convert to send_reply
5278 * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
5280 * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
5282 * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
5284 * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
5285 that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION
5286 HAS A MAJOR HACK!!! The whole hunt_server architecture should be
5287 carefully rethought...
5289 * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
5291 * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
5293 * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
5294 numeric nick; therefore, we have to use the server name
5296 * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
5298 * ircd/send.c: fix minor bugs
5300 * ircd/s_user.c (check_target_limit): mark dead code so I filter
5303 * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
5306 * ircd/parse.c: mark dead code so I filter it when I grep
5308 * ircd/map.c: mark dead code so I filter it when I grep
5310 * ircd/ircd.c: mark dead code so I filter it when I grep
5312 * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
5315 * ircd/channel.c: mark dead code so I filter it when I grep
5317 * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
5318 hope I'm not stepping on toes...
5320 * ircd/s_conf.c: more sendto_opmask_butone / send_reply
5321 conversions; use ircd_snprintf in a couple of cases to negate the
5322 possibility of buffer overflow
5324 2000-04-26 Kevin L. Mitchell <klmitch@mit.edu>
5326 * ircd/channel.c: convert as much as possible to new send
5329 * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
5330 test member->user->from->fd, not from->fd
5332 * ircd/gline.c (gline_add): go ahead and add badchans; we just
5333 won't look for them in m_gline; this way, they always work...
5335 * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
5337 * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
5338 ircd_vsnprintf conversion specifiers
5340 * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
5341 I have my conversion specifiers
5343 * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
5345 * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
5348 * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
5349 little less brain-dead
5351 * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
5353 * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
5356 * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
5359 * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
5362 * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
5364 * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
5366 * ircd/s_user.c (register_user): use RPL_EXPLICIT for
5369 * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
5371 * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
5372 a numeric as needing to use an explicit pattern, which will be the
5373 first argument in the variable argument list
5375 * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
5376 non-prefixed nospoof PING
5378 * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
5379 non-prefixed SERVER login
5381 * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
5382 a numeric usage further up)
5384 * include/send.h: declare sendrawto_one
5386 * ircd/send.c (sendrawto_one): new function to use ONLY for
5387 non-prefixed commands, like PING to client, or PASS/SERVER on
5390 2000-04-25 Kevin L. Mitchell <klmitch@mit.edu>
5392 * ircd/ircd_snprintf.c (doprintf): implement %H for possible
5393 future expansion (channel numerics?)
5395 * include/ircd_snprintf.h: added documentation to # to explain use
5396 with %C; added documentation for : to explain use with %C; added
5397 documentation for %H for channels
5399 * ircd/whocmds.c: use send_reply
5401 * ircd/userload.c: use sendcmdto_one
5403 * ircd/uping.c: use sendcmdto_one
5405 * ircd/send.c: use new flags to %C format string; ':' prefixes
5406 client name with a colon for local connects, '#' uses
5407 nick!user@host form for local connects
5409 * ircd/s_user.c: use send_reply, sendto_opmask_butone,
5410 sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
5412 * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
5414 * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
5417 * ircd/s_auth.c: use sendto_opmask_butone
5419 * ircd/res.c: use sendcmdto_one
5421 * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
5422 debugging assertions
5424 2000-04-24 Kevin L. Mitchell <klmitch@mit.edu>
5426 * ircd/support.c: dumpcore is no longer used, so get rid of it
5428 * ircd/parse.c: use send_reply, sendcmdto_one
5430 * ircd/map.c: use send_reply
5432 * ircd/listener.c: use send_reply
5434 * ircd/jupe.c: use sendto_opmask_butone, send_reply
5436 * ircd/ircd_reply.c: use send_reply
5438 * ircd/ircd.c: use sendto_opmask_butone
5440 * ircd/gline.c: use sendto_opmask_butone, send_reply
5442 * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
5443 registered clients; make FLAG_ALT print nick!user@host; make
5444 FLAG_COLON print :blah
5446 * ircd/class.c (report_classes): use send_reply instead of
5449 * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
5451 * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
5452 sendto_one with sendcmdto_one
5454 2000-04-21 Kevin L. Mitchell <klmitch@mit.edu>
5456 * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
5457 MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
5458 sendcmdto_match_butone
5460 * include/send.h: declare sendcmdto_match_butone
5462 2000-04-20 Kevin L. Mitchell <klmitch@mit.edu>
5464 * ircd/jupe.c: update to use send_reply()
5466 * ircd/gline.c: update to use send_reply()
5468 * include/ircd_reply.h: declare send_reply
5470 * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
5471 replies; uses ircd_snprintf
5473 * ircd/send.c: added comments to redirect searchers to appropriate
5474 sendcmdto_* function; moved new functions to end of file; added
5475 explanatory comments; reordered arguments; defined new functions
5478 * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
5480 * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
5482 * ircd/jupe.c: reorder arguments to sendcmdto_* functions
5484 * ircd/gline.c: reorder arguments to sendcmdto_* functions
5486 * include/send.h: reorder arguments, add explanatory comments,
5487 declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
5488 and vsendto_opmask_butone
5490 2000-04-19 Kevin L. Mitchell <klmitch@mit.edu>
5492 * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
5493 vsendto_op_mask that uses '*' instead of the receiving client
5496 * include/send.h: declare sendcmdto_channel_butone; takes a skip
5497 argument that allows you to skip (or not to skip) deaf users,
5498 users behind bursting servers, and non channel operators
5500 2000-04-17 Kevin L. Mitchell <klmitch@mit.edu>
5502 * ircd/send.c: new sendcmdto_channel_butserv -- note that old
5503 sendto_channel_butserv has a subtle bug; also wrote
5504 sendcmdto_common_channels.
5506 * include/send.h: declare new sendcmdto_* functions
5508 * ircd/jupe.c: support local deactivations of jupes
5510 * ircd/gline.c: support local deactivations of glines
5512 * include/jupe.h: JUPE_LDEACT allows jupes to be locally
5513 deactivated; if they aren't locally deactivated, then it slaves to
5514 the net-wide activation status; JupeIsRemActive() tests only
5515 whether the jupe is active everywhere else
5517 * include/gline.h: GLINE_LDEACT allows glines to be locally
5518 deactivated; if they aren't locally deactivated, then it slaves to
5519 the net-wide activation status; GlineIsRemActive() tests only
5520 whether the gline is active everywhere else
5522 * ircd/gline.c: detect overlapping G-lines; if an existing, wider
5523 gline expires after the new one will, we drop the new one,
5524 otherwise we add the G-line after that one (so the wide one will
5525 apply first); if the new one contains an existing G-line and if it
5526 will expire after the existing one, we drop the existing one to
5529 * ircd/m_gline.c (mo_gline): opers could issue remote local
5530 glines when CONFIG_OPERCMDS was off; fixed
5532 2000-04-16 Kevin L. Mitchell <klmitch@mit.edu>
5534 * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
5535 this is a local JUPE
5537 * ircd/gline.c: add flags argument to gline_activate and
5538 gline_deactivate for future expansion
5540 * ircd/m_gline.c: pass flags to gline_activate and
5543 * include/gline.h: add flags argument to gline_activate and
5546 * ircd/jupe.c: add flags argument to jupe_activate and
5547 jupe_deactivate for future expansion
5549 * include/jupe.h: add flags argument to jupe_activate and
5552 * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
5553 local, active; pass flags to jupe_activate and jupe_deactivate
5555 * include/gline.h: remove dead code
5557 * ircd/gline.c: make gline expire times relative to CurrentTime,
5558 since that should be monotonically increasing, instead of
5559 TStime(), which can be set backwards, and which can therefore
5560 cause an expire time to increase; make local glines be removed
5561 instead of just deactivated; don't let gline_find() look for
5562 user@host glines if the mask being looked up is a channel mask
5564 * ircd/send.c (vsendcmdto_one): forgot to account for the case
5565 where origin is a server and destination is a user
5567 * ircd/jupe.c: make jupe expire times relative to CurrentTime,
5568 since that should be monotonically increasing, instead of
5569 TStime(), which can be set backwards, and which can therefore
5570 cause an expire time to increase; make local jupes be removed
5571 instead of just deactivated
5573 * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
5574 limit is fine. any other warnings I should know about?
5576 2000-04-15 Thomas Helvey <tomh@inxpress.net>
5578 * ircd/*.c: const correctness and type safety cleanups to
5579 get code to compile with C++ compiler. Still has
5580 signed/unsigned comparison warnings.
5582 2000-04-15 Greg Sikorski <gte@atomicrevs.demon.co.uk>
5584 * ircd/userload.c: change <sys/time.h> include to <time.h> for
5587 2000-04-14 Kevin L. Mitchell <klmitch@mit.edu>
5589 * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
5590 and convert acptr...
5592 * ircd/s_user.c: move gline_lookup function call into
5593 register_user, where it'll have a username to lookup!
5595 * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
5596 functions; also stuff send_error_to_client into return clauses
5598 * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
5599 functions; also use send_error_to_client where that makes sense
5601 * ircd/jupe.c: modify to utilize new sendcmdto_* series of
5602 functions; also use send_error_to_client where that makes sense
5604 * ircd/gline.c: modify to utilize new sendcmdto_* series of
5605 functions; also fix gline_lookup() to deal properly with remote
5606 clients--boy, do struct Client and struct User need to be cleaned
5609 * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
5612 * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
5613 sendcmdto_serv_butone(), all utilizing the %v conversion of
5616 * include/send.h: define IRC_BUFSIZE, max size of a message;
5617 declare sendcmdto_one(), vsendcmdto_one(), and
5618 sendcmdto_serv_butone()
5620 * include/msg.h: define all the CMD_* constants needed to utilize
5621 the new sendcmdto_* series of functions
5623 * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
5625 * ircd/gline.c: remove old, dead code.
5627 * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
5628 unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
5629 (don't advertise proxies); remove dead code
5631 * ircd/parse.c: oper handler for JUPE only lists jupes unless
5632 CONFIG_OPERCMDS is enabled
5634 * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
5635 CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
5637 * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
5638 always return ERR_DISABLED
5640 * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
5641 enabled, always return ERR_DISABLED
5643 * ircd/s_err.c: add error message to indicate disabled commands
5645 * include/numeric.h (ERR_DISABLED): to indicate disabled commands
5647 * doc/Configure.help: add documentation for CONFIG_OPERCMDS
5649 * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
5650 CONFIG_NEW_MODE to 'y' for now
5652 * ircd/gline.c (gline_list): fix a minor formatting bogon
5654 * BUGS: since I fixed that bug, might as well mark it fixed.
5656 * ircd/m_join.c: look up badchans with GLINE_EXACT
5658 * ircd/m_gline.c: fix parc count problems; look up existing
5659 G-lines with GLINE_EXACT; only set new lastmod when
5660 activating/deactivating existing glines if old lastmod was not 0
5662 * ircd/gline.c: forgot to copy the gline reason over; don't
5663 propagate a gline with 0 lastmod if origin is user; add
5664 GLINE_EXACT to force exact matching of gline mask
5666 * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
5669 * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
5670 but gline_lookup() actually takes a client--d'oh.
5672 2000-04-13 Thomas Helvey <tomh@inxpress.net>
5673 * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
5675 2000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk>
5677 * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
5679 "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
5682 * ircd/whocmds.c: Change idle time calc from socket idle to user
5685 2000-04-13 Kevin L. Mitchell <klmitch@mit.edu>
5687 * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
5688 too, for ircd_snprintf.c
5690 * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
5691 comments; mostly descended from the Linux manpage for printf, but
5692 also documenting the extensions.
5694 * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
5695 client; make 'q' be the same as 'L'; remove __inline__; only
5696 define EXTENSION if HAVE_LONG_LONG is defined
5698 * include/handlers.h: declare m_gline()
5700 * ircd/parse.c: gline can be called by users, but it only lists
5703 * ircd/s_user.c (set_nick_name): resend gline if a remote server
5704 introduces a glined client
5706 * ircd/s_serv.c (server_estab): burst glines, too
5708 * ircd/gline.c: fix up all the expire times to be offsets;
5709 simplify gline_resend()
5711 * ircd/m_gline.c: begin coding replacements for ms_gline(),
5712 mo_gline(), and m_gline()
5714 * ircd/gline.c (gline_add): allow *@#channel to work correctly;
5715 also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
5717 2000-04-13 Greg Sikorski <gte@atomicrevs.demon.co.uk>
5719 * tools/Bouncer/*: Add comments/documentation/tags.
5720 * tools/Bouncer/*: Add debug defines, make task fork().
5722 2000-04-12 Thomas Helvey <tomh@inxpress.net>
5723 * ircd/s_err.c: Cleanup s_err.c make one table so we
5724 don't have to do anything tricky to get an error string.
5726 2000-04-12 Greg Sikorski <gte@atomicrevs.demon.co.uk>
5727 * Add port bouncer for http (x/w)
5729 2000-04-12 Kevin L. Mitchell <klmitch@mit.edu>
5731 * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
5732 call to gline_find(); also used GlineReason() instead of direct
5733 reference to structure member
5735 * ircd/m_join.c (m_join): replace bad_channel() calls with calls
5736 to gline_find(name, GLINE_BADCHAN), and also check to see if gline
5739 * ircd/channel.c: nothing seems to be called anywhere...
5741 * ircd/s_err.c: update a couple of replies to dovetail with new
5744 * ircd/gline.c: begin complete re-implementation of gline.c along
5745 the lines of the final design of jupe.c
5747 * include/gline.h: begin complete re-implementation of gline.c
5748 along the lines of the final design of jupe.c
5750 * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
5751 %s by %s" message...
5753 * ircd/ircd_snprintf.c: my new snprintf()-like functions
5755 * include/ircd_snprintf.h: my new snprintf()-like functions
5757 2000-04-11 Thomas Helvey <tomh@inxpress.net>
5758 * ircd/IPcheck.c: removed old dead code
5759 * ircd/s_user.c (send_user_info): removed non-standard
5760 user not found message for userhost/userip
5762 2000-04-11 Greg Sikorski <gte@atomicrevs.demon.co.uk>
5764 * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
5765 * doc/p10.html: Work on chapter 4.
5767 2000-04-10 Kevin L. Mitchell <klmitch@mit.edu>
5769 * ircd/channel.c (mode_parse_client): fix coredump on /mode
5770 #foobar +o nosuchnick
5772 2000-04-10 Perry Lorier <Isomer@coders.net>
5775 2000-04-09 Thomas Helvey <tomh@inxpress.net>
5776 * include/IPcheck.h: fix prototype
5777 * ircd/s_user.c: fix usage of IPcheck_remote_connect
5778 * ircd/IPcheck.c: removed unused args
5780 2000-04-09 Thomas Helvey <tomh@inxpress.net>
5781 * include/IPcheck.h: add proto for IPcheck_expire
5783 * ircd/IPcheck.c: Rewrote
5785 * ircd/ircd.c: Add IPcheck_expire to main message loop
5787 * ircd/s_user.c: Redo target hashing, refactor target code
5789 * include/numeric.h: Cleaned up numerics, added which ones are
5790 in use by other networks and what they are in use for.
5792 * ircd/channel.c: cleaned can_join(), allow anyone through anything
5793 if /invited, simplified the function. Opers overusing OPEROVERRIDE
5794 will get a message explaining to them not to cheat.
5796 * ircd/m_join.c: cleaned up the various join functions, should be
5797 a lot more efficient. Still needs work. Now assumes that s<->s
5798 won't send it a JOIN 0. Service coders - note this and tread with
5801 * ircd/m_stats.c: added Gte-'s stats doc patch.
5803 * ircd/m_version.c: /version now returns the 005 numeric as well.
5804 as requested by Liandrin.
5807 2000-04-07 Kevin L. Mitchell <klmitch@mit.edu>
5809 * ircd/m_clearmode.c: add include for support.h for write_log()
5811 * configure: move ircd/crypt/* to tools/*
5813 2000-04-06 Thomas Helvey <tomh@inxpress.net>
5814 * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
5815 set client host to server alias if connection from localhost
5817 2000-04-06 Perry Lorier <isomer@coders.net>
5818 * ircd/ircd.c: Fix core during pinging (oops)
5820 2000-04-06 Perry Lorier <isomer@coders.net>
5821 * ircd/send.c: fixed wrong ident being sent to channels bug.
5822 * include/numerics.h: Updated some of the numerics from other
5823 networks. Flagged some as 'unused' by undernet.
5825 2000-03-30 Perry Lorier <isomer@coders.net>
5826 * ircd/ircd.c: Lets see if this helps the ping problem at all.
5827 * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
5828 time for local clients. (as requested), extended who now returns all
5829 the flags (@+!) so you can tell the complete state of a client.
5831 2000-03-30 Thomas Helvey <tomh@inxpress.net>
5832 * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
5834 2000-03-30 Perry Lorier <isomer@coders.net>
5835 * ircd/parse.c: oops, missed opers.
5837 2000-03-30 Perry Lorier <isomer@coders.net>
5838 * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
5839 for so long. Remember: m_ping MUST be in the parse array. :)
5841 2000-03-30 Perry Lorier <isomer@coders.net>
5842 * ircd/ircd.c: test in check_pings was wrong. I move that we
5843 disallow cvs commit after 10pm localtime....
5845 2000-03-30 Perry Lorier <isomer@coders.net>
5846 * ircd/m_pong.c: Fix it for servers too.
5848 2000-03-30 Perry Lorier <isomer@coders.net>
5849 * ircd/m_pong.c: Fix ping timeout bugs
5851 2000-03-30 Perry Lorier <isomer@coders.net>
5852 * ircd/channel.c: Bans had CurrentTime in their when field instead
5855 2000-03-31 Thomas Helvey <tomh@ixpress.net>
5856 * ircd/numnicks.c (SetXYYCapacity): fix for extended
5859 2000-03-30 Perry Lorier <isomer@coders.net>
5860 * ircd/m_nick.c: send kills both ways so when we add nick change
5861 on collision we don't desync the network.
5863 * ircd/map.c: Fixup the map a bit more.
5865 2000-03-31 Kevin L. Mitchell <klmitch@mit.edu>
5867 * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
5869 * ircd/m_opmode.c: Log the mode changes to OPATH
5871 * ircd/channel.c (modebuf_flush_int): Log the mode changes to
5874 * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
5877 * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
5879 * config/config-sh.in: added OPATH for opmode log file
5881 * ircd/m_clearmode.c (do_clearmode): updated uses of
5882 modebuf_mode_string() for the new usage
5884 * ircd/channel.c: added flag MODE_FREE and an int argument to
5885 modebuf_mode_string() to indicate that the string must be free'd;
5886 updated calls to modebuf_mode_string() for the new usage; called
5887 collapse(pretty_mask()) on the ban string and use allocated memory
5888 for it; added ban list length accounting; fixed a number of small
5889 bugs in ban processing
5891 * include/channel.h: added flag MODE_FREE and an int argument to
5892 modebuf_mode_string() to indicate that the string must be free'd
5894 * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
5895 keys and limits that are set
5897 2000-03-30 Perry Lorier <isomer@coders.net>
5898 * ircd/ircd.c: rewrote check_pings() for maintainability
5899 and speed. Also changed quit msg's so they don't have
5900 redundant nick[host] info in them.
5902 * ircd/send.c: Changed write errors to report what error
5903 occured (if possible).
5905 * ircd/gline.c: added gline comment to the quit.
5907 * ircd/m_server.c: Added suggestions to server quits mentioning
5908 what went wrong so the admin can fix it earlier instead of asking
5911 * ircd/map.c: Changed m_map() to hide numerics, show a * beside
5912 servers that aren't fully burst yet. And show '(--s)' for servers
5915 * doc/example.conf: Fixed wrapped U:
5917 2000-03-30 Kevin L. Mitchell <klmitch@mit.edu>
5919 * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
5920 mode_parse() (version selectable at compile time)
5922 * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
5924 * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
5926 * config/config-sh.in: add new config option to enable new m_mode
5929 * doc/Configure.help: add documentation for new config option
5932 * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
5933 MODE -v : Not enough parameters
5935 * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
5936 +k and +l even if they weren't set...
5938 * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
5940 * ircd/channel.c: make mode_process_clients() clear the DEOPPED
5941 flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
5942 for; test the 0-th member, not the i-th member, of the client
5945 * ircd/m_clearmode.c (do_clearmode): use the new
5946 mode_invite_clear() function
5948 * ircd/channel.c: cleared up all the compile-time warnings and
5951 * include/channel.h: added declarations for mode_ban_invalidate()
5952 and mode_invite_clear()
5954 * ircd/channel.c: finished mode_parse(), then broke it up into a
5955 dozen or so helper functions to make the code easier to read
5957 2000-03-29 Thomas Helvey <tomh@inxpress.net>
5958 * ircd/ircd.c: refactor server initialization a bit, use
5959 getopt for parsing command line, refactor init_sys, main,
5962 * ircd/s_bsd.c: add functions for initialization to clean
5963 up logic a bit and remove duplicated code.
5965 * include/ircd.h: add struct for server process related
5968 2000-03-29 Kevin L. Mitchell <klmitch@mit.edu>
5970 * ircd/channel.c: initial definition of mode_parse(); flags to
5971 prevent doing the same thing multiple times; helper method
5972 send_notoper() to send a "Not oper"/"Not on channel" notice
5974 * include/channel.h: declare mode_parse() and helper flags
5976 * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
5977 sending to match the current action of set_mode() closely enough
5978 that hopefully there won't be major conflicts
5980 * ircd/channel.c (modebuf_flush_int): consolidated the mode string
5981 building logic, reversed the order of the arguments to mode
5982 commands to have '-' preceed '+'
5984 2000-03-29 Thomas Helvey <tomh@inxpress.net>
5985 * ircd/s_bsd.c (add_connection): don't disable socket options
5986 let OS tune itself and allow important performance tweaks to
5989 2000-03-28 Kevin L. Mitchell <klmitch@mit.edu>
5991 * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
5992 confused by set_mode, which is doing some really weird logic;
5993 guess what I'm going to rewrite next? ;)
5995 2000-03-28 Kevin L. Mitchell <klmitch@emc.com>
5997 * include/channel.h: added MODE_SAVE for the bounds checking stuff
6000 * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
6001 make it do bounds checking on the buffer; all modes are sent only
6002 if the all parameter is 1; modebuf_flush is the exported wrapper
6004 * include/channel.h: add BOUNCE, renumber flags to get a little
6007 * ircd/channel.c (modebuf_flush): don't overload HACK2, add
6008 BOUNCE; send DESYNCH message
6010 2000-03-27 Kevin L. Mitchell <klmitch@emc.com>
6012 * ircd/m_clearmode.c (do_clearmode): only mark the modes the
6013 channel actually has in effect for deletion
6015 * ircd/channel.c: added explanatory comments to all added
6016 functions; made flushing take place at the correct place even if
6017 the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
6018 to bash some stupid bugs; made modebuf_flush() return if ModeBuf
6019 is empty, fixed the apparent source, removed some bogus string
6020 termination code, properly terminate the mode strings, add support
6021 for HACK2 and HACK3, made limit strings not be sent if the limit
6022 is being removed, changed where '+' and '-' come from in sent
6023 strings, added support for DEOP flag, set up bouncing code for
6026 * ircd/Makefile.in: ran make depend
6028 * include/channel.h: added new defines for future functionality,
6029 made modebuf_flush() return int so I can use tail recursion
6031 * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
6032 to make it all compile
6034 * ircd/m_opmode.c: add msg.h to includes...
6036 * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
6038 * ircd/channel.c (modebuf_flush): realized I forgot to
6039 nul-terminate addbuf/rembuf properly...
6041 * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
6043 * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
6044 sendto_serv_butone--blah^2
6046 * ircd/send.c (sendto_serv_butone): stupid comments confused me
6048 * ircd/channel.c (modebuf_flush): if there are no mode changes to
6049 propagate, we're done...
6051 * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
6052 not sendto_all_butone
6054 * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
6056 * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
6058 * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
6061 * ircd/parse.c: added messages for opmode and clearmode
6063 * include/handlers.h: added declarations for mo_opmode(),
6064 ms_opmode(), mo_clearmode(), and ms_clearmode()
6066 * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
6069 * include/channel.h (MODEBUF_DEST_OPMODE): Define the
6070 MODEBUF_DEST_OPMODE flag
6072 * ircd/channel.c (modebuf_flush): added new flag,
6073 MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
6074 to originate from source's server (or source itself, if
6075 IsServer(source)); also causes a server-level MODE to be sent as
6078 * include/channel.h: defined MODEBUF_DEST_SERVER,
6081 * ircd/channel.c: Add another argument to build_string() to handle
6082 numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
6083 servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
6086 2000-03-27 Perry Lorier <isomer@coders.net>
6088 * ircd/s_bsd.c: fixed missing 'u' typo.
6090 2000-03-26 Kevin L. Mitchell <klmitch@emc.com>
6092 * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
6093 _mode_string(), _mode_client(), _flush(); also implemented a
6094 simple build_string()
6096 * include/channel.h: added definition of ModeBuf, modebuf_*
6097 manipulation functions, and a couple of helper macros