chiark / gitweb /
REORG Delete everything that's not innduct or build system or changed for innduct
[innduct.git] / innfeed / README
diff --git a/innfeed/README b/innfeed/README
deleted file mode 100644 (file)
index ecdefbb..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-This is version 1.0 of the INN feeder program `innfeed.'
-It is written in ANSI C and tries to be POSIX.1 compliant. This software
-was originally written and maintained by James Brister <brister@vix.com>
-and is now part of INN. The features of it are:
-
-       1. Handles the STREAM extenstion to NNTP.
-       2. Will open multiple connections to the remote host to parallel
-          feed.
-       3. Will handle multiple remote hosts.
-       4. Will tear down idle connections.
-       5. Runs as a channel/funnel feed from INN, or by reading a funnel 
-          file.
-       6. Will stop issuing CHECK commands and go straight to TAKETHIS if
-          the remote responds affermatively to enough CHECKs.
-       7. It will go back to issuing CHECKs if enough TAKETHIS commands fail.
-
-
-Changes for 0.10.1
-
-       1. Config file inclusion now works via the syntax:
-
-               $INCLUDE pathname
-
-          Config files can be included up to a nesting depth of 10.  Line
-          numbers and file names are not properly reported yet on errors
-          when includes are used, though.
-
-       2. Signal handling is tidied up a bit. If your compiler doesn't 
-          support the ``volatile'' keyword, then see the comment in
-          sysconfig.h.
-
-       3. If you have a stdio library that hash limit on open files lower
-          then the process limit for open plain files (all flavours of
-          SunOS), then a new config file variable ``stdio-fdmax'' can be
-          used to give that upper bound. When set, all new network
-          connections will be limited to file descriptors over this value,
-          leaving the lower file descriptors free for stdio. See
-          innfeed.conf(5) for more details. Remember that the config file
-          value overrides any compiled in value.
-       
-Changes for 0.10
-
-       1. A major change has been made to the config file. The new format
-          is quite extensible and will let new data items be added in the
-          future without changing the basic format. There's a new option
-          ``-C'' (for ``check'') that will make innfeed read the config
-          file and report on any errors and then exit. This will let you
-          verify things before locking them into a newsfeeds file entry. A
-          program has been added ``innfeed-convcfg'' that will read your
-          old config off the command line (or stdin), and will write a new
-          version to stdout. 
-
-          The new config file structure permits non-peer-specific items to
-          be declared (like the location of the status file, or whether to
-          wrap the generated status file in HTML). This is part of the
-          included sample:
-
-                   use-mmap:               true
-                   news-spool:             /var/news/spool/articles
-                   backlog-directory:      /var/news/spool/innfeed
-                   pid-file:               innfeed.pid
-                   status-file:            innfeed.status
-                   gen-html:               false
-                   log-file:               innfeed.log
-                   backlog-factor:         1.10
-                   connection-stats:       false
-                   max-reconnect-time:     3600
-
-          so only option you'll probably need now is the ``-c'' option to
-          locate the config file, and as this is also compiled in, you may
-          not even need that.
-
-          See the innfeed.conf(5) man page for more details on config file
-          structure.
-          
-       2. The backlog file handling is changed slightly:
-
-               - The .output file is always kept open (until rotation time).
-               - The .output file is allowed to grow for at least 30
-                 seconds (or the value defined by the key
-                 backlog-rotate-period in the config file). This prevents
-                 thrashing of backlog files.
-               - The hand-prepared file is checked for only every 600
-                 seconds maximum (or the value defined by the key 
-                 backlog-new), not every time the files are rotated.
-               - The stating of the three backlog files is reduced
-                 dramatically.
-
-       3. Signal handling is changed so that they are more synchronous
-          with other activity. This should stop the frequent core-dumps
-          that occured when running in funnel file mode and sending 
-          SIGTERM or SIGALRM.
-
-       4. A bug related to zero-length articles was fixed. They will now be
-          logged.
-
-       5. More information is in the innfeed.status file, including the
-          reasons return by the remote when it is throttled.
-
-       6. SIGEMT is now a trigger for closing and reopening all the
-          backlog files. If you have scripts that need to fool with the
-          backlogs, then have the scripts move the backlogs out of the way
-          and then send the SIGEMT.
-
-Changes for 0.9.3
-
-       1. If your system supports mmap() *and* if you have your articles
-          stored on disk in NNTP-ready format (rare), then you can have
-          innfeed mmap article data to save on memory (thanks to Dave
-          Lawrence). There is an important issue with this:
-
-               if you try to have innfeed handle too many articles (by
-               running many connections and/or high max-check values in 
-               innfeed.conf) at once, then your system (not your process)
-               may run out of free vnodes (global file descriptors), as a
-               vnode is used as long as the file is mmaped. So be careful.
-
-          If your articles are not in NNTP format then this will be
-          noticed and the article will be pulled into memory for fixing up
-          (and then immediately munmap'd).  You can disable use of MMAP if
-          you've built it in by using the '-M' flag. I tried mixing
-          mmap'ing and articles not in NNTP format and it was a real
-          performance loss. I'll be trying it differently later.
-
-       2. If innfeed is asked to send an article to a host it knows
-          nothing about, or which it cannot acquire the required lock for
-          (which causes the "ME locked cannot setup peer ..." and "ME
-          unconfigured peer" syslog messages), then innfeed will deposit
-          the article information into a file matching the pattern
-          innfeed-dropped.* in the backlog directory (TAPE_DIRECTORY in
-          config.h). This file will not be processed in any manner -- it's
-          up to you to decide what to do with it (wait for innfeed to exit
-          before doing anything with it, or send innfeed a SIGHUP to get
-          it to reread its config file, which will roll this file).
-
-       4. The output backlog files will now be kept below a certain byte
-          limit. This happens via the ``-e'' option. If, after writing to
-          an output file, the new length is bigger than the given limit
-          (multiplied by a fudge factor defined in config.h -- default of
-          1.10) then the file will be shrunk down to this size (or slightly
-          smaller to find the end of line boundary). The front of the file
-          will be removed to do this. This means lost articles for the
-          entries removed.
-
-       3. A SIGHUP will make the config be reloaded. 
-
-       4. The .checkpoint files have been dropped in favour of scribbling
-          the offset into the input file itself.
-
-       5. When the process exits normally a final syslog entry covering
-          all of the peers over the life of the process is written. It
-          looks like:
-
-               Jan 12 15:51:53 data innfeed.tester[24189]: ME global
-                       seconds 2472 offered 43820 accepted 10506 
-                       refused 31168 rejected 1773 missing 39
-
-       6. SIGALARM now rolls the input file, rather than the log
-          file. This is useful in funnel file mode when you move the input
-          file and tell innd to flush it, then send innfeed the signal.
-
-       7. The location of the pid file, config file and status file, can
-          now be relative, in which case they're relative to the backlog
-          directory. 
-
-       8. stdin stdout and stderr are initialized properly when innfeed is
-          started by a process that has closed them.
-
-       9. Various values in config.h have changed (paths to look more like
-          values used in inn 1.5 and others to support point #7 above 
-          more easily.)
-
-       10. procbatch.pl can now 'require' innshellvars.pl that comes with
-           1.5. The default is not to. You nead to do a one line tweak if
-           you want it to. The defaults in procbatch.pl match the new
-           defaults of innfeed.
-
-       11. Core files that get generated on purpose will be done so in
-           CORE_DIRECTORY (as defined in config.h), if that is defined to a
-           pathname. If CORE_DIRECTORY is defined to be NULL (the default
-           now), then the core will be generated in the backlog directory (as
-           possibly modified by the '-b' option).
-
-
-Changes for 0.9.2
-
-       1. Now includes David Lawrence's patches to handle funnel files.
-
-       2. EAGAIN errors on read and writes are caught and dealt with (of
-          interest to Solaris `victims').
-
-       3. It is now much faster at servicing the file descriptor attached
-          to innd. This means it is faster at recognising it has been
-          flushed and at dropping connections. This means fewer
-          conflicts with new innfeeds starting before the old one has
-          finished up. It is still a good net-citizen and it finishes the
-          commands already started, so the fast response is only as fast
-          as your slowest peer, but it no longer tries to send
-          everything it had queued internally, and locks get released much
-          quicker.
-
-       4. Includes Michael Hucka's patch to make the innfeed.status output
-          neater.
-
-       5. Includes Andy Vasilyev's HTML-in-innfeed.status patch (but you
-          have to enable it in config.h).
-
-       6. Added a '-a' (top of news spool) and a '-p' (pid file path)
-          option.
-
-Changes for 0.9
-
-       1. Format of innfeed.conf file changed slightly (for per-peer
-          streaming specs).
-       2. Including Greg Patten's innlog.pl (taken from 
-               ftp://loose.apana.org.au/pub/local/innlog/innlog.pl)
-       3. Added Christophe Wolfhugel's patch to permit a per-peer
-          restriction on using streaming.
-       4. More robust handling of peers that return bad responses (no long
-          just calling abort).
-
-Changes for 0.8.5
-
-       1. Massive syslog messages cleanup courtesy of kre.
-       2. The innlog.awk-patch hash been dropped from the distribution
-          until the new syslog messages are dealt with.
-       3. State machine more robust in the face of unexpected responses
-          from remote. Connection gets torn down and bad response's
-          logged.
-       4. The fixed timers (article reception timeout, read timeout,
-          and flush timeout) are all adjusted by up to +/-10% so that
-          things aren't quite so synchronised.
-       5. The innfeed.status file has been expanded and reformatted to
-          include more information. 
-
-Changes for 0.8.4
-       
-       1. A change in the handing off of articles to connections in order to
-          encourage connections that were opened due to activity spikes,
-          to close down sooner.
-       2. The backlog files are no longer concatenated together at process
-          startup, but the .input is simply used if it exists, and if not
-          then the hand-dropped file is used first and the .output file
-          second.
-       3. The innfeed.status is no longer updated by a innfeed that is in
-          its death-throws.
-       4. Specifically catch the 480 response code from NNRPD when we try
-          to give it an IHAVE.
-       5. The connection reestablishment time gets properly increased when
-          the connection fails to go through (up to and including the
-          reading of the banner message).
-       6. Bug fix that occasionally had articles sit in a connection and
-          never get processed.
-       7. Bug fix in the counter of number of sleeping connections.
-       8. Bug fix in config file parsing.
-       9. Procbatch.pl included.
-
-Changes for version 0.8.1
-
-       1. various bug fixes.
-       2. core files generated by ASSERT are (possibly) put in a seperate
-          directory to ease debugging are
-
-Changes for version 0.8
-
-       1. The implicit state machine in the Connection objects has been
-          made explicit.
-       2. Various bug fixes.
-
-Changes for version 0.7.1
-
-       1. Pulled the source to inet_addr.c from the bind distribution.
-          (Solaris and some others don't have it).
-
-Changes for version 0.7
-
-       1. The backlog file mechanism has been completely reworked. There are
-           now only two backlog files: one for output and on for input. The
-           output file becomes the input file when the input file is
-           exhausted.
-       2. Much less strenuous use of writev. Solaris and other sv4r
-           machines have an amazingly low value for the maximum number of
-           iovecs that can be passed into writev.
-       3. Proper connection cleanup (QUIT issued) at shutdown.
-       4. A lock is taken out in the backlog directory for each peer. To feed
-           the same peer from two different instances of innfeed (with a
-           batch file for example), then you must use another directory.
-       5. Creating a file in the backlog directory with the same name as the
-           peer, the that file will be used next time backlog files are
-           processed. Its format must be:
-
-               pathname msgid
-
-          where pathname is absolute, or relative to the top of the news
-           spool.
-       6. More command line options.
-       7. Dynamic peer creation. If the proper command line option is
-           used (-y) and innfeed is to told to feed a peer that it doesn't
-           have in its config file, then it will create a new binding to
-           the new peer. The ip name must be the same as the peername,
-          i.e. if innd tells innfeed about a peer fooBarBat, then
-          gethostbyname("fooBarBat") better work.
-       8. Connections will be periodically torn down (1 hour is the
-          default), even if they're active, so that non-innd peers don't
-           have problems with their history files being kept open for too
-           long.
-       9. The input backlog files are checkpointed every 30 seconds
-           so that a crash while processing a large backlog doesn't require
-           starting over from the beginning.
-
-Changes for version 0.6
-
-       1. Logging of spooling of backlog only happens once per
-          stats-logging period.
-
-Bugs/Problems/Notes etc:
-
-       1. There is no graceful handling of file descriptor exhaustion.
-
-       2. If the following situation occurs:
-
-               - articles on disk are NOT in NNTP-ready format.
-               - innfeed was built with HAVE_MMAP defined.
-               - memory usage is higher than expected
-
-          try running innfeed with the '-M' flag (or recompiling with
-          HAVE_MMAP undefined). Solaris, and possibly other SVR4 machines,
-          waste a lot of swap space.
-
-       3. On the stats logging the 'offered' may not equal the sum of the
-          other fields. This is because the stats at that moment were
-          generated while waiting for a response to a command to come
-          back. Innfeed considers an article ``offered'' when it sends the
-          command, not when it gets a response back. Perhaps this should
-          change.
-
-       4. If all the Connections for a peer are idle and a new backlog file
-          is dropped in by hand, then it will not be picked up until the
-          next time it gets an article from innd for that peer. This will
-          be fixed in a later version, but for now, if the peer is likely
-          to be idle for a long time, then flush the process.
-
-       5. Adding a backlog file by hand does not cause extra Connections to
-          be automatically created, only the existing Connections will use
-          the file. If the extra load requires new Connections to be built
-          when innd delivers new articles for tranmission, then they too
-          will use the file, but this a side effect and not a direct
-          consequence. This means if you want to run in '-x' mode, then
-          make sure your config file entry states the correct number of
-          initial connections, as they're all the Connections that will be
-          created.
-         
-       6. If '-x' is used and the config file has an entry for a peer that
-          has no batch file to process, then innfeed will not exit after
-          all batch files have been finished--it will just site there idle.
-
-       7. If the remote is running inn and only has you in the nnrp.access
-          file, then innfeed will end up talking to nnrpd. Innfeed will
-          try every 30 seconds to reconnect to a server that will accept
-          IHAVE commands. i.e. there is no exponential back of retry
-          attempt. This is because the connection is considered good once
-          the MODE STREAM command has been accepted or rejected (and nnrpd
-          rejects it).
-
-Futures:
-
-       1. Innfeed will eventually take exploder commands.
-
-       2. The config file will be revamped to allow for more global
-          options etc and run-time configuration. Too much is compile-time
-          dependant at the moment.
-
-       3. The connection retry time will get more sophisticated to catch
-          problems like the nnrpd issue mentioned above.
-
-       4. Include the number of takesthis/check/ihave commands issued in
-           the log entries.
-
-       5. Heaps more stuff requested that's buried in my mail folders.
-
-
-Any compliments, complaints, requests, porting issues etc. should go to
-inn-bugs@isc.org.
-
-Many thanks to the following people for extra help (above and beyond the
-call of duty) with pateches, beta testing and/or suggestions:
-
-    Christophe Wolfhugel <wolf@pasteur.fr> 
-    Robert Elz <kre@munnari.oz.au>
-    Russell Vincent <vincent@ucthpx.uct.ac.za>
-    Paul Vixie <paul@vix.com>
-    Stephen Stuart <stuart@pa.dec.com>
-    John T. Stapleton <stapes@mro.dec.com>
-    Alan Barrett <apb@iafrica.com>
-    Lee McLoughlin <lmjm@doc.ic.ac.uk>
-    Dan Ellis <ellis@mail.microserve.net>
-    Katsuhiro Kondou <kondou@uxd.fc.nec.co.jp>
-    Marc G. Fournier <scrappy@ki.net>
-    Steven Bauer <sbauer@msmailgw.sdsmt.edu>
-    Richard Perini <rpp@ci.com.au>
-    Per Hedeland <per@erix.ericsson.se>
-    Clayton O'Neill <coneill@premier.net> 
-    Dave Pascoe <dave@mathworks.com>
-    Michael Handler <handler@netaxs.com>
-    Petr Lampa <lampa@fee.vutbr.cz>
-    David Lawrence <tale@uu.net>
-    Don Lewis <Don.Lewis@tsc.tdk.com>  
-    Landon Curt Noll <noll@sgi.com>
-
-If I've forgotten anybody, please let me know.
-
-Thanks also to the ISC for sponsoring this work.