Provided by: inn2_2.7.2~20240212-1build3_amd64 bug

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

       The delayer program implements a delaying pipe.  Lines sent to the standard input of the
       process are spooled, and only printed to the standard input of some-other-program after a
       certain delay time has passed.

       The main use case is for a news feed that deliberately should not distribute articles as
       soon as possible.  One reason is giving cancel control articles and NoCeM notices 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 cancels and NoCeM articles.

       Another use case is using a link only as a backup.

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 120 -- \
                       <pathbin>/innfeed -c innfeed-delayed.conf

           This will delay articles via that feed for 120 seconds.

       •   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 control articles and NoCeM
           notices, and delaying the feed of other articles through "innfeed-delayed!".

               news.uu.net/uunet\
                   :!*,control,control.*,news.lists.filters\
                   :Tm:innfeed!

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

           In that case, 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.

       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).