DELAYER(8)

πŸ’… DELAYER(8) β€” InterNetNews Documentation's delayer, your fave delaying pipe πŸ’…

✨ NAME ✨

delayer β€” a pipe to delay line-based input by a given time.

🌈 SYNOPSIS 🌈

some-program | delayer [--[no-]buffered] [--delay seconds] [--store
filename] -- some-other-program [args ...]

Legacy calling convention:

some-program | delayer seconds some-other-program [args ...]

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so picture this: delayer is a whole delaying pipe, no cap. Lines sent to its standard input get spooled, and they only get printed to the standard input of some-other-program after a certain delay time has passed. It's giving patience, literally.

Main character use case? A news feed that deliberately should not distribute articles as soon as possible. One reason is giving NoCeM messages time to arrive so that innd remembers the Message-IDs of those cancelled articles before they actually arrive. It permits cancelling articles before they are locally stored and spread to other peers. The delay can be set up for outgoing feeds wanting that or β€” even better for not slowing the propagation of articles β€” internally between a frontend instance of innd receiving the articles from all your peers and another local instance of innd fed by your frontend with a delay except for NoCeM articles.

Another use case is using a link only as a backup. Iconic, honestly.

πŸŽ€ CONFIGURATION πŸŽ€

The steps to set up a delayed feed using delayer and innfeed are:

  • Choose a name for that feed, e.g. innfeed-delayed.
  • In pathetc, copy innfeed.conf to innfeed-delayed.conf.
  • Edit innfeed-delayed.conf in pathetc, and change the occurrences of innfeed to innfeed-delayed, typically in the log-file, pid-file and status-file parameters. If these parameters are not set, you should explicitly set them in innfeed-delayed.conf so that their default values do not conflict with a running instance in parallel of a real-time feed using innfeed. For instance:
log-file:    innfeed-delayed.log
pid-file:    innfeed-delayed.pid
status-file: innfeed-delayed.status

Using the same value for backlog-directory in both innfeed.conf and innfeed-delayed.conf is fine because the site names in newsfeeds are unique (see below with news.uu.net and news.uu.net-delayed).

  • Possibly limit max-connections to "1".
  • Only keep in innfeed-delayed.conf the configuration of the peers which should receive a delayed feed.
  • Add a new entry to newsfeeds in pathetc like:
innfeed-delayed!\
    :!*\
    :Tc,Wnm*,S16384:<pathbin>/delayer --delay 300 -- \
        <pathbin>/innfeed -c innfeed-delayed.conf

This will delay articles via that feed for 300 seconds. If the intent is to give NoCeM messages time to arrive, the delay should match the frequency at which they are sent in the news.lists.filters newsgroup.

  • Use innfeed-delayed! instead of innfeed! in the newsfeeds entries for peers which should receive a delayed feed. If you wish, you can also set up two entries for each peer, keeping a real-time feed through innfeed! for NoCeM messages, and delaying the feed of other articles through innfeed-delayed!.
news.uu.net/uunet\
    :!*,news.lists.filters\
    :Tm:innfeed!

news.uu.net-delayed/uunet\
    :*,@news.lists.filters\
    :Tm:innfeed-delayed!

Cancel articles should also be delayed so that they arrive after the article they cancel. Otherwise INN cannot authenticate them (using Cancel-Lock). Unauthenticated cancels are not processed by default (see docancels in inn.conf) but if you decide to process them, you can also send the control.cancel pseudo-newsgroup as a real-time feed.

Be sure to use the same news.uu.net-delayed peer name in innfeed-delayed.conf. Note that you should only configure a delayed feed for a remote peer if its news administrator agrees with that (he may want a real-time feed, or already have locally implemented a delay on his incoming feeds).

  • Reload the newsfeeds configuration file:
ctlinnd reload newsfeeds 'setting delayed feeds'

⭐ OPTIONS ⭐

  • --buffered, --no-buffered β€” By default, output is buffered. This increases the time until an article is actually sent if the number of articles is small. Disable buffering to have a more accurate delay, at a price of a (possibly neglectable) performance overhead.
  • --delay seconds β€” Delay articles by the given amount of seconds. Default is "60".
  • --store filename β€” By default, all buffered lines are written out if the input is closed, even if the configured delay has not been reached yet.

When this flag is used, these lines will be written to the given file instead, to be used upon next startup. Using an absolute path name is recommended.

  • -- some-other-program [args ...] β€” -- separates the options to delayer from the program the output is written to: some-other-program is the full path to the program, optionally followed with some args parameters.

πŸ’€ LEGACY OPTIONS πŸ’€

This interface is considered legacy and will be removed some day. 😭

  • delay β€” Delay articles by the given amount of seconds.
  • some-other-program [args ...] β€” The full path to the program the output is written to, optionally followed with some args parameters.

🫢 BUGS 🫢

If the standard input is closed (when for instance the feed is closed or restarted), all lines in the store are printed immediately, breaking the contract of delaying them, unless the --store option is used. Yeah, that part is lowkey rude.

If the number of articles in that feed is rather low (just a few articles per delay time or less), some effects of buffering will delay the transmission even further. See the --no-buffering option to alleviate this.

πŸ‘‘ HISTORY πŸ‘‘

Initial version written in July 1998 by Christian Mock <cm@tahina.priv.at>.

Improved and documented by Christoph Biedl in January 2024.

🌸 SEE ALSO 🌸

delay(1), innfeed.conf(5), newsfeeds(5).


πŸ’– from INN 2.7.4, dated 2026-06-22 β€” mwah, bestie πŸ’–

πŸ“¦ where this page comes from
  • arch rolling: inn 2.7.4-4 Β· ISC
  • epel 10: inn 2.7.4-5.el10_3 Β· ISC AND BSD-3-Clause AND BSD-4-Clause AND FSFAP AND (GPL-1.0-or-later OR Artistic-1.0-Perl) AND GPL-3.0-or-later WITH Bison-exception-2.2 AND LicenseRef-Fedora-Public-Domain AND MIT AND NTP
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms