diff -rup inn-2.4.3/CONTRIBUTORS inn-2.4.4/CONTRIBUTORS --- inn-2.4.3/CONTRIBUTORS 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/CONTRIBUTORS 2008-05-05 03:18:36.000000000 -0700 @@ -103,11 +103,11 @@ Katsuhiro Kondou: Provided unified overview, the buffindexed overview method, trash storage method, spool translation method, traditional expire policy for articles stored through storage API and expireindex, as - well has hundreds of fixes to clean up defects as changes were + well as hundreds of fixes to clean up defects as changes were made. Did a large amount of man page documentation and clean up. Has also been a major force in the CVS pool maintenace. -Russell Vincent +Russell Vincent: Expanded inn.conf to make many of the old compile time options into run time variables. Numerous bug fixes, small feature enhancements and man updates. @@ -123,7 +123,7 @@ Steve Carrie: Ed Mooring: Wrote the first Perl filter callbacks into INN. -Aidan Cully +Aidan Cully: Provided the patches to support the new readers.conf file, and wrote the initial user authenticators and resolvers for the readers.conf. Provided the patches to support the new diff -rup inn-2.4.3/ChangeLog inn-2.4.4/ChangeLog --- inn-2.4.3/ChangeLog 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/ChangeLog 2008-05-05 03:18:36.000000000 -0700 @@ -1,452 +1,500 @@ -2006-03-20 eagle +2008-05-05 iulius - * nnrpd/group.c: Return the correct 0 0 0 response to LISTGROUP - when the group is empty rather than returning no such group. - * authprogs/libauth.c: Set the length of the IPv4 sockets on - platforms with a sin_len element in struct sockaddr. Reported by - Gea-Suan Lin. - * scripts/innreport_inn.pm: Ignore or parse some log messages from - newer versions, just for better news.notice parsing when - bouncing between versions. - -2006-03-19 eagle - - * lib/dbz.c: Various fixes from Heiko Schlichting for DBZTEST - mode: Remove the right file in RemoveDBZ and use concat instead - of a static buffer for filenames. Add a command-line option to - set nfswriter if desired and avoid a core dump from a missing - innconf. Fix debugging output from dbzclose and return checking - from dbzstore. Fix an off-by-one error in the line counter. Fix - a typo in usage. - * tests/lib/date-t.c: Skip the Newfoundland time zone test if the - relevant zone is not installed. - * tests/Makefile: hstrerror dependency bug. Thanks, Heiko - Schlichting. - * tests/lib/date-t.c: Backport the fix from stable to allow for - ambiguous parsing of dates around daylight savings time when - hours repeat. - * tests/lib/setenv-t.c, tests/lib/setenv.t: Backport the test - suite change from unstable to use 100KB strings instead, since - too many systems require more than 90KB just to load the dynamic - libraries. - * samples/control.ctl: Remove abg.* entry. That maintainer is no - longer active. Update the sfnet.* key fingerprint. - -2005-12-25 eagle - - * Makefile: Fix the code to remove prerelease in Makefile.global. - -2005-12-24 eagle - - * HACKING, doc/pod/hacking.pod: Update the references section. - * MANIFEST: Remove fixlog. - * NEWS, doc/pod/news.pod: Add changes for INN 2.4.3. - * support/config.guess, support/config.sub: Update config.guess - and config.sub to the latest Debian versions. - * storage/overdata.c: Use the last Xref header when generating - overview information if the article has multiple ones. - * HACKING, doc/pod/hacking.pod: Update make release instructions - for svn2cl. - * support/fixlog, support/mkchangelog: Use svn2cl to generate the - ChangeLog for the release. - -2005-12-15 eagle - - * doc/man/inn.conf.5, doc/pod/inn.conf.pod, lib/innconf.c, - nnrpd/line.c: Actually, don't impose a minimum size on - maxartsize and localmaxartsize. That isn't necessary. Just - adjust the nnrpd code so that it doesn't use localmaxartsize for - the max buffer size without checking it first. - -2005-12-12 eagle - - * expire/makehistory.c: If there are multiple Xref headers in an - article, use the last one to get article data. This works around - a combination of a bug in other servers that caused them to add - multiple Xref headers and a bug in INN that caused it to accept - such articles and just add yet another Xref header. - * backends/send-uucp.in, configure, configure.in, - scripts/innshellvars.in, scripts/innshellvars.pl.in, - scripts/innshellvars.tcl.in: Search the user's path for uux at - configure time and encode the path in innshellvars, using that - path in send-uucp, since apparently there are different uux's - with different options and the administrator needs a way to be - sure that the right one is used. - * authprogs/auth_krb5.c: krb5_get_in_tkt_with_password is - deprecated; define the appropriate symbol for right now so that - we can still get a prototype. - * authprogs/auth_krb5.c, configure, configure.in: Check for - et/com_err.h before com_err.h; that's where Linux appears to be - moving it to when com_err.h comes from e2fsprogs. - * MANIFEST, doc/man/Makefile, doc/man/pullnews.1, - doc/man/pullnews.8, doc/pod/Makefile, doc/pod/pullnews.pod: - Convert the pullnews documentation to POD. Document the ability - to specify a username and password in the configuration file. - -2005-12-11 eagle - - * doc/pod/inn.conf.pod, lib/innconf.c: Sanity-check the settings - of maxartsize and localmaxartsize. (Setting the latter too low - causes bizarre behavior in nnrpd.) - * doc/man/inn.conf.5, doc/pod/inn.conf.pod, nnrpd/line.c: Allow - localmaxartsize of 0 in nnrpd and update the documentation for - both it and maxartsize to document the 0 setting and note that, - if set to zero, large articles can crash innd or nnrpd by - running them out of system memory. - * nnrpd/post.c: Yet *another* problem checking permission to post - to moderated groups. We were clearing the error flag right after - setting it. Reported by Jens Schlegel. - * samples/moderators: Update nl.* moderation forwarding. - * CONTRIBUTORS, NEWS, doc/pod/news.pod: Document improvements by - Thomas Parmelan to send-uucp. - * backends/send-uucp.in: If there is a stray .work file, append it - to the new .work file after flushing and renaming, rather than - before. Patch from Thomas Parmelan. - * backends/send-uucp.in: Add a way to specify the funnel or - exploder to flush for a site managed via one. Patch from Thomas - Parmelan. - * innd/rc.c: Close the socket for ident callbacks on errors. - * configure, configure.in: Move the checks for external libraries - after the checks for networking libraries so that we don't fail - to find OpenSSL because of libsocket and libnsl dependencies. - * scripts/rc.news.in: Throttle before shutting down to give Perl - filters a chance to save data. Fixed in a better way in CURRENT. - * nnrpd/post.c: Remove write-only WasMailed variable. - * samples/innreport.conf.in, scripts/innreport_inn.pm: Report on - the Python filter the same as we do on the Perl filter. - * doc/man/fastrm.1: Rebuild. - * samples/control.ctl: Resync with upstream version. - * nnrpd/perm.c: Fix a stupid paste mistake that caused nnrpd to - ignore Perl scripts unless they were Python scripts. - -2005-10-09 eagle - - * frontends/rnews.c: Burn three file descriptors if running - privileged to avoid a strange situation where starting rnews - with closed file descriptors could force error messages to be - written to unexpected places, such as network streams or article - files. Only bother if running privileged; otherwise, the user is - just creating a bizarre bug by doing strange things, which isn't - worth worrying about. - * doc/pod/fastrm.pod: Warn that fastrm doesn't care about security. - * innfeed/misc.c: Fix format string vulnerability in logOrPrint - (which is only used for configuration data, so not an - exploitable hole). - * innd/nc.c: Fix an oddity that I found a while back when auditing - uses of the buffer code in innd but never returned to. If - NCwritereply sends its reply immediately but can only send a - part of it, the count of bytes remaining to send wasn't - decremented. We could then send random junk at the end of the - buffer to the peer later on. - * innd/cc.c: Fix an input validation bug that could allow a stack - overwrite on a system that didn't support Unix domain sockets - (do any of those exist any more?). - * innd/cc.c, lib/inndcomm.c: Increase the send and receive buffer - sizes of the Unix domain socket used by the control channel, - allowing longer replies on platforms with a low default buffer - size. Patch from MKI. - * storage/cnfs/cnfs.c, storage/timecaf/timecaf.c, - storage/timehash/timehash.c, storage/tradspool/tradspool.c: When - retrieving an entire article, use MADV_WILLNEED rather than - MADV_SEQUENTIAL or no madvise hint at all. The performance is - apparently noticably better per MKI. - * innd/art.c: Correctly detect headers duplicated an odd number of - times (3 copies, 5 copies, etc.) and distinguish between missing - and duplicated headers when reporting errors. - * samples/control.ctl: Update to latest upstream version. - * scripts/innshellvars.in, scripts/innshellvars.pl.in, - scripts/innshellvars.tcl.in: Set HOME to pathnews. This should - resolve Debian Bug#307765. - * scripts/innshellvars.pl.in: Avoid a warning if PATH is not - defined in the environment. - -2005-07-31 eagle - - * samples/control.ctl: Update to the current ftp.isc.org version. - -2005-07-18 eagle - - * doc/man/nnrpd.8, doc/pod/nnrpd.pod: -p instead of -P to specify - a port in the default port description. - -2005-07-05 eagle - - * doc/man/readers.conf.5, doc/pod/readers.conf.pod: Document that - at least one of res, auth, perl_auth, python_auth, or default - should be set in any auth group. - -2005-07-04 eagle - - * doc/man/innfeed.1: Document ctlinnd flush as the recommended way - of cleanly shutting down and respawning innfeed. - * doc/man/innfeed.conf.5: Clarify that the SIGHUP re-read and - bindaddress changes won't affect existing connections. - -2005-07-03 eagle - - * frontends/rnews.c: Maintain and pass around the length of the - article and never run strlen on the article. This should fix the - truncationproblems rnews was having with articles that contained - nul characters. - * frontends/rnews.c: Don't abort a whole batch on an article - without a mandatory header or an unterminated message ID header. - Instead, fail that one article and continue with the batch. - * frontends/rnews.c: Make unknown NNTP replies equivalent to - failure to connect (resulting in a deferral) instead of an - article rejection. - * frontends/rnews.c: Remove unneeded variables. - * frontends/rnews.c: When we fail to feed articles to the server - when unspooling with -U, don't move the articles off into the - bad directory. Just leave them in place in the spool directory. - Articles that should be rejected aren't handled as failures and - the right thing already happens with them, and retrying later is - exactly what we want for deferrals and 400 errors. - * control/pgpverify.in: Import upstream version 1.27, which falls - back on pubring.gpg in the default keyring location if - trustedkeys.gpg isn't present. - -2005-07-02 eagle - - * innd/art.c: NULL-terminate GroupPointers when replacing it while - doing Xref slaving. Patch from Chris Caputo. - * ., .cvsignore, MANIFEST: Ignore the snapshot.log file and add - mksnapshot to MANIFEST. - * Makefile, Makefile.global.in, support/mksnapshot, - support/mkversion: Add support/mksnapshot and make snapshot, and - change the Subversion version information to prerelease from CVS - prerelease. - -2005-06-20 eagle - - * nnrpd/nnrpd.h: ARTreadschema is no more. - * storage/overdata.c: Free resources properly in - overview_extra_fields. Patch from Chris Caputo. - * history/hisv6/hisv6.c: Pass HIS_CREAT to hisv6_new when opening - it for expiration. This fixes expire failing to create a new - history file and also addresses a long- standing problem where - rerunning expire after a failure would cause tons of duplicate - history lines. Patch from Chris Caputo. - -2005-06-11 eagle - - * support/mkmanifest: Ignore .svn directories. - * authprogs/pam.conf.example: PAM documentation is now in the - ckpasswd man page. - -2005-06-07 eagle - - * innfeed/article.c, innfeed/buffer.c, innfeed/buffer.h: - Reference-count the buffers in articles we're sending, since the - article holding a reference to them may be deleted before we - finish sending the article if the peer sends the rejection - message immediately (like Diablo does). Patch from Miquel van - Smoorenburg. - * authprogs/smbval, history, lib, storage: Also ignore the *.a - library files; Subversion doesn't ignore those by default the - way that CVS does. - * scripts/innreport.in: Remove the ftp.sofaraway.org references, - as the FTP site appears to be no more. - * storage/cnfs/cnfs.c: Write out a multiple of CNFS_BLOCKSIZE to - disk by zero-padding the end of the article. We don't use that - data anyway, since we always align the start of articles, and - this saves an unnecessary read if CNFS_BLOCKSIZE matches the - file system block size (writing a partial block requires a disk - read). Patch from Miquel van Smoorenburg. - * storage/interface.c: Don't allow storage classes larger than - 255; they can't be represented in tokens. Reported by Sebastian - Wiesinger. - * doc/man/innfeed.1: The batch files now normally contain storage - tokens rather than file names. Reported by Todd Olson. - * history/hisv6/hisv6.c: Fix hisv6_replace so that it actually - works. Open the history file in r+ mode rather than a mode, - since otherwise we can't write to arbitrary locations in the - file. Fix the length check for the new line, and space-fill the - new line at the right offset. Patch from Chris Caputo. - * CONTRIBUTORS, history/hisv6/hisv6-private.h, - history/hisv6/hisv6.c: Calling fseeko or ftello does fflush, at - least on Linux, which meant that we were flushing the history - file after every write and not gaining the advantage of stdio - buffering. Stop using fseeko/ftello in favor of using an - internally maintained offset. This breaks multiple processes - writing to the history file at the same time, but in practice we - don't support that right now anyway. We save a significant - number of write and seek syscalls this way. Patch from Chris - Caputo. - * doc/man/inn.conf.5, doc/pod/inn.conf.pod, nnrpd/nnrpd.c: Setting - timer to 0 in inn.conf should also disable the timing support in - nnrpd. - -2005-06-06 eagle - - * nnrpd/article.c: GetHeader was giving up a bit short of the end - of the article due to using the same limit both for searching - for the header and for searching for the end of the header. Use - separate limits instead. Patch from Chris Caputo. - * lib/dbz.c: Fix the length specification for madvise in getcore. - The incorrect value was causing it to pessimize things rather - than optimize. Also factor out the file length calculation to a - separate variable rather than constantly repeating the same - multiplication. Patch from Chris Caputo. - * tests/lib/tst-t.c, tests/lib/uwildmat-t.c: Backport test fixes - from trunk. - * tests/lib/articles/no-body, tests/lib/articles/strange, - tests/lib/articles/truncated: Restore the CRLF line endings that - were lost in the conversion to Subversion. - * lib/wire.c: Backport from the trunk the fix for articles with no - headers. - -2005-06-05 eagle - - * ., branches/STABLE-2_4: Rename branches to better names, now - that we're not limited by CVS. - -2005-04-16 rra - - * branches/STABLE-2_4/lib/snprintf.c: Add miscellaneous fixes - pointed out by Hrvoje Niksic. - -2005-04-11 rra - - * branches/STABLE-2_4/INSTALL, - branches/STABLE-2_4/doc/pod/install.pod: Note that running cron - jobs is incompatible, on Solaris, with having a locked account. - * branches/STABLE-2_4/INSTALL, - branches/STABLE-2_4/doc/pod/install.pod: Document the configure - flags to change the INN user and document the use of the usenet - user and --with-news-master. - * branches/STABLE-2_4/MANIFEST, - branches/STABLE-2_4/doc/man/ckpasswd.8, - branches/STABLE-2_4/doc/man/readers.conf.5, - branches/STABLE-2_4/doc/pod/ckpasswd.pod, - branches/STABLE-2_4/doc/pod/readers.conf.pod: Move the - documentation for PAM configuration with ckpasswd into its man - page and remove the (not incredibly helpful) example file. Add - more cross-references to ckpasswd to the readers.conf man page. - * branches/STABLE-2_4/nnrpd/post.c: If nnrpdauthsender is set and - the user identity assigned is empty, don't use UNKNOWN@hostname; - instead, strip the Sender header completely as the documentation - says. - * branches/STABLE-2_4/doc/man/readers.conf.5, - branches/STABLE-2_4/doc/pod/readers.conf.pod: Note that the user - identity is also used by nnrpdauthsender. - * branches/STABLE-2_4/doc/man/inn.conf.5, - branches/STABLE-2_4/doc/pod/inn.conf.pod: Typo fix. - * branches/STABLE-2_4/doc/man/expire.ctl.5, - branches/STABLE-2_4/doc/pod/expire.ctl.pod: Improve the - documentation of the X flag and try to clarify that expiration - rules are applied to newsgroups one carries, not the Newsgroups - header of articles. - * branches/STABLE-2_4/doc/man/nnrpd.8, - branches/STABLE-2_4/doc/pod/nnrpd.pod, - branches/STABLE-2_4/nnrpd/nnrpd.c: Looks like -R (force - read-only) hasn't done anything in quite a while. Since no one - has complained, just remove the option rather than trying to fix - it. - * branches/STABLE-2_4/INSTALL, - branches/STABLE-2_4/doc/pod/install.pod: Add more information - about software dependencies and tips for building against shared - libraries. - * branches/STABLE-2_4/authprogs/Makefile: Build auth_krb5.o with - $KRB5INC to find include files. - * branches/STABLE-2_4/configure, branches/STABLE-2_4/configure.in: - --with-kerberos was putting the -L option after -lkrb5 instead - of before it, which isn't particularly useful. Restructure a - little to fix that. Reported by Todd Olson. - -2005-04-10 rra - - * branches/STABLE-2_4/doc/pod/news.pod, - branches/STABLE-2_4/nnrpd/article.c: Remove the optimization - that answers XHDR Newsgroups and XPAT Newsgroups out of the - overview Xref data. It makes things faster, but it breaks the - NNTP protocol specification. - * branches/STABLE-2_4/NEWS, trunk/nnrpd/article.c: Remove the - optimization that answers XHDR Newsgroups and XPAT Newsgroups - out of the overview Xref data. It makes things faster, but it - breaks the NNTP protocol specification. - * branches/STABLE-2_4/nnrpd/perm.c: When Perl and Python were both - enabled, nnrpd was attempting to parse Python access hooks as - Perl scripts. Fixed by checking the access type. Reported by Ken - Bass. - * branches/STABLE-2_4/INSTALL, - branches/STABLE-2_4/doc/pod/install.pod: Add NetBSD to the list - of confirmed platforms. - * branches/STABLE-2_4/control/perl-nocem.in: Add a SYNOPSIS to the - documentation, change the existing SYNOPSIS section to - DESCRIPTION, and reformat a little bit. - * branches/STABLE-2_4/lib/sendpass.c: If called with a NULL server - argument and innconf->server not set, set errno to something - vaguely appropriate before returning since some callers use - errno in error reporting. - -2005-04-07 rra - - * branches/STABLE-2_4/doc/man/expire.ctl.5, - branches/STABLE-2_4/doc/pod/expire.ctl.pod, - branches/STABLE-2_4/samples/expire.ctl: Change the terminology - to :: from and . - -2005-03-17 vinocur - - * branches/STABLE-2_4/authprogs/domain.c, - branches/STABLE-2_4/doc/external-auth, - branches/STABLE-2_4/doc/pod/external-auth.pod: Fix - inconsistencies between code and documentation about newline - handling for external-auth. Reported by Todd Olson. - -2005-03-16 hkehoe - - * branches/STABLE-2_4/storage/tradindexed/tradindexed.c: - tradindexed_add should return "true" if the group doesn't exist, - like the other OV methods - -2005-03-11 rra - - * branches/STABLE-2_4/scripts/inncheck.in: Recognize variable - settings in newsfeeds. - * branches/STABLE-2_4/lib/date.c: The values array in - parsedate_rfc2822 was too short. - -2005-03-05 vinocur - - * branches/STABLE-2_4/doc/hook-python, - branches/STABLE-2_4/doc/man/newsfeeds.5, - branches/STABLE-2_4/doc/pod/hook-python.pod, - branches/STABLE-2_4/doc/pod/newsfeeds.pod, trunk/doc/hook-perl: - Correct typos. - -2005-01-18 rra - - * branches/STABLE-2_4/control/pgpverify.in: Return the correct - exit status in the event of known failures instead of always - returning 255. Reported by Awais Riaz. - -2004-12-25 rra - - * branches/STABLE-2_4/INSTALL, - branches/STABLE-2_4/doc/pod/install.pod: --enable-uucp-rnews - only installs rnews setuid news, not setuid root. - * branches/STABLE-2_4/configure.in: Fix the comment to clarify - that rnews is only installed setuid news. - * branches/STABLE-2_4/LICENSE: Add information about - lib/snprintf.c. - * branches/STABLE-2_4/LICENSE: The MIT/X Consortium license is no - longer less restrictive than INN's license. - -2004-12-24 rra - - * branches/STABLE-2_4/doc/man/inews.1, - branches/STABLE-2_4/doc/pod/inews.pod: NAME, not NEWS. - -2004-12-23 rra - - * branches/STABLE-2_4/innfeed/imap_connection.c: Rework - imap_sendAuthenticate to avoid warnings when building without - SASL. - * branches/STABLE-2_4/backends/mod-active.in: GNU diff wants -U0 - rather than -u0 these days. This seems to be supported for a - while into the past, so let's hope that this doesn't just create - other compatibility problems. - * branches/STABLE-2_4/Makefile.global.in: Increase version number - to 2.4.3. + * NEWS, doc/pod/news.pod: Update the ChangeLog for Perl 5.10 + support. + + * innd/perl.c, lib/perl.c, nnrpd/perl.c: Perl 5.10 support for INN. + Thanks, Jakub Bogusz, for the patch. + +2008-04-30 iulius + + * NEWS, doc/pod/news.pod: Update the ChangeLog for Berkeley DB 4.5 + (which works). + + * configure, configure.in: Fix a problem at build time: auth_krb5.c + should normally be compiled only if "--with-kerberos" is given to + configure. + +2008-04-26 iulius + + * innfeed/host.c: Fix a bug in hostDeleteIpv4Addr(): after innfeed + has called that function, host->nextIpAddr can point outside the + host->ipAddrs[] array. + + * NEWS, doc/man/innfeed.1, doc/man/mailpost.8, doc/man/pullnews.1: + Update generated documentation. + + * doc/pod/news.pod: New changelog for INN 2.4.4 (the last one?). + + * doc/pod/pullnews.pod, frontends/pullnews.in: Fix bugs in pullnews + because of a lack of parenthesis. Update its documentation for -x + (and also add this feature). + + * doc/pod/mailpost.pod, frontends/mailpost.in: * Fix a bug when + mailpost either couldn't find the pathtmp directory or couldn't + write to it; * Add documentation for -h, -n and -o; * Add a list + of known headers; * Clarify the use of -b; * Fix + /mailpost-msgid.db which is /mailpost-msgid.dir + and /mailpost-msgid.pag; * Fix the usage of [newsgroups] + which is not optional; * It is $Database and not $lockfile in + dbmopen/close; * Better formatting of error mails; * Typos. + + * LICENSE: Clarify RSA's license for lib/md5.c. + + * NEWS, doc/pod/news.pod, innfeed/connection.c: Revert commit 7753 + because innfeed uses too much CPU with it. + +2008-04-17 iulius + + * NEWS, doc/pod/news.pod: Update the ChangeLog for INN 2.4.4 (new + features for bindaddress and bindaddress6, instead of + force-ipv4). + + * doc/man/innfeed.conf.5, innfeed/connection.c, innfeed/host.c, + innfeed/host.h: bindaddress/bindaddress6 keys can now be set on a + per-peer basis in infeed.conf. + + Setting "bindaddress6: none" is equivalent to "force-ipv4: true". + + Both bindaddress and bindaddress6 work simultaneously, using + bindaddress for IPv4 peer addresses and bindaddress6 for IPv6 + peer addresses. If a peer has IPv6 addresses, and at least one of + them works, it never falls back to IPv4. If none of the IPv6 + addresses work, it falls back to IPv4. + + Since the server cannot connect to an IPv4 address if it binds to + an IPv6 address and the other way around, hostIpAddr() has been + changed to take an extra "family" argument, so that IPv4 + addresses are skipped for IPv6 sockets and vice versa. + + Thanks to Miquel van Smoorenburg for this patch. + +2008-04-13 iulius + + * NEWS, doc/pod/news.pod: Changelog for INN 2.4.4. + + * scripts/scanlogs.in: scanlogs now rotates innfeed's log file (a + regexp is used to find its name in innfeed.conf). When this log + file reached 2 GB, innfeed began to silently die whenever it is + started. + + Also fix the rotation of send-nntp.log and send-uucp.log. + + Thanks to Shalon Wood for the bug report. + + * frontends/inews.c: inews now tries to authenticate if it does not + receive a 200 return code after MODE READER. Indeed, it might be + able to post even with a 201 return code (and also with another + codes like 440 or 480 but such codes are not RFC compliant in + reply to MODE READER). + + Thanks to Alan Schwartz for the bug report. + + * doc/man/innfeed.conf.5: Fix escape characters in the innfeed.conf + man page. + +2008-04-12 iulius + + * configure, configure.in, storage/ovdb/ovdb.c: INN now supports + Berkeley DB 4.6. Thanks to Marco d'Itri for the patch. + +2008-04-10 iulius + + * nnrpd/line.c: It seems that the SSL_read cannot be mixed with + select() as in the current code. SSL communicates in its own data + blocks and hand shaking. The do_readline using SSL_read could + return, but still with a partial line in the SSL_read buffer. + Then the server SSL routine would sit there waiting for + completion of that data block while nnrpd sat at the select() + routine waiting for more data from the server. + + (Without this patch, clients like Thunderbird, SeaMonkey or slrn + sometimes hang when posting using a SSL connection.) + + Here, we decide to just bypass the select() wait. Unlike innd + with multiple threads, the select on nnrpd is just waiting on a + single file descriptor, so it is not really essential with + blocked read like SSL_read. Using an alarm signal around SSL_read + for non active timeout, SSL works without dead locks. However, + without the select() wait, the IDLE timer stat won't be + collected... + + Patch from Kachun Lee. + +2008-04-09 iulius + + * innfeed/connection.c: In all of the response handlers that idle + the connection if there's nothing left in the queue, don't idle + if there are writes pending. The cases where this could possibly + trigger are obscure and involve the remote peer doing evil + things, but the rest of the code handles it correctly and we were + still seeing assertion failures, indicating that evil may be + happening. + + In issueStreamingCommands, make certain that there are no pending + writes before idling the connection. + + Add the code to ihaveBodyDone that was already in + commandWriteDone to idle the connection if the queue is empty in + case we'd had to defer the idle in the response handler due to an + unfinished write. + + Whenever doSomeWrites is called with writes still pending, add a + work callback to do the write at the next opportunity. This + should eliminate a temporary connection deadlock state on + flushing, where the response to the IHAVE body arrived before we + finished writing it. Before, doSomeWrites would have failed to + call issueQUIT because writes were still pending, and then after + the writes complete, there's no code to go back and issue it + until the read timeout expires. + + Thanks to Russ Allbery for the patch. + +2008-04-06 iulius + + * doc/man/inn.conf.5, doc/man/innd.8, doc/man/nnrpd.8, + doc/pod/inn.conf.pod, doc/pod/nnrpd.pod, include/inn/innconf.h, + innd/rc.c, lib/innconf.c, samples/inn.conf.in: Add a "nnrpdflags" + parameter to inn.conf (modeled on the concept of "innflags") to + permit passing of commandline arguments to instances of nnrpd + spawned from innd. + + * scripts/innreport_inn.pm: Do not report an unknown line when a + cancel feed is closed. Innreport does not (currently) count such + cancels. + + * innd/inndstart.c: This patch makes innd listen on separate + sockets for IPv4 and IPv6 connections if the IPV6_V6ONLY socket + option is available. + + There might also be operating systems that still have separate + IPv4 and IPv6 TCP implementations, and advanced features like TCP + SACK might not be available on v6 sockets. + + Thanks to Miquel van Smoorenburg for this patch. + + * doc/pod/inn.conf.pod, doc/pod/innd.pod, include/inn/innconf.h, + innd/art.c, innd/cc.c, innd/innd.c, innd/innd.h, innd/site.c, + lib/innconf.c, samples/inn.conf.in, scripts/inncheck.in, + tests/lib/innconf-t.c: This patch adds a new inn.conf parameter + called "pathcluster" which allows to append a common name to the + Path: header on all incoming articles. "pathhost" and "pathalias" + (if set) are still appended to the path as usual, but + "pathcluster" is always appended as the last element (e.g. on the + leftmost side of the Path: header). + + If the last pathname of the incoming article is the same as + "pathcluster", it is stripped from the path. + + Thanks to Miquel van Smoorenburg for this patch. + + * innd/Makefile: Update dependencies. + + * authprogs/radius.c: Switch xmalloc to xcalloc. Bug reported by + Erik Klavon. + + * innd/rc.c: Group blocks in incoming.conf are now correctly parsed + and no longer cause segfaults. + + * control/docheckgroups.in, control/modules/checkgroups.pl, + control/modules/newgroup.pl, control/modules/rmgroup.pl: + docheckgroups now handles wireformat articles (for using it + manually from the spool) and warns when there are missing or + obsolete descriptions. + + Newgroup control messages for existing groups now change their + description. If a mail is sent to administrators, it reminds them + to update their newsgroups file. Now pretty print the newsgroups + file (from one to three tabulations between the name of the group + and its short description). Refuse the creation of to. groups. + + Checkgroups when there is nothing to change no longer result in + sending a blank mail to administrators. + + * scripts/innreport_inn.pm: Better innreport processing of log + files (especially for Python filtering and Cleanfeed rejects). + Add a NoCeM entry for perl-nocem. Only ncmspool was previously + parsed. + + * doc/man/innd.8, doc/man/newsfeeds.5, doc/pod/innd.pod, + doc/pod/newsfeeds.pod, frontends/sys2nf.c, innd/art.c, + samples/newsfeeds.in: * Checkgroups are now properly propagated + even though the news server does not carry the groups they are + posted to. * Improve documentation as for the use of + "!control,!control.*" regarding the propagation of control + articles. * Expand "control*" to "control,control.*" in + documentation and samples for more accuracy. * control.cancel is + mandatory for innd to start so cancel messages are not fed to + control. + + * control/pgpverify.in, doc/man/pgpverify.1: Typos. + + * doc/man/simpleftp.1, doc/pod/simpleftp.pod, scripts/Makefile, + scripts/simpleftp.in: Rewrite simpleftp to use Net::FTP. Indeed, + ftp.pl is no longer shipped with Perl 5 and the script does not + work. + + * Add support for usernames, passwords and ports. * Fix typos in + the documentation. * Remove the use of fixscript on simpleftp. * + Perl warnings are now on. + + * innfeed/endpoint.c: Fix a problem with innfeed continuously + segfaulting on amd64 hardware (and possibly on lots of 64 bits + platforms); sig_atomic_t is indeed a long and not an integer + there. + + Patch from Ollivier Robert. Many thanks to him and also to Kai + Gallasch for having reported the problem and provided the FreeBSD + server to debug it. + + * backends/send-uucp.in: Fix a bug in the display of the used + compressor (cunbatch was put if arguments were passed to gzip or + bzip2). + + * HACKING, doc/man/active.5, doc/man/active.times.5, + doc/man/auth_krb5.8, doc/man/auth_smb.8, doc/man/ckpasswd.8, + doc/man/control.ctl.5, doc/man/convdate.1, + doc/man/cycbuff.conf.5, doc/man/distrib.pats.5, doc/man/domain.8, + doc/man/expire.ctl.5, doc/man/expireover.8, doc/man/fastrm.1, + doc/man/grephistory.1, doc/man/ident.8, doc/man/inews.1, + doc/man/inn.conf.5, doc/man/innconfval.1, doc/man/innd.8, + doc/man/inndf.8, doc/man/inndstart.8, doc/man/innmail.1, + doc/man/innupgrade.8, doc/man/libauth.3, doc/man/libinnhist.3, + doc/man/list.3, doc/man/mailpost.8, doc/man/makehistory.8, + doc/man/motd.news.5, doc/man/newsfeeds.5, doc/man/ninpaths.8, + doc/man/nnrpd.8, doc/man/ovdb.5, doc/man/ovdb_init.8, + doc/man/ovdb_monitor.8, doc/man/ovdb_server.8, + doc/man/ovdb_stat.8, doc/man/passwd.nntp.5, doc/man/pgpverify.1, + doc/man/pullnews.1, doc/man/qio.3, doc/man/radius.8, + doc/man/radius.conf.5, doc/man/rc.news.8, doc/man/readers.conf.5, + doc/man/sasl.conf.5, doc/man/send-uucp.8, doc/man/sendinpaths.8, + doc/man/simpleftp.1, doc/man/sm.1, doc/man/subscriptions.5, + doc/man/tdx-util.8, doc/man/tst.3, doc/man/uwildmat.3: Generate + fresh man pages for INN 2.4.4. + + * CONTRIBUTORS: Typos. + + * backends/Makefile: Add missing man page generation for send-uucp. + + * control/perl-nocem.in, doc/man/perl-nocem.8: * perl-nocem will + now check for a timeout and re-open the socket if required. + Additionally, perl-nocem will switch to cancel_ctlinnd in case + cancel_nntp fails after sending the Message-ID. Thanks to + Christoph Biedl for the patch. * Fix the count of the time spent + in do_nocem(): the $start and $diff variables were consecutive. * + Use "%d" instead of "$nr" in sprintf. * Documentation fixes: * + perl-nocem does not expect a message but a token. * Add + "--no-default-keyring" because gpg otherwise uses the one in + ~/.gnupg (strange). * Mention the keyring and improve a lot this + documentation. + + * frontends/ovdb_init.c: Patch daemonize-ovdb_init to make + ovdb_init properly close stdin/out/err when it becomes a daemon. + The issue was reported by Viktor Pilpenok and fixed by Marco + d'Itri. Thanks to both of them. + + * nnrpd/list.c, nnrpd/nnrpd.c: * In response to a LIST [file] + command, if the file does not exist, we assume it is not + maintained and return 503 instead of 215 and an empty file. * + Typo in the answer for LIST MOTD (two final dots). * Add + capability to LIST ACTIVE.TIMES for a wildmat pattern as its + third argument (LIST ACTIVE.TIMES *nntp). * The "moderators" + keyword was missing in the answer for HELP. + + * doc/pod/newsfeeds.pod, innd/art.c, innd/innd.h, innd/newsfeeds.c, + innd/site.c, scripts/inncheck.in: Implementation of the Diablo + quickhash and hashfeed algorithms. It allows to distribute the + messages among several peers (new Q flag for newsfeeds). + + Thanks to Miquel van Smoorenburg for this implementation in INN. + + * support/config.guess, support/config.sub: Update support files + for autoconf to their last stable version. + + * samples/control.ctl: A more up-to-date control.ctl file from the + ISC. + + * authprogs/Makefile, backends/Makefile, expire/Makefile, + frontends/Makefile, history/Makefile, innd/Makefile, + innfeed/Makefile, lib/Makefile, nnrpd/Makefile, storage/Makefile: + Update dependencies. + + * LICENSE: Update license information. + +2008-01-19 eagle + + * innd/innd.c: Fix a variable reference in catch_terminate in the + non-sigaction case. + +2007-02-10 eagle + + * lib/dbz.c: Don't use ints; we lose with large files on many + systems. Use xpwrite instead of pwrite to get complete writes. + Based on a patch by Chris Caputo. + + * storage/buffindexed/buffindexed.c: When calculating the length of + a buffer, cast the calculation to off_t since it may be longer + than unsigned long. Thanks, Kirill Berezin. + +2007-02-09 eagle + + * include/inn/mmap.h, lib/dbz.c, lib/mmap.c, + storage/tradindexed/tdx-data.c, storage/tradindexed/tdx-group.c: + Rename mapcntl to inn_mapcntl and avoid having the function and + the wrapper define have the same name. It looks like at least + some compilers don't like this (and reasonably so). + +2007-01-16 eagle + + * innd/cc.c, lib/inndcomm.c: Fix incomplete checking of packet + sizes in the ctlinnd interface in the no-Unix-domain-sockets + case. This is a potential buffer overflow in dead code since + basically all systems INN builds on support Unix domain sockets + these days, but let's not have that code sitting around anyway. + + Also track the buffer size more correctly in the client side of + this interface for the Unix domain socket case (we were thinking + it was smaller than it actually was). + + Thanks to zybadawg333@hushmail.com for the report. + +2006-11-22 eagle + + * control/controlchan.in: Pring the newline and not $_, not the + other way around. + + * control/controlchan.in: When printing the blank line between + headers, don't also try to print $_; it's undefined at that + point. + +2006-11-21 eagle + + * contrib/README: Various updates for new files and verb tense. + Remove ninpaths, which is now included in the main part of INN. + Patch from Julien ÉLIE. + + * control/modules/newgroup.pl: Don't send mail if the action is no + change. Patch from Julien ÉLIE. + +2006-09-11 eagle + + * tests/runtests.c: Work around a bad interaction between the glibc + headers and gcc 4.1 that causes the sys/wait.h W* macros to fail + to compile when run on an int member of a const struct. + + * TODO: Remove the link to Dave Barr's old INN site; that page + seems to have gone away. + +2006-09-07 eagle + + * samples/control.ctl: Update to new upstream version. + +2006-09-04 eagle + + * samples/control.ctl: Update to current upstream version. + +2006-08-30 eagle + + * doc/pod/control.ctl.pod: Clarify the differences between + verify-*, verify-*=mail, doit, and doit=mail and correct some + inaccuracies noted by Iulius. + + * control/controlchan.in: Handle wire format messages. Patch from + Iulius. + +2006-08-28 eagle + + * Makefile.global.in, authprogs/Makefile, authprogs/ckpasswd.c, + configure, configure.in, include/config.h.in: If compiling with + BerkeleyDB, use its ndbm compatibility layer for ckpasswd in + preference to searching for a traditional dbm library. Based on a + proposal by Marco d'Itri. + + * frontends/ovdb_stat.c: Support for BerkeleyDB 4.4. Patch from + Marco d'Itri. + + * innfeed/host.c: Fix another mistake I made when merging. *sigh* + + * innfeed/host.c: Fix typo in the previous change. + + * doc/man/innfeed.conf.5, innfeed/host.c, innfeed/innfeed.h, + samples/innfeed.conf: Add a force-ipv4 peer configuration option + for innfeed that, if set, tells innfeed to never attempt an IPv6 + connection to that host. Patch from Marco d'Itri. + + * innfeed/host.c: Tell getaddrinfo that we need a SOCK_STREAM so + that it won't return each address for a hostname three times, one + with each supported socket type. Patch from Henning Makholm by + way of Marco d'Itri. + + * samples/radius.conf: The RADIUS configuration has to be wrapped + in a server {} block. Thanks to Marco d'Itri for the patch. + +2006-08-27 eagle + + * doc/man/innfeed.conf.5: Fix a mistaken backlog-limit-high instead + of backlog-limit-highwater and document backlog-rotate-period. + +2006-08-26 eagle + + * control/perl-nocem.in: Update the documentation to use + --primary-keyring for importing keys and to drop + --allow-non-selfsigned-uid from the default options but describe + when it might be necessary. + + * control/perl-nocem.in: "error" is not a syslog level. Replace + with "err" instead. Reported by various people, including + Christoph Biedl. + + * innd/status.c: Report an error if we can't open the status file. + Reported by Bjoern A Zeeb. + + * configure, include/config.h.in: Regenerate. + + * nnrpd/commands.c: Fix another instance of treating article + numbers as signed. + + * nnrpd/list.c: Fix another occurrence of treating article numbers + as signed. + + * nnrpd/article.c, nnrpd/group.c: Print out article numbers as + unsigned long with appropriate casts. Thanks to Piotr Meyer for + pointing out places where INN was assuming signed article + numbers. + + * nnrpd/nnrpd.c: Address2Name6 should lowercase the hostname just + like Address2Name since wildmat matching is case-sensitive. + Thanks to Brandon Hume for the patch. + + * nnrpd/group.c: Empty LISTGROUP replies need to be terminated. + Thanks to David Canzi for the patch. + + * samples/control.ctl: Update chi.* and the alt.* comment. + +2006-08-12 eagle + + * doc/pod/ckpasswd.pod: Update URL for the Linux-PAM System + Administrator's Guide. + +2006-04-15 eagle + + * doc/pod/hacking.pod: Document the version of svn2cl required. + +2006-04-10 eagle + + * scripts/inncheck.in: Expect fewer things to be private to the + news user. Most of the configuration files will never contain + private information like passwords. + + * site/Makefile: If creating a new history file, set the ownership + and mode appropriately. Reported by Ernst Boetsch. + +2006-04-02 eagle + + * tests/lib/snprintf-t.c: The %n test was written incorrectly on + AMD64. Thanks, Ernst Boetsch. + +2006-03-31 eagle + + * samples/newsfeeds.in: Clarify the comment about the ME line. diff -rup inn-2.4.3/HACKING inn-2.4.4/HACKING --- inn-2.4.3/HACKING 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/HACKING 2008-05-05 03:18:36.000000000 -0700 @@ -6,8 +6,8 @@ Hacking INN contributors, and secondarily as documentation of some of INN's internals. - This is $Revision: 7486 $ dated $Date: 2005-12-24 13:33:38 -0800 (Sat, - 24 Dec 2005) $. + This is $Revision: 7736 $ dated $Date: 2006-04-15 04:52:06 +0200 (Sat, + 15 Apr 2006) $. First of all, if you plan on working on INN source, please start from the current development tree. There may be significant changes from the @@ -641,9 +641,10 @@ Making a Release MANIFEST. 6. Run "make release". Note that you need to have a copy of svn2cl - from to do this. Start the - ChangeLog at the time of the previous release. (Eventually, the - script will be smart enough to do this for you.) + from to do this; at least + version 0.7 is required. Start the ChangeLog at the time of the + previous release. (Eventually, the script will be smart enough to + do this for you.) 7. Make the resulting tar file available for testing in a non-listable directory on ftp.isc.org and announce its availability on diff -rup inn-2.4.3/LICENSE inn-2.4.4/LICENSE --- inn-2.4.3/LICENSE 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/LICENSE 2008-05-05 03:18:36.000000000 -0700 @@ -2,7 +2,8 @@ INN as a whole and all code contained in different licenses and/or copyrights is covered by the following copyright and license: - Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + Copyright (c) 2004, 2005, 2006, 2007, 2008 + by Internet Systems Consortium, Inc. ("ISC") Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 by The Internet Software Consortium and Rich Salz @@ -32,7 +33,7 @@ files. Specifically (but possibly not c backends/shrinkfile.c, frontends/scanspool.in, lib/concat.c, lib/hstrerror.c, lib/inet_aton.c, lib/inet_ntoa.c, lib/memcmp.c, lib/parsedate.y, lib/pread.c, lib/pwrite.c, lib/setenv.c, lib/seteuid.c, - lib/strlcat.c, lib/strlcpy.c, and lib/strerror.c are in the public + lib/strerror.c, lib/strlcat.c and lib/strlcpy.c are in the public domain. lib/snprintf.c may be used for any purpose as long as the author's @@ -52,13 +53,19 @@ files. Specifically (but possibly not c for more details. lib/md5.c is covered under the standard free MD5 license from RSA Data - Security. See the file for more details. + Security. See the file for more details. A clarification is also + provided here: . + + "Implementations of these message-digest algorithms, including + implementations derived from the reference C code in RFC-1319, + RFC-1320, and RFC-1321, may be made, used, and sold without + license from RSA for any purpose." history/his.c and history/hisv6/hisv6.c are under a license very similar to the new BSD license (no advertising clause) but with Thus plc as the copyright holder. See those files for details. - lib/tst.c, include/inn/tst.h and doc/pod/tst.pod are derived from from + lib/tst.c, include/inn/tst.h and doc/pod/tst.pod are derived from and are under the new BSD license (no advertising clause), but with Peter A. Friend as the copyright holder. @@ -67,7 +74,7 @@ files. Specifically (but possibly not c Consortium license. See the beginning of the file for details. Note that all portions of INN that link with core INN code have to be -convered by licenses compatible with the license at the top of this file, +covered by licenses compatible with the license at the top of this file, and since INN links with several external libraries if so configured (such as OpenSSL), should also be compatible with the licenses of those external libraries to be safe. Some portions of this distribution are covered by diff -rup inn-2.4.3/Makefile.global.in inn-2.4.4/Makefile.global.in --- inn-2.4.3/Makefile.global.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/Makefile.global.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile.global.in 7345 2005-07-02 05:04:05Z eagle $ +## $Id: Makefile.global.in 7565 2006-08-28 02:42:54Z eagle $ ## ## This file is meant to be the central Makefile that configure works with ## and that all other Makefiles include. No Makefile other than this one @@ -14,7 +14,7 @@ ## put your own version information in $VERSION_EXTRA. If it's set to ## "CVS prerelease", the build time will be automatically included. -VERSION = 2.4.3 +VERSION = 2.4.4 VERSION_EXTRA = ## If you want to install INN relative to a root directory other than /, @@ -86,7 +86,7 @@ CCOUTPUT = @CCOUTPUT@ ## debugging information, and add -O because gcc won't find some warnings ## without optimization turned on. Add -DDEBUG=1 so that we'll also ## compile all debugging code and check it as well. - + WARNINGS = -g -O -DDEBUG=1 -Wall -W -Wendif-labels -Wpointer-arith \ -Wbad-function-cast -Wcast-align -Wwrite-strings \ -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs @@ -114,8 +114,10 @@ LIBHIST = $(builddir)/history/li LIBSTORAGE = $(builddir)/storage/libstorage$(LIBSUFFIX).$(EXTLIB) EXTSTORAGELIBS = @BERKELEY_DB_LIB@ -CRYPTLIB = @CRYPT_LIB@ +DBMINC = @DBM_INC@ DBMLIB = @DBM_LIB@ + +CRYPTLIB = @CRYPT_LIB@ PAMLIB = @PAM_LIB@ REGEXLIB = @REGEX_LIB@ SHADOWLIB = @SHADOW_LIB@ diff -rup inn-2.4.3/NEWS inn-2.4.4/NEWS --- inn-2.4.3/NEWS 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/NEWS 2008-05-05 03:18:36.000000000 -0700 @@ -1,13 +1,136 @@ -Changes from 2.4.2 to 2.4.3 +Changes in 2.4.4 + + * Fixed incomplete checking of packet sizes in the ctlinnd interface in + the no-Unix-domain-sockets case. This is a potential buffer overflow + in dead code since basically all systems INN builds on support Unix + domain sockets these days. Also track the buffer size more correctly + in the client side of this interface for the Unix domain socket case. + + * Group blocks in incoming.conf are now correctly parsed and no longer + cause segfaults when loading this file. + + * Fixed a problem with innfeed continuously segfaulting on amd64 + hardware (and possibly on lots of 64-bit platforms). Many thanks to + Ollivier Robert for his patch and also to Kai Gallasch for having + reported the problem and provided the FreeBSD server to debug it. + + * scanlogs now rotates innfeed's log file, which prevents innfeed from + silently dying when its log file reaches 2 GB. + + * Perl 5.10 support has been added to INN thanks to Jakub Bogusz. + + * Some news clients hang when posting an article through a SSL + connection: it seems that nnrpd's SSL routines make it wrongly wait + for data completion. In order to fix the problem, the select() wait + is now just bypassed. However, the IDLE timer stat is currently not + collected for such connections. Thanks to Kachun Lee for this + workaround. + + * Fixed a bug in the display of the used compressor ("cunbatch" was used + if arguments were passed to gzip or bzip2). + + * Fixed a bug in mailpost and pullnews which prevented useful error + messages to be seen. Also add the -x flag to pullnews in order to + insert Xref: headers in articles which lack one. + + * If compiling with Berkeley DB, use its ndbm compatibility layer for + ckpasswd in preference to searching for a traditional dbm library. + INN also supports Berkeley DB 4.4, 4.5 and 4.6 thanks to Marco d'Itri. + + * ovdb_init now properly closes stdin/out/err when it becomes a daemon. + The issue was reported by Viktor Pilpenok and fixed by Marco d'Itri. + + * Added support for Diablo quickhash and hashfeed algorithms. It allows + to distribute the messages among several peers (new Q flag for + newsfeeds). Thanks to Miquel van Smoorenburg for this implementation + in INN. + + * innd now listen on separate sockets for IPv4 and IPv6 connections if + the IPV6_V6ONLY socket option is available. There might also be + operating systems that still have separate IPv4 and IPv6 TCP + implementations, and advanced features like TCP SACK might not be + available on v6 sockets. Thanks to Miquel van Smoorenburg for this + patch. + + * The two configuration options *bindaddress* and *bindaddress6* can now + be set on a per-peer basis for innfeed. Setting *bindaddress6* to + "none" tells innfeed to never attempt an IPv6 connection to that host. + Thanks to Miquel van Smoorenburg for this patch. + + * Added a *nnrpdflags* parameter to inn.conf (modeled on the concept of + *innflags*) to permit passing of command line arguments to instances + of nnrpd spawned from innd. + + * A new inn.conf parameter called *pathcluster* has been added: it + allows to append a common name to the Path: header on all incoming + articles. *pathhost* and *pathalias* (if set) are still appended to + the path as usual, but *pathcluster* is always appended as the last + element (e.g. on the leftmost side of the Path: header). Thanks to + Miquel van Smoorenburg for this feature. + + * simpleftp has been rewritten to use "Net::FTP". Indeed, ftp.pl is no + longer shipped with Perl 5 and the script did not work. + + * perl-nocem will now check for a timeout and re-open the socket if + required. Additionally, perl-nocem will switch to cancel_ctlinnd in + case cancel_nntp fails after sending the Message-ID. Thanks to + Christoph Biedl for the patch. A more detailed documentation has also + been written for perl-nocem(8). + + * The RADIUS configuration is now wrapped in a "server {}" block in + radius.conf. + + * Checkgroups when there is nothing to change no longer result in + sending a blank mail to administrators. Besides, no mail is sent by + controlchan for the creation of a newsgroup when the action is "no + change". + + * Checkgroups are now properly propagated even though the news server + does not carry the groups they are posted to. + + * controlchan and docheckgroups now handle wire format messages so that + articles from the spool can be directly fed to them. + + * Newgroup control messages for existing groups now change their + description. If a mail is sent to administrators, it reminds them to + update their newsgroups file. It also warns when there are missing or + obsolete descriptions. Furthermore, the newsgroups file is now + written prettier (from one to three tabulations between the name of + the group and its short description) and to.* groups cannot be + created. + + * The sample control.ctl file has been extensively updated. + + * Fixed empty LISTGROUP replies which were not terminated. Thanks to + David Canzi for the patch. + + * In response to a LIST [file] command, if the file does not exist, we + assume it is not maintained and return 503 instead of 215 and an empty + file. Moreover, capability to LIST ACTIVE.TIMES for a wildmat pattern + as its third argument has been added in order to select wanted + newsgroups. + + * inews now tries to authenticate if it does not receive a 200 return + code after MODE READER. Indeed, it might be able to post even with a + 201 return code and also with another codes like 440 or 480. + + * If creating a new history file, set the ownership and mode + appropriately. inncheck also expects fewer things to be private to + the news user. Most of the configuration files will never contain + private information like passwords. + + * Other minor bug fixes and documentation improvements. + +Changes in 2.4.3 * Previous versions of INN had an optimization for handling XHDR - Newsgroups that used the Xref header from overview. While this does + Newsgroups that used the Xref: header from overview. While this does make the command much faster, it doesn't produce accurate results and breaks the NNTP protocol, so this optimization has been removed. * Fixed a bug in innd that allowed it to accept articles with duplicated headers if the header occurred an odd number of times. Modified the - programs for rebuilding overview to use the last Xref header if there + programs for rebuilding overview to use the last Xref: header if there are multiple ones to avoid problems with spools that contain such invalid articles. @@ -28,16 +151,16 @@ Changes from 2.4.2 to 2.4.3 * Many other more minor bug fixes, optimization improvements, and documentation fixes. -Changes from 2.4.1 to 2.4.2 +Changes in 2.4.2 * INN is now licensed under a less restrictive license (about as minimally restrictive as possible shy of public domain), and the clause similar to the old BSD advertising clause has been dropped. - * make install and make update now always install the newly built + * "make install" and "make update" now always install the newly built binaries, rather than only installing them if the modification times - are newer. This is the behavior that people expect. make install now - also automatically builds a new (empty) history database if one + are newer. This is the behavior that people expect. "make install" + now also automatically builds a new (empty) history database if one doesn't already exist. * The embedded Tcl filter code has been disabled (and will be removed @@ -62,10 +185,10 @@ Changes from 2.4.1 to 2.4.2 status code, claiming the group didn't exist, which confuses the reactive authentication capability of news readers. - * If a user is not authorized to approve articles (using the A access - control in readers.conf), articles that include Approved headers will - be rejected even if posted to unmoderated groups. Some other site may - consider that group to be moderated. + * If a user is not authorized to approve articles (using the "A" + *access* control in readers.conf), articles that include Approved: + headers will be rejected even if posted to unmoderated groups. Some + other site may consider that group to be moderated. * The configuration parser used for readers.conf and others now correctly handles "#" inside quoted strings and is more robust against @@ -92,20 +215,20 @@ Changes from 2.4.1 to 2.4.2 * Many other, more minor bugs have also been fixed. -Changes from 2.4.0 to 2.4.1 +Changes in 2.4.1 - * SECURITY: Handle the special filing of control messages into per-type + * SECURITY: Handle the special filing of control messages into per-type newsgroups more robustly. This closes a potentially exploitable buffer overflow. Thanks to Dan Riley for his excellent bug report. - * Fixed article handling in innd so that articles without a Path header + * Fixed article handling in innd so that articles without a Path: header (arising from peers sending malformatted articles or injecting malformatted articles through rnews) would not cause innd to crash. (This was not exploitable.) * Fixed a serious bug in XPAT handling, thanks to Tommy van Leeuwen. - * configure now looks for sendmail only in /usr/sbin and /usr/lib, not + * "configure" now looks for sendmail only in /usr/sbin and /usr/lib, not on the user's path. This should reduce the need for --with-sendmail if your preferred sendmail is in a standard location. @@ -153,16 +276,16 @@ Upgrading from 2.3 to 2.4 ovdb is known to have some locking and timing issues related to how nnrpd shuts down (or fails to shut down) the overview databases. If you - have stability problems with ovdb, try setting readserver to true in + have stability problems with ovdb, try setting *readserver* to "true" in ovdb.conf. This will funnel all ovdb reads through a single process - with a cleaner interface to the underlying BerkeleyDB database. + with a cleaner interface to the underlying Berkeley DB database. If you use Perl authentication for nnrpd (if *nnrpdperlauth* in inn.conf - is true), there have been major changes. See "Changes to Perl + is "true"), there have been major changes. See "Changes to Perl Authentication Support for nnrpd" in doc/hook-perl for details. Similarly, if you use Python authentication for nnrpd (if - *nnrpdpythonauth* in inn.conf is true), there have been major changes. + *nnrpdpythonauth* in inn.conf is "true"), there have been major changes. See "Changes to Python Authentication and Access Control Support for nnrpd" in doc/hook-python for details. @@ -179,7 +302,7 @@ Upgrading from 2.3 to 2.4 If you are upgrading from a version prior to INN 2.3, see "Upgrading from 2.2 to 2.3". -Changes from 2.3 to 2.4 +Changes in 2.4.0 * IPv6 support has been added, disabled by default. If you have IPv6 connectivity, build with --enable-ipv6 to try it. There are no known @@ -226,11 +349,12 @@ Changes from 2.3 to 2.4 caught before anyone starts to rely on it. * innfeed supports a new peer parameter, *backlog-feed-first*, that if - set to true feeds any backlog to a peer before new articles, see - innfeed.conf(5). When used in combination with *max-connections: 1*, - this can be used to enforce in-order delivery of messages to a peer - that is doing Xref slaving, avoiding cases where a higher-numbered - message is received before a lower-numbered message in the same group. + set to "true" feeds any backlog to a peer before new articles, see + innfeed.conf(5). When used in combination with *max-connections* set + to 1, this can be used to enforce in-order delivery of messages to a + peer that is doing Xref slaving, avoiding cases where a + higher-numbered message is received before a lower-numbered message in + the same group. * Several other, more minor protocol issues have been fixed: connections rejected due to the connection rate limiting in innd @@ -255,7 +379,7 @@ Changes from 2.3 to 2.4 certain values must be included in inn.conf even if using the defaults for the use of shell or Perl scripts, and it will serve as the basis for standardizing and cleaning up the configuration file parsing in - other parts of INN. innupgrade is run during make update and should + other parts of INN. innupgrade is run during "make update" and should convert an existing inn.conf file for you. * send-uucp has been replaced by a completely rewritten version from @@ -265,9 +389,9 @@ Changes from 2.3 to 2.4 script has been retired, since send-uucp can now handle everything that it did. - * Two configure options have changed names: --with-tmp-path is now + * Two "configure" options have changed names: --with-tmp-path is now --with-tmp-dir, and --with-largefiles is now --enable-largefiles, to - improve consistency and better match the autoconf option guidelines. + improve consistency and better match the "autoconf" option guidelines. * Variables can now be used in the newsfeeds file to make it easier to specify many similar feeds or feed patterns. See the newsfeeds(5) man @@ -280,15 +404,15 @@ Changes from 2.3 to 2.4 * Two new options, *nfsreader* and *nfswriter*, have been added to inn.conf to aid in building NFS based shared reader/writer platforms. - On the writer server configure nfswriter to true and on all of the - readers configure nfsreader to true; these options add calls to force - data out to the NFS server and force it to be read directly from the - NFS server at the appropriate moments. Note that it has only been + On the writer server configure *nfswriter* to "true" and on all of the + readers configure *nfsreader* to "true"; these options add calls to + force data out to the NFS server and force it to be read directly from + the NFS server at the appropriate moments. Note that it has only been tested on Solaris 8, using CNFS as the storage mechanism and tradindexed as the overview method. * A new option, *tradindexedmmap*, has been added to inn.conf. If set - to true (the default), then the tradindexed overview method will use + to "true" (the default), then the tradindexed overview method will use mmap() to access its overview data (in 2.3 you couldn't control this; it always used mmap). @@ -304,7 +428,7 @@ Changes from 2.3 to 2.4 allow them to still work with most simple 8-bit character sets in widespread use. As part of this change, some additional wildmat interfaces are now available and the names have changed (to uwildmat, - where u is for Unicode). See uwildmat(3) for the details. + where "u" is for Unicode). See uwildmat(3) for the details. * The interface between external authenticators and nnrpd is now properly documented, in doc/external-auth. A library implementing @@ -312,26 +436,151 @@ Changes from 2.3 to 2.4 additional authenticators resolvers. See libauth(3) for details, and any of the existing programs in authprogs/ for examples. - * INN now checks to ensure that the configured temporary directory is - not world-writeable. Additionally, most (if not all) of the temporary - file creation in INN now uses functions that create temporary files - properly and safely. + * Most (if not all) of the temporary file creation in INN now uses + functions that create temporary files properly and safely. + +Changes in 2.3.5 + + * Clients using POST are no longer permitted to provide an + Injector-Info: header. + + * Fixed a bug causing posts with Followup-To: set to a moderated group + to be rejected if the posting user didn't have permission to approve + postings. + + * Fixed bugs in inncheck with setuid rnews or setgid inews, in + *innconfval* with inn.conf parameters containing shell metacharacters + but no spaces, and in parsedate.y with some versions of yacc. Fixed a + variety of size-related printf format warnings (e.g., %d vs. %ld) + thanks to the work of Winfried Szukalski. + +Changes in 2.3.4 + + * LIST ACTIVE no longer returns data when given a single group argument + if the client is not authorized to read that group. + + * XHDR and XPAT weren't correctly parsing article headers, resulting in + searches for the header "newsgroup" matching the header "newsgroups". + + * Made CNFS more robust against crashes by actually syncing the cycbuff + headers to disk as was originally intended. Fixed a memory leak in + the tradspool code. + + * Two bugs in pgpverify when using GnuPG were fixed: it now correctly + checks for gpgv (rather than pgp) when told to use GnuPG and expects + the keyring to be pubring.gpg (not pubring.pgp). + + * Substantial updates to the sample provided control.ctl file. + + * Compilation fixes with Perl 5.8.0, Berkeley DB 4.x, current versions + of Linux (including with large file support), and Tru64. inndf fixes + for ReiserFS. + + * Various bugs in the header handling in nnrpd have been fixed, + including hangs when using virtual domains and improper processing of + folded headers under certain circumstances. + + * Other minor bug fixes and documentation improvements. + +Changes in 2.3.3 + + * pgpverify now supports using GnuPG to check signatures (rather than + PGP) without the pgpgpg wrapper. GnuPG can check both old-style RSA + signatures and new OpenPGP signatures and is recommended over PGP 2.6. + If you have GnuPG installed, pgpverify will use it rather than PGP, + which means that you may have to create a new key ring for GnuPG to + use to verify signatures if you were previously using PGP. + + * Users can no longer post articles containing Approved: headers to + moderated groups by default; they must be specifically given that + permission with the *access* parameter in readers.conf. See the man + page for more details. + + * Two bugs in repacking overview index files and a reliability bug with + writing overview data were all fixed in the tradindexed overview + method, hopefully making it somewhat more reliable, particularly for + makehistory. + + * If rc.news.local exists in the INN binary directory, it will be run + with the start or stop argument whenever rc.news is run. This is + available as a hook for local startup and shutdown code. + + * The default history table hash sizes were increased because a + too-small value can cause serious performance problems (whereas a + too-large hash just wastes a bit of disk space). + + * The sample control.ctl file has been extensively updated. + + * Wildmat exclusions ("@" and "!") should now work properly in + storage.conf newsgroup patterns. + + * The implementation of the -w flag for expireover was fixed; + previously, the value given to -w to change expireover's notion of the + current time was scaled by too much. + + * Various other more minor bug fixes, standards compliance fixes, and + documentation improvements. + +Changes in 2.3.2 + + * innxmit can again handle regular filenames as input as well as storage + API tokens (allowing it to be used to import an old traditional + spool). - * All of the applicable bug fixes from the INN 2.3 STABLE series are - also included in INN 2.4. + * Several problems with tagged-hash history files have been fixed thanks + to the debugging efforts of Andrew Gierth and Sang-yong Suh. + + * A very long-standing (since INN 1.0!) NNTP protocol bug in nnrpd was + fixed. The response to an ARTICLE command retrieving a message by + Message-ID should have the Message-ID as the third word of the + response, not the fourth. Fixing this is reported to *possibly* cause + problems with some Netscape browsers, but other news servers correctly + follow the protocol. + + * Some serious performance problems with expiration of tradspool should + now be at least somewhat alleviated. tradspool and timehash now know + how to output file names for removal rather than tokens, and fastrm's + ability to remove regular files has been restored. This should bring + expiration times for tradspool back to within a factor of two of + pre-storage-API expiration times. + + * Added a sample subscriptions file and documentation for it and + innmail. + +Changes in 2.3.1 + + * inews no longer downloads the active file, no longer tries to send + postings to moderated groups to the moderator directly, and in general + duplicates less of the functionality of nnrpd, instead letting nnrpd + handle it. This fixes the problem of inews not working properly for + users other than news without being setgid. + + * Added a man page for ckpasswd. + + * A serious bug in the embedded Perl authentication hooks was fixed, + thanks to Jan Rychter. + + * The annoying compilation problem with embedded Perl filtering on Linux + systems without libgdbm installed should be fixed. + + * INN now complains loudly at "configure" time if the configured path + for temporary files is world-writeable, since this configuration can + be a security hole. + + * Many other varied bug fixes and documentation fixes of all sorts. Upgrading from 2.2 to 2.3 There may be additional things to watch out for not listed here; if you - run across any, please let inn-bugs@isc.org know about them. + run across any, please let know about them. - Simply doing a make update is not sufficient to upgrade; the history and - overview information will also have to be regenerated, since the formats - of both files have changed between 2.2 and 2.3. Regardless of whether - you were using the storage API or traditional spool under 2.2, you'll - need to rebuild your overview and history files. You will also need to - add a storage.conf file, if you weren't using the storage API under INN - 2.2. A good default storage.conf file for 2.2 users would be: + Simply doing a "make update" is not sufficient to upgrade; the history + and overview information will also have to be regenerated, since the + formats of both files have changed between 2.2 and 2.3. Regardless of + whether you were using the storage API or traditional spool under 2.2, + you'll need to rebuild your overview and history files. You will also + need to add a storage.conf file, if you weren't using the storage API + under INN 2.2. A good default storage.conf file for 2.2 users would be: method tradspool { newsgroups: * @@ -346,11 +595,11 @@ Upgrading from 2.2 to 2.3 inn.conf(5) for more details. The code that generates the dbz index files has been split into a - seperate program, makedbz. makehistory still generates the base history + separate program, makedbz. makehistory still generates the base history file and the overview information, but some of its options have been changed. To rebuild the history and overview files, use something like: - makehistory -b -f history.n -O -T/usr/local/news/tmp -l 600000 + makehistory -b -f history.n -O -T /usr/local/news/tmp -l 600000 (change the /usr/local/news/tmp path to some directory that has plenty of temporary space, and leave off -O if you're running a transit-only @@ -360,8 +609,8 @@ Upgrading from 2.2 to 2.3 makehistory -b -f history.n -O -F Both will generate a new history file as history.n and rebuild overview - at the same time. If you want to preseve a record of expired message - IDs in the history file, run: + at the same time. If you want to preseve a record of expired + Message-IDs in the history file, run: awk 'NF==2 { print; }' < history >> history.n @@ -369,7 +618,7 @@ Upgrading from 2.2 to 2.3 new history file and make sure it looks right, then generate the new index files and move them into place: - makedbz -s `wc -l . If you are using a version of Cleanfeed that still has a line in it like: @@ -430,7 +679,7 @@ Upgrading from 2.2 to 2.3 to work with INN 2.3 or later. This is due to an internal optimization of the interface to embedded filters that's new in INN 2.3. -Changes from 2.2 to 2.3 +Changes in 2.3.0 * New readers.conf file (replaces nnrp.access) which allows more flexible specification of access restrictions. Included in the sample @@ -460,25 +709,16 @@ Changes from 2.2 to 2.3 storing multiple articles in a single file. See INSTALL for details on it. - * INN now supports embedded Python filters as well as Perl and TCL + * INN now supports embedded Python filters as well as Perl and Tcl filters, and supports Python authentication hooks. * There is preliminary support for news reading over SSL, using OpenSSL. - * Users can no longer post articles containing Approved: headers to - moderated groups by default; they must be specifically given that - permission with the access: parameter in readers.conf. See the man - page for more details. - * To simplify anti-abuse filtering, and to be more compliant with news standards and proposed standards, INN now treats as control messages - only articles containing a Control header. A Subject line beginning + only articles containing a Control: header. A Subject: line beginning with "cmsg " is no longer sufficient for a message to be considered a - control message, and the Also-Control header is no longer supported. - - * inews is not installed setgid news and rnews is not installed setuid - root by default any more. If you need the old permissions, you have - to give a flag to configure. See INSTALL for more details. + control message, and the Also-Control: header is no longer supported. * The INN build system no longer uses subst. (This will be transparent to most users; it's an improvement and modernization of how INN is @@ -487,15 +727,39 @@ Changes from 2.2 to 2.3 * The build and installation system has been substantially overhauled. "make update" now updates scripts as well as binaries and documentation, there is better support for parallel builds ("make - -j"), there is less make recursion, and far more of the - system-dependent configuration is handled directly by autoconf. + -j"), there is less "make" recursion, and far more of the + system-dependent configuration is handled directly by "autoconf". libtool build support (including shared library support) should be better than previous releases. - * All of the applicable bug fixes from the INN 2.2 STABLE series are - also included in INN 2.3. +Changes in 2.2.3 + + * inews is not installed setgid news and rnews is not installed setuid + root by default any more. If you need the old permissions, you have + to give a flag to configure. See INSTALL for more details. + + * Fixed a security hole when *verifycancels* was enabled in inn.conf + (not the default). + + * Message-IDs are now limited to 250 octets to prevent interoperability + problems with other servers. + + * Embedded Perl filters now work with Perl 5.6.0. + + * Lots of bug fixes and changes for security paranoia. + +Changes in 2.2.2 + + * Various minor bug fixes and a Y2K bug fix. The Y2K bug is in version + version 2.2.1 only and will show up after Jan 1st, 2000 when a news + reader issues a NEWNEWS command for a date prior to the year 2000. + +Changes in 2.2.1 + + * Various bug fixes, mostly notably fixes for potential buffer overflow + security vulnerabilities. -Changes from 2.1 to 2.2 +Changes in 2.2.0 * New storage.conf file (replaces storage.ctl). @@ -507,15 +771,15 @@ Changes from 2.1 to 2.2 default to use if you run actsyncd. Be sure to read the manual page for actsync to configure an actsync.ign file for your site, and test simpleftp if you - do not configure with wget or ncftp. Also see + do not "configure" with wget or ncftp. Also see . - * Some options to configure are now moved to inn.conf (merge-to-groups - and pgp-verify). + * Some options to "configure" are now moved to inn.conf + (*merge-to-groups* and *pgp-verify*, without the hyphen). * inndf, a portable version of df(1), is supplied. - * New cnfsstat program to show stats of cnfs buffers. + * New cnfsstat program to show stats of CNFS buffers. * news2mail and mailpost programs for gatewaying news to mail and mail to news are supplied. diff -rup inn-2.4.3/TODO inn-2.4.4/TODO --- inn-2.4.3/TODO 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/TODO 2008-05-05 03:18:36.000000000 -0700 @@ -20,7 +20,7 @@ suite, which is currently very minimal. to allow more portions of INN to be automatically tested will make all changes easier and will be *greatly* appreciated. -Last modified $Id: TODO 6296 2003-04-16 21:53:37Z rra $. +Last modified $Id: TODO 7575 2006-09-11 22:59:38Z eagle $. Scheduled for INN 2.5 @@ -570,9 +570,6 @@ General Projects * All the old packages in unoff-contrib should be reviewed for integration into INN. -* Look through for stuff that should - be included in INN (in particular, flowstats may be interesting). - * It may be better for INN on SysV-derived systems to use poll rather than select. The semantics are better, and on some systems (such as Solaris) select is limited to 1024 file descriptors whereas poll can handle any diff -rup inn-2.4.3/authprogs/Makefile inn-2.4.4/authprogs/Makefile --- inn-2.4.3/authprogs/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/authprogs/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 7193 2005-04-11 07:36:51Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -66,7 +66,10 @@ radius: radius.o $(LIBAUTH) $(LIBINN) $(LINK) radius.o $(LIBAUTH) $(LIBINN) $(LIBS) auth_krb5.o: auth_krb5.c - $(CC) $(CFLAGS) $(KRB5INC) -c $< + $(CC) $(CFLAGS) $(KRB5INC) -c auth_krb5.c + +ckpasswd.o: ckpasswd.c + $(CC) $(CFLAGS) $(DBMINC) -c ckpasswd.c $(LIBINN): ; (cd ../lib ; $(MAKE)) $(LIBSMB): ; (cd smbval ; $(MAKE)) @@ -80,27 +83,33 @@ depend: Makefile $(SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. auth_krb5.o: auth_krb5.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h libauth.h ../include/portable/socket.h \ - ../include/inn/messages.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + libauth.h ../include/portable/socket.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h auth_smb.o: auth_smb.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h libauth.h \ - ../include/portable/socket.h smbval/valid.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h libauth.h \ + ../include/portable/socket.h ../include/config.h smbval/valid.h ckpasswd.o: ckpasswd.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/inn/qio.h \ - ../include/inn/vector.h ../include/libinn.h libauth.h \ - ../include/portable/socket.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/inn/qio.h \ + ../include/inn/vector.h ../include/libinn.h libauth.h \ + ../include/portable/socket.h ../include/config.h domain.o: domain.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h \ - libauth.h ../include/portable/socket.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h \ + libauth.h ../include/portable/socket.h ../include/config.h ident.o: ident.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h \ - libauth.h ../include/portable/socket.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h \ + libauth.h ../include/portable/socket.h ../include/config.h libauth.o: libauth.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h libauth.h \ - ../include/portable/socket.h ../include/inn/messages.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h libauth.h ../include/portable/socket.h \ + ../include/config.h ../include/inn/messages.h ../include/inn/defines.h radius.o: radius.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h \ - ../include/inn/innconf.h ../include/inn/md5.h \ - ../include/inn/messages.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/conffile.h libauth.h \ - ../include/portable/socket.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/md5.h ../include/inn/messages.h \ + ../include/libinn.h ../include/nntp.h ../include/paths.h \ + ../include/conffile.h libauth.h ../include/portable/socket.h diff -rup inn-2.4.3/authprogs/ckpasswd.c inn-2.4.4/authprogs/ckpasswd.c --- inn-2.4.3/authprogs/ckpasswd.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/authprogs/ckpasswd.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: ckpasswd.c 6140 2003-01-19 19:30:55Z rra $ +/* $Id: ckpasswd.c 7565 2006-08-28 02:42:54Z eagle $ ** ** The default username/password authenticator. ** @@ -25,9 +25,12 @@ #include #include -#if HAVE_DBM +#if defined(HAVE_DBM) || defined(HAVE_BDB_DBM) # if HAVE_NDBM_H # include +# elif HAVE_BDB_DBM +# define DB_DBM_HSEARCH 1 +# include # elif HAVE_GDBM_NDBM_H # include # elif HAVE_DB1_NDBM_H @@ -145,7 +148,7 @@ auth_pam(const char *username, char *pas ** password, if found, is returned as a newly allocated string; otherwise, ** NULL is returned. */ -#if !HAVE_DBM +#if !(defined(HAVE_DBM) || defined(HAVE_BDB_DBM)) static char * password_dbm(char *user UNUSED, const char *file UNUSED) { @@ -174,7 +177,7 @@ password_dbm(char *name, const char *fil dbm_close(database); return password; } -#endif /* HAVE_DBM */ +#endif /* HAVE_DBM || HAVE_BDB_DBM */ /* diff -rup inn-2.4.3/authprogs/radius.c inn-2.4.4/authprogs/radius.c --- inn-2.4.3/authprogs/radius.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/authprogs/radius.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: radius.c 6155 2003-01-19 19:58:25Z rra $ +/* $Id: radius.c 7745 2008-04-06 10:18:54Z iulius $ ** ** Authenticate a user against a remote radius server. */ @@ -92,7 +92,7 @@ static rad_config_t *get_radconf(void) { rad_config_t *new; - new = xmalloc(sizeof(rad_config_t)); + new = xcalloc(1, sizeof(rad_config_t)); new->next = NULL; return new; diff -rup inn-2.4.3/backends/Makefile inn-2.4.4/backends/Makefile --- inn-2.4.3/backends/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/backends/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7734 2008-04-06 09:25:56Z iulius $ include ../Makefile.global @@ -19,6 +19,8 @@ SOURCES = actsync.c archive.c batc all: $(ALL) +man: $(MAN) + warnings: $(MAKE) COPT='$(WARNINGS)' all @@ -106,62 +108,76 @@ depend: Makefile $(SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. actsync.o: actsync.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/wait.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/qio.h ../include/libinn.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/wait.h ../include/config.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h ../include/inn/qio.h \ + ../include/libinn.h ../include/paths.h archive.o: archive.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/wire.h ../include/libinn.h \ - ../include/paths.h ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/wire.h ../include/libinn.h \ + ../include/paths.h ../include/storage.h batcher.o: batcher.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/paths.h \ - ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/timer.h ../include/libinn.h \ + ../include/paths.h ../include/storage.h buffchan.o: buffchan.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ - ../include/paths.h map.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ + ../include/paths.h map.h cvtbatch.o: cvtbatch.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/inn/wire.h \ - ../include/libinn.h ../include/paths.h ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/inn/wire.h \ + ../include/libinn.h ../include/paths.h ../include/storage.h filechan.o: filechan.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/paths.h \ - map.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ../include/paths.h map.h inndf.o: inndf.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ - ../include/ov.h ../include/storage.h ../include/inn/history.h \ - ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ../include/paths.h innxbatch.o: innxbatch.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/nntp.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h \ + ../include/inn/timer.h ../include/libinn.h ../include/nntp.h innxmit.o: innxmit.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/qio.h ../include/inn/timer.h ../include/inn/wire.h \ - ../include/libinn.h ../include/nntp.h ../include/paths.h \ - ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/history.h \ + ../include/inn/defines.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/inn/timer.h \ + ../include/inn/wire.h ../include/libinn.h ../include/nntp.h \ + ../include/paths.h ../include/storage.h map.o: map.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h ../include/paths.h map.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h ../include/paths.h map.h ninpaths.o: ninpaths.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h nntpget.o: nntpget.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h ../include/nntp.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/history.h \ + ../include/inn/defines.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/libinn.h ../include/nntp.h \ + ../include/paths.h overchan.o: overchan.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/qio.h ../include/libinn.h ../include/ov.h \ - ../include/storage.h ../include/inn/history.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h ../include/inn/qio.h \ + ../include/libinn.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../include/paths.h shlock.o: shlock.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h -shrinkfile.o: shrinkfile.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h +shrinkfile.o: shrinkfile.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h diff -rup inn-2.4.3/backends/send-uucp.in inn-2.4.4/backends/send-uucp.in --- inn-2.4.3/backends/send-uucp.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/backends/send-uucp.in 2008-05-05 03:18:36.000000000 -0700 @@ -134,7 +134,8 @@ sub count_jobs { sub unbatcher { my ($compressor) = @_; - $compressor =~ s%.*/%%; + $compressor =~ s%.*/%%; # Do not keep the complete path. + $compressor =~ s% .*%%; # Do not keep the optional parameters. return $UNBATCHER{$compressor} || 'cunbatch'; } diff -rup inn-2.4.3/configure inn-2.4.4/configure --- inn-2.4.3/configure 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/configure 2008-05-05 03:18:36.000000000 -0700 @@ -1,6 +1,6 @@ #! /bin/sh -# From configure.in Revision: 7461 +# From configure.in Revision: 7466 # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- ## Copyright 1996, 1997, 1998, 1999, 2000, 2001 ## Free Software Foundation, Inc. @@ -7284,93 +7284,23 @@ else : fi LIBS=$inn_save_LIBS -inn_save_LIBS=$LIBS -LIBS=${DBM_LIB} - -echo $ac_n "checking for library containing dbm_open""... $ac_c" 1>&6 -echo "configure:7292: checking for library containing dbm_open" >&5 -if eval "test \"`echo '$''{'ac_cv_search_dbm_open'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_func_search_save_LIBS="$LIBS" -ac_cv_search_dbm_open="no" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_search_dbm_open="none required" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -test "$ac_cv_search_dbm_open" = "no" && for i in ndbm dbm; do -LIBS="-l$i $ac_func_search_save_LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_search_dbm_open="-l$i" -break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done -LIBS="$ac_func_search_save_LIBS" -fi - -echo "$ac_t""$ac_cv_search_dbm_open" 1>&6 -if test "$ac_cv_search_dbm_open" != "no"; then - test "$ac_cv_search_dbm_open" = "none required" || LIBS="$ac_cv_search_dbm_open $LIBS" - DBM_LIB=$LIBS - cat >> confdefs.h <<\EOF -#define HAVE_DBM 1 -EOF - -else : - -fi -LIBS=$inn_save_LIBS - inn_check_pam=1 for ac_hdr in pam/pam_appl.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7364: checking for $ac_hdr" >&5 +echo "configure:7294: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7304: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7395,17 +7325,17 @@ else echo "$ac_t""no" 1>&6 ac_safe=`echo "security/pam_appl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for security/pam_appl.h""... $ac_c" 1>&6 -echo "configure:7399: checking for security/pam_appl.h" >&5 +echo "configure:7329: checking for security/pam_appl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7435,14 +7365,14 @@ if test x"$inn_check_pam" = x1; then LIBS=${PAM_LIB} echo $ac_n "checking for library containing pam_start""... $ac_c" 1>&6 -echo "configure:7439: checking for library containing pam_start" >&5 +echo "configure:7369: checking for library containing pam_start" >&5 if eval "test \"`echo '$''{'ac_cv_search_pam_start'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_pam_start="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_pam_start="none required" else @@ -7464,7 +7394,7 @@ rm -f conftest* test "$ac_cv_search_pam_start" = "no" && for i in pam; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_pam_start="-l$i" break @@ -7508,14 +7438,14 @@ if test x"$inn_enable_keywords" = x1 ; t LIBS=${REGEX_LIB} echo $ac_n "checking for library containing regexec""... $ac_c" 1>&6 -echo "configure:7512: checking for library containing regexec" >&5 +echo "configure:7442: checking for library containing regexec" >&5 if eval "test \"`echo '$''{'ac_cv_search_regexec'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_regexec="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_regexec="none required" else @@ -7537,7 +7467,7 @@ rm -f conftest* test "$ac_cv_search_regexec" = "no" && for i in regex; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_regexec="-l$i" break @@ -7583,7 +7513,7 @@ else fi echo $ac_n "checking if BerkeleyDB is desired""... $ac_c" 1>&6 -echo "configure:7587: checking if BerkeleyDB is desired" >&5 +echo "configure:7517: checking if BerkeleyDB is desired" >&5 if test x"$BERKELEY_DB_DIR" = xno ; then echo "$ac_t""no" 1>&6 BERKELEY_DB_LDFLAGS= @@ -7592,10 +7522,11 @@ if test x"$BERKELEY_DB_DIR" = xno ; then else echo "$ac_t""yes" 1>&6 echo $ac_n "checking for BerkeleyDB location""... $ac_c" 1>&6 -echo "configure:7596: checking for BerkeleyDB location" >&5 +echo "configure:7526: checking for BerkeleyDB location" >&5 if test x"$BERKELEY_DB_DIR" = xyes ; then for v in BerkeleyDB BerkeleyDB.3.0 BerkeleyDB.3.1 BerkeleyDB.3.2 \ - BerkeleyDB.3.3 BerkeleyDB.4.0 BerkeleyDB.4.1 BerkeleyDB.4.2 BerkeleyDB.4.3 ; do + BerkeleyDB.3.3 BerkeleyDB.4.0 BerkeleyDB.4.1 BerkeleyDB.4.2 \ + BerkeleyDB.4.3 BerkeleyDB.4.4 BerkeleyDB.4.5 BerkeleyDB.4.6; do for d in $prefix /usr/local /opt /usr ; do if test -d "$d/$v" ; then BERKELEY_DB_DIR="$d/$v" @@ -7605,7 +7536,7 @@ echo "configure:7596: checking for Berke done fi if test x"$BERKELEY_DB_DIR" = xyes ; then - for v in db43 db42 db41 db4 db3 db2 ; do + for v in db46 db45 db44 db43 db42 db41 db4 db3 db2 ; do if test -d "/usr/local/include/$v" ; then BERKELEY_DB_LDFLAGS="-L/usr/local/lib" BERKELEY_DB_CFLAGS="-I/usr/local/include/$v" @@ -7615,7 +7546,7 @@ echo "configure:7596: checking for Berke fi done if test x"$BERKELEY_DB_LIB" = x ; then - for v in db43 db42 db41 db4 db3 db2 ; do + for v in db44 db43 db42 db41 db4 db3 db2 ; do if test -d "/usr/include/$v" ; then BERKELEY_DB_CFLAGS="-I/usr/include/$v" BERKELEY_DB_LIB="-l$v" @@ -7643,6 +7574,89 @@ fi +if test x"$BERKELEY_DB_LIB" != x ; then + DBM_INC="$BERKELEY_DB_CFLAGS" + DBM_LIB="$BERKELEY_DB_LDFLAGS $BERKELEY_DB_LIB" + + cat >> confdefs.h <<\EOF +#define HAVE_BDB_DBM 1 +EOF + +else + inn_save_LIBS=$LIBS +LIBS=${DBM_LIB} + +echo $ac_n "checking for library containing dbm_open""... $ac_c" 1>&6 +echo "configure:7591: checking for library containing dbm_open" >&5 +if eval "test \"`echo '$''{'ac_cv_search_dbm_open'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_func_search_save_LIBS="$LIBS" +ac_cv_search_dbm_open="no" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_search_dbm_open="none required" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +test "$ac_cv_search_dbm_open" = "no" && for i in ndbm dbm; do +LIBS="-l$i $ac_func_search_save_LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_search_dbm_open="-l$i" +break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done +LIBS="$ac_func_search_save_LIBS" +fi + +echo "$ac_t""$ac_cv_search_dbm_open" 1>&6 +if test "$ac_cv_search_dbm_open" != "no"; then + test "$ac_cv_search_dbm_open" = "none required" || LIBS="$ac_cv_search_dbm_open $LIBS" + DBM_LIB=$LIBS + cat >> confdefs.h <<\EOF +#define HAVE_DBM 1 +EOF + +else : + +fi +LIBS=$inn_save_LIBS + + DBM_INC= +fi + + # Check whether --with-openssl or --without-openssl was given. if test "${with_openssl+set}" = set; then @@ -7653,7 +7667,7 @@ else fi echo $ac_n "checking if OpenSSL is desired""... $ac_c" 1>&6 -echo "configure:7657: checking if OpenSSL is desired" >&5 +echo "configure:7671: checking if OpenSSL is desired" >&5 if test x"$OPENSSL_DIR" = xno ; then echo "$ac_t""no" 1>&6 SSL_BIN= @@ -7662,7 +7676,7 @@ if test x"$OPENSSL_DIR" = xno ; then else echo "$ac_t""yes" 1>&6 echo $ac_n "checking for OpenSSL location""... $ac_c" 1>&6 -echo "configure:7666: checking for OpenSSL location" >&5 +echo "configure:7680: checking for OpenSSL location" >&5 if test x"$OPENSSL_DIR" = xyes ; then for dir in $prefix /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg \ /usr/local /usr ; do @@ -7690,7 +7704,7 @@ echo "configure:7666: checking for OpenS LIBS="$LIBS -L${OPENSSL_DIR}/lib" SSL_LIB='' echo $ac_n "checking for RSAPublicEncrypt in -lrsaref""... $ac_c" 1>&6 -echo "configure:7694: checking for RSAPublicEncrypt in -lrsaref" >&5 +echo "configure:7708: checking for RSAPublicEncrypt in -lrsaref" >&5 ac_lib_var=`echo rsaref'_'RSAPublicEncrypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7698,7 +7712,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lrsaref $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7725,7 +7739,7 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for RSAPublicEncrypt in -lRSAglue""... $ac_c" 1>&6 -echo "configure:7729: checking for RSAPublicEncrypt in -lRSAglue" >&5 +echo "configure:7743: checking for RSAPublicEncrypt in -lRSAglue" >&5 ac_lib_var=`echo RSAglue'_'RSAPublicEncrypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7733,7 +7747,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lRSAglue -lrsaref $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7769,7 +7783,7 @@ else fi echo $ac_n "checking for BIO_new in -lcrypto""... $ac_c" 1>&6 -echo "configure:7773: checking for BIO_new in -lcrypto" >&5 +echo "configure:7787: checking for BIO_new in -lcrypto" >&5 ac_lib_var=`echo crypto'_'BIO_new | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7777,7 +7791,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrypto $SSL_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7804,7 +7818,7 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for DSO_load in -ldl""... $ac_c" 1>&6 -echo "configure:7808: checking for DSO_load in -ldl" >&5 +echo "configure:7822: checking for DSO_load in -ldl" >&5 ac_lib_var=`echo dl'_'DSO_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7812,7 +7826,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl -lcrypto -ldl $SSL_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7850,7 +7864,7 @@ else fi echo $ac_n "checking for SSL_library_init in -lssl""... $ac_c" 1>&6 -echo "configure:7854: checking for SSL_library_init in -lssl" >&5 +echo "configure:7868: checking for SSL_library_init in -lssl" >&5 ac_lib_var=`echo ssl'_'SSL_library_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7858,7 +7872,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lssl $SSL_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7912,7 +7926,7 @@ else fi echo $ac_n "checking if SASL is desired""... $ac_c" 1>&6 -echo "configure:7916: checking if SASL is desired" >&5 +echo "configure:7930: checking if SASL is desired" >&5 if test x"$SASL_DIR" = xno ; then echo "$ac_t""no" 1>&6 SASL_INC= @@ -7920,7 +7934,7 @@ if test x"$SASL_DIR" = xno ; then else echo "$ac_t""yes" 1>&6 echo $ac_n "checking for SASL location""... $ac_c" 1>&6 -echo "configure:7924: checking for SASL location" >&5 +echo "configure:7938: checking for SASL location" >&5 if test x"$SASL_DIR" = xyes ; then for dir in $prefix /usr/local/sasl /usr/sasl /usr/pkg /usr/local ; do if test -f "$dir/include/sasl/sasl.h" ; then @@ -7936,7 +7950,7 @@ echo "configure:7924: checking for SASL echo "$ac_t""$SASL_DIR" 1>&6 inn_save_LIBS=$LIBS echo $ac_n "checking for sasl_getprop in -lsasl2""... $ac_c" 1>&6 -echo "configure:7940: checking for sasl_getprop in -lsasl2" >&5 +echo "configure:7954: checking for sasl_getprop in -lsasl2" >&5 ac_lib_var=`echo sasl2'_'sasl_getprop | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7944,7 +7958,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsasl2 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7991,7 +8005,7 @@ EOF inn_save_LIBS=$LIBS LIBS="$LIBS -L${SASL_DIR}/lib" echo $ac_n "checking for sasl_getprop in -lsasl2""... $ac_c" 1>&6 -echo "configure:7995: checking for sasl_getprop in -lsasl2" >&5 +echo "configure:8009: checking for sasl_getprop in -lsasl2" >&5 ac_lib_var=`echo sasl2'_'sasl_getprop | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7999,7 +8013,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsasl2 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8040,19 +8054,19 @@ EOF fi - +if test x"${KRB5_INC}" != x; then inn_save_LIBS=$LIBS LIBS=${KRB5_LIB} echo $ac_n "checking for library containing krb5_parse_name""... $ac_c" 1>&6 -echo "configure:8049: checking for library containing krb5_parse_name" >&5 +echo "configure:8063: checking for library containing krb5_parse_name" >&5 if eval "test \"`echo '$''{'ac_cv_search_krb5_parse_name'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_krb5_parse_name="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_krb5_parse_name="none required" else @@ -8074,7 +8088,7 @@ rm -f conftest* test "$ac_cv_search_krb5_parse_name" = "no" && for i in krb5; do LIBS="-l$i $LIBS -lk5crypto -lcom_err $ac_func_search_save_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_krb5_parse_name="-l$i" break @@ -8110,17 +8124,17 @@ if test "$ac_cv_search_krb5_parse_name" do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8114: checking for $ac_hdr" >&5 +echo "configure:8128: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8157,12 +8171,12 @@ LIBS=$KRB5_LIB for ac_func in krb5_init_ets do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8161: checking for $ac_func" >&5 +echo "configure:8175: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8208,12 +8222,13 @@ else echo "$ac_t""no" 1>&6 fi done +fi # test x"${KRB5_INC}" != x; LIBS=$inn_save_LIBS if test x"$DO_PERL" = xDO ; then echo $ac_n "checking for Perl linkage""... $ac_c" 1>&6 -echo "configure:8217: checking for Perl linkage" >&5 +echo "configure:8231: checking for Perl linkage" >&5 inn_perl_core_path=`$_PATH_PERL -MConfig -e 'print $Config{archlibexp}'` inn_perl_core_flags=`$_PATH_PERL -MExtUtils::Embed -e ccopts` inn_perl_core_libs=`$_PATH_PERL -MExtUtils::Embed -e ldopts 2>&1 | tail -1` @@ -8254,7 +8269,7 @@ fi if test x"$DO_PYTHON" = xdefine ; then echo $ac_n "checking for Python linkage""... $ac_c" 1>&6 -echo "configure:8258: checking for Python linkage" >&5 +echo "configure:8272: checking for Python linkage" >&5 py_prefix=`$_PATH_PYTHON -c 'import sys; print sys.prefix'` py_ver=`$_PATH_PYTHON -c 'import sys; print sys.version[:3]'` py_libdir="${py_prefix}/lib/python${py_ver}" @@ -8278,7 +8293,7 @@ fi if test x"$inn_enable_largefiles" = xyes ; then echo $ac_n "checking for largefile linkage""... $ac_c" 1>&6 -echo "configure:8282: checking for largefile linkage" >&5 +echo "configure:8296: checking for largefile linkage" >&5 case "$host" in *-aix4.01*) echo "$ac_t""no" 1>&6 @@ -8315,7 +8330,7 @@ EOF # Extract the first word of "getconf", so it can be a program name with args. set dummy getconf; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8319: checking for $ac_word" >&5 +echo "configure:8333: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GETCONF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8367,12 +8382,12 @@ fi fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:8371: checking for ANSI C header files" >&5 +echo "configure:8385: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8380,7 +8395,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8397,7 +8412,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -8415,7 +8430,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -8436,7 +8451,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -8447,7 +8462,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:8451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -8476,17 +8491,17 @@ if test x"$ac_cv_header_stdc" = xno ; th do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8480: checking for $ac_hdr" >&5 +echo "configure:8494: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8490: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8515,12 +8530,12 @@ done for ac_func in memcpy strchr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8519: checking for $ac_func" >&5 +echo "configure:8533: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8574,12 +8589,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/di do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:8578: checking for $ac_hdr that defines DIR" >&5 +echo "configure:8592: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -8587,7 +8602,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:8591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -8612,7 +8627,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:8616: checking for opendir in -ldir" >&5 +echo "configure:8630: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8620,7 +8635,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8653,7 +8668,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:8657: checking for opendir in -lx" >&5 +echo "configure:8671: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8661,7 +8676,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8695,12 +8710,12 @@ fi fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:8699: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:8713: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8709,7 +8724,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:8713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -8730,12 +8745,12 @@ EOF fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:8734: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:8748: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8751,7 +8766,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:8755: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8769: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -8779,17 +8794,17 @@ for ac_hdr in crypt.h inttypes.h limits. do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8783: checking for $ac_hdr" >&5 +echo "configure:8797: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8793: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8821,17 +8836,17 @@ if test x"$ac_cv_header_ndbm_h" = xno ; do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8825: checking for $ac_hdr" >&5 +echo "configure:8839: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8861,19 +8876,19 @@ fi echo $ac_n "checking whether h_errno must be declared""... $ac_c" 1>&6 -echo "configure:8865: checking whether h_errno must be declared" >&5 +echo "configure:8879: checking whether h_errno must be declared" >&5 if eval "test \"`echo '$''{'inn_cv_herrno_need_decl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { h_errno = 0; ; return 0; } EOF -if { (eval echo configure:8877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_herrno_need_decl=no else @@ -8897,12 +8912,12 @@ fi echo $ac_n "checking whether inet_aton must be declared""... $ac_c" 1>&6 -echo "configure:8901: checking whether inet_aton must be declared" >&5 +echo "configure:8915: checking whether inet_aton must be declared" >&5 if eval "test \"`echo '$''{'inn_cv_decl_needed_inet_aton'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8937,7 +8952,7 @@ int main() { char *(*pfn) = (char *(*)) inet_aton ; return 0; } EOF -if { (eval echo configure:8941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_decl_needed_inet_aton=no else @@ -8959,12 +8974,12 @@ else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking whether inet_ntoa must be declared""... $ac_c" 1>&6 -echo "configure:8963: checking whether inet_ntoa must be declared" >&5 +echo "configure:8977: checking whether inet_ntoa must be declared" >&5 if eval "test \"`echo '$''{'inn_cv_decl_needed_inet_ntoa'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -8999,7 +9014,7 @@ int main() { char *(*pfn) = (char *(*)) inet_ntoa ; return 0; } EOF -if { (eval echo configure:9003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_decl_needed_inet_ntoa=no else @@ -9021,12 +9036,12 @@ else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking whether snprintf must be declared""... $ac_c" 1>&6 -echo "configure:9025: checking whether snprintf must be declared" >&5 +echo "configure:9039: checking whether snprintf must be declared" >&5 if eval "test \"`echo '$''{'inn_cv_decl_needed_snprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -9060,7 +9075,7 @@ int main() { char *(*pfn) = (char *(*)) snprintf ; return 0; } EOF -if { (eval echo configure:9064: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_decl_needed_snprintf=no else @@ -9082,12 +9097,12 @@ else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking whether vsnprintf must be declared""... $ac_c" 1>&6 -echo "configure:9086: checking whether vsnprintf must be declared" >&5 +echo "configure:9100: checking whether vsnprintf must be declared" >&5 if eval "test \"`echo '$''{'inn_cv_decl_needed_vsnprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -9121,7 +9136,7 @@ int main() { char *(*pfn) = (char *(*)) vsnprintf ; return 0; } EOF -if { (eval echo configure:9125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9139: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_decl_needed_vsnprintf=no else @@ -9144,14 +9159,14 @@ else fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:9148: checking whether byte ordering is bigendian" >&5 +echo "configure:9162: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -9162,11 +9177,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:9166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -9177,7 +9192,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:9181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -9197,7 +9212,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:9228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -9234,12 +9249,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:9238: checking for working const" >&5 +echo "configure:9252: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -9309,12 +9324,12 @@ EOF fi echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:9313: checking for st_blksize in struct stat" >&5 +echo "configure:9327: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -9322,7 +9337,7 @@ int main() { struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:9326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -9343,12 +9358,12 @@ EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:9347: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:9361: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -9356,7 +9371,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:9360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -9377,12 +9392,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:9381: checking for size_t" >&5 +echo "configure:9395: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -9410,12 +9425,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:9414: checking for uid_t in sys/types.h" >&5 +echo "configure:9428: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -9444,12 +9459,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:9448: checking for off_t" >&5 +echo "configure:9462: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -9477,12 +9492,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:9481: checking for pid_t" >&5 +echo "configure:9495: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -9510,12 +9525,12 @@ EOF fi echo $ac_n "checking for ptrdiff_t""... $ac_c" 1>&6 -echo "configure:9514: checking for ptrdiff_t" >&5 +echo "configure:9528: checking for ptrdiff_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ptrdiff_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -9543,12 +9558,12 @@ EOF fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:9547: checking for ssize_t" >&5 +echo "configure:9561: checking for ssize_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -9578,12 +9593,12 @@ fi echo $ac_n "checking for C99 variadic macros""... $ac_c" 1>&6 -echo "configure:9582: checking for C99 variadic macros" >&5 +echo "configure:9596: checking for C99 variadic macros" >&5 if eval "test \"`echo '$''{'inn_cv_c_c99_vamacros'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #define error(...) fprintf(stderr, __VA_ARGS__) @@ -9591,7 +9606,7 @@ int main() { error("foo"); error("foo %d", 0); return 0; ; return 0; } EOF -if { (eval echo configure:9595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_c_c99_vamacros=yes else @@ -9613,12 +9628,12 @@ fi echo $ac_n "checking for GNU-style variadic macros""... $ac_c" 1>&6 -echo "configure:9617: checking for GNU-style variadic macros" >&5 +echo "configure:9631: checking for GNU-style variadic macros" >&5 if eval "test \"`echo '$''{'inn_cv_c_gnu_vamacros'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #define error(args...) fprintf(stderr, args) @@ -9626,7 +9641,7 @@ int main() { error("foo"); error("foo %d", 0); return 0; ; return 0; } EOF -if { (eval echo configure:9630: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_c_gnu_vamacros=yes else @@ -9648,19 +9663,19 @@ fi echo $ac_n "checking for long long int""... $ac_c" 1>&6 -echo "configure:9652: checking for long long int" >&5 +echo "configure:9666: checking for long long int" >&5 if eval "test \"`echo '$''{'inn_cv_c_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_c_long_long=yes else @@ -9684,12 +9699,12 @@ fi echo $ac_n "checking for sig_atomic_t""... $ac_c" 1>&6 -echo "configure:9688: checking for sig_atomic_t" >&5 +echo "configure:9702: checking for sig_atomic_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_sig_atomic_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef STDC_HEADERS @@ -9720,12 +9735,12 @@ EOF fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:9724: checking for socklen_t" >&5 +echo "configure:9738: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef STDC_HEADERS @@ -9759,7 +9774,7 @@ fi echo $ac_n "checking value of IOV_MAX""... $ac_c" 1>&6 -echo "configure:9763: checking value of IOV_MAX" >&5 +echo "configure:9777: checking value of IOV_MAX" >&5 if eval "test \"`echo '$''{'inn_cv_macro_iov_max'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9767,7 +9782,7 @@ else 16 else cat > conftest.$ac_ext < #include @@ -9815,7 +9830,7 @@ main () return 0; } EOF -if { (eval echo configure:9819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:9833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_macro_iov_max=`cat conftestval` else @@ -9843,12 +9858,12 @@ fi echo $ac_n "checking for SUN_LEN""... $ac_c" 1>&6 -echo "configure:9847: checking for SUN_LEN" >&5 +echo "configure:9861: checking for SUN_LEN" >&5 if eval "test \"`echo '$''{'inn_cv_macro_sun_len'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -9859,7 +9874,7 @@ int i; i = SUN_LEN(&sun); ; return 0; } EOF -if { (eval echo configure:9863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* inn_cv_macro_sun_len=yes else @@ -9881,19 +9896,19 @@ fi echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:9885: checking for tm_gmtoff in struct tm" >&5 +echo "configure:9899: checking for tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'inn_cv_struct_tm_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm t; t.tm_gmtoff = 3600 ; return 0; } EOF -if { (eval echo configure:9897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* inn_cv_struct_tm_gmtoff=yes else @@ -9915,19 +9930,19 @@ fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:9919: checking for tm_zone in struct tm" >&5 +echo "configure:9933: checking for tm_zone in struct tm" >&5 if eval "test \"`echo '$''{'inn_cv_struct_tm_zone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { struct tm t; t.tm_zone = "UTC" ; return 0; } EOF -if { (eval echo configure:9931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* inn_cv_struct_tm_zone=yes else @@ -9949,19 +9964,19 @@ fi echo $ac_n "checking for timezone variable""... $ac_c" 1>&6 -echo "configure:9953: checking for timezone variable" >&5 +echo "configure:9967: checking for timezone variable" >&5 if eval "test \"`echo '$''{'inn_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { timezone = 3600; altzone = 7200 ; return 0; } EOF -if { (eval echo configure:9965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* inn_cv_var_timezone=yes else @@ -9983,19 +9998,19 @@ fi echo $ac_n "checking for tzname variable""... $ac_c" 1>&6 -echo "configure:9987: checking for tzname variable" >&5 +echo "configure:10001: checking for tzname variable" >&5 if eval "test \"`echo '$''{'inn_cv_var_tzname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { *tzname = "UTC" ; return 0; } EOF -if { (eval echo configure:9999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* inn_cv_var_tzname=yes else @@ -10018,7 +10033,7 @@ fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:10022: checking size of int" >&5 +echo "configure:10036: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10026,7 +10041,7 @@ else ac_cv_sizeof_int=4 else cat > conftest.$ac_ext < main() @@ -10037,7 +10052,7 @@ main() exit(0); } EOF -if { (eval echo configure:10041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else @@ -10056,7 +10071,7 @@ if test x"$ac_cv_sizeof_int" = x"4" ; th INN_INT32=int else echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:10060: checking size of long" >&5 +echo "configure:10074: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10064,7 +10079,7 @@ else ac_cv_sizeof_long=4 else cat > conftest.$ac_ext < main() @@ -10075,7 +10090,7 @@ main() exit(0); } EOF -if { (eval echo configure:10079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else @@ -10094,7 +10109,7 @@ if test x"$ac_cv_sizeof_long" = x"4" ; t INN_INT32=long else echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:10098: checking size of short" >&5 +echo "configure:10112: checking size of short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10102,7 +10117,7 @@ else ac_cv_sizeof_short=2 else cat > conftest.$ac_ext < main() @@ -10113,7 +10128,7 @@ main() exit(0); } EOF -if { (eval echo configure:10117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_short=`cat conftestval` else @@ -10140,12 +10155,12 @@ fi echo $ac_n "checking for int32_t""... $ac_c" 1>&6 -echo "configure:10144: checking for int32_t" >&5 +echo "configure:10158: checking for int32_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_int32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef STDC_HEADERS @@ -10183,12 +10198,12 @@ fi echo $ac_n "checking for uint32_t""... $ac_c" 1>&6 -echo "configure:10187: checking for uint32_t" >&5 +echo "configure:10201: checking for uint32_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_uint32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef STDC_HEADERS @@ -10225,7 +10240,7 @@ EOF fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:10229: checking for 8-bit clean memcmp" >&5 +echo "configure:10243: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10233,7 +10248,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -10261,12 +10276,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:10265: checking return type of signal handlers" >&5 +echo "configure:10279: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -10283,7 +10298,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:10287: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -10306,7 +10321,7 @@ EOF echo $ac_n "checking for working inet_ntoa""... $ac_c" 1>&6 -echo "configure:10310: checking for working inet_ntoa" >&5 +echo "configure:10324: checking for working inet_ntoa" >&5 if eval "test \"`echo '$''{'inn_cv_func_inet_ntoa_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10314,7 +10329,7 @@ else inn_cv_func_inet_ntoa_works=no else cat > conftest.$ac_ext < #include @@ -10332,7 +10347,7 @@ main () return (!strcmp (inet_ntoa (in), "127.0.0.0") ? 0 : 1); } EOF -if { (eval echo configure:10336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_func_inet_ntoa_works=yes else @@ -10358,12 +10373,12 @@ fi echo $ac_n "checking whether struct sockaddr has sa_len""... $ac_c" 1>&6 -echo "configure:10362: checking whether struct sockaddr has sa_len" >&5 +echo "configure:10376: checking whether struct sockaddr has sa_len" >&5 if eval "test \"`echo '$''{'inn_cv_struct_sockaddr_sa_len'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -10372,7 +10387,7 @@ int main() { struct sockaddr sa; int x = sa.sa_len; ; return 0; } EOF -if { (eval echo configure:10376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_struct_sockaddr_sa_len=yes else @@ -10394,12 +10409,12 @@ fi echo $ac_n "checking for SA_LEN(s) macro""... $ac_c" 1>&6 -echo "configure:10398: checking for SA_LEN(s) macro" >&5 +echo "configure:10412: checking for SA_LEN(s) macro" >&5 if eval "test \"`echo '$''{'inn_cv_sa_len_macro'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -10408,7 +10423,7 @@ int main() { struct sockaddr sa; int x = SA_LEN(&sa); ; return 0; } EOF -if { (eval echo configure:10412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* inn_cv_sa_len_macro=yes else @@ -10432,12 +10447,12 @@ fi echo $ac_n "checking for struct sockaddr_storage""... $ac_c" 1>&6 -echo "configure:10436: checking for struct sockaddr_storage" >&5 +echo "configure:10450: checking for struct sockaddr_storage" >&5 if eval "test \"`echo '$''{'inn_cv_struct_sockaddr_storage'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -10446,7 +10461,7 @@ int main() { struct sockaddr_storage ss; ; return 0; } EOF -if { (eval echo configure:10450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_struct_sockaddr_storage=yes else @@ -10465,12 +10480,12 @@ if test "$inn_cv_struct_sockaddr_storage EOF echo $ac_n "checking for RFC 2553 style sockaddr_storage member names""... $ac_c" 1>&6 -echo "configure:10469: checking for RFC 2553 style sockaddr_storage member names" >&5 +echo "configure:10483: checking for RFC 2553 style sockaddr_storage member names" >&5 if eval "test \"`echo '$''{'inn_cv_2553_ss_family'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -10479,7 +10494,7 @@ int main() { struct sockaddr_storage ss; int x=ss.ss_family; ; return 0; } EOF -if { (eval echo configure:10483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_2553_ss_family=no else @@ -10505,7 +10520,7 @@ fi if test "$inn_enable_ipv6_tests" = yes ; then echo $ac_n "checking whether IN6_ARE_ADDR_EQUAL macro is broken""... $ac_c" 1>&6 -echo "configure:10509: checking whether IN6_ARE_ADDR_EQUAL macro is broken" >&5 +echo "configure:10523: checking whether IN6_ARE_ADDR_EQUAL macro is broken" >&5 if eval "test \"`echo '$''{'inn_cv_in6_are_addr_equal_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10513,7 +10528,7 @@ else inn_cv_in6_are_addr_equal_broken=no else cat > conftest.$ac_ext < #include @@ -10531,7 +10546,7 @@ main () return IN6_ARE_ADDR_EQUAL(&a,&b) ? 0 : 1; } EOF -if { (eval echo configure:10535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_in6_are_addr_equal_broken=no else @@ -10558,7 +10573,7 @@ fi echo $ac_n "checking for working snprintf""... $ac_c" 1>&6 -echo "configure:10562: checking for working snprintf" >&5 +echo "configure:10576: checking for working snprintf" >&5 if eval "test \"`echo '$''{'inn_cv_func_snprintf_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10566,7 +10581,7 @@ else inn_cv_func_snprintf_works=no else cat > conftest.$ac_ext < #include @@ -10592,7 +10607,7 @@ main () && snprintf(NULL, 0, "%s", "abcd") == 4) ? 0 : 1); } EOF -if { (eval echo configure:10596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_func_snprintf_works=yes else @@ -10621,12 +10636,12 @@ for ac_func in atexit getloadavg getrlim strncasecmp strtoul symlink sysconf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10625: checking for $ac_func" >&5 +echo "configure:10639: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10678,12 +10693,12 @@ if test x"$ac_cv_func_getrlimit" = xno ; for ac_func in getdtablesize ulimit do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10682: checking for $ac_func" >&5 +echo "configure:10696: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10736,12 +10751,12 @@ if test x"$ac_cv_func_statvfs" = xno ; t for ac_func in statfs do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10740: checking for $ac_func" >&5 +echo "configure:10754: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10792,17 +10807,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10796: checking for $ac_hdr" >&5 +echo "configure:10810: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10835,12 +10850,12 @@ for ac_func in fseeko ftello getpagesize strspn setenv do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10839: checking for $ac_func" >&5 +echo "configure:10853: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10896,7 +10911,7 @@ done if test "$ac_cv_func_fseeko" = no || test "$ac_cv_func_ftello" = no ; then echo $ac_n "checking for off_t-compatible fpos_t""... $ac_c" 1>&6 -echo "configure:10900: checking for off_t-compatible fpos_t" >&5 +echo "configure:10914: checking for off_t-compatible fpos_t" >&5 if eval "test \"`echo '$''{'inn_cv_type_fpos_t_large'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10904,7 +10919,7 @@ else inn_cv_type_fpos_t_large=no else cat > conftest.$ac_ext < #include @@ -10918,7 +10933,7 @@ main () exit(off == (off_t) 9223372036854775807ULL ? 0 : 1); } EOF -if { (eval echo configure:10922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_type_fpos_t_large=yes else @@ -10957,7 +10972,7 @@ fi echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:10961: checking for working mmap" >&5 +echo "configure:10975: checking for working mmap" >&5 if eval "test \"`echo '$''{'inn_cv_func_mmap'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10965,7 +10980,7 @@ else inn_cv_func_mmap=no else cat > conftest.$ac_ext < #include @@ -11029,7 +11044,7 @@ main() return 0; } EOF -if { (eval echo configure:11033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_func_mmap=yes else @@ -11054,12 +11069,12 @@ if test x"$inn_cv_func_mmap" = xyes ; th for ac_func in madvise do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11058: checking for $ac_func" >&5 +echo "configure:11072: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -11107,7 +11122,7 @@ fi done echo $ac_n "checking whether mmap sees writes""... $ac_c" 1>&6 -echo "configure:11111: checking whether mmap sees writes" >&5 +echo "configure:11125: checking whether mmap sees writes" >&5 if eval "test \"`echo '$''{'inn_cv_func_mmap_sees_writes'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -11115,7 +11130,7 @@ else inn_cv_func_mmap_sees_writes=no else cat > conftest.$ac_ext < #include @@ -11151,7 +11166,7 @@ main () return 0; } EOF -if { (eval echo configure:11155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_func_mmap_sees_writes=yes else @@ -11173,7 +11188,7 @@ EOF fi echo $ac_n "checking whether msync is needed""... $ac_c" 1>&6 -echo "configure:11177: checking whether msync is needed" >&5 +echo "configure:11191: checking whether msync is needed" >&5 if eval "test \"`echo '$''{'inn_cv_func_mmap_need_msync'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -11181,7 +11196,7 @@ else inn_cv_func_mmap_need_msync=yes else cat > conftest.$ac_ext < #include @@ -11252,7 +11267,7 @@ main() return 0; } EOF -if { (eval echo configure:11256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then inn_cv_func_mmap_need_msync=no else @@ -11274,12 +11289,12 @@ EOF fi echo $ac_n "checking how many arguments msync takes""... $ac_c" 1>&6 -echo "configure:11278: checking how many arguments msync takes" >&5 +echo "configure:11292: checking how many arguments msync takes" >&5 if eval "test \"`echo '$''{'inn_cv_func_msync_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -11287,7 +11302,7 @@ int main() { char *p; int psize; msync (p, psize, MS_ASYNC); ; return 0; } EOF -if { (eval echo configure:11291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* inn_cv_func_msync_args=3 else @@ -11310,12 +11325,12 @@ fi echo $ac_n "checking for Unix domain sockets""... $ac_c" 1>&6 -echo "configure:11314: checking for Unix domain sockets" >&5 +echo "configure:11328: checking for Unix domain sockets" >&5 if eval "test \"`echo '$''{'inn_cv_sys_unix_sockets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef AF_UNIX @@ -11344,12 +11359,12 @@ fi echo $ac_n "checking log facility for news""... $ac_c" 1>&6 -echo "configure:11348: checking log facility for news" >&5 +echo "configure:11362: checking log facility for news" >&5 if eval "test \"`echo '$''{'inn_cv_log_facility'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef LOG_NEWS @@ -11602,12 +11617,13 @@ s%@HAVE_UUSTAT@%$HAVE_UUSTAT%g s%@_PATH_PYTHON@%$_PATH_PYTHON%g s%@CRYPT_LIB@%$CRYPT_LIB%g s%@SHADOW_LIB@%$SHADOW_LIB%g -s%@DBM_LIB@%$DBM_LIB%g s%@PAM_LIB@%$PAM_LIB%g s%@REGEX_LIB@%$REGEX_LIB%g s%@BERKELEY_DB_LDFLAGS@%$BERKELEY_DB_LDFLAGS%g s%@BERKELEY_DB_CFLAGS@%$BERKELEY_DB_CFLAGS%g s%@BERKELEY_DB_LIB@%$BERKELEY_DB_LIB%g +s%@DBM_LIB@%$DBM_LIB%g +s%@DBM_INC@%$DBM_INC%g s%@SSL_BIN@%$SSL_BIN%g s%@SSL_INC@%$SSL_INC%g s%@SSL_LIB@%$SSL_LIB%g diff -rup inn-2.4.3/configure.in inn-2.4.4/configure.in --- inn-2.4.3/configure.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/configure.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in 7466 2005-12-12 03:04:08Z eagle $ +dnl $Id: configure.in 7811 2008-04-30 07:06:58Z iulius $ dnl dnl Please try to follow GNU conventions and autoconf manual conventions as dnl much as possible in this file so that any macros we develop can be easily @@ -34,7 +34,7 @@ dnl bother checking for it. Compile-tim dnl useful information for someone debugging a problem than configure-time dnl errors. -AC_REVISION($Revision: 7466 $)dnl +AC_REVISION($Revision: 7811 $)dnl AC_PREREQ(2.13) AC_INIT(Makefile.global.in) AC_CONFIG_AUX_DIR(support) @@ -598,8 +598,6 @@ AC_SEARCH_LIBS(inet_aton, resolv) dnl Search for various additional libraries used by portions of INN. INN_SEARCH_AUX_LIBS(crypt, crypt, CRYPT_LIB) INN_SEARCH_AUX_LIBS(getspnam, shadow, SHADOW_LIB) -INN_SEARCH_AUX_LIBS(dbm_open, ndbm dbm, DBM_LIB, - [AC_DEFINE(HAVE_DBM, 1, [Define if you have a dbm library.])]) dnl IRIX has a PAM library with the right symbols but no header files suitable dnl for use with it, so we have to check the header files first and then only @@ -637,7 +635,8 @@ else AC_MSG_CHECKING(for BerkeleyDB location) if test x"$BERKELEY_DB_DIR" = xyes ; then for v in BerkeleyDB BerkeleyDB.3.0 BerkeleyDB.3.1 BerkeleyDB.3.2 \ - BerkeleyDB.3.3 BerkeleyDB.4.0 BerkeleyDB.4.1 BerkeleyDB.4.2 BerkeleyDB.4.3 ; do + BerkeleyDB.3.3 BerkeleyDB.4.0 BerkeleyDB.4.1 BerkeleyDB.4.2 \ + BerkeleyDB.4.3 BerkeleyDB.4.4 BerkeleyDB.4.5 BerkeleyDB.4.6; do for d in $prefix /usr/local /opt /usr ; do if test -d "$d/$v" ; then BERKELEY_DB_DIR="$d/$v" @@ -647,7 +646,7 @@ else done fi if test x"$BERKELEY_DB_DIR" = xyes ; then - for v in db43 db42 db41 db4 db3 db2 ; do + for v in db46 db45 db44 db43 db42 db41 db4 db3 db2 ; do if test -d "/usr/local/include/$v" ; then BERKELEY_DB_LDFLAGS="-L/usr/local/lib" BERKELEY_DB_CFLAGS="-I/usr/local/include/$v" @@ -657,7 +656,7 @@ else fi done if test x"$BERKELEY_DB_LIB" = x ; then - for v in db43 db42 db41 db4 db3 db2 ; do + for v in db44 db43 db42 db41 db4 db3 db2 ; do if test -d "/usr/include/$v" ; then BERKELEY_DB_CFLAGS="-I/usr/include/$v" BERKELEY_DB_LIB="-l$v" @@ -683,6 +682,21 @@ AC_SUBST(BERKELEY_DB_CFLAGS) AC_SUBST(BERKELEY_DB_LIB)]) INN_LIB_BERKELEYDB +dnl The dbm libraries are a special case. If we're building with BerkeleyDB, +dnl just use the ndbm support provided by it. +if test x"$BERKELEY_DB_LIB" != x ; then + DBM_INC="$BERKELEY_DB_CFLAGS" + DBM_LIB="$BERKELEY_DB_LDFLAGS $BERKELEY_DB_LIB" + AC_SUBST([DBM_LIB]) + AC_DEFINE([HAVE_BDB_DBM], 1, + [Define if the BerkeleyDB dbm compatibility layer is available.]) +else + INN_SEARCH_AUX_LIBS([dbm_open], [ndbm dbm], [DBM_LIB], + [AC_DEFINE([HAVE_DBM], 1, [Define if you have a dbm library.])]) + DBM_INC= +fi +AC_SUBST([DBM_INC]) + dnl Check for whether the user wants to compile with OpenSSL, and if so what dnl the path to the various components of it is. AC_DEFUN([INN_LIB_OPENSSL], @@ -804,19 +818,23 @@ INN_LIB_SASL dnl Check for Kerberos libraries for auth_krb5, and if found define KRB5_AUTH dnl to the relevant object file, which will enable compilation of it. -INN_SEARCH_AUX_LIBS(krb5_parse_name, krb5, KRB5_LIB, - [KRB5_AUTH="auth_krb5" - KRB5_LIB="$KRB5_LDFLAGS $KRB5_LIB -lk5crypto -lcom_err" - AC_SUBST(KRB5_AUTH) - AC_SUBST(KRB5_INC) - AC_CHECK_HEADERS([et/com_err.h])], , [$LIBS -lk5crypto -lcom_err]) +if test x"$KRB5_INC" != x ; then + INN_SEARCH_AUX_LIBS(krb5_parse_name, krb5, KRB5_LIB, + [KRB5_AUTH="auth_krb5" + KRB5_LIB="$KRB5_LDFLAGS $KRB5_LIB -lk5crypto -lcom_err" + AC_SUBST(KRB5_AUTH) + AC_SUBST(KRB5_INC) + AC_CHECK_HEADERS([et/com_err.h])], , [$LIBS -lk5crypto -lcom_err]) +fi dnl Check for necessity of krb5_init_ets dnl OSX does not require this function -inn_save_LIBS=$LIBS -LIBS=$KRB5_LIB -AC_CHECK_FUNCS(krb5_init_ets) -LIBS=$inn_save_LIBS +if test x"$KRB5_INC" != x ; then + inn_save_LIBS=$LIBS + LIBS=$KRB5_LIB + AC_CHECK_FUNCS(krb5_init_ets) + LIBS=$inn_save_LIBS +fi dnl Libraries and flags for embedded Perl. Some distributions of Linux have dnl Perl linked with gdbm but don't normally have gdbm installed, so on that diff -rup inn-2.4.3/contrib/README inn-2.4.4/contrib/README --- inn-2.4.3/contrib/README 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/contrib/README 2008-05-05 03:18:36.000000000 -0700 @@ -29,20 +29,24 @@ archivegz plain text files. May not work with the storage API without some changes to use sm. -backupfeed - - Another version of suck or pullnews that downloads posts from a remote - news server and offers them to the local news server. - backlogstat Prints informations about the current state of innfeed's backlog, if any. +backupfeed + + Another version of suck or pullnews that downloads posts from a remote + news server and offers them to the local news server. + cleannewsgroups Performs various cleanups on the newsgroups file. +count_overview.pl + + Counts the groups in a bunch of Xref records. + delayer Sits in a data stream and delays it by some constant period of time. @@ -59,9 +63,13 @@ expirectl findreadgroups - Scan the news log files and generate a file giving readership counts + Scans the news log files and generates a file giving readership counts by newsgroup. Used by makeexpctl and makestorconf. +fixhist + + Performs various cleanups and sanity checks on the history database. + innconfcheck Merges your inn.conf settings with the inn.conf man page to make it @@ -71,19 +79,24 @@ innconfcheck makeexpctl - Generate an expire.ctl based on what newsgroups are actually read. + Generates an expire.ctl based on what newsgroups are actually read. Uses data generated by findreadgroups. This script will require editing before being usable for your server. makestorconf - Generate a storage.conf file putting frequently read newsgroups into + Generates a storage.conf file putting frequently read newsgroups into timecaf rather than CNFS. Uses data gefnerated by findreadgroups. This script will require editing before being usable for your server. +mkbuf + + Creates a CNFS cycbuff; see the comments at the beginning of + this script. + mlockfile - Lock files given on the command line into memory using mlock (only + Locks files given on the command line into memory using mlock (only tested on Solaris). Useful primarily for locking the history files (history.hash and history.index) into memory on a system with sufficient memory to speed history lookups in innd. This seems to @@ -95,21 +108,16 @@ newsresp times. Can check the round-trip time and the history lookup time. See the comments at the beginning of the source for more details. -ninpaths - - Collects and submits Path survey data, used to determine the top - transit news servers and collect other interesting information about - Usenet connectivity. The more data is collected, the more accurate - and interesting the results, so if you have a few moments to set it - up give it a try. See ninpaths/README for more information; just - typing make in that directory should be sufficient to build the - software. - pullart Attempts to pull news articles out of CNFS cycbuffs. Useful for emergency recoveries. +reset-cnfs + + Clears a CNFS cycbuff; see the comments at the beginning of + this script. + respool Takes a list of tokens on stdin and respools them, by retrieving the diff -rup inn-2.4.3/control/controlchan.in inn-2.4.4/control/controlchan.in --- inn-2.4.3/control/controlchan.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/controlchan.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w require "/usr/local/news/lib/innshellvars.pl"; -## $Id: controlchan.in 6771 2004-05-17 05:26:36Z rra $ +## $Id: controlchan.in 7591 2006-11-22 07:20:46Z eagle $ ## ## Channel feed program to route control messages to an appropriate handler. ## @@ -178,7 +178,7 @@ sub parse_article { newsgroups path reply-to subject sender); while (<$artfh>) { - chop; + s/\r?\n$//; last if /^$/; push @$headers, $_; if (/^(\S+):\s+(.+)/) { @@ -311,7 +311,7 @@ sub logger { if ($logfile eq 'mail') { my $mail = sendmail($message); print $mail map { s/^~/~~/; "$_\n" } @$headers; - print $mail "$_\n" . join ('', map { s/^~/~~/; "$_\n" } @$body) + print $mail "\n" . join ('', map { s/^~/~~/; "$_\n" } @$body) if $body; close $mail or logdie("Cannot send mail: $!"); return; diff -rup inn-2.4.3/control/docheckgroups.in inn-2.4.4/control/docheckgroups.in --- inn-2.4.3/control/docheckgroups.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/docheckgroups.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,7 +1,7 @@ #! /bin/sh # fixscript will replace this line with code to load innshellvars -## $Revision: 4716 $ +## $Revision: 7743 $ ## Script to execute checkgroups text; results to stdout. T=${TMPDIR} @@ -29,7 +29,7 @@ comm -13 ${T}/$$active ${T}/$$newsgrps > comm -23 ${T}/$$active ${T}/$$newsgrps >${T}/$$remove ${EGREP} "${PATS}" ${ACTIVE} | ${EGREP} "${1:-.}" | ${SED} -n '/ m$/s/ .*//p' | sort >${T}/$$amod.all -${EGREP} "${PATS}" ${T}/$$msg | ${EGREP} "${1:-.}" | +${EGREP} "${PATS}" ${T}/$$msg | ${EGREP} "${1:-.}" | ${SED} 's/\r\?$//' | ${SED} -n '/(Moderated)$/s/[ ].*//p' | sort >${T}/$$ng.mod comm -12 ${T}/$$missing ${T}/$$ng.mod >${T}/$$add.mod @@ -41,6 +41,15 @@ comm -13 ${T}/$$ng.mod ${T}/$$amod >${T} comm -23 ${T}/$$ng.mod ${T}/$$amod >${T}/$$nm.all comm -23 ${T}/$$nm.all ${T}/$$add >${T}/$$notmod +${EGREP} "${PATS}" ${NEWSGROUPS} | ${EGREP} "${1:-.}" | ${SED} 's/[ ]\+/ /' | sort >${T}/$$localdesc +${EGREP} "${PATS}" ${T}/$$msg | ${EGREP} "${1:-.}" | ${SED} 's/\r\?$//' | +${SED} 's/[ ]\+/ /' | sort >${T}/$$newdesc + +if ! (head -1 ${T}/$$newdesc | egrep " [[:digit:]]+ [[:digit:]]+ " > /dev/null) ; then + comm -13 ${T}/$$localdesc ${T}/$$newdesc >${T}/$$missingdesc + comm -23 ${T}/$$localdesc ${T}/$$newdesc >${T}/$$removedesc +fi + if [ -s ${T}/$$remove ] ; then ( echo "# The following newsgroups are non-standard." @@ -97,6 +106,25 @@ if [ -s ${T}/$$notmod ] ; then ) >>${T}/$$out fi +if [ -s ${T}/$$removedesc ] ; then + ( + echo "# The following newsgroups descriptions are obsolete." + ${SED} "s/^/# /" ${T}/$$removedesc + echo "# You can remove them by editing ${NEWSGROUPS}." + echo '' + ) >>${T}/$$out +fi + +if [ -s ${T}/$$missingdesc ] ; then + ( + echo "# The following newsgroups descriptions were missing and should be added." + ${SED} "s/^/# /" ${T}/$$missingdesc + echo "# You can add them by editing ${NEWSGROUPS}." + echo '' + ) >>${T}/$$out +fi + + test -s ${T}/$$out && { cat ${T}/$$out echo 'exit # so you can feed this message into the shell' @@ -108,12 +136,12 @@ test -s ${T}/$$out && { } test -s ${T}/$$ngadd && { echo "# Add these lines:" - ${SED} "s/^/# /" ${T}/$$ngadd + ${SED} "s/^/# /" ${T}/$$ngadd echo '' } test -s ${T}/$$ngchng && { echo "# Change these lines:" - ${SED} "s/^/# /" ${T}/$$ngchng + ${SED} "s/^/# /" ${T}/$$ngchng echo '' } } diff -rup inn-2.4.3/control/modules/checkgroups.pl inn-2.4.4/control/modules/checkgroups.pl --- inn-2.4.3/control/modules/checkgroups.pl 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/modules/checkgroups.pl 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: checkgroups.pl 6099 2002-12-29 20:49:08Z rra $ +## $Id: checkgroups.pl 7743 2008-04-06 10:04:43Z iulius $ ## ## checkgroups control message handler. ## @@ -68,6 +68,7 @@ sub docheckgroups { my $st = system("$inn::pathbin/docheckgroups", $newsgrouppats); logdie('Cannot run docheckgroups: ' . $!) if $st == -1; logdie('docheckgroups returned status ' . ($st & 255)) if $st > 0; + close(STDIN); close(STDOUT); open(STDIN, '<&OLDIN') or die $!; open(STDOUT, '>&OLDOUT') or die $!; @@ -75,7 +76,12 @@ sub docheckgroups { open(TEMPFILE, $tempfile) or logdie("Cannot open $tempfile: $!"); my @output = ; chop @output; - logger($log || 'mail', "checkgroups by $sender", \@output); + # There is no need to send an empty mail. + if ($#output > 0) { + logger($log || 'mail', "checkgroups by $sender", \@output); + } else { + logmsg("checkgroups by $sender processed (no change)"); + } close TEMPFILE; unlink($tempfile, "$tempfile.art"); } diff -rup inn-2.4.3/control/modules/newgroup.pl inn-2.4.4/control/modules/newgroup.pl --- inn-2.4.3/control/modules/newgroup.pl 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/modules/newgroup.pl 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: newgroup.pl 4932 2001-07-19 00:32:56Z rra $ +## $Id: newgroup.pl 7743 2008-04-06 10:04:43Z iulius $ ## ## newgroup control message handler. ## @@ -29,9 +29,7 @@ sub control_newgroup { $errmsg= local_checkgroupname($groupname) if defined &local_checkgroupname; if ($errmsg) { $errmsg = checkgroupname($groupname) if $errmsg eq 'DONE'; - } - if ($errmsg) { if ($log) { logger($log, "skipping newgroup ($errmsg)", $headers, $body); } else { @@ -49,30 +47,73 @@ sub control_newgroup { last; } close ACTIVE; + my $status; + my $ngdesc = 'No description.'; + my $olddesc = ''; + my $ngname = $groupname; + + # If there is a tag line, search whether the description has changed. + my $found = 0; + my $ngline = ''; + foreach (@$body) { + if ($found) { + # It is the line which contains the description. + $ngline = $_; + last; + } + $found = 1 if $_ =~ /^For your newsgroups file:\s*$/; + } + + if ($found) { + ($ngname, $ngdesc) = split(/\s+/, $ngline, 2); + if ($ngdesc) { + $ngdesc =~ s/\s+$//; + $ngdesc =~ s/\s+\(moderated\)\s*$//i; + $ngdesc .= ' (Moderated)' if $modflag eq 'moderated'; + } + # Scan newsgroups to see the previous description, if any. + open(NEWSGROUPS, $inn::newsgroups) + or logdie("Cannot open $inn::newsgroups: $!"); + while () { + if (/^\Q$groupname\E\s+(.*)/) { + $olddesc = $1; + last; + } + } + close NEWSGROUPS; + } + if (@oldgroup) { if ($oldgroup[3] eq 'm' and $modflag ne 'moderated') { - $status = 'made unmoderated'; + $status = 'be made unmoderated'; } elsif ($oldgroup[3] ne 'm' and $modflag eq 'moderated') { - $status = 'made moderated'; + $status = 'be made moderated'; } else { - $status = 'no change'; + if ($ngdesc eq $olddesc) { + $status = 'no change'; + } else { + $status = 'have a new description'; + } } } elsif (not $approved) { $status = 'unapproved'; } else { - $status = 'created'; + $status = 'be created'; } - if ($action eq 'mail' and $status !~ /no change|unapproved/) { + if ($action eq 'mail' and $status !~ /(no change|unapproved)/) { my $mail = sendmail("newgroup $groupname $modcmd $sender"); print $mail <$tempfile") or logdie("Cannot open $tempfile: $!"); - my $olddesc = ''; while () { - if (/^\Q$name\E\s+(.*)/) { - $olddesc = $1; - next; - } + next if (/^\Q$name\E\s+(.*)/); print TEMPFILE $_; } - print TEMPFILE "$name\t$desc\n"; - close TEMPFILE; - close NEWSGROUPS; - # install the modified file only if the description has changed - if ($desc ne $olddesc) { - rename($tempfile, $inn::newsgroups) - or logdie("Cannot rename $tempfile: $!"); + # We now write a pretty line for the description. + if (length $name < 8) { + print TEMPFILE "$name\t\t\t$desc\n"; + } elsif (length $name < 16) { + print TEMPFILE "$name\t\t$desc\n"; } else { - unlink($tempfile); + print TEMPFILE "$name\t$desc\n"; } + close TEMPFILE; + close NEWSGROUPS; + rename($tempfile, $inn::newsgroups) + or logdie("Cannot rename $tempfile: $!"); unlink("$inn::locks/LOCK.newsgroups", $tempfile); } @@ -154,11 +182,11 @@ sub checkgroupname { # whole-name checking return 'Empty group name' if /^$/; return 'Whitespace in group name' if /\s/; - return 'unsafe group name' if /[\`\/:;]/; + return 'Unsafe group name' if /[\`\/:;]/; return 'Bad dots in group name' if /^\./ or /\.$/ or /\.\./; # return 'Group name does not begin/end with alphanumeric' # if (/^[a-zA-Z0-9].+[a-zA-Z0-9]$/; - return 'Group name begins in control. or junk.' if /^(?:junk|control)\./; + return 'Group name begins in control., junk. or to.' if /^(?:control|junk|to)\./; # return 'Group name too long' if length $_ > 128; my @components = split(/\./); diff -rup inn-2.4.3/control/modules/rmgroup.pl inn-2.4.4/control/modules/rmgroup.pl --- inn-2.4.3/control/modules/rmgroup.pl 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/modules/rmgroup.pl 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: rmgroup.pl 4932 2001-07-19 00:32:56Z rra $ +## $Id: rmgroup.pl 7743 2008-04-06 10:04:43Z iulius $ ## ## rmgroup control message handler. ## @@ -49,6 +49,9 @@ to be $status. If this is acceptable, type: $inn::newsbin/ctlinnd rmgroup $groupname +And do not forget to remove the corresponding description, if any, +from your newsgroups file. + The control message follows: END diff -rup inn-2.4.3/control/perl-nocem.in inn-2.4.4/control/perl-nocem.in --- inn-2.4.3/control/perl-nocem.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/perl-nocem.in 2008-05-05 03:18:36.000000000 -0700 @@ -6,6 +6,14 @@ # Copyright 2000 by Miquel van Smoorenburg # Copyright 2001 by Marco d'Itri # This program is licensed under the terms of the GNU General Public License. +# +# List of changes: +# +# 2002: Patch by Steven M. Christey for untrusted printf input. +# 2007: Patch by Christoph Biedl for checking a timeout. +# Documentation improved by Jeffrey M. Vinocur (2002), Russ Allbery (2006) +# and Julien Elie (2007). +# ############################################################################## require 5.00403; @@ -31,13 +39,15 @@ my $keyring = $inn::pathetc . '/pgp/ncmr # return 1; #} -# no user servicable parts below this line ################################### +# no user serviceable parts below this line ################################### # global variables my ($working, $got_sighup, $got_sigterm, @ncmperm, $cancel); my $use_syslog = 0; my $log_open = 0; my $nntp_open = 0; +my $last_cancel = 0; +my $socket_timeout = $inn::peertimeout - 100; my $logfile = $inn::pathlog . '/perl-nocem.log'; @@ -52,7 +62,7 @@ if ($use_syslog) { } if (not $inn::gpgv) { - logmsg('cannot find the gpgv binary', 'error'); + logmsg('cannot find the gpgv binary', 'err'); sleep 5; exit 1; } @@ -92,6 +102,7 @@ exit 0; # Process one NoCeM notice. sub do_nocem { my $token = shift; + my $start = time; # open the article and verify the notice my $artfh = open_article($token); @@ -102,11 +113,10 @@ sub do_nocem { &$cancel($nocems); logmsg("Articles cancelled: " . join(' ', @$nocems), 'debug'); - my $start = time; my $diff = (time - $start) || 0.01; my $nr = scalar @$nocems; - logmsg(sprintf("processed notice %s by %s ($nr ids, %.5f s, %.1f/s)", - $nid, $issuer, $diff, $nr / $diff)); + logmsg(sprintf("processed notice %s by %s (%d ids, %.5f s, %.1f/s)", + $nid, $issuer, $nr, $diff, $nr / $diff)); } # - Check if it is a PGP signed NoCeM notice @@ -181,11 +191,11 @@ sub read_nocem { # return; # } - # we do want it, so read the entire article. Also copy it to + # We do want it, so read the entire article. Also copy it to # a temp file so that we can check the PGP signature when done. my $tmpfile = "$inn::pathtmp/nocem.$$"; if (not open(OFD, ">$tmpfile")) { - logmsg("cannot open temp file $tmpfile: $!", 'error'); + logmsg("cannot open temp file $tmpfile: $!", 'err'); return; } print OFD $body; @@ -268,7 +278,7 @@ sub pgp_check { # fork and spawn a child my $pid = open(PFD, '-|'); if (not defined $pid) { - logmsg("pgp_check: cannot fork: $!", 'error'); + logmsg("pgp_check: cannot fork: $!", 'err'); return 0; } if ($pid == 0) { @@ -289,7 +299,8 @@ sub pgp_check { return 0; } } -# logmsg("Command line was: $inn::gpg $pgpargs $art", 'debug'); +# logmsg("Command line was: $inn::gpgv --status-fd=1" +# . ($keyring ? ' --keyring=' . $keyring : '') . " $art", 'debug'); # logmsg("Full PGP output: >>>$_<<<", 'debug'); if (/^\[GNUPG:\]\s+GOODSIG\s+\S+\s+(.*)/m) { @@ -309,7 +320,7 @@ sub pgp_check { # 126 is returned by the child if exec fails. s/ at \S+ line \d+\.\n$//; s/\n/_/; logmsg("Article $msgid: $inn::gpgv exited " - . (($status == 126) ? "($_)" : "with status $status"), 'error'); + . (($status == 126) ? "($_)" : "with status $status"), 'err'); } return 0; } @@ -321,23 +332,23 @@ sub open_article { if ($token =~ /^\@.+\@$/) { my $pid = open(ART, '-|'); if ($pid < 0) { - logmsg('Cannot fork: ' . $!, 'error'); + logmsg('Cannot fork: ' . $!, 'err'); return undef; } if ($pid == 0) { exec("$inn::newsbin/sm", '-q', $token) or - logmsg("Cannot exec sm: $!", 'error'); + logmsg("Cannot exec sm: $!", 'err'); return undef; } return *ART; } else { return *ART if open(ART, $token); - logmsg("Cannot open article $token: $!", 'error'); + logmsg("Cannot open article $token: $!", 'err'); } return undef; } -# Cancel a number of message-ids. We use ctlinnd to do this, +# Cancel a number of Message-IDs. We use ctlinnd to do this, # and we run up to 15 of them at the same time (10 usually). sub cancel_ctlinnd { my @ids = @{$_[0]}; @@ -359,9 +370,9 @@ sub cancel_ctlinnd { while ((my $pid = wait) > 0) { next unless $?; if ($? >> 8) { - logmsg("Child $pid died with status " . ($? >> 8), 'error'); + logmsg("Child $pid died with status " . ($? >> 8), 'err'); } else { - logmsg("Child $pid killed by signal " . ($? & 255), 'error'); + logmsg("Child $pid killed by signal " . ($? & 255), 'err'); } } } @@ -371,26 +382,31 @@ sub cancel_nntp { my $ids = shift; my $r; + if ($nntp_open and time - $socket_timeout > $last_cancel) { + logmsg('Close socket for timeout'); + close (NNTP); + $nntp_open = 0; + } if (not $nntp_open) { use Socket; if (not socket(NNTP, PF_UNIX, SOCK_STREAM, 0)) { - logmsg("socket: $!", 'error'); + logmsg("socket: $!", 'err'); goto ERR; } if (not connect(NNTP, sockaddr_un($inn::pathrun . '/nntpin'))) { - logmsg("connect: $!", 'error'); + logmsg("connect: $!", 'err'); goto ERR; } if (($r = ) !~ /^200 /) { $r =~ s/\r\n$//; - logmsg("bad reply from server: $r", 'error'); + logmsg("bad reply from server: $r", 'err'); goto ERR; } select NNTP; $| = 1; select STDOUT; print NNTP "MODE CANCEL\r\n"; if (($r = ) !~ /^284 /) { $r =~ s/\r\n$//; - logmsg("MODE CANCEL not supported: $r", 'error'); + logmsg("MODE CANCEL not supported: $r", 'err'); goto ERR; } $nntp_open = 1; @@ -399,13 +415,17 @@ sub cancel_nntp { print NNTP "$_\r\n"; if (($r = ) !~ /^289/) { $r =~ s/\r\n$//; - logmsg("cannot cancel $_: $r", 'error'); + logmsg("cannot cancel $_: $r", 'err'); + goto ERR; } } + $last_cancel = time; return; ERR: - logmsg('Switching to ctlinnd...', 'error'); + # discard unusable socket + close (NNTP); + logmsg('Switching to ctlinnd...', 'err'); cancel_ctlinnd($ids); $cancel = \&cancel_ctlinnd; } @@ -414,7 +434,7 @@ sub read_ctlfile { my $permfile = $inn::pathetc . '/nocem.ctl'; unless (open(CTLFILE, $permfile)) { - logmsg("Cannot open $permfile: $!", 'error'); + logmsg("Cannot open $permfile: $!", 'err'); return 0; } while () { @@ -422,7 +442,7 @@ sub read_ctlfile { s/^\s+//; s/\s+$//; next if /^#/ or /^$/; my ($issuer, $type) = split(/:/, lc $_); - logmsg("Cannot parse nocem.ctl line <<$_>>", 'error') + logmsg("Cannot parse nocem.ctl line <<$_>>", 'err') if not $issuer and $type; $type =~ s/\s//g; push @ncmperm, "$issuer\001$_" foreach split(/,/, $type); @@ -463,51 +483,147 @@ sub term_handler { # lint food print $inn::pathrun.$inn::pathlog.$inn::pathetc.$inn::newsbin.$inn::pathbin - . $inn::pathtmp; + .$inn::pathtmp.$inn::peertimeout.$inn::syslog_facility; __END__ =head1 NAME -perl-nocem - A NoCeM-on-spool implementation for INN 2.x +perl-nocem - A NoCeM-on-spool implementation for S =head1 SYNOPSIS -perl-nocem < I +perl-nocem =head1 DESCRIPTION -Add to the newsfeeds file an entry like this one: +NoCeM, which is pronounced I, is a protocol enabling +authenticated third-parties to issue notices which can be used +to cancel unwanted articles (like spam and articles in moderated +newsgroups which were not approved by their moderators). It can +also be used by readers as a I. It is +intended to eventually replace the protocol for third-party cancel +messages. + +B processes third-party, PGP-signed article cancellation +notices. It is possible not to honour all NoCeM notices but only those +which are sent by people whom you trust (that is to say if you trust +the PGP key they use to sign their NoCeM notices). Indeed, it is up +to you to decide whether you wish to honour their notices, depending +on the criteria they use. + +Processing NoCeM notices is easy to set up: + +=over 4 + +=item 1. + +Import the keys of the NoCeM issuers you trust in order to check +the authenticity of their notices. You can do: + + gpg --no-default-keyring --primary-keyring /pgp/ncmring.gpg --import + +where is the value of the I parameter set in F +and the file containing the key(s) to import. The keyring +must be located in I/pgp/ncmring.gpg (create the directory +before using B). For old PGP-generated keys, you may have to use +B<--allow-non-selfsigned-uid> if they are not properly self-signed, +but anyone creating a key really should self-sign the key. Current +PGP implementations do this automatically. + +The keys of NoCeM issuers can be found in the web site of I: +L. You can even +download there a unique file which contains all the keys. + +=item 2. + +Create a F config file in I indicating the NoCeM issuers +and notices you want to follow. This permission file contains lines like: + + annihilator-1:* + clewis@ferret.ocunix:mmf + stephane@asynchrone:mmf,openproxy,spam + +This will remove all articles for which the issuer (first part of the line, +before the colon C<:>) has issued NoCeM notices corresponding to the +criteria specified after the colon. - nocem:!*,alt.nocem.misc,news.lists.filter\ - :Tc,Wf,Ap:/usr/local/news/bin/perl-nocem +You will also find information about that on the web site of +I. -Import new keys with: +=item 3. - gpg --keyring=/usr/local/news/etc/pgp/ncmring.gpg --import \ - --allow-non-selfsigned-uid +Add to the F file an entry like this one in order to feed +B the NoCeM notices posted to alt.nocem.misc and +news.lists.filters: -The nocem.ctl config file contains lines like: + nocem!\ + :!*,alt.nocem.misc,news.lists.filters\ + :Tc,Wf,Ap:/perl-nocem - annihilator-1@erlenstar.demon.co.uk:* - clewis@ferret:mmf,spam +with the correct path to B, located in . Then, reload +the F file (C). + +Note that you should at least carry news.lists.filters on your news +server (or other newsgroups where NoCeM notices are sent) if you wish +to process them. + +=item 4. + +Everything should now work. However, do not hesitate to manually test +B with a NoCeM notice, using: + + grephistory '' | perl-nocem + +Indeed, B expects tokens on its standard input, and +B can easily give it the token of a known article, +thanks to its Message-ID. + +=back + +When you have verified that everything works, you can eventually turn +off regular spam cancels, if you want, not processing any longer +cancels containing C in the Path: header (see the +I parameter in F). =head1 FILES -/usr/local/news/etc/nocem.ctl +=over 4 + +=item I/perl-nocem + +The Perl script itself used to process NoCeM notices. + +=item I/nocem.ctl + +The configuration file which specifies the NoCeM notices to be processed. + +=item I/pgp/ncmring.gpg + +The keyring which contains the public keys of trusted NoCeM issuers. + +=back =head1 BUGS -The Subject header is not checked for the @@NCM string and there is no -check for the presence of the References header. +The Subject: header is not checked for the @@NCM string and there is no +check for the presence of the References: header. -The Newsgroups pseudo header is not checked, but this can be done in +The Newsgroups: pseudo header is not checked, but this can be done in local_want_cancel_id(). -The Hierarchies header is ignored. +The Hierarchies: header is ignored. =head1 HISTORY Copyright 2000 by Miquel van Smoorenburg . Copyright 2001 by Marco d'Itri . + +$Id: perl-nocem.in 7733 2008-04-06 09:16:20Z iulius $ + +=head1 SEE ALSO + +gpgv(1), grephistory(1), inn.conf(5), newsfeeds(5), pgp(1). + +=cut diff -rup inn-2.4.3/control/pgpverify.in inn-2.4.4/control/pgpverify.in --- inn-2.4.3/control/pgpverify.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/control/pgpverify.in 2008-05-05 03:18:36.000000000 -0700 @@ -2,7 +2,7 @@ # do '@LIBDIR@/innshellvars.pl'; # If running inside INN, uncomment the above and point to innshellvars.pl. # -# Written April 1996, tale@isc.org (David C Lawrence) +# Written April 1996, (David C Lawrence) # Currently maintained by Russ Allbery # Version 1.27, 2005-07-02 # @@ -35,7 +35,7 @@ # -- Bump version number to match CVS revision number. # -- Replaced all signature verification code with code that uses detached # signatures. Signatures generated by GnuPG couldn't be verified using -# attached signatures without adding a Hash header, and this was the +# attached signatures without adding a Hash: header, and this was the # path of least resistance plus avoids munging problems in the future. # Code taken from PGP::Sign. # @@ -61,61 +61,61 @@ # -- Use INN's syslog_facility if available. # # Changes from 1.11 -> 1.12 -# -- support for GnuPG +# -- Support for GnuPG. # -- Use /usr/ucb/logger, if present, instead of /usr/bin/logger (the latter # of which, on Solaris at least, is some sort of brain damaged POSIX.2 # command which doesn't use syslog). -# -- made syslog work for dec_osf (version 4, at least) -# -- fixed up priority of '.' operator vs bitwise operators +# -- Made syslog work for dec_osf (version 4, at least). +# -- Fixed up priority of '.' operator vs bitwise operators. # # Changes from 1.10 -> 1.11 -# -- code to log error messages to syslog. +# -- Code to log error messages to syslog. # See $syslog and $syslog_method configurable variables. -# -- configurably allow date stamp on stderr error messages. -# -- added locking for multiple concurrent pgp instances. -# -- more clear error message if pgp exits abnormally. -# -- identify PGP 5 "BAD signature" string. -# -- minor diddling for INN (path to innshellvars.pl changed) +# -- Configurably allow date stamp on stderr error messages. +# -- Added locking for multiple concurrent pgp instances. +# -- More clear error message if pgp exits abnormally. +# -- Identify PGP 5 "BAD signature" string. +# -- Minor diddling for INN (path to innshellvars.pl changed). # # Changes from 1.9 -> 1.10 -# -- minor diddling for INN 2.0: use $inn'pathtmp if it exists, and -# work with the new subst method to find innshellvars.pl -# -- do not truncate the tmp file when opening, in case it is really -# linked to another file +# -- Minor diddling for INN 2.0: use $inn'pathtmp if it exists, and +# work with the new subst method to find innshellvars.pl. +# -- Do not truncate the tmp file when opening, in case it is really +# linked to another file. # # Changes from 1.8 -> 1.9 -# -- match 'Bad signature' pgp output to return exit status 3 by removing +# -- Match 'Bad signature' pgp output to return exit status 3 by removing # '^' in regexp matched on multiline string. # # Changes from 1.7 -> 1.8 -# -- ignore final dot-CRLF if article is in NNTP format +# -- Ignore final dot-CRLF if article is in NNTP format. # # Changes from 1.6 -> 1.7 -# -- parse PGP 5.0 'good signature' lines. -# -- allow -test swtich; prints pgp input and output -# -- look for pgp in INN's innshellvars.pl -# -- changed regexp delimiters for stripping $0 to be compatible with old -# perl +# -- Parse PGP 5.0 'good signature' lines. +# -- Allow -test switch; prints pgp input and output. +# -- Look for pgp in INN's innshellvars.pl. +# -- Changed regexp delimiters for stripping $0 to be compatible with old +# Perl. # # Changes from 1.5 -> 1.6 -# -- handle articles encoded in NNTP format ('.' starting line is doubled, +# -- Handle articles encoded in NNTP format ('.' starting line is doubled, # \r\n at line end) by stripping NNTP encoding. -# -- exit 255 with pointer to $HOME or $PGPPATH if pgp can't find key -# ring. (probably doesn't match the necessary error message with -# ViaCrypt PGP) -# -- failures also report message-id so the article can be looked up to +# -- Exit 255 with pointer to $HOME or $PGPPATH if pgp can't find key +# ring. (It probably doesn't match the necessary error message with +# ViaCrypt PGP.) +# -- Failures also report Message-ID so the article can be looked up to # retry. # # Changes from 1.4 -> 1.5 -# -- force English lanugage for 'Good signature from user' by passing +# -- Force English language for 'Good signature from user' by passing # +language=en on pgp command line, rather than setting the # environment variable LANGUAGE to 'en'. # # Changes from 1.3 -> 1.4 -# -- now handles wrapped headers that have been unfolded. -# (though I do believe news software oughtn't be unfolding them.) -# -- checks to ensure that the temporary file is really a file, and -# not a link or some other weirdness +# -- Now handles wrapped headers that have been unfolded. +# (Though I do believe news software oughtn't be unfolding them.) +# -- Checks to ensure that the temporary file is really a file, and +# not a link or some other weirdness. # Path to the GnuPG gpgv binary, if you have GnuPG. If you do, this will # be used in preference to PGP. For most current control messages, you @@ -152,7 +152,7 @@ $lockdir = $tmpdir; # all that's available up to version 5.004_03. If your syslog does not # accept UDP log packets, such as when syslogd runs with the -l flag, # 'inet' will not work. A value of 'unix' will try to contact syslogd -# directly over a Unix domain socket built entirely in perl code (no +# directly over a Unix domain socket built entirely in Perl code (no # subprocesses). If that is not working for you, and you have the # 'logger' program on your system, set this variable to its full path name # to have a subprocess contact syslogd. If the method is just "logger", @@ -163,10 +163,10 @@ $lockdir = $tmpdir; # /some/text/file" on a file that is not a valid news article. The # "non-header at line #" error should be syslogged. # -# $syslog_method = 'unix'; # Unix doman socket, perl5.004_03 or higher -# $syslog_method = 'inet'; # UDP to port 514 of localhost +# $syslog_method = 'unix'; # Unix doman socket, Perl 5.004_03 or higher. +# $syslog_method = 'inet'; # UDP to port 514 of localhost. # $syslog_method = ''; # Don't ever try to do syslogging. -$syslog_method = 'logger'; # search for the logger program +$syslog_method = 'logger'; # Search for the logger program. # The next two variables are the values to be used for syslog's facility # and level to use, as would be found in syslog.conf. For various @@ -181,9 +181,9 @@ $syslog_level = 'err'; # Prepend the error message with a timestamp? This is only relevant if # not syslogging, when errors go to stderr. # -# $log_date = 0; # zero means don't do it. -# $log_date = 1; # non-zero means do it. -$log_date = -t STDOUT; # do it if STDOUT is to a terminal +# $log_date = 0; # Zero means don't do it. +# $log_date = 1; # Non-zero means do it. +$log_date = -t STDOUT; # Do it if STDOUT is to a terminal. # End of configuration section. @@ -310,12 +310,12 @@ sub generate_message { # The $sep value means the separator between the radix64 signature lines # can have any amount of spaces or tabs, but must have at least one - # space or tab, if there is a newline then the space or tab has to + # space or tab; if there is a newline then the space or tab has to # follow the newline. Any number of newlines can appear as long as each # is followed by at least one space or tab. *phew* my $sep = "[ \t]*(\n?[ \t]+)+"; - # Match all of the characters in a radix64 string + # Match all of the characters in a radix64 string. my $r64 = '[a-zA-Z0-9+/]'; local $_ = $$header{'X-PGP-Sig'}; @@ -341,27 +341,27 @@ sub generate_message { if ($nntp_format) { # Check for end of article; some news servers (eg, Highwind's # "Breeze") include the dot-CRLF of the NNTP protocol in the article - # data passed to this script + # data passed to this script. last if $_ eq ".\r\n"; - # Remove NNTP encoding + # Remove NNTP encoding. s/^\.\./\./; s/\r\n$/\n/; } $message .= $_; } - # Strip off all trailing whitespace for compatibility with the way that + # Strip off all trailing whitespaces for compatibility with the way that # pgpverify used to work, using attached signatures. $message =~ s/[ \t]+\n/\n/g; return ($message, $signature, $version); } -# Check a detatched signature for given data. Takes a signature block (in +# Check a detached signature for given data. Takes a signature block (in # the form of an ASCII-armored string with embedded newlines), a version # number (which may be undef), and the message. We return an exit status -# and the key id if the signature verified. 0 means good signature, 1 +# and the key id if the signature is verified. 0 means good signature, 1 # means bad data, 2 means an unknown signer, and 3 means a bad signature. # In the event of an error, we report with errmsg. # @@ -558,7 +558,7 @@ sub errmsg { } if ($@ || $syslog_method eq '') { - warn $date, "$0: trying to use perl's syslog: $@\n" if $@; + warn $date, "$0: trying to use Perl's syslog: $@\n" if $@; warn $date, $message, "\n"; warn $date, "... while processing $messageid\n" if $messageid; @@ -580,7 +580,7 @@ sub errmsg { } } else { - # setlogsock arrived in perl 5.004_03 to enable Sys::Syslog to use a + # setlogsock arrived in Perl 5.004_03 to enable Sys::Syslog to use a # Unix domain socket to talk to syslogd, which is the only way to do # it when syslog runs with the -l switch. if ($syslog_method eq "unix") { @@ -629,7 +629,7 @@ sub shlock { $ltmp = ($file =~ m%(.*/)%)[0] . "shlock$$"; - # this should really attempt to use another temp name + # This should really attempt to use another temp name. -e $ltmp && (unlink($ltmp) || return -1); open(LTMP, ">$ltmp") || return -1; @@ -645,30 +645,30 @@ sub shlock { return 0; } - # ok, the pid in the lockfile is not a number or no longer exists. + # OK, the pid in the lockfile is not a number or no longer exists. close(LOCK); # silent failure is ok here - # unlink failed + # Unlink failed. if (unlink($file) != 1 && $! != &ENOENT) { unlink($ltmp); return 0; } - # check if open failed for reason other than file no longer present + # Check if open failed for reason other than file no longer present. } elsif ($! != &ENOENT) { unlink($ltmp); return -1; } - # either this process unlinked the lockfile because it was bogus, or + # Either this process unlinked the lockfile because it was bogus, or # between this process's link() and open() the other process holding - # the lock unlinked it. This process can now try to aquire. + # the lock unlinked it. This process can now try to acquire. if (! link($ltmp, $file)) { unlink($ltmp); - return $! == &EEXIST ? 0 : -1; # maybe another proc grabbed the lock + return $! == &EEXIST ? 0 : -1; # Maybe another proc grabbed the lock. } - } else { # first attempt to link failed + } else { # First attempt to link failed. unlink($ltmp); return 0; } @@ -728,7 +728,7 @@ analysis of the message. B may exit with the following statuses: -=over 5 +=over 4 =item 0Z<> @@ -768,21 +768,21 @@ Historically, Usenet news server adminis servers to automatically honor Usenet control messages based on the originator of the control messages and the hierarchies for which the control messages applied. For example, in the past, David Lawrence always -issued control messages for the "Big 8" hierarchies (comp, humanities, +issued control messages for the S<"Big 8"> hierarchies (comp, humanities, misc, news, rec, sci, soc, talk). Usenet news administrators would configure their news server software to automatically honor newgroup and rmgroup control messages that originated from David Lawrence and applied -to any of the Big 8 hierarchies. +to any of the S hierarchies. Unfortunately, Usenet news articles (including control messages) are notoriously easy to forge. Soon, malicious users realized they could -create or remove (at least temporarily) any Big 8 newsgroup they wanted by +create or remove (at least temporarily) any S newsgroup they wanted by simply forging an appropriate control message in David Lawrence's name. As Usenet became more widely used, forgeries became more common. The B program was designed to allow Usenet news administrators to configure their servers to cryptographically verify control messages -before automatically acting on them. Under the pgpverify system, a Usenet +before automatically acting on them. Under the B system, a Usenet hierarchy maintainer creates a PGP public/private key pair and disseminates the public key. Whenever the hierarchy maintainer issues a control message, he uses the B program to sign the control @@ -790,7 +790,7 @@ message with the PGP private key. Usene their news servers to run the B program on the appropriate control messages, and take action based on the PGP key User ID that signed the control message, not the name and address that appear in the control -message's From or Sender headers. +message's From: or Sender: headers. Thus, appropriate use of the B and B programs essentially eliminates the possibility of malicious users forging Usenet @@ -821,7 +821,7 @@ Redistribution and use in source and bin modification, are permitted provided that the following conditions are met: -=over 3 +=over 4 =item 1. @@ -862,7 +862,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI =head1 SEE ALSO -gpgv(1), pgp(1) +gpgv(1), pgp(1). L is where the most recent versions of B and B live, along with PGP public keys used for diff -rup inn-2.4.3/doc/man/active.5 inn-2.4.4/doc/man/active.5 --- inn-2.4.3/doc/man/active.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/active.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE 5" -.TH ACTIVE 5 "2004-05-16" "INN 2.4.2" "InterNetNews Documentation" +.TH ACTIVE 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" active \- List of newsgroups carried by the server .SH "DESCRIPTION" @@ -214,7 +214,7 @@ alias. Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: active.5 6773 2004-05-17 05:48:54Z rra $ +$Id: active.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive.times\fR\|(5), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -rup inn-2.4.3/doc/man/active.times.5 inn-2.4.4/doc/man/active.times.5 --- inn-2.4.3/doc/man/active.times.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/active.times.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.36, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE.TIMES 5" -.TH ACTIVE.TIMES 5 "2003-04-06" "INN 2.4.0" "InterNetNews Documentation" +.TH ACTIVE.TIMES 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" active.times \- List of local creation times of newsgroups .SH "DESCRIPTION" @@ -157,7 +157,7 @@ given to \fBctlinnd\fR. Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery .PP -$Id: active.times.5 6282 2003-04-06 21:50:07Z rra $ +$Id: active.times.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInnrpd\fR\|(8) diff -rup inn-2.4.3/doc/man/auth_krb5.8 inn-2.4.4/doc/man/auth_krb5.8 --- inn-2.4.3/doc/man/auth_krb5.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/auth_krb5.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "AUTH_KRB5 8" -.TH AUTH_KRB5 8 "2002-12-02" "INN 2.4.0" "InterNetNews Documentation" +.TH AUTH_KRB5 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" auth_krb5 \- nnrpd Kerberos v5 authenticator .SH "SYNOPSIS" @@ -166,7 +166,7 @@ of \f(CW\*(C`nntp\*(C'\fR to usernames b .PP .Vb 3 \& auth kerberos { -\& auth: "auth_krb5 -i nntp" +\& auth: "auth_krb5 \-i nntp" \& } .Ve .PP @@ -200,7 +200,7 @@ Originally written by Christopher P. Lin written by Russ Allbery based on Christopher's original \&\s-1README\s0 file. .PP -$Id: auth_krb5.8 5912 2002-12-03 05:31:11Z vinocur $ +$Id: auth_krb5.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/auth_smb.8 inn-2.4.4/doc/man/auth_smb.8 --- inn-2.4.3/doc/man/auth_smb.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/auth_smb.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "AUTH_SMB 8" -.TH AUTH_SMB 8 "2002-12-12" "INN 2.4.0" "InterNetNews Documentation" +.TH AUTH_SMB 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" auth_smb \- nnrpd Samba authenticator .SH "SYNOPSIS" @@ -153,7 +153,7 @@ authenticate against an \s-1SMB\s0 serve .Vb 4 \& auth windows { \& auth: "auth_smb pdc.example.com bdc.example.com USERS" -\& default-domain: "users.example.com" +\& default\-domain: "users.example.com" \& } .Ve .PP @@ -176,7 +176,7 @@ Originally written October 2000 by Krisc based heavily on pam_smb v1.1.6 by David Airlie . This documentation was written by Jeffrey M. Vinocur . .PP -$Id: auth_smb.8 5989 2002-12-12 23:07:49Z vinocur $ +$Id: auth_smb.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/ckpasswd.8 inn-2.4.4/doc/man/ckpasswd.8 --- inn-2.4.3/doc/man/ckpasswd.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ckpasswd.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CKPASSWD 8" -.TH CKPASSWD 8 "2005-04-11" "INN 2.4.3" "InterNetNews Documentation" +.TH CKPASSWD 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ckpasswd \- nnrpd password authenticator .SH "SYNOPSIS" @@ -301,11 +301,11 @@ it will print some sort of error message .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: ckpasswd.8 7215 2005-04-11 20:43:21Z rra $ +$Id: ckpasswd.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIreaders.conf\fR\|(5), \fInnrpd\fR\|(8) .PP Linux users who want to use \s-1PAM\s0 should read the Linux-PAM System Administrator's Guide at -. +. diff -rup inn-2.4.3/doc/man/control.ctl.5 inn-2.4.4/doc/man/control.ctl.5 --- inn-2.4.3/doc/man/control.ctl.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/control.ctl.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CONTROL.CTL 5" -.TH CONTROL.CTL 5 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH CONTROL.CTL 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" control.ctl \- Specify handling of Usenet control messages .SH "DESCRIPTION" @@ -166,11 +166,13 @@ The fourth field, , specifies wh messages that match this line. The following actions are understood: .IP "\fBdoit\fR" 4 .IX Item "doit" -The action requested by the control message should be performed. In some -cases, the control script will also send mail to the news administrator -(the argument to \-\-with\-news\-master given at configure time, \f(CW\*(C`usenet\*(C'\fR by -default), but if notification of the action should always be sent, use -\&\f(CW\*(C`doit=mail\*(C'\fR instead (see below). +The action requested by the control message should be performed. For +checkgroups messages, this means that the shell commands that should +be run will be mailed to the news administrator (the argument to +\&\fB\-\-with\-news\-master\fR given at configure time, \f(CW\*(C`usenet\*(C'\fR by default); for +other commands, this means that the change will be silently performed. If +you always want notification of actions taken, use \f(CW\*(C`doit=mail\*(C'\fR instead (see +below). .IP "\fBdoifarg\fR" 4 .IX Item "doifarg" If the control message has an argument, this is equivalent to \fBdoit\fR. If @@ -204,7 +206,7 @@ No action is taken and the message is ig If the action starts with the string \f(CW\*(C`verify\-\*(C'\fR, as in: .Sp .Vb 1 -\& verify-news.announce.newgroups +\& verify\-news.announce.newgroups .Ve .Sp then \s-1PGP\s0 verification of the control message will be done and the user \s-1ID\s0 @@ -213,9 +215,15 @@ expected identity defined by the rest of (\f(CW\*(C`news.announce.newgroups\*(C'\fR in the above example. This verification is done via \fBpgpverify\fR; see \fIpgpverify\fR\|(8) for more details. .Sp -If no logging is specified (with =\fIfile\fR as mentioned below), +If no logging is specified (with =\fIfile\fR as mentioned below), logging will +be done the same as with \fBdoit\fR as described above. +.IP "\fBverify\-*\fR=\fBmail\fR" 4 +.IX Item "verify-*=mail" +\&\s-1PGP\s0 verification is done as for the \fBverify\-*\fR action described above, and notification of successful newgroup and rmgroup control messages and the output of checkgroups messages will be mailed to the news administrator. +(In the case of checkgroups messages, this means that the shell script that +should be run will be mailed to the administrator.) .IP "\fBverify\-*\fR=\fIfile\fR" 4 .IX Item "verify-*=file" \&\s-1PGP\s0 verification is done as for the \fBverify\-*\fR action described above, @@ -233,7 +241,8 @@ A log entry is written to the specified in \fBdoit\fR=\fIfile\fR described above. .IP "\fBmail\fR" 4 .IX Item "mail" -A mail message is sent to the news administrator. +A mail message is sent to the news administrator without taking any other +action. .PP Processing of a checkgroups message will never actually change the \&\fIactive\fR file (the list of groups carried by the server). The difference @@ -269,7 +278,7 @@ With the following three lines in \fIcon .PP .Vb 3 \& newgroup:*:*:drop -\& newgroup:group-admin@isc.org:comp.*:verify-news.announce.newgroups +\& newgroup:group\-admin@isc.org:comp.*:verify\-news.announce.newgroups \& newgroup:kre@munnari.oz.au:aus.*:mail .Ve .PP @@ -301,7 +310,7 @@ probably intended to do (yet). Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: control.ctl.5 5912 2002-12-03 05:31:11Z vinocur $ +$Id: control.ctl.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIcontrolchan\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), \fIpgpverify\fR\|(8), \fIsh\fR\|(1). diff -rup inn-2.4.3/doc/man/convdate.1 inn-2.4.4/doc/man/convdate.1 --- inn-2.4.3/doc/man/convdate.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/convdate.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CONVDATE 1" -.TH CONVDATE 1 "2002-02-02" "INN 2.4.0" "InterNetNews Documentation" +.TH CONVDATE 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" convdate \- Convert time/date strings and numbers .SH "SYNOPSIS" @@ -196,31 +196,31 @@ result in two results. Note also that a at midnight. .PP .Vb 3 -\& % convdate -n 'feb 10 10am' '12pm 5/4/90' +\& % convdate \-n 'feb 10 10am' '12pm 5/4/90' \& 666198000 \& 641880000 .Ve .PP .Vb 2 -\& % convdate -c 666198000 +\& % convdate \-c 666198000 \& Sun Feb 10 10:00:00 1991 .Ve .PP \&\fIctime\fR\|(3) results are in the local time zone. Compare to: .PP .Vb 2 -\& % convdate -dc 666198000 +\& % convdate \-dc 666198000 \& Sun, 10 Feb 1991 15:00:00 +0000 (UTC) .Ve .PP .Vb 2 -\& % env TZ=PST8PDT convdate -dlc 666198000 -\& Sun, 10 Feb 1991 07:00:00 -0800 (PST) +\& % env TZ=PST8PDT convdate \-dlc 666198000 +\& Sun, 10 Feb 1991 07:00:00 \-0800 (PST) .Ve .PP .Vb 2 -\& % env TZ=EST5EDT convdate -dlc 666198000 -\& Sun, 10 Feb 1991 10:00:00 -0500 (EST) +\& % env TZ=EST5EDT convdate \-dlc 666198000 +\& Sun, 10 Feb 1991 10:00:00 \-0500 (EST) .Ve .PP The system library functions generally use the environment variable \s-1TZ\s0 to @@ -230,7 +230,7 @@ determine (or at least override) the loc Written by Rich \f(CW$alz\fR , rewritten and updated by Russ Allbery for the \fB\-d\fR and \fB\-l\fR flags. .PP -$Id: convdate.1 5132 2002-02-22 20:39:19Z vinocur $ +$Id: convdate.1 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIparsedate\fR\|(3). diff -rup inn-2.4.3/doc/man/cycbuff.conf.5 inn-2.4.4/doc/man/cycbuff.conf.5 --- inn-2.4.3/doc/man/cycbuff.conf.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/cycbuff.conf.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CYCBUFF.CONF 5" -.TH CYCBUFF.CONF 5 "2002-12-29" "INN 2.4.0" "InterNetNews Documentation" +.TH CYCBUFF.CONF 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" cycbuff.conf \- Configuration file for INN CNFS storage method .SH "DESCRIPTION" @@ -287,9 +287,9 @@ file as an argument: .Vb 8 \& #!/bin/sh \& base=`echo "$1" | sed 's%.*/%%'` -\& major=`ls -Ll "$1" | awk '{print $5}' | tr -d ,` -\& minor=`ls -Ll "$1" | awk '{print $6}` -\& mkdir -p /usr/local/news/spool/cycbuffs +\& major=`ls \-Ll "$1" | awk '{print $5}' | tr \-d ,` +\& minor=`ls \-Ll "$1" | awk '{print $6}` +\& mkdir \-p /usr/local/news/spool/cycbuffs \& mknod /usr/local/news/spool/cycbuffs/"$base" b "$major" "$minor" \& chown news:news /usr/local/news/spool/cycbuffs/"$base" \& chmod 644 /usr/local/news/spool/cycbuffs/"$base" @@ -305,7 +305,7 @@ Once you have everything configured prop should see messages in \fInews.notice\fR that look like: .PP .Vb 1 -\& innd: CNFS-sm No magic cookie found for cycbuff ONE, initializing +\& innd: CNFS\-sm No magic cookie found for cycbuff ONE, initializing .Ve .PP where \s-1ONE\s0 will be whatever you called your cycbuff. @@ -314,7 +314,7 @@ where \s-1ONE\s0 will be whatever you ca Written by Katsuhiro Kondou for InterNetNews. Rewritten into \s-1POD\s0 by Russ Allbery . .PP -$Id: cycbuff.conf.5 6247 2003-02-28 00:05:40Z kondou $ +$Id: cycbuff.conf.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIinnd\fR\|(8), \fInnrpd\fR\|(8), \fIsm\fR\|(1), \fIstorage.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/distrib.pats.5 inn-2.4.4/doc/man/distrib.pats.5 --- inn-2.4.3/doc/man/distrib.pats.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/distrib.pats.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.36, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIB.PATS 5" -.TH DISTRIB.PATS 5 "2003-04-06" "INN 2.4.0" "InterNetNews Documentation" +.TH DISTRIB.PATS 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" distrib.pats \- Default values for the Distribution header .SH "DESCRIPTION" @@ -168,7 +168,7 @@ header will be added. Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: distrib.pats.5 6282 2003-04-06 21:50:07Z rra $ +$Id: distrib.pats.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3) diff -rup inn-2.4.3/doc/man/domain.8 inn-2.4.4/doc/man/domain.8 --- inn-2.4.3/doc/man/domain.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/domain.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DOMAIN 8" -.TH DOMAIN 8 "2002-12-12" "INN 2.4.0" "InterNetNews Documentation" +.TH DOMAIN 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" domain \- nnrpd domain resolver .SH "SYNOPSIS" @@ -153,7 +153,7 @@ internal domain names: .Vb 4 \& auth internal { \& res: "domain .internal" -\& default-domain: "example.com" +\& default\-domain: "example.com" \& } .Ve .PP @@ -181,7 +181,7 @@ If so, the example above should reflect .IX Header "HISTORY" This documentation was written by Jeffrey M. Vinocur . .PP -$Id: domain.8 5989 2002-12-12 23:07:49Z vinocur $ +$Id: domain.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/expire.ctl.5 inn-2.4.4/doc/man/expire.ctl.5 --- inn-2.4.3/doc/man/expire.ctl.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/expire.ctl.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE.CTL 5" -.TH EXPIRE.CTL 5 "2005-04-11" "INN 2.4.3" "InterNetNews Documentation" +.TH EXPIRE.CTL 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" expire.ctl \- Configuration file for article expiration .SH "DESCRIPTION" @@ -312,7 +312,7 @@ When \fIgroupbaseexpiry\fR is false, for Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: expire.ctl.5 7207 2005-04-11 18:18:40Z rra $ +$Id: expire.ctl.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIexpire\fR\|(8), \fIexpireover\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInews.daily\fR\|(8), diff -rup inn-2.4.3/doc/man/expireover.8 inn-2.4.4/doc/man/expireover.8 --- inn-2.4.3/doc/man/expireover.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/expireover.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EXPIREOVER 8" -.TH EXPIREOVER 8 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH EXPIREOVER 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" expireover \- Expire entries from the news overview database .SH "SYNOPSIS" @@ -246,7 +246,7 @@ Sometimes it's convenient to manually ex however. This can be done with a command like: .PP .Vb 2 -\& echo example.test | expireover -f - -Z /usr/local/news/tmp/lowmark +\& echo example.test | expireover \-f \- \-Z /usr/local/news/tmp/lowmark \& ctlinnd lowmark /usr/local/news/tmp/lowmark .Ve .PP @@ -260,7 +260,7 @@ Written by Rob Robertson (with help from Dave Lawrence ) for InterNetNews. .PP -$Id: expireover.8 5912 2002-12-03 05:31:11Z vinocur $ +$Id: expireover.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpire.ctl\fR\|(5), \fIinn.conf\fR\|(5), diff -rup inn-2.4.3/doc/man/fastrm.1 inn-2.4.4/doc/man/fastrm.1 --- inn-2.4.3/doc/man/fastrm.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/fastrm.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FASTRM 1" -.TH FASTRM 1 "2005-10-08" "INN 2.4.3" "InterNetNews Documentation" +.TH FASTRM 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" fastrm \- Quickly remove a list of files .SH "SYNOPSIS" @@ -302,7 +302,7 @@ general fast file removal program. \&\fBfastrm\fR was originally written by kre@munnari.oz.au. This manual page rewritten in \s-1POD\s0 by Russ Allbery for InterNetNews. .PP -$Id: fastrm.1 7429 2005-12-11 20:42:43Z eagle $ +$Id: fastrm.1 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIexpirerm\fR\|(8) diff -rup inn-2.4.3/doc/man/grephistory.1 inn-2.4.4/doc/man/grephistory.1 --- inn-2.4.3/doc/man/grephistory.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/grephistory.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "GREPHISTORY 1" -.TH GREPHISTORY 1 "2004-12-19" "INN 2.4.2" "InterNetNews Documentation" +.TH GREPHISTORY 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" grephistory \- Query the INN history database .SH "SYNOPSIS" @@ -194,7 +194,7 @@ any other requested information. This f Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .Sp -$Id: grephistory.1 7045 2004-12-19 19:37:45Z rra $ +$Id: grephistory.1 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIhistory\fR\|(5), \fIinn.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/ident.8 inn-2.4.4/doc/man/ident.8 --- inn-2.4.3/doc/man/ident.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ident.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "IDENT 8" -.TH IDENT 8 "2002-12-12" "INN 2.4.0" "InterNetNews Documentation" +.TH IDENT 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ident \- nnrpd ident resolver .SH "SYNOPSIS" @@ -168,8 +168,8 @@ returned from the ident query: .Vb 5 \& auth LAN { \& hosts: "192.168/16" -\& res: "ident -t" -\& default-domain: "internal.example.com" +\& res: "ident \-t" +\& default\-domain: "internal.example.com" \& } .Ve .PP @@ -186,7 +186,7 @@ network whose machines respond to ident .IX Header "HISTORY" This documentation was written by Jeffrey M. Vinocur . .PP -$Id: ident.8 5989 2002-12-12 23:07:49Z vinocur $ +$Id: ident.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/inews.1 inn-2.4.4/doc/man/inews.1 --- inn-2.4.3/doc/man/inews.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/inews.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INEWS 1" -.TH INEWS 1 "2004-12-24" "INN 2.4.2" "InterNetNews Documentation" +.TH INEWS 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" inews \- Post a Usenet article to the local news server .SH "SYNOPSIS" @@ -183,18 +183,18 @@ protect it from the shell. Here are all fields and the corresponding header: .PP .Vb 12 -\& -a Approved -\& -c Control -\& -d Distribution -\& -e Expires -\& -F References -\& -f From -\& -n Newsgroups -\& -o Organization -\& -r Reply-To -\& -t Subject -\& -w Followup-To -\& -x Path prefix +\& \-a Approved +\& \-c Control +\& \-d Distribution +\& \-e Expires +\& \-F References +\& \-f From +\& \-n Newsgroups +\& \-o Organization +\& \-r Reply\-To +\& \-t Subject +\& \-w Followup\-To +\& \-x Path prefix .Ve .PP The \fB\-x\fR argument will be added to the beginning of the normal Path diff -rup inn-2.4.3/doc/man/inn.conf.5 inn-2.4.4/doc/man/inn.conf.5 --- inn-2.4.3/doc/man/inn.conf.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/inn.conf.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INN.CONF 5" -.TH INN.CONF 5 "2005-12-14" "INN 2.4.3" "InterNetNews Documentation" +.TH INN.CONF 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" inn.conf \- Configuration data for InterNetNews programs .SH "DESCRIPTION" @@ -322,6 +322,15 @@ If set, this value is prepended to the P The main purpose of this parameter is to configure all news servers within a particular organization to add a common identity string to the Path: header. The default value is unset. +.IP "\fIpathcluster\fR" 4 +.IX Item "pathcluster" +If set, this value is appended to the Path: header of accepted posts +(after \fIpathhost\fR) if it isn't already present as the last element +of the Path: header. The main purpose of this parameter is to make +several news servers appear as one server. The default value is unset. +.Sp +Note that the Path: header reads right to left, so appended means inserted +at the leftmost side of the Path: header. .IP "\fIpgpverify\fR" 4 .IX Item "pgpverify" Whether to enable \s-1PGP\s0 verification of control messages other than cancel. @@ -662,6 +671,14 @@ determined by nnrpd's \s-1PID\s0 and lau recorded includes initial connection and posting; only information about clients listed in \fInnrpd.track\fR is recorded. This is a boolean value and the default is false. +.IP "\fInnrpdflags\fR" 4 +.IX Item "nnrpdflags" +When \fInnrpd\fR\|(8) is spawned from \fIinnd\fR\|(8), these flags are passed as +arguments to the nnrpd process. This setting does not affect instances +of nnrpd that are started in daemon mode, or instances that are started +via another listener process such as \fIinetd\fR\|(8) or \fIxinetd\fR\|(8). Shell +quoting and metacharacters are not supported. This is a string value +and the default is unset. .IP "\fInnrpdloadlimit\fR" 4 .IX Item "nnrpdloadlimit" If set to a value other than \f(CW0\fR, connections to nnrpd will be refused @@ -1194,7 +1211,7 @@ values for reference. Written by Rich \f(CW$alz\fR for InterNetNews and since modified, updated, and reorganized by innumerable other people. .PP -$Id: inn.conf.5 7471 2005-12-15 04:53:16Z eagle $ +$Id: inn.conf.5 7751 2008-04-06 14:35:40Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinews\fR\|(1), \fIinnd\fR\|(8), \fIinnwatch\fR\|(8), \fInnrpd\fR\|(8), \fIrnews\fR\|(1). diff -rup inn-2.4.3/doc/man/innconfval.1 inn-2.4.4/doc/man/innconfval.1 --- inn-2.4.3/doc/man/innconfval.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/innconfval.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNCONFVAL 1" -.TH INNCONFVAL 1 "2002-12-08" "INN 2.4.0" "InterNetNews Documentation" +.TH INNCONFVAL 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" innconfval \- Get configuration parameters from inn.conf .SH "SYNOPSIS" @@ -192,7 +192,7 @@ Print \s-1INN\s0's version. This is equ .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -$Id: innconfval.1 5962 2002-12-08 19:52:13Z rra $ +$Id: innconfval.1 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/innd.8 inn-2.4.4/doc/man/innd.8 --- inn-2.4.3/doc/man/innd.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/innd.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INND 8" -.TH INND 8 "2003-03-18" "INN 2.4.0" "InterNetNews Documentation" +.TH INND 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" innd \- InterNetNews daemon .SH "SYNOPSIS" @@ -333,13 +333,16 @@ The news log (the trace information for is normally buffered. This option changes the log to be unbuffered. .SH "CONTROL MESSAGES" .IX Header "CONTROL MESSAGES" -Arriving articles that have a Control header are called \*(L"control +Arriving articles that have a Control: header are called \*(L"control messages\*(R". Except for cancel messages, these messages are handled by \&\fIcontrolchan\fR\|(8) via a feed set up in \fInewsfeeds\fR. .PP (Cancel messages update the history database, so they must be handled internally; the cost of syncing, locking, then unlocking would be too high -given the number of cancel messages that are received.) +given the number of cancel messages that are received. Note that if an +article is cancelled before it is received by the news server, it will +be rejected when it arrives since the history database has been updated; +it is useful for rejecting spam before it arrives.) .PP The distribution of control messages is different than that of standard articles. Control messages are normally filed into the pseudo-newsgroup @@ -357,11 +360,14 @@ the subscription list. For example, to given remote site (normally a bad idea), add \f(CW\*(C`control.cancel\*(C'\fR to its subscription list. Normally it's best to exclude the control newsgroups from feeds to keep from sending your peers more control messages than they -care about. +care about. That's why the \fInewsfeeds\fR pattern \f(CW\*(C`!control,!control.*\*(C'\fR +is as often as not specified (adding this pattern do not prevent control +messages which affect the newsgroups fed to a site from being sent to it). .PP -newgroup and rmgroup control messages receive additional special +checkgroups, newgroup and rmgroup control messages receive additional special treatment. If one of these control messages is approved and posted to the -newsgroup being created or removed, the message will be sent to all sites +newsgroup being created or removed (or to the admin group to which the +checkgroups is posted), the message will be sent to all sites whose subscription patterns would cause them to receive articles posted to that group. For example, if a newgroup control message for a nonexistent newsgroup \f(CW\*(C`news.admin.meow\*(C'\fR is received, it will be sent to any site @@ -372,7 +378,24 @@ control message would create. It is \fI newgroup messages to some \*(L"well\-propagated\*(R" newsgroup; not only will this not actually improve their propagation to sites that want such control messages, but it will also cause sites that do not want those control -messages to receive them. +messages to receive them. Therefore, assuming that a newgroup control +message is sent to the group \f(CW\*(C`news.admin.meow\*(C'\fR (specified in the +Newsgroups: header) in order to create the group \f(CW\*(C`news.admin.meow\*(C'\fR, +the sites with the following subscription patterns will receive it: +.PP +.Vb 4 +\& *,@news.* +\& news.* +\& news.*,!control,!control.* +\& control,control.* +.Ve +.PP +but the sites with the following subscription patterns will not receive it: +.PP +.Vb 2 +\& *,@news.*,!control,!control.* +\& comp.*,@news.* +.Ve .PP If a control message is posted to a group whose name ends with the four characters \f(CW\*(C`.ctl\*(C'\fR, this suffix is stripped off and the control message is @@ -384,11 +407,11 @@ compatibility reasons and should be cons \&\f(CW\*(C`.ctl\*(C'\fR suffix may be removed in a future version of \s-1INN\s0. .PP Finally, articles posted to newsgroups beginning with \f(CW\*(C`to.\*(C'\fR are treated -specially. Provided that either that newsgroup exists in the active file +specially. Provided that either that newsgroup exists in the \fIactive\fR file or \fImergetogroups\fR is set in \fIinn.conf\fR, the remainder of the newsgroup is taken to be a site name, as configured in \fInewsfeeds\fR, and the article is sent to that site. If \fImergetogroups\fR is set, the article will be -filed in the group named \f(CW\*(C`to\*(C'\fR (which must exist in the active file). For +filed in the group named \f(CW\*(C`to\*(C'\fR (which must exist in the \fIactive\fR file). For example, with \fImergetogroups\fR set, an article posted to \f(CW\*(C`to.uunet\*(C'\fR will be filed in \f(CW\*(C`to\*(C'\fR and sent to the site \f(CW\*(C`uunet\*(C'\fR. .SH "PROTOCOL DIFFERENCES" @@ -432,8 +455,9 @@ dropped. The local site's name (as set with the \fIpathhost\fR parameter in \&\fIinn.conf\fR) and an exclamation point are prepended to the Path: header, provided the first site name in the Path: header is different from the -local one. In addition, \fIpathalias\fR may be similarly prepended to the -Path: header; see \fIinn.conf\fR\|(5) for the details. +local one. In addition, \fIpathalias\fR and \fIpathcluster\fR may be similarly +respectively prepended and appended to the Path: header; see \fIinn.conf\fR\|(5) +for the details. .PP The Xref: header is removed and a new one created. .PP @@ -464,11 +488,11 @@ This is a text file with a variable numb one of the following formats: .PP .Vb 5 -\& mon dd hh:mm:ss.mmm + feed site ... -\& mon dd hh:mm:ss.mmm j feed site ... -\& mon dd hh:mm:ss.mmm c feed Cancelling -\& mon dd hh:mm:ss.mmm - feed reason -\& mon dd hh:mm:ss.mmm ? feed reason +\& mon dd hh:mm:ss.mmm + feed site ... +\& mon dd hh:mm:ss.mmm j feed site ... +\& mon dd hh:mm:ss.mmm c feed Cancelling +\& mon dd hh:mm:ss.mmm \- feed reason +\& mon dd hh:mm:ss.mmm ? feed reason .Ve .PP There may also be hostname and/or size fields after the message \s-1ID\s0 @@ -501,23 +525,23 @@ reasons for rejection generated by \fBin \& "%s" header too long \& "%s" wants to cancel <%s> by "%s" \& Article exceeds local limit of %s bytes -\& Article posted in the future -- "%s" +\& Article posted in the future \-\- "%s" \& Bad "%s" header \& Can't write history \& Duplicate \& Duplicate "%s" header \& EOF in headers -\& Linecount %s != %s +- %s +\& Linecount %s != %s +\- %s \& Missing %s header \& No body -\& No colon-space in "%s" header +\& No colon\-space in "%s" header \& No space \& Space before colon in "%s" header -\& Too old -- "%s" +\& Too old \-\- "%s" \& Unapproved for "%s" \& Unwanted newsgroup "%s" \& Unwanted distribution "%s" -\& Whitespace in "Newsgroups" header -- "%s" +\& Whitespace in "Newsgroups" header \-\- "%s" .Ve .PP where \f(CW%s\fR, above, is replaced by more specific information. (The Perl, @@ -569,7 +593,7 @@ disables source routing. .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -$Id: innd.8 6265 2003-03-19 00:19:59Z vinocur $ +$Id: innd.8 7751 2008-04-06 14:35:40Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIdbz\fR\|(3), \fIhistory\fR\|(5), \fIincoming.conf\fR\|(5), \fIinn.conf\fR\|(5), diff -rup inn-2.4.3/doc/man/inndf.8 inn-2.4.4/doc/man/inndf.8 --- inn-2.4.3/doc/man/inndf.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/inndf.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNDF 8" -.TH INNDF 8 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH INNDF 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" inndf \- Report free disk, inodes, and overview information .SH "SYNOPSIS" @@ -202,20 +202,20 @@ Report the free inodes in /usr/local/new designed for human readability: .PP .Vb 1 -\& inndf -i /usr/local/news /news/spool +\& inndf \-i /usr/local/news /news/spool .Ve .PP The same, but also add in all file systems in \fIpathetc\fR/filesystems: .PP .Vb 1 -\& inndf -i -F /usr/local/news /news/spool +\& inndf \-i \-F /usr/local/news /news/spool .Ve .PP Print out the number of overview records and the percentage space used by a buffindexed overview database: .PP .Vb 1 -\& inndf -no +\& inndf \-no .Ve .SH "HISTORY" .IX Header "HISTORY" @@ -226,10 +226,10 @@ also to the following folks for ports, p .Vb 7 \& Mahesh Ramachandran \& Chuck Swiger -\& Sang-yong Suh +\& Sang\-yong Suh \& Brad Dickey \& Taso N. Devetzis -\& Wei-Yeh Lee +\& Wei\-Yeh Lee \& Jeff Garzik .Ve .PP diff -rup inn-2.4.3/doc/man/inndstart.8 inn-2.4.4/doc/man/inndstart.8 --- inn-2.4.3/doc/man/inndstart.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/inndstart.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNDSTART 8" -.TH INNDSTART 8 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH INNDSTART 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" inndstart \- Start innd .SH "SYNOPSIS" @@ -334,7 +334,7 @@ as the news user. To start \fBinnd\fR on port 433, passing it the \f(CW\*(C`\-c21\*(C'\fR option, use: .PP .Vb 1 -\& inndstart -P433 -c21 +\& inndstart \-P433 \-c21 .Ve .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" @@ -388,7 +388,7 @@ The binary that is executed as \fBinnd\f .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: inndstart.8 5912 2002-12-03 05:31:11Z vinocur $ +$Id: inndstart.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8) diff -rup inn-2.4.3/doc/man/innfeed.1 inn-2.4.4/doc/man/innfeed.1 --- inn-2.4.3/doc/man/innfeed.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/innfeed.1 2008-05-05 03:18:36.000000000 -0700 @@ -4,7 +4,7 @@ .\" Start Date: Sat, 20 Jan 1996 15:50:56 +1100 .\" Project: INN -- innfeed .\" File: innfeed.1 -.\" RCSId: $Id: innfeed.1 7381 2005-07-04 21:15:31Z eagle $ +.\" RCSId: $Id: innfeed.1 7798 2008-04-26 08:47:01Z iulius $ .\" Description: Man page for innfeed(1) .\" .TH INNFEED 1 @@ -493,7 +493,7 @@ Probably too many other bugs to count. .\" .\" .SH FILES -infeed.conf config file. +innfeed.conf config file. .br innfeed directory for backlog files. .\" @@ -506,6 +506,6 @@ Written by James Brister . -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNMAIL 1" -.TH INNMAIL 1 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH INNMAIL 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" innmail \- Simple mail\-sending program .SH "SYNOPSIS" @@ -164,7 +164,7 @@ option is omitted. This sends a one-line message to the local user \f(CW\*(C`joe\*(C'\fR: .PP .Vb 1 -\& echo "A one-line message." | innmail -s "Simple message" joe +\& echo "A one\-line message." | innmail \-s "Simple message" joe .Ve .PP \&\fBinnmail\fR by default is used by \s-1INN\s0 for sending nightly reports and diff -rup inn-2.4.3/doc/man/innupgrade.8 inn-2.4.4/doc/man/innupgrade.8 --- inn-2.4.3/doc/man/innupgrade.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/innupgrade.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNUPGRADE 8" -.TH INNUPGRADE 8 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH INNUPGRADE 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" innupgrade \- Upgrade INN configuration files .SH "SYNOPSIS" @@ -185,14 +185,14 @@ Upgrade any configuration files found in Upgrade only \fI/news/etc/inn.conf\fR: .PP .Vb 1 -\& innupgrade -f /news/etc/inn.conf +\& innupgrade \-f /news/etc/inn.conf .Ve .PP Upgrade a file named \fIinn\-special.conf\fR that should have the same syntax as \fIinn.conf\fR: .PP .Vb 1 -\& innupgrade -t inn.conf -f inn-special.conf +\& innupgrade \-t inn.conf \-f inn\-special.conf .Ve .PP Any upgrade rules that apply to \fIinn.conf\fR will be applied to the @@ -201,4 +201,4 @@ alternate file. .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: innupgrade.8 5912 2002-12-03 05:31:11Z vinocur $ +$Id: innupgrade.8 7736 2008-04-06 09:27:49Z iulius $ diff -rup inn-2.4.3/doc/man/libauth.3 inn-2.4.4/doc/man/libauth.3 --- inn-2.4.3/doc/man/libauth.3 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/libauth.3 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "libauth 3" -.TH libauth 3 "2002-12-12" "INN 2.4.0" "InterNetNews Documentation" +.TH libauth 3 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" libauth \- routines for writing nnrpd resolvers and authenticators .SH "SYNOPSIS" @@ -201,7 +201,7 @@ respectively? .IX Header "HISTORY" Written by Jeffrey M. Vinocur for InterNetNews. .PP -$Id: libauth.3 5989 2002-12-12 23:07:49Z vinocur $ +$Id: libauth.3 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5), \fIdoc/external\-auth\fR diff -rup inn-2.4.3/doc/man/libinnhist.3 inn-2.4.4/doc/man/libinnhist.3 --- inn-2.4.3/doc/man/libinnhist.3 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/libinnhist.3 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "libinnhist 3" -.TH libinnhist 3 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH libinnhist 3 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" his \- routines for managing INN history .SH "SYNOPSIS" @@ -418,4 +418,4 @@ type \fBtime_t\fR and will not be modifi .IX Header "HISTORY" Written by Alex Kiernan for InterNetNews 2.4.0. .Sp -$Id: libinnhist.3 5912 2002-12-03 05:31:11Z vinocur $ +$Id: libinnhist.3 7736 2008-04-06 09:27:49Z iulius $ diff -rup inn-2.4.3/doc/man/list.3 inn-2.4.4/doc/man/list.3 --- inn-2.4.3/doc/man/list.3 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/list.3 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "list 3" -.TH list 3 "2003-01-21" "INN 2.4.0" "InterNetNews Documentation" +.TH list 3 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" list \- list routines .SH "SYNOPSIS" @@ -208,4 +208,4 @@ to the caller. .IX Header "HISTORY" Written by Alex Kiernan for InterNetNews 2.4.0. .PP -$Id: list.3 6168 2003-01-21 06:27:32Z alexk $ +$Id: list.3 7736 2008-04-06 09:27:49Z iulius $ diff -rup inn-2.4.3/doc/man/mailpost.8 inn-2.4.4/doc/man/mailpost.8 --- inn-2.4.3/doc/man/mailpost.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/mailpost.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,89 +129,130 @@ .\" ======================================================================== .\" .IX Title "MAILPOST 8" -.TH MAILPOST 8 "2004-01-25" "INN 2.4.2" "InterNetNews Documentation" +.TH MAILPOST 8 "2008-04-26" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" -mailpost \- feed an email message into a news group +mailpost \- Feed an e\-mail message into a newsgroup .SH "SYNOPSIS" .IX Header "SYNOPSIS" -\&\fBmailpost\fR [\fB\-a\fR \fIaddr\fR] [\fB\-b\fR \fIdatabase\fR] [\fB\-c\fR \fIwait-time\fR] +\&\fBmailpost\fR [\fB\-hn\fR] [\fB\-a\fR \fIaddr\fR] [\fB\-b\fR \fIdatabase\fR] [\fB\-c\fR \fIwait-time\fR] [\fB\-d\fR \fIdistribution\fR] [\fB\-f\fR \fIaddr\fR] [\fB\-m\fR \fImailing-list\fR] -[\fB\-p\fR \fIport\fR] [\fB\-r\fR \fIaddr\fR] [\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]] -[\fInewsgroups\fR ...] +[\fB\-o\fR \fIoutput-command\fR] [\fB\-p\fR \fIport\fR] [\fB\-r\fR \fIaddr\fR] +[\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]] \fInewsgroups\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" -The \fBmailpost\fR program reads a properly formatted email message from stdin -and feeds it to inews for posting to a news server. \fInewsgroups\fR is a -whitespace-separated list of group names to which to post the article. +The \fBmailpost\fR program reads a properly formatted e\-mail message from stdin +and feeds it to \fBinews\fR for posting to a news server. \fInewsgroups\fR is a +whitespace-separated list of group names to which to post the article +(at least one newsgroup must be specified). .PP -Before feeding the article to inews, it checks that the article has not +Before feeding the article to \fBinews\fR, it checks that the article has not been seen before, and it changes some headers (cleans up some address -headers and puts ``X\-'' in front of unknown headers). +headers, removes X\-Trace: and X\-Complaints\-To:, and puts \f(CW\*(C`X\-\*(C'\fR in front +of unknown headers). .PP -If the article has been seen before (\fBmailpost\fR records the message-id of -each articles it handles), then the article will be silently dropped. Other -errors will cause the article to be mailed to the newsmaster. +If the article has been seen before (\fBmailpost\fR records the Message-ID of +each article it handles), then the article will be silently dropped. Other +errors will cause the article to be mailed to the newsmaster (selected +at configure time and defaulting to \f(CW\*(C`usenet\*(C'\fR). .PP -Normally mailpost is run by \fIsendmail\fR\|(8) via an alias entry: +Normally, \fBmailpost\fR is run by \fIsendmail\fR\|(8) via an alias entry: .PP -local\-mail\-wreck\-bikes: \*(L"|/mailpost - \-d local local.mail.rec.bicycles.racing\*(R" +.Vb 2 +\& local\-mail\-wreck\-bikes: "|/mailpost +\& \-b /var/tmp \-d local local.mail.rec.bicycles.racing" +.Ve +.PP +Instead of \fI/var/tmp\fR, the mail spool directory can be specified, +or any other directory where the \fBmailpost\fR process has write access. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-a\fR \fIaddr\fR" 4 .IX Item "-a addr" -If the \fB\-a\fR flag is used the value given is added to the article -as an Approved header. +If the \fB\-a\fR flag is used, the value given is added to the article +as an Approved: header. .IP "\fB\-b\fR \fIdatabase\fR" 4 .IX Item "-b database" If the \fB\-b\fR flag is used, then it defines the location of the database -used to store the message ids of articles sent on. This is to prevent articles -looping around if a news to mail gateway sends them back here. This option may -be required if the mailpost process doesn't have write access to the news tmp -directory (the value of \fIpathtmp\fR in \fIinn.conf\fR\|(5)). +used to store the Message-IDs of articles sent on. This is to prevent articles +looping around if a news-to-mail gateway sends them back here. This option may +be required if the \fBmailpost\fR process does not have write access to the news +temporary directory. The default value is \fIpathtmp\fR as set in \fIinn.conf\fR. .IP "\fB\-c\fR \fIwait-time\fR" 4 .IX Item "-c wait-time" The \fB\-c\fR flag indicates a length of time to sleep before posting. If duplicate messages are received in this interval (by any instance of \&\fBmailpost\fR using the same database), the article is only posted once, but with Newsgroups: header modified to crosspost the article to all indicated -groups. +groups. The units for \fIwait-time\fR are seconds; a reasonable value may be +anywhere from tens to hundreds of seconds, or even higher, depending on how +long mail can be delayed on its way to your system. .IP "\fB\-d\fR \fIdistribution\fR" 4 .IX Item "-d distribution" -If the \fB\-d\fR flag is used the value given is added to the article as a +If the \fB\-d\fR flag is used, the value given is added to the article as a Distribution: header. .IP "\fB\-f\fR \fIaddr\fR" 4 .IX Item "-f addr" The \fB\-f\fR flag is a synonym for the \fB\-r\fR flag. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Print usage information and exit. .IP "\fB\-m\fR \fImailing-list\fR" 4 .IX Item "-m mailing-list" -If the \fB\-m\fR flag is used the value given is added to the articles in a +If the \fB\-m\fR flag is used, the value given is added to the article in a Mailing\-List: header, if such a header doesn't already exist. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +If the \fB\-n\fR flag is used, neither an article is posted nor a mail is sent +in case an error occurs. Everything is written to the standard output. +.IP "\fB\-o\fR \fIoutput-command\fR" 4 +.IX Item "-o output-command" +Specifies the program to which the resulting article processed by \fBmailpost\fR +should be sent. For debugging purpose, \f(CW\*(C`\-o cat\*(C'\fR can be used. The default +value is \f(CW\*(C`inews \-S \-h\*(C'\fR. .IP "\fB\-p\fR \fIport\fR" 4 .IX Item "-p port" Specifies the port on which \fBnnrpd\fR is listening, used for article posting. -If given, \fB\-p\fR is passed along to inews. +If given, \fB\-p\fR is passed along to \fBinews\fR. .IP "\fB\-r\fR \fIaddr\fR" 4 .IX Item "-r addr" A heuristic is used to determine a reasonable value for the Path: header. The \fB\-r\fR flag indicates what to use if no other value can be determined. -.IP "\fB\-x\fR \fIheader\fR[:\fIheader\fR...]" 4 +.IP "\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]" 4 .IX Item "-x header[:header...]" A colon-separated list of additional headers which should be treated as -known headers; these headers will be passed through to \fIinews\fR\|(1) without -having \*(L"X\-\*(R" prepended. +known headers; these headers will be passed through to \fBinews\fR without +having \f(CW\*(C`X\-\*(C'\fR prepended. +.Sp +Known headers are: +.Sp +.Vb 12 +\& Approved +\& Content\-* +\& Date +\& Distribution +\& From +\& Mailing\-List +\& Message\-ID +\& MIME\-* +\& References +\& Return\-Path +\& Sender +\& Subject +.Ve +.SH "FILES" +.IX Header "FILES" +.IP "\fIpathbin\fR/mailpost" 4 +.IX Item "pathbin/mailpost" +The Perl script itself used to feed an e\-mail message to a newsgroup. +.IP "\fIpathtmp\fR/mailpost\-msgid.dir and \fIpathtmp\fR/mailpost\-msgid.pag" 4 +.IX Item "pathtmp/mailpost-msgid.dir and pathtmp/mailpost-msgid.pag" +The default database files which record previously seen Message\-IDs. .SH "HISTORY" .IX Header "HISTORY" Written by Paul Vixie long ago and then hacked up by James Brister for \s-1INN\s0 integration. .PP -$Id: mailpost.8 6658 2004-01-25 23:44:19Z rra $ -.SH "FILES" -.IX Header "FILES" -/mailpost\-msgid.db database file -.SH "BUGS" -.IX Header "BUGS" -Is lacking in configurability. +$Id: mailpost.8 7798 2008-04-26 08:47:01Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIinn.conf\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3). +\&\fIactive\fR\|(5), \fIinews\fR\|(1), \fIinn.conf\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3). diff -rup inn-2.4.3/doc/man/makehistory.8 inn-2.4.4/doc/man/makehistory.8 --- inn-2.4.3/doc/man/makehistory.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/makehistory.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MAKEHISTORY 8" -.TH MAKEHISTORY 8 "2003-07-05" "INN 2.4.1" "InterNetNews Documentation" +.TH MAKEHISTORY 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" makehistory \- Initialize or rebuild INN history database .SH "SYNOPSIS" @@ -246,7 +246,7 @@ default temporary file locations and sho running (or is throttled). .PP .Vb 1 -\& makehistory -b -f history.n -O -l 30000 -I +\& makehistory \-b \-f history.n \-O \-l 30000 \-I .Ve .PP This will rebuild the overview (if using \f(CW\*(C`buffindexed\*(C'\fR, erase the @@ -264,7 +264,7 @@ expired articles, follow the above comma look over the new history file for problems and run: .PP .Vb 1 -\& makedbz -s `wc -l < history` -f history.n +\& makedbz \-s `wc \-l < history` \-f history.n .Ve .PP Then rename all of the files matching \f(CW\*(C`history.n.*\*(C'\fR to \f(CW\*(C`history.*\*(C'\fR, @@ -274,7 +274,7 @@ to unthrottle innd. For a simpler example: .PP .Vb 1 -\& makehistory -b -f history.n -I -O +\& makehistory \-b \-f history.n \-I \-O .Ve .PP will scan the spool, removing broken articles and generating history and @@ -283,7 +283,7 @@ overview entries for articles missing fr To just rebuild overview: .PP .Vb 1 -\& makehistory -O -x -F +\& makehistory \-O \-x \-F .Ve .SH "FILES" .IX Header "FILES" @@ -301,7 +301,7 @@ Where temporary files are written unless Originally written by Rich \f(CW$alz\fR for InterNetNews and updated by various other people since. .PP -$Id: makehistory.8 6400 2003-07-12 19:26:58Z rra $ +$Id: makehistory.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIdbz\fR\|(3), \fIactive\fR\|(5), \fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIctlinnd\fR\|(8), \fIinnd\fR\|(8), diff -rup inn-2.4.3/doc/man/motd.news.5 inn-2.4.4/doc/man/motd.news.5 --- inn-2.4.3/doc/man/motd.news.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/motd.news.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MOTD.NEWS 5" -.TH MOTD.NEWS 5 "2003-12-26" "INN 2.4.1" "InterNetNews Documentation" +.TH MOTD.NEWS 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" motd.news \- Message of the day information for readers .SH "DESCRIPTION" @@ -148,7 +148,7 @@ the client an empty response. .IX Header "HISTORY" Rewritten in \s-1POD\s0 by Russ Allbery for InterNetNews. .PP -$Id: motd.news.5 6574 2003-12-27 06:25:05Z rra $ +$Id: motd.news.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/newsfeeds.5 inn-2.4.4/doc/man/newsfeeds.5 --- inn-2.4.3/doc/man/newsfeeds.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/newsfeeds.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NEWSFEEDS 5" -.TH NEWSFEEDS 5 "2005-02-26" "INN 2.4.3" "InterNetNews Documentation" +.TH NEWSFEEDS 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" newsfeeds \- Determine where Usenet articles are sent .SH "DESCRIPTION" @@ -259,9 +259,11 @@ poison logic only applies if the poison .PP Control messages follow slightly different propagation rules than normal articles; see \fIinnd\fR\|(8) for the details. Note that most subscriptions -should have \f(CW\*(C`!junk,!control*\*(C'\fR in their pattern list due to those +should have \f(CW\*(C`!junk,!control,!control.*\*(C'\fR in their pattern list due to those propagation rules (and since junk is a special internal newsgroup; see -\&\fIwanttrash\fR in \fIinn.conf\fR\|(5) for more details on what it's used for). +\&\fIwanttrash\fR in \fIinn.conf\fR\|(5) for more details on what it's used for) and +that the best way to keep control messages local to a site is with a +distribution. .PP A subscription can be further modified by specifying distributions that the site should or should not receive. The default is to send all @@ -306,7 +308,7 @@ exclusion sub\-field, incoming articles the names specified in that exclusion sub-field appear in their Path: headers. If the \f(CW\*(C`ME\*(C'\fR entry has a subscription list, that list is prepended to the subscription list of all other entries. For example, -\&\f(CW\*(C`*,!control*,!junk,!foo.*\*(C'\fR could be used to set the default subscription +\&\f(CW\*(C`*,!control,!control.*,!junk,!foo.*\*(C'\fR could be used to set the default subscription list for all other feeds so that local postings are not propagated unless \&\f(CW\*(C`foo.*\*(C'\fR explicitly appears in the site's subscription list. This feature tends to be somewhat confusing since the default subscription is prepended @@ -491,6 +493,53 @@ The nice priority that this channel or p should be a positive number between 0 and 20 and is the priority that the new process will run with. This flag can be used to raise the priority to normal if you're using the \fInicekids\fR parameter in \fIinn.conf\fR. +.IP "\fBQ\fR \fIhashfeed\fR" 4 +.IX Item "Q hashfeed" +Specifies the \fIhashfeed\fR match expression for this site. It must be in +the form \f(CW\*(C`value/mod\*(C'\fR or \f(CW\*(C`start\-end/mod\*(C'\fR. The Message-ID of the article +is hashed using \s-1MD5\s0, which results in a 128\-bit hash. The lowest +32\ bits are then taken by default as the hashfeed value (which is an +integer). If the hashfeed value modulus \f(CW\*(C`mod\*(C'\fR plus one equals \f(CW\*(C`value\*(C'\fR or +is between \f(CW\*(C`start\*(C'\fR and \f(CW\*(C`end\*(C'\fR, the article will be fed to this site. All +these numbers must be integers. +.Sp +It is a deterministic way to control the flow of articles and to split a feed. +For instance: +.Sp +.Vb 2 +\& Q1/2 Feeds about 50% of all articles to this site. +\& Q2/2 Feeds the other 50% of all articles. +.Ve +.Sp +Another example with three sites: +.Sp +.Vb 3 +\& Q1\-3/10 Feeds about 30% of all articles. +\& Q4\-5/10 Feeds about 20% of all articles. +\& Q6\-10/10 Feeds about 50% of all articles. +.Ve +.Sp +If this flag is specified multiple times, the contents will be +logically \f(CW\*(C`OR\*(C'\fRed together (just one match is needed). +.Sp +You can use an extended syntax of the form \f(CW\*(C`value/mod_offset\*(C'\fR or +\&\f(CW\*(C`start\-end/mod_offset\*(C'\fR. As \s-1MD5\s0 generates a 128\-bit return value, +it is possible to specify from which byte-offset the 32\-bit integer +used by hashfeed starts. The default value for \f(CW\*(C`offset\*(C'\fR is \f(CW\*(C`_0\*(C'\fR +and thirteen overlapping values from \f(CW\*(C`_0\*(C'\fR to \f(CW\*(C`_12\*(C'\fR can be used. +Only up to four totally independent values exist: \f(CW\*(C`_0\*(C'\fR, \f(CW\*(C`_4\*(C'\fR, +\&\f(CW\*(C`_8\*(C'\fR and \f(CW\*(C`_12\*(C'\fR. +.Sp +Therefore, it allows to a generate a second level of deterministic +distribution. Indeed, if a news server is fed \f(CW\*(C`Q1/2\*(C'\fR, it can go on +splitting thanks to \f(CW\*(C`Q1\-3/9_4\*(C'\fR for instance. +.Sp +The algorithm is compatible with the one used by Diablo\ 5.1 and up. +If you want to use the legacy quickhashing method used by Diablo +before 5.1, you can put an \f(CW\*(C`@\*(C'\fR sign just after the \fBQ\fR flag (for +instance \f(CW\*(C`Q@1\-3/10\*(C'\fR, but the distribution of the messages is not +perfect with this legacy method whose use is discouraged and for +which offsets cannot be used). .IP "\fBS\fR \fIsize\fR" 4 .IX Item "S size" If the amount of data queued for the site gets to be larger than \fIsize\fR @@ -543,7 +592,7 @@ be retrieved given the storage \s-1API\s The newsgroup the article is in; if cross\-posted, then the first of the groups to which the article was posted that this site gets. (The difference from \f(CW\*(C`G\*(C'\fR is that this sends the newsgroup to which the article -was posted even if it's a control message.) +was posted even if it is a control message.) .IP "h" 3 .IX Item "h" The history hash key of the article (derived from the message \s-1ID\s0). @@ -738,7 +787,7 @@ for \fInntpsend\fR\|(8) and funnel feeds The former look like this: .PP .Vb 1 -\& feed.example.com:*,!control*,!junk:Tf,Wnm: +\& feed.example.com:*,!control,!control.*,!junk:Tf,Wnm: .Ve .PP which generates a file named \fIpathoutgoing\fR/feed.example.com containing @@ -748,14 +797,14 @@ message \s-1ID\s0. The latter look like this: .PP .Vb 1 -\& feed.example.com:*,!control*,!junk:Tm:innfeed! +\& feed.example.com:*,!control,!control.*,!junk:Tm:innfeed! .Ve .PP Very similar, except that this is the input to a funnel feed named \&\f(CW\*(C`innfeed!\*(C'\fR. One could also write this as: .PP .Vb 1 -\& example/feed.example.com:*,!control*,!junk:Ap,Tm:innfeed! +\& example/feed.example.com:*,!control,!control.*,!junk:Ap,Tm:innfeed! .Ve .PP (note the \fBAp\fR so that articles that contain just \f(CW\*(C`example\*(C'\fR in the Path: @@ -767,7 +816,7 @@ The typical feed entry for \fIinnfeed\fR that's the target of various funnel feeds: .PP .Vb 1 -\& innfeed!:!*:Tc,Wnm*:/usr/local/news/bin/startinnfeed -y +\& innfeed!:!*:Tc,Wnm*:/usr/local/news/bin/startinnfeed \-y .Ve .PP Note that the \fIpattern\fR for this feed is just \f(CW\*(C`!*\*(C'\fR so that it won't @@ -801,7 +850,7 @@ example of a fairly fancy program feed: .PP .Vb 2 \& mailer!:!*:W*,Tp\e -\& :sm %s | innmail -s "News article" * +\& :sm %s | innmail \-s "News article" * .Ve .PP Remember that \f(CW%s\fR is replaced by the storage \s-1API\s0 token, so this @@ -823,7 +872,7 @@ article should be sent to the site \f(CW at the \f(CW\*(C`mailer!\*(C'\fR site and end up executing the command line: .PP .Vb 1 -\& sm @...@ | innmail -s "News article" peter@example.com sue@example.com +\& sm @...@ | innmail \-s "News article" peter@example.com sue@example.com .Ve .PP which will mail the article to both Peter and Sue. @@ -833,22 +882,21 @@ entry for \fIcontrolchan\fR\|(8). .PP .Vb 3 \& controlchan!\e -\& :!*,control,control.*,!control.cancel/!collabra-internal\e +\& :!*,control,control.*,!control.cancel/!collabra\-internal\e \& :Tc,Wnsm:/usr/local/news/bin/controlchan .Ve .PP This program only wants information about articles posted to a control newsgroup other than control.cancel, which due to the sorting of control messages described in \fIinnd\fR\|(8) will send it all control messages except for -cancel messages provided that control.cancel exists. In this case, we -also exclude any article with a distribution of \f(CW\*(C`collabra\-internal\*(C'\fR. -\&\fBcontrolchan\fR gets the storage \s-1API\s0 token, the name of the sending site -(for processing old-style ihave and sendme control messages, be sure to -read about \fIlogipaddr\fR in \fIcontrolchan\fR\|(8)), and the message \s-1ID\s0 for each -article. +cancel messages. In this case, we also exclude any article with a +distribution of \f(CW\*(C`collabra\-internal\*(C'\fR. \fBcontrolchan\fR gets the storage +\&\s-1API\s0 token, the name of the sending site (for processing old-style ihave +and sendme control messages, be sure to read about \fIlogipaddr\fR in +\&\fIcontrolchan\fR\|(8)), and the message \s-1ID\s0 for each article. .PP For many other examples, including examples of the special \f(CW\*(C`ME\*(C'\fR site -entry, see the example newsfeeds file distributed with \s-1INN\s0. Also see the +entry, see the example \fInewsfeeds\fR file distributed with \s-1INN\s0. Also see the install documentation that comes with \s-1INN\s0 for information about setting up the standard newsfeeds entries used by most sites. .SH "HISTORY" @@ -856,7 +904,7 @@ the standard newsfeeds entries used by m Written by Rich \f(CW$alz\fR for InterNetNews. Reformatted and rewritten in \s-1POD\s0 by Russ Allbery . .PP -$Id: newsfeeds.5 7134 2005-03-05 21:19:44Z vinocur $ +$Id: newsfeeds.5 7741 2008-04-06 09:51:47Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIbuffchan\fR\|(8), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -rup inn-2.4.3/doc/man/ninpaths.8 inn-2.4.4/doc/man/ninpaths.8 --- inn-2.4.3/doc/man/ninpaths.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ninpaths.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -21,16 +21,15 @@ .. .de Ve \" End verbatim text .ft R - .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -130,8 +129,7 @@ .\" ======================================================================== .\" .IX Title "NINPATHS 8" -.TH NINPATHS 8 "2002-11-25" "INN 2.4.0" "InterNetNews Documentation" -.UC +.TH NINPATHS 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ninpaths \- Report Usenet Path statistics (new inpaths) .SH "SYNOPSIS" @@ -164,8 +162,9 @@ all steps that follow with the full path Set up a channel feed using an entry like: .Sp .Vb 1 -\& inpaths!:*:Tc,WP:ninpaths -p -d /path/inpaths.%d +\& inpaths!:*:Tc,WP:ninpaths \-p \-d /path/inpaths.%d .Ve +.Sp if your version of \s-1INN\s0 supports \s-1WP\s0 (2.0 and later all do). Replace with the full path to your \s-1INN\s0 log directory. .IP "3." 4 @@ -174,6 +173,7 @@ Enter into your news user crontab someth .Vb 1 \& 6 6 * * * ctlinnd flush inpaths! .Ve +.Sp (the actual time doesn't matter). This will force \fBninpaths\fR to generate a dump file once a day. .IP "4." 4 @@ -210,12 +210,14 @@ don't know, 2.0 and later all do), use t .Vb 1 \& inpaths!:*:Tc,WH:ginpaths .Ve +.PP where \fBginpaths\fR is the following script: .PP .Vb 2 \& #!/bin/sh -\& exec egrep '^Path: ' | ninpaths -p -d /path/inpaths.%d +\& exec egrep '^Path: ' | ninpaths \-p \-d /path/inpaths.%d .Ve +.PP replacing as above. .SH "SEE ALSO" .IX Header "SEE ALSO" diff -rup inn-2.4.3/doc/man/nnrpd.8 inn-2.4.4/doc/man/nnrpd.8 --- inn-2.4.3/doc/man/nnrpd.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/nnrpd.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NNRPD 8" -.TH NNRPD 8 "2005-07-17" "INN 2.4.3" "InterNetNews Documentation" +.TH NNRPD 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" nnrpd \- NNTP server for reader clients .SH "SYNOPSIS" @@ -159,6 +159,12 @@ configuration files will be immediately connections. If you are instead running \fBnnrpd\fR with the \fB\-D\fR option, any configuration changes won't take effect until \fBnnrpd\fR is restarted. .PP +The \fIinn.conf\fR setting \fInnrpdflags\fR can be used to pass any of the +options below to instances of \fBnnrpd\fR that are spawned directly from +\&\fBinnd\fR. Many options only make sense when \fB\-D\fR is used, so these +options should not be used with \fInnrpdflags\fR. See also the discussion +of \fInnrpdflags\fR in \fIinn.conf\fR\|(5). +.PP When \fInnrpdloadlimit\fR in \fIinn.conf\fR is not 0, it will also reject connections if the load average is greater than that value (typically 16). \&\fBnnrpd\fR can also prevent high-volume posters from abusing your @@ -370,7 +376,7 @@ support added by Rob Robertston . -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB 5" -.TH OVDB 5 "2004-06-08" "INN 2.4.2" "InterNetNews Documentation" +.TH OVDB 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ovdb \- Overview storage method for INN .SH "DESCRIPTION" @@ -231,7 +231,7 @@ Sets the minimum number of keys per page documentation for more info. Default is based on page size: .Sp .Vb 1 -\& default_minkey = MAX(2, pagesize / 2048 - 1) +\& default_minkey = MAX(2, pagesize / 2048 \- 1) .Ve .Sp The lowest allowed minkey is 2. Setting minkey higher than the default is diff -rup inn-2.4.3/doc/man/ovdb_init.8 inn-2.4.4/doc/man/ovdb_init.8 --- inn-2.4.3/doc/man/ovdb_init.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ovdb_init.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_INIT 8" -.TH OVDB_INIT 8 "2002-02-02" "INN 2.4.0" "InterNetNews Documentation" +.TH OVDB_INIT 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ovdb_init \- Prepare ovdb database for use .SH "SYNOPSYS" diff -rup inn-2.4.3/doc/man/ovdb_monitor.8 inn-2.4.4/doc/man/ovdb_monitor.8 --- inn-2.4.3/doc/man/ovdb_monitor.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ovdb_monitor.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_MONITOR 8" -.TH OVDB_MONITOR 8 "2002-02-02" "INN 2.4.0" "InterNetNews Documentation" +.TH OVDB_MONITOR 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ovdb_monitor \- Database maintenance .SH "SYNOPSYS" diff -rup inn-2.4.3/doc/man/ovdb_server.8 inn-2.4.4/doc/man/ovdb_server.8 --- inn-2.4.3/doc/man/ovdb_server.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ovdb_server.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_SERVER 8" -.TH OVDB_SERVER 8 "2002-02-02" "INN 2.4.0" "InterNetNews Documentation" +.TH OVDB_SERVER 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ovdb_server \- overview 'helper' server .SH "SYNOPSYS" diff -rup inn-2.4.3/doc/man/ovdb_stat.8 inn-2.4.4/doc/man/ovdb_stat.8 --- inn-2.4.3/doc/man/ovdb_stat.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/ovdb_stat.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_STAT 8" -.TH OVDB_STAT 8 "2002-02-02" "INN 2.4.0" "InterNetNews Documentation" +.TH OVDB_STAT 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" ovdb_stat \- Display information from the ovdb database .SH "SYNOPSYS" diff -rup inn-2.4.3/doc/man/passwd.nntp.5 inn-2.4.4/doc/man/passwd.nntp.5 --- inn-2.4.3/doc/man/passwd.nntp.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/passwd.nntp.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PASSWD.NNTP 5" -.TH PASSWD.NNTP 5 "2002-02-03" "INN 2.4.0" "InterNetNews Documentation" +.TH PASSWD.NNTP 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" passwd.nntp \- passwords for connecting to remote NNTP servers .SH "DESCRIPTION" @@ -173,9 +173,9 @@ This file should not be world\-readable. .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. This is -revision \f(CW$Revision: 5091 $, dated \f(CW$Date: 2002-02-03 11:05:22 -0800 (Sun, 03 Feb 2002) $. +revision \f(CW$Revision:\fR 5089 $, dated \f(CW$Date:\fR 2002\-02\-03 20:03:41 +0100 (dim, 03 fév 2002) $. .PP -$Id: passwd.nntp.5 5091 2002-02-03 19:05:22Z vinocur $ +$Id: passwd.nntp.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fIlibinn\fR\|(3). diff -rup inn-2.4.3/doc/man/perl-nocem.8 inn-2.4.4/doc/man/perl-nocem.8 --- inn-2.4.3/doc/man/perl-nocem.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/perl-nocem.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,5 +1,4 @@ -.\" Automatically generated by Pod::Man version 1.19 -.\" Thu Aug 16 19:16:09 2001 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -22,16 +21,15 @@ .. .de Ve \" End verbatim text .ft R - .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -130,43 +128,126 @@ .rm #[ #] #H #V #F C .\" ======================================================================== .\" -.IX Title "perl-nocem 8" -.TH perl-nocem 8 "INN 2.4.0" "2001-08-16" "InterNetNews Documentation" -.UC +.IX Title "PERL-NOCEM 8" +.TH PERL-NOCEM 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" -perl-nocem \- a NoCeM-on-spool implementation for \s-1INN\s0 2.x +perl\-nocem \- A NoCeM\-on\-spool implementation for INN\ 2.x .SH "SYNOPSIS" .IX Header "SYNOPSIS" -Add to the newsfeeds file an entry like this one: -.PP -.Vb 2 -\& nocem:!*,alt.nocem.misc,news.lists.filter\e -\& :Tc,Wf,Ap:/usr/local/news/bin/perl-nocem +perl-nocem +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +NoCeM, which is pronounced \fINo See 'Em\fR, is a protocol enabling +authenticated third-parties to issue notices which can be used +to cancel unwanted articles (like spam and articles in moderated +newsgroups which were not approved by their moderators). It can +also be used by readers as a \fIthird-party killfile\fR. It is +intended to eventually replace the protocol for third-party cancel +messages. +.PP +\&\fBperl-nocem\fR processes third\-party, PGP-signed article cancellation +notices. It is possible not to honour all NoCeM notices but only those +which are sent by people whom you trust (that is to say if you trust +the \s-1PGP\s0 key they use to sign their NoCeM notices). Indeed, it is up +to you to decide whether you wish to honour their notices, depending +on the criteria they use. +.PP +Processing NoCeM notices is easy to set up: +.IP "1." 4 +Import the keys of the NoCeM issuers you trust in order to check +the authenticity of their notices. You can do: +.Sp +.Vb 1 +\& gpg \-\-no\-default\-keyring \-\-primary\-keyring /pgp/ncmring.gpg \-\-import .Ve -Import new keys with: -.PP -.Vb 2 -\& gpg --keyring=/usr/local/news/etc/pgp/ncmring.gpg --import \e -\& --allow-non-selfsigned-uid +.Sp +where is the value of the \fIpathetc\fR parameter set in \fIinn.conf\fR +and the file containing the key(s) to import. The keyring +must be located in \fIpathetc\fR/pgp/ncmring.gpg (create the directory +before using \fBgpg\fR). For old PGP-generated keys, you may have to use +\&\fB\-\-allow\-non\-selfsigned\-uid\fR if they are not properly self\-signed, +but anyone creating a key really should self-sign the key. Current +\&\s-1PGP\s0 implementations do this automatically. +.Sp +The keys of NoCeM issuers can be found in the web site of \fIThe NoCeM Registry\fR: +. You can even +download there a unique file which contains all the keys. +.IP "2." 4 +Create a \fInocem.ctl\fR config file in \fIpathetc\fR indicating the NoCeM issuers +and notices you want to follow. This permission file contains lines like: +.Sp +.Vb 3 +\& annihilator\-1:* +\& clewis@ferret.ocunix:mmf +\& stephane@asynchrone:mmf,openproxy,spam .Ve -The nocem.ctl config file contains lines like: -.PP -.Vb 2 -\& annihilator-1@erlenstar.demon.co.uk:* -\& clewis@ferret:mmf,spam +.Sp +This will remove all articles for which the issuer (first part of the line, +before the colon \f(CW\*(C`:\*(C'\fR) has issued NoCeM notices corresponding to the +criteria specified after the colon. +.Sp +You will also find information about that on the web site of +\&\fIThe NoCeM Registry\fR. +.IP "3." 4 +Add to the \fInewsfeeds\fR file an entry like this one in order to feed +\&\fBperl-nocem\fR the NoCeM notices posted to alt.nocem.misc and +news.lists.filters: +.Sp +.Vb 3 +\& nocem!\e +\& :!*,alt.nocem.misc,news.lists.filters\e +\& :Tc,Wf,Ap:/perl\-nocem +.Ve +.Sp +with the correct path to \fBperl-nocem\fR, located in . Then, reload +the \fInewsfeeds\fR file (\f(CW\*(C`ctlinnd reload newsfeeds 'NoCeM channel feed'\*(C'\fR). +.Sp +Note that you should at least carry news.lists.filters on your news +server (or other newsgroups where NoCeM notices are sent) if you wish +to process them. +.IP "4." 4 +Everything should now work. However, do not hesitate to manually test +\&\fBperl-nocem\fR with a NoCeM notice, using: +.Sp +.Vb 1 +\& grephistory '' | perl\-nocem .Ve +.Sp +Indeed, \fBperl-nocem\fR expects tokens on its standard input, and +\&\fBgrephistory\fR can easily give it the token of a known article, +thanks to its Message\-ID. +.PP +When you have verified that everything works, you can eventually turn +off regular spam cancels, if you want, not processing any longer +cancels containing \f(CW\*(C`cyberspam\*(C'\fR in the Path: header (see the +\&\fIrefusecybercancels\fR parameter in \fIinn.conf\fR). .SH "FILES" .IX Header "FILES" -/usr/local/news/etc/nocem.ctl +.IP "\fIpathbin\fR/perl\-nocem" 4 +.IX Item "pathbin/perl-nocem" +The Perl script itself used to process NoCeM notices. +.IP "\fIpathetc\fR/nocem.ctl" 4 +.IX Item "pathetc/nocem.ctl" +The configuration file which specifies the NoCeM notices to be processed. +.IP "\fIpathetc\fR/pgp/ncmring.gpg" 4 +.IX Item "pathetc/pgp/ncmring.gpg" +The keyring which contains the public keys of trusted NoCeM issuers. .SH "BUGS" .IX Header "BUGS" -The Subject header is not checked for the @@NCM string and there is no -check for the presence of the References header. -The Newsgroups pseudo header is not checked, but this can be done in +The Subject: header is not checked for the @@NCM string and there is no +check for the presence of the References: header. +.PP +The Newsgroups: pseudo header is not checked, but this can be done in \&\fIlocal_want_cancel_id()\fR. -The Hierarchies header is ignored. -.SH "AUTHORS" -.IX Header "AUTHORS" +.PP +The Hierarchies: header is ignored. +.SH "HISTORY" +.IX Header "HISTORY" Copyright 2000 by Miquel van Smoorenburg . .PP Copyright 2001 by Marco d'Itri . +.PP +$Id: perl-nocem.8 7733 2008-04-06 09:16:20Z iulius $ +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIgpgv\fR\|(1), \fIgrephistory\fR\|(1), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIpgp\fR\|(1). diff -rup inn-2.4.3/doc/man/pgpverify.1 inn-2.4.4/doc/man/pgpverify.1 --- inn-2.4.3/doc/man/pgpverify.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/pgpverify.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PGPVERIFY 1" -.TH PGPVERIFY 1 "2004-01-11" "INN 2.4.1" "InterNetNews Documentation" +.TH PGPVERIFY 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" pgpverify \- Cryptographically verify Usenet control messages .SH "SYNOPSIS" @@ -157,6 +157,15 @@ ring to be found in \fIpathetc\fR/pgp (a signatures). If that directory doesn't exist, it will fall back on using the default key ring, which is in a \fI.pgp\fR or \fI.gnupg\fR subdirectory of the running user's home directory. +.PP +\&\s-1INN\s0, when using GnuPG, configures \fBpgpverify\fR to use \fBgpgv\fR, which by +default expects keys to be in a keyring named \fItrustedkeys.gpg\fR, since it +doesn't implement trust checking directly. \fBpgpverify\fR uses that file if +present but falls back to \fIpubring.gpg\fR if it's not found. This bypasses +the trust model for checking keys, but is compatible with the way that +\&\fBpgpverify\fR used to behave. Of course, if a keyring is found in +\&\fIpathetc\fR/pgp or configured at the top of the script, that overrides all of +this behavior. .SH "OPTIONS" .IX Header "OPTIONS" The \fB\-test\fR flag causes \fBpgpverify\fR to print out the input that it is @@ -166,19 +175,19 @@ analysis of the message. .SH "EXIT STATUS" .IX Header "EXIT STATUS" \&\fBpgpverify\fR may exit with the following statuses: -.IP "0\&" 5 +.IP "0\&" 4 .IX Item "0" The control message had a good \s-1PGP\s0 signature. -.IP "1" 5 +.IP "1" 4 .IX Item "1" The control message had no \s-1PGP\s0 signature. -.IP "2" 5 +.IP "2" 4 .IX Item "2" The control message had an unknown \s-1PGP\s0 signature. -.IP "3" 5 +.IP "3" 4 .IX Item "3" The control message had a bad \s-1PGP\s0 signature. -.IP "255" 5 +.IP "255" 4 .IX Item "255" A problem occurred not directly related to \s-1PGP\s0 analysis of signature. .SH "ENVIRONMENT" @@ -196,21 +205,21 @@ Historically, Usenet news server adminis servers to automatically honor Usenet control messages based on the originator of the control messages and the hierarchies for which the control messages applied. For example, in the past, David Lawrence always -issued control messages for the \*(L"Big 8\*(R" hierarchies (comp, humanities, +issued control messages for the \*(L"Big\ 8\*(R" hierarchies (comp, humanities, misc, news, rec, sci, soc, talk). Usenet news administrators would configure their news server software to automatically honor newgroup and rmgroup control messages that originated from David Lawrence and applied -to any of the Big 8 hierarchies. +to any of the Big\ 8 hierarchies. .PP Unfortunately, Usenet news articles (including control messages) are notoriously easy to forge. Soon, malicious users realized they could -create or remove (at least temporarily) any Big 8 newsgroup they wanted by +create or remove (at least temporarily) any Big\ 8 newsgroup they wanted by simply forging an appropriate control message in David Lawrence's name. As Usenet became more widely used, forgeries became more common. .PP The \fBpgpverify\fR program was designed to allow Usenet news administrators to configure their servers to cryptographically verify control messages -before automatically acting on them. Under the pgpverify system, a Usenet +before automatically acting on them. Under the \fBpgpverify\fR system, a Usenet hierarchy maintainer creates a \s-1PGP\s0 public/private key pair and disseminates the public key. Whenever the hierarchy maintainer issues a control message, he uses the \fBsigncontrol\fR program to sign the control @@ -218,7 +227,7 @@ message with the \s-1PGP\s0 private key. their news servers to run the \fBpgpverify\fR program on the appropriate control messages, and take action based on the \s-1PGP\s0 key User \s-1ID\s0 that signed the control message, not the name and address that appear in the control -message's From or Sender headers. +message's From: or Sender: headers. .PP Thus, appropriate use of the \fBsigncontrol\fR and \fBpgpverify\fR programs essentially eliminates the possibility of malicious users forging Usenet @@ -229,13 +238,6 @@ properly protect their \s-1PGP\s0 privat could forge a validly-signed control message would be by breaking the public key encryption algorithm, which (at least at this time) is believed to be prohibitively difficult for \s-1PGP\s0 keys of a sufficient bit length. -.SH "SEE ALSO" -.IX Header "SEE ALSO" -\&\fIgpgv\fR\|(1), \fIpgp\fR\|(1) -.PP - is where the most recent versions of -\&\fBsigncontrol\fR and \fBpgpverify\fR live, along with \s-1PGP\s0 public keys used for -hierarchy administration. .SH "HISTORY" .IX Header "HISTORY" \&\fBpgpverify\fR was written by David C Lawrence . Manual page @@ -253,21 +255,21 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -.IP "1." 3 +.IP "1." 4 Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -.IP "2." 3 +.IP "2." 4 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -.IP "3." 3 +.IP "3." 4 All advertising materials mentioning features or use of this software must display the following acknowledgement: .Sp .Vb 1 \& This product includes software developed by UUNET Technologies, Inc. .Ve -.IP "4." 3 +.IP "4." 4 The name of \s-1UUNET\s0 Technologies (\*(L"\s-1UUNET\s0\*(R") may not be used to endorse or promote products derived from this software without specific prior written permission. @@ -282,3 +284,10 @@ permission. \&\s-1LIABILITY\s0, \s-1WHETHER\s0 \s-1IN\s0 \s-1CONTRACT\s0, \s-1STRICT\s0 \s-1LIABILITY\s0, \s-1OR\s0 \s-1TORT\s0 (\s-1INCLUDING\s0 \&\s-1NEGLIGENCE\s0 \s-1OR\s0 \s-1OTHERWISE\s0) \s-1ARISING\s0 \s-1IN\s0 \s-1ANY\s0 \s-1WAY\s0 \s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0 \s-1OF\s0 \s-1THIS\s0 \&\s-1SOFTWARE\s0, \s-1EVEN\s0 \s-1IF\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 \s-1POSSIBILITY\s0 \s-1OF\s0 \s-1SUCH\s0 \s-1DAMAGE\s0. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIgpgv\fR\|(1), \fIpgp\fR\|(1). +.PP + is where the most recent versions of +\&\fBsigncontrol\fR and \fBpgpverify\fR live, along with \s-1PGP\s0 public keys used for +hierarchy administration. diff -rup inn-2.4.3/doc/man/pullnews.1 inn-2.4.4/doc/man/pullnews.1 --- inn-2.4.3/doc/man/pullnews.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/pullnews.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,12 +129,12 @@ .\" ======================================================================== .\" .IX Title "PULLNEWS 1" -.TH PULLNEWS 1 "2005-12-11" "INN 2.4.3" "InterNetNews Documentation" +.TH PULLNEWS 1 "2008-04-26" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" pullnews \- Pull news from one news server and feed it to another .SH "SYNOPSIS" .IX Header "SYNOPSIS" -\&\fBpullnews\fR [\fB\-hq\fR] [\fB\-c\fR \fIconfig\fR] [\fB\-g\fR \fIgroups\fR] [\fB\-p\fR \fIport\fR] +\&\fBpullnews\fR [\fB\-hqx\fR] [\fB\-c\fR \fIconfig\fR] [\fB\-g\fR \fIgroups\fR] [\fB\-p\fR \fIport\fR] [\fB\-r\fR \fIfile\fR] [\fB\-s\fR \fIto-server\fR] [ ...] .SH "REQUIREMENTS" .IX Header "REQUIREMENTS" @@ -190,6 +190,11 @@ create a batch file that can later be fe Normally, \fBpullnews\fR will feed the articles it retrieves to the news server running on localhost. To connect to a different host, specify a server with the \fB\-s\fR flag. +.IP "\fB\-x\fR" 4 +.IX Item "-x" +If the \fB\-x\fR flag is used, an Xref: header is added to any article +that lacks one. It can be useful for instance if articles are fed +to a news server which has \fIxrefslave\fR set in \fIinn.conf\fR. .SH "CONFIG FILE" .IX Header "CONFIG FILE" The config file for \fBpullnews\fR is divided into blocks, one block for each diff -rup inn-2.4.3/doc/man/qio.3 inn-2.4.4/doc/man/qio.3 --- inn-2.4.3/doc/man/qio.3 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/qio.3 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "qio 3" -.TH qio 3 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH qio 3 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" qio \- Quick I/O routines for reading files .SH "SYNOPSIS" @@ -239,4 +239,4 @@ printing out each line preceeded by its Written by Rich \f(CW$alz\fR for InterNetNews. Updated by Russ Allbery . .PP -$Id: qio.3 5912 2002-12-03 05:31:11Z vinocur $ +$Id: qio.3 7736 2008-04-06 09:27:49Z iulius $ diff -rup inn-2.4.3/doc/man/radius.8 inn-2.4.4/doc/man/radius.8 --- inn-2.4.3/doc/man/radius.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/radius.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -21,16 +21,15 @@ .. .de Ve \" End verbatim text .ft R - .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -130,10 +129,9 @@ .\" ======================================================================== .\" .IX Title "RADIUS 8" -.TH RADIUS 8 "2002-12-01" "INN 2.4.0" "InterNetNews Documentation" -.UC +.TH RADIUS 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" -radius \- nnrpd \s-1RADIUS\s0 password authenticator +radius \- nnrpd RADIUS password authenticator .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBradius\fR [\fB\-h\fR] [\fB\-f\fR \fIconfig\fR] @@ -168,9 +166,10 @@ connections using this authenticator: \& auth radius { \& auth: radius \& default: -\& default-domain: example.com +\& default\-domain: example.com \& } .Ve +.PP \&\f(CW\*(C`@example.com\*(C'\fR will be appended to the user-supplied identity, and if \&\s-1RADIUS\s0 authentication failes, the user will be assigned an identity of \&\f(CW\*(C`@example.com\*(C'\fR. @@ -189,7 +188,7 @@ implement it correctly. The \s-1RADIUS\s0 authenticator was originally written by Aidan Cully. This documentation was written by Russ Allbery . .PP -$Id: radius.8 5896 2002-12-03 03:29:19Z rra $ +$Id: radius.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIradius.conf\fR\|(5), \fIreaders.conf\fR\|(5) diff -rup inn-2.4.3/doc/man/radius.conf.5 inn-2.4.4/doc/man/radius.conf.5 --- inn-2.4.3/doc/man/radius.conf.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/radius.conf.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RADIUS.CONF 5" -.TH RADIUS.CONF 5 "2004-05-16" "INN 2.4.2" "InterNetNews Documentation" +.TH RADIUS.CONF 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" radius.conf \- Configuration for nnrpd RADIUS authenticator .SH "DESCRIPTION" @@ -220,7 +220,7 @@ The shared secret with the \s-1RADIUS\s0 This documentation was written by Russ Allbery based on the comments in the sample radius.conf file by Yury B. Razbegin. .PP -$Id: radius.conf.5 6736 2004-05-16 23:06:08Z rra $ +$Id: radius.conf.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIradius\fR\|(1) diff -rup inn-2.4.3/doc/man/rc.news.8 inn-2.4.4/doc/man/rc.news.8 --- inn-2.4.3/doc/man/rc.news.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/rc.news.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RC.NEWS 8" -.TH RC.NEWS 8 "2002-12-02" "INN 2.4.0" "InterNetNews Documentation" +.TH RC.NEWS 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" rc.news \- Start or stop INN daemons .SH "SYNOPSIS" @@ -178,20 +178,20 @@ is recommended to throttle the server fi To start \s-1INN\s0 and leave certain error messages going to the terminal: .PP .Vb 1 -\& su - news -c ~news/bin/rc.news +\& su \- news \-c ~news/bin/rc.news .Ve .PP To run \s-1INN\s0 at startup time from appropriate system boot scripts: .PP .Vb 1 -\& su - news -c ~news/bin/rc.news >/dev/console +\& su \- news \-c ~news/bin/rc.news >/dev/console .Ve .PP To stop \s-1INN\s0 (throttling first): .PP .Vb 2 \& ~news/bin/ctlinnd throttle reason -\& su - news -c '~news/bin/rc.news stop' +\& su \- news \-c '~news/bin/rc.news stop' .Ve .SH "BUGS" .IX Header "BUGS" @@ -205,7 +205,7 @@ user \s-1ID\s0. This manual page written by Jeffrey M. Vinocur for InterNetNews. .PP -$Id: rc.news.8 5912 2002-12-03 05:31:11Z vinocur $ +$Id: rc.news.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), diff -rup inn-2.4.3/doc/man/readers.conf.5 inn-2.4.4/doc/man/readers.conf.5 --- inn-2.4.3/doc/man/readers.conf.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/readers.conf.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "READERS.CONF 5" -.TH READERS.CONF 5 "2005-07-04" "INN 2.4.3" "InterNetNews Documentation" +.TH READERS.CONF 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" readers.conf \- Access control and configuration for nnrpd .SH "DESCRIPTION" @@ -917,7 +917,7 @@ tunnel), use the localaddress: parameter Written by Aidan Cully for InterNetNews. Substantially expanded by Russ Allbery . .PP -$Id: readers.conf.5 7384 2005-07-05 01:28:43Z eagle $ +$Id: readers.conf.5 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIckpasswd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3) diff -rup inn-2.4.3/doc/man/sasl.conf.5 inn-2.4.4/doc/man/sasl.conf.5 --- inn-2.4.3/doc/man/sasl.conf.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/sasl.conf.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SASL.CONF 5" -.TH SASL.CONF 5 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH SASL.CONF 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" sasl.conf \- SASL Configuration file for nnrpd. .SH "DESCRIPTION" @@ -149,8 +149,8 @@ and are mode 0640 or 0660. .Sh "\s-1EXAMPLE\s0" .IX Subsection "EXAMPLE" .Vb 4 -\& openssl req -new -x509 -nodes -out /usr/local/news/lib/cert.pem\e -\& -days 366 -keyout /usr/local/news/lib/cert.pem +\& openssl req \-new \-x509 \-nodes \-out /usr/local/news/lib/cert.pem\e +\& \-days 366 \-keyout /usr/local/news/lib/cert.pem \& chown news:news /usr/local/news/lib/cert.pem \& chmod 640 /usr/local/news/lib/cert.pem .Ve diff -rup inn-2.4.3/doc/man/send-uucp.8 inn-2.4.4/doc/man/send-uucp.8 --- inn-2.4.3/doc/man/send-uucp.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/send-uucp.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.36, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SEND-UUCP 8" -.TH SEND-UUCP 8 "2003-05-04" "INN 2.4.0" "InterNetNews Documentation" +.TH SEND-UUCP 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" send\-uucp \- Send Usenet articles via UUCP .SH "SYNOPSIS" @@ -154,7 +154,7 @@ configuration file \fIsend\-uucp.cf\fR. the form: .PP .Vb 1 -\& site[:host] [compressor [maxsize [batchtime]]] +\& site[:host[:funnel]] [compressor [maxsize [batchtime]]] .Ve .IP "\fIsite\fR" 4 .IX Item "site" @@ -164,6 +164,13 @@ from \fInewsfeeds\fR\|(5). .IX Item "host" The \s-1UUCP\s0 host name to which batches should be sent for this site. If omitted, the news site name will be used as the \s-1UUCP\s0 host name. +.IP "\fIfunnel\fR" 4 +.IX Item "funnel" +In the case of a site configured as a funnel, \fBsend-uucp\fR needs to flush +the channel (or exploder) being used as the target of the funnel instead of +flushing the site. This is the way to tell \fBsend-uucp\fR the name of the +channel or exploder to flush for this site. If not specified, default to +flushing the site. .IP "\fIcompressor\fR" 4 .IX Item "compressor" The compression method to use for batches. This should be one of compress, @@ -188,7 +195,7 @@ a line is a \f(CW\*(C`#\*(C'\fR then the .IX Header "EXAMPLE" Here is an example send\-uucp.cf configuration file: .PP -.Vb 7 +.Vb 8 \& zoetermeer gzip 1048576 5,18,22 \& hoofddorp gzip 1048576 5,18,22 \& pa3ebv gzip 1048576 5,18,22 @@ -196,15 +203,19 @@ Here is an example send\-uucp.cf configu \& manhole compress 1048576 5,18,22 \& owl compress 1048576 \& able +\& pern::MYFUNNEL! .Ve .PP -This defines seven \s-1UUCP\s0 sites. The first four use gzip compression and the +This defines eight \s-1UUCP\s0 sites. The first four use gzip compression and the last three use compress. The first six use a batch size of 1MB, and the last site (able) uses the default of 500,000 bytes. The zoetermeer, hoofddorp, pa3ebv, and manhole sites will only have batches generated for them during the hours of 05:00, 18:00, and 22:00, and the drinkel site will only have batches generated during those hours and 20:00, 00:00, and 02:00. There are no restrictions on when batches will be generated for owl or able. +.PP +The pern site is configured as a funnel into \f(CW\*(C`MYFUNNEL!\*(C'\fR. \fBsend-uucp\fR will +issue \f(CW\*(C`ctlinnd flush MYFUNNEL!\*(C'\fR instead of \f(CW\*(C`ctlinnd flush pern\*(C'\fR. .SH "FILES" .IX Header "FILES" .IP "\fIpathetc\fR/send\-uucp.cf" 4 diff -rup inn-2.4.3/doc/man/sendinpaths.8 inn-2.4.4/doc/man/sendinpaths.8 --- inn-2.4.3/doc/man/sendinpaths.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/sendinpaths.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SENDINPATHS 8" -.TH SENDINPATHS 8 "2002-12-03" "INN 2.4.0" "InterNetNews Documentation" +.TH SENDINPATHS 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" sendinpaths \- Send Usenet Path statistics via e\-mail .SH "SYNOPSIS" diff -rup inn-2.4.3/doc/man/simpleftp.1 inn-2.4.4/doc/man/simpleftp.1 --- inn-2.4.3/doc/man/simpleftp.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/simpleftp.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.36, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SIMPLEFTP 1" -.TH SIMPLEFTP 1 "2003-04-02" "INN 2.4.0" "InterNetNews Documentation" +.TH SIMPLEFTP 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" simpleftp \- Rudimentary FTP client .SH "SYNOPSIS" @@ -137,32 +137,36 @@ simpleftp \- Rudimentary FTP client \&\fBsimpleftp\fR \fIurl\fR [...] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBsimpleftp\fR is a Perl script script that provides basic support for +\&\fBsimpleftp\fR is a Perl script that provides basic support for fetching files with \s-1FTP\s0 in a batch oriented fashion. It takes one or more -\&\s-1FTP\s0 \s-1URLS\s0 on the command line. The file(s) will be retrieved from the +\&\s-1FTP\s0 URLs on the command line. The file(s) will be retrieved from the remote server and placed in the current directory with the same basename -as on the remote; e.g., \f(CW\*(C`ftp://ftp.isc.org/pub/usenet/CONFIG/active.gz\*(C'\fR +as on the remote; e.g., is stored as \fIactive.gz\fR in the current directory. +.PP +The script properly understands usernames, passwords and ports specified +as follows: +.PP +.Vb 1 +\& ftp://user:password@host:port/path/file +.Ve .SH "BUGS" .IX Header "BUGS" \&\fBsimpleftp\fR is an extremely poor substitute for more complete programs like the freely available \fBwget\fR or \fBncftp\fR utilities. It was written only to provide elementary support in \s-1INN\s0 for non-interactive fetching of -the files in without requiring +the files in or + without requiring administrators to install yet another package. Its shortcomings as a general purpose program are too numerous to mention, but one that stands -out is that \fBsimpleftp\fR does not understand the complete syntax of URLs, -only the hostname and pathname parts \*(-- it will not understand username, -password, port or parameter strings. -.PP -The Perl libraries that it uses have the advantage of coming with Perl, -even older versions of Perl, but are not \f(CW\*(C`\-w\*(C'\fR safe and do not work nearly -as well as Net::FTP. +out is that downloaded files by \fBsimpleftp\fR override existing files +with the same name in the local directory. .SH "HISTORY" .IX Header "HISTORY" Tossed off by David C Lawrence for InterNetNews. +Rewritten to use Net::FTP by Julien Elie . .PP -$Id: simpleftp.1 6276 2003-04-03 00:54:02Z rra $ +$Id: simpleftp.1 7739 2008-04-06 09:38:31Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactsync\fR\|(8) +\&\fIactsync\fR\|(8). diff -rup inn-2.4.3/doc/man/sm.1 inn-2.4.4/doc/man/sm.1 --- inn-2.4.3/doc/man/sm.1 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/sm.1 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SM 1" -.TH SM 1 "2004-03-06" "INN 2.4.2" "InterNetNews Documentation" +.TH SM 1 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" sm \- Command\-line interface to the INN storage manager .SH "SYNOPSIS" @@ -205,7 +205,7 @@ succeeded, you should run sm on one toke Written by Katsuhiro Kondou for InterNetNews. Rewritten in \s-1POD\s0 by Russ Allbery . .PP -$Id: sm.1 6683 2004-03-06 18:31:58Z rra $ +$Id: sm.1 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIgrephistory\fR\|(1), \fIhistory\fR\|(5), \fIrnews\fR\|(1), \fIstorage.conf\fR\|(5). diff -rup inn-2.4.3/doc/man/subscriptions.5 inn-2.4.4/doc/man/subscriptions.5 --- inn-2.4.3/doc/man/subscriptions.5 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/subscriptions.5 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.32, Pod::Parser v1.12 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SUBSCRIPTIONS 5" -.TH SUBSCRIPTIONS 5 "2002-02-02" "INN 2.4.0" "InterNetNews Documentation" +.TH SUBSCRIPTIONS 5 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" subscriptions \- Default recommended subscriptions .SH "DESCRIPTION" diff -rup inn-2.4.3/doc/man/tdx-util.8 inn-2.4.4/doc/man/tdx-util.8 --- inn-2.4.3/doc/man/tdx-util.8 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/tdx-util.8 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.14 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "TDX-UTIL 8" -.TH TDX-UTIL 8 "2004-12-19" "INN 2.4.2" "InterNetNews Documentation" +.TH TDX-UTIL 8 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" tdx\-util \- Tradindexed overview manipulation utility .SH "SYNOPSIS" @@ -263,32 +263,32 @@ Dump the master index for the overview d regardless of the overview path specified in \fIinn.conf\fR: .PP .Vb 1 -\& tdx-util -i -p /news/overview +\& tdx\-util \-i \-p /news/overview .Ve .PP Dump the group index for example.test: .PP .Vb 1 -\& tdx-util -g -n example.test +\& tdx\-util \-g \-n example.test .Ve .PP Dump the complete overview information for example.test: .PP .Vb 1 -\& tdx-util -o -n example.test +\& tdx\-util \-o \-n example.test .Ve .PP Audit the entire overview database for any problems: .PP .Vb 1 -\& tdx-util -A +\& tdx\-util \-A .Ve .PP Rebuild the overview information for example.test from a traditional spool directory: .PP .Vb 1 -\& tdx-util -R /news/spool/articles/example/test -n example.test +\& tdx\-util \-R /news/spool/articles/example/test \-n example.test .Ve .PP The last command may be useful for recovering from a bad crash or @@ -298,7 +298,7 @@ using the tradspool article storage meth .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: tdx-util.8 7047 2004-12-19 19:41:49Z rra $ +$Id: tdx-util.8 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fImakehistory\fR\|(8) diff -rup inn-2.4.3/doc/man/tst.3 inn-2.4.4/doc/man/tst.3 --- inn-2.4.3/doc/man/tst.3 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/tst.3 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "tst 3" -.TH tst 3 "2003-01-02" "INN 2.4.0" "InterNetNews Documentation" +.TH tst 3 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" tst \- ternary search trie functions .SH "SYNOPSIS" @@ -201,4 +201,4 @@ Converted to \s-1POD\s0 from Peter A. Fr documentation by Alex Kiernan for InterNetNews 2.4.0. .PP -$Id: tst.3 6106 2003-01-02 12:22:14Z vinocur $ +$Id: tst.3 7736 2008-04-06 09:27:49Z iulius $ diff -rup inn-2.4.3/doc/man/uwildmat.3 inn-2.4.4/doc/man/uwildmat.3 --- inn-2.4.3/doc/man/uwildmat.3 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/man/uwildmat.3 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== @@ -25,11 +25,11 @@ .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "uwildmat 3" -.TH uwildmat 3 "2002-08-10" "INN 2.4.0" "InterNetNews Documentation" +.TH uwildmat 3 "2008-04-06" "INN 2.4.4" "InterNetNews Documentation" .SH "NAME" uwildmat, uwildmat_simple, uwildmat_poison \- Perform wildmat matching .SH "SYNOPSIS" @@ -284,7 +284,7 @@ substantial differences, including the e characters, and has noticable functionality changes. Any bugs present in it aren't Rich's fault. .PP -$Id: uwildmat.3 5652 2002-08-24 17:25:23Z vinocur $ +$Id: uwildmat.3 7736 2008-04-06 09:27:49Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIgrep\fR\|(1), \fIfnmatch\fR\|(3), \fIregex\fR\|(3), \fIregexp\fR\|(3). diff -rup inn-2.4.3/doc/pod/ckpasswd.pod inn-2.4.4/doc/pod/ckpasswd.pod --- inn-2.4.3/doc/pod/ckpasswd.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/ckpasswd.pod 2008-05-05 03:18:36.000000000 -0700 @@ -174,7 +174,7 @@ it will print some sort of error message Written by Russ Allbery for InterNetNews. -$Id: ckpasswd.pod 7215 2005-04-11 20:43:21Z rra $ +$Id: ckpasswd.pod 7526 2006-08-12 22:31:11Z eagle $ =head1 SEE ALSO @@ -182,6 +182,6 @@ readers.conf(5), nnrpd(8) Linux users who want to use PAM should read the Linux-PAM System Administrator's Guide at -L. +L. =cut diff -rup inn-2.4.3/doc/pod/control.ctl.pod inn-2.4.4/doc/pod/control.ctl.pod --- inn-2.4.3/doc/pod/control.ctl.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/control.ctl.pod 2008-05-05 03:18:36.000000000 -0700 @@ -37,11 +37,13 @@ messages that match this line. The foll =item B -The action requested by the control message should be performed. In some -cases, the control script will also send mail to the news administrator -(the argument to --with-news-master given at configure time, C by -default), but if notification of the action should always be sent, use -C instead (see below). +The action requested by the control message should be performed. For +checkgroups messages, this means that the shell commands that should +be run will be mailed to the news administrator (the argument to +B<--with-news-master> given at configure time, C by default); for +other commands, this means that the change will be silently performed. If +you always want notification of actions taken, use C instead (see +below). =item B @@ -86,9 +88,16 @@ expected identity defined by the rest of (C in the above example. This verification is done via B; see pgpverify(8) for more details. -If no logging is specified (with =I as mentioned below), +If no logging is specified (with =I as mentioned below), logging will +be done the same as with B as described above. + +=item B=B + +PGP verification is done as for the B action described above, and notification of successful newgroup and rmgroup control messages and the output of checkgroups messages will be mailed to the news administrator. +(In the case of checkgroups messages, this means that the shell script that +should be run will be mailed to the administrator.) =item B=I @@ -110,7 +119,8 @@ in B=I described above. =item B -A mail message is sent to the news administrator. +A mail message is sent to the news administrator without taking any other +action. =back @@ -179,7 +189,7 @@ probably intended to do (yet). Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: control.ctl.pod 5909 2002-12-03 05:17:18Z vinocur $ +$Id: control.ctl.pod 7569 2006-08-30 18:12:53Z eagle $ =head1 SEE ALSO diff -rup inn-2.4.3/doc/pod/hacking.pod inn-2.4.4/doc/pod/hacking.pod --- inn-2.4.3/doc/pod/hacking.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/hacking.pod 2008-05-05 03:18:36.000000000 -0700 @@ -5,7 +5,7 @@ Normal users can safely skip reading it. guide, resource, and accumulation of tips for maintainers and contributors, and secondarily as documentation of some of INN's internals. -This is $Revision: 7486 $ dated $Date: 2005-12-24 15:00:17 -0800 (Sat, 24 Dec 2005) $. +This is $Revision: 7518 $ dated $Date: 2006-04-14 19:52:06 -0700 (Fri, 14 Apr 2006) $. First of all, if you plan on working on INN source, please start from the current development tree. There may be significant changes from the @@ -662,9 +662,9 @@ there are any other differences, fix the =item 6. Run C. Note that you need to have a copy of svn2cl from - to do this. Start the ChangeLog at -the time of the previous release. (Eventually, the script will be smart -enough to do this for you.) + to do this; at least version 0.7 +is required. Start the ChangeLog at the time of the previous release. +(Eventually, the script will be smart enough to do this for you.) =item 7. diff -rup inn-2.4.3/doc/pod/inn.conf.pod inn-2.4.4/doc/pod/inn.conf.pod --- inn-2.4.3/doc/pod/inn.conf.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/inn.conf.pod 2008-05-05 03:18:36.000000000 -0700 @@ -215,6 +215,16 @@ The main purpose of this parameter is to a particular organization to add a common identity string to the Path: header. The default value is unset. +=item I + +If set, this value is appended to the Path: header of accepted posts +(after I) if it isn't already present as the last element +of the Path: header. The main purpose of this parameter is to make +several news servers appear as one server. The default value is unset. + +Note that the Path: header reads right to left, so appended means inserted +at the leftmost side of the Path: header. + =item I Whether to enable PGP verification of control messages other than cancel. @@ -603,6 +613,15 @@ recorded includes initial connection and clients listed in F is recorded. This is a boolean value and the default is false. +=item I + +When nnrpd(8) is spawned from innd(8), these flags are passed as +arguments to the nnrpd process. This setting does not affect instances +of nnrpd that are started in daemon mode, or instances that are started +via another listener process such as inetd(8) or xinetd(8). Shell +quoting and metacharacters are not supported. This is a string value +and the default is unset. + =item I If set to a value other than C<0>, connections to nnrpd will be refused @@ -1244,7 +1263,7 @@ values for reference. Written by Rich $alz for InterNetNews and since modified, updated, and reorganized by innumerable other people. -$Id: inn.conf.pod 7471 2005-12-15 04:53:16Z eagle $ +$Id: inn.conf.pod 7751 2008-04-06 14:35:40Z iulius $ =head1 SEE ALSO diff -rup inn-2.4.3/doc/pod/innd.pod inn-2.4.4/doc/pod/innd.pod --- inn-2.4.3/doc/pod/innd.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/innd.pod 2008-05-05 03:18:36.000000000 -0700 @@ -228,13 +228,16 @@ is normally buffered. This option chang =head1 CONTROL MESSAGES -Arriving articles that have a Control header are called "control +Arriving articles that have a Control: header are called "control messages". Except for cancel messages, these messages are handled by controlchan(8) via a feed set up in F. (Cancel messages update the history database, so they must be handled internally; the cost of syncing, locking, then unlocking would be too high -given the number of cancel messages that are received.) +given the number of cancel messages that are received. Note that if an +article is cancelled before it is received by the news server, it will +be rejected when it arrives since the history database has been updated; +it is useful for rejecting spam before it arrives.) The distribution of control messages is different than that of standard articles. Control messages are normally filed into the pseudo-newsgroup @@ -252,11 +255,14 @@ the subscription list. For example, to given remote site (normally a bad idea), add C to its subscription list. Normally it's best to exclude the control newsgroups from feeds to keep from sending your peers more control messages than they -care about. +care about. That's why the F pattern C +is as often as not specified (adding this pattern do not prevent control +messages which affect the newsgroups fed to a site from being sent to it). -newgroup and rmgroup control messages receive additional special +checkgroups, newgroup and rmgroup control messages receive additional special treatment. If one of these control messages is approved and posted to the -newsgroup being created or removed, the message will be sent to all sites +newsgroup being created or removed (or to the admin group to which the +checkgroups is posted), the message will be sent to all sites whose subscription patterns would cause them to receive articles posted to that group. For example, if a newgroup control message for a nonexistent newsgroup C is received, it will be sent to any site @@ -267,7 +273,20 @@ control message would create. It is I (specified in the +Newsgroups: header) in order to create the group C, +the sites with the following subscription patterns will receive it: + + *,@news.* + news.* + news.*,!control,!control.* + control,control.* + +but the sites with the following subscription patterns will not receive it: + + *,@news.*,!control,!control.* + comp.*,@news.* If a control message is posted to a group whose name ends with the four characters C<.ctl>, this suffix is stripped off and the control message is @@ -279,11 +298,11 @@ compatibility reasons and should be cons C<.ctl> suffix may be removed in a future version of INN. Finally, articles posted to newsgroups beginning with C are treated -specially. Provided that either that newsgroup exists in the active file +specially. Provided that either that newsgroup exists in the F file or I is set in F, the remainder of the newsgroup is taken to be a site name, as configured in F, and the article is sent to that site. If I is set, the article will be -filed in the group named C (which must exist in the active file). For +filed in the group named C (which must exist in the F file). For example, with I set, an article posted to C will be filed in C and sent to the site C. @@ -345,8 +364,9 @@ dropped. The local site's name (as set with the I parameter in F) and an exclamation point are prepended to the Path: header, provided the first site name in the Path: header is different from the -local one. In addition, I may be similarly prepended to the -Path: header; see inn.conf(5) for the details. +local one. In addition, I and I may be similarly +respectively prepended and appended to the Path: header; see inn.conf(5) +for the details. The Xref: header is removed and a new one created. @@ -483,7 +503,7 @@ disables source routing. Written by Rich $alz for InterNetNews. -$Id: innd.pod 6265 2003-03-19 00:19:59Z vinocur $ +$Id: innd.pod 7748 2008-04-06 13:49:56Z iulius $ =head1 SEE ALSO diff -rup inn-2.4.3/doc/pod/mailpost.pod inn-2.4.4/doc/pod/mailpost.pod --- inn-2.4.3/doc/pod/mailpost.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/mailpost.pod 2008-05-05 03:18:36.000000000 -0700 @@ -1,32 +1,38 @@ =head1 NAME -mailpost - feed an email message into a news group +mailpost - Feed an e-mail message into a newsgroup =head1 SYNOPSIS -B [B<-a> I] [B<-b> I] [B<-c> I] +B [B<-hn>] [B<-a> I] [B<-b> I] [B<-c> I] [B<-d> I] [B<-f> I] [B<-m> I] -[B<-p> I] [B<-r> I] [B<-x> I
[B<:>I
...]] -[I ...] +[B<-o> I] [B<-p> I] [B<-r> I] +[B<-x> I
[B<:>I
...]] I =head1 DESCRIPTION -The B program reads a properly formatted email message from stdin -and feeds it to inews for posting to a news server. I is a -whitespace-separated list of group names to which to post the article. +The B program reads a properly formatted e-mail message from stdin +and feeds it to B for posting to a news server. I is a +whitespace-separated list of group names to which to post the article +(at least one newsgroup must be specified). -Before feeding the article to inews, it checks that the article has not +Before feeding the article to B, it checks that the article has not been seen before, and it changes some headers (cleans up some address -headers and puts ``X-'' in front of unknown headers). +headers, removes X-Trace: and X-Complaints-To:, and puts C in front +of unknown headers). -If the article has been seen before (B records the message-id of -each articles it handles), then the article will be silently dropped. Other -errors will cause the article to be mailed to the newsmaster. +If the article has been seen before (B records the Message-ID of +each article it handles), then the article will be silently dropped. Other +errors will cause the article to be mailed to the newsmaster (selected +at configure time and defaulting to C). -Normally mailpost is run by sendmail(8) via an alias entry: +Normally, B is run by sendmail(8) via an alias entry: -local-mail-wreck-bikes: "|/mailpost - -d local local.mail.rec.bicycles.racing" + local-mail-wreck-bikes: "|/mailpost + -b /var/tmp -d local local.mail.rec.bicycles.racing" + +Instead of F, the mail spool directory can be specified, +or any other directory where the B process has write access. =head1 OPTIONS @@ -34,16 +40,16 @@ local-mail-wreck-bikes: "| I -If the B<-a> flag is used the value given is added to the article -as an Approved header. +If the B<-a> flag is used, the value given is added to the article +as an Approved: header. =item B<-b> I If the B<-b> flag is used, then it defines the location of the database -used to store the message ids of articles sent on. This is to prevent articles -looping around if a news to mail gateway sends them back here. This option may -be required if the mailpost process doesn't have write access to the news tmp -directory (the value of I in inn.conf(5)). +used to store the Message-IDs of articles sent on. This is to prevent articles +looping around if a news-to-mail gateway sends them back here. This option may +be required if the B process does not have write access to the news +temporary directory. The default value is I as set in F. =item B<-c> I @@ -51,55 +57,96 @@ The B<-c> flag indicates a length of tim duplicate messages are received in this interval (by any instance of B using the same database), the article is only posted once, but with Newsgroups: header modified to crosspost the article to all indicated -groups. +groups. The units for I are seconds; a reasonable value may be +anywhere from tens to hundreds of seconds, or even higher, depending on how +long mail can be delayed on its way to your system. =item B<-d> I -If the B<-d> flag is used the value given is added to the article as a +If the B<-d> flag is used, the value given is added to the article as a Distribution: header. =item B<-f> I The B<-f> flag is a synonym for the B<-r> flag. +=item B<-h> + +Print usage information and exit. + =item B<-m> I -If the B<-m> flag is used the value given is added to the articles in a +If the B<-m> flag is used, the value given is added to the article in a Mailing-List: header, if such a header doesn't already exist. +=item B<-n> + +If the B<-n> flag is used, neither an article is posted nor a mail is sent +in case an error occurs. Everything is written to the standard output. + +=item B<-o> I + +Specifies the program to which the resulting article processed by B +should be sent. For debugging purpose, C<-o cat> can be used. The default +value is C. + =item B<-p> I Specifies the port on which B is listening, used for article posting. -If given, B<-p> is passed along to inews. +If given, B<-p> is passed along to B. =item B<-r> I A heuristic is used to determine a reasonable value for the Path: header. The B<-r> flag indicates what to use if no other value can be determined. -=item B<-x> I
[:I
...] +=item B<-x> I
[B<:>I
...] A colon-separated list of additional headers which should be treated as -known headers; these headers will be passed through to inews(1) without -having "X-" prepended. +known headers; these headers will be passed through to B without +having C prepended. + +Known headers are: + + Approved + Content-* + Date + Distribution + From + Mailing-List + Message-ID + MIME-* + References + Return-Path + Sender + Subject =back -=head1 HISTORY +=head1 FILES -Written by Paul Vixie long ago and then hacked up by James Brister for INN -integration. +=over 4 -$Id: mailpost.pod 6658 2004-01-25 23:44:19Z rra $ +=item I/mailpost -=head1 FILES +The Perl script itself used to feed an e-mail message to a newsgroup. + +=item I/mailpost-msgid.dir and I/mailpost-msgid.pag + +The default database files which record previously seen Message-IDs. + +=back -/mailpost-msgid.db database file +=head1 HISTORY -=head1 BUGS +Written by Paul Vixie long ago and then hacked up by James Brister for INN +integration. -Is lacking in configurability. +$Id: mailpost.pod 7795 2008-04-26 08:28:08Z iulius $ =head1 SEE ALSO -active(5), inn.conf(5), nnrpd(8), uwildmat(3). +active(5), inews(1), inn.conf(5), nnrpd(8), uwildmat(3). + +=cut + diff -rup inn-2.4.3/doc/pod/news.pod inn-2.4.4/doc/pod/news.pod --- inn-2.4.3/doc/pod/news.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/news.pod 2008-05-05 03:18:36.000000000 -0700 @@ -1,19 +1,199 @@ -=head1 Changes from 2.4.2 to 2.4.3 +=head1 Changes in 2.4.4 + +=over 2 + +=item * + +Fixed incomplete checking of packet sizes in the B interface in +the no-Unix-domain-sockets case. This is a potential buffer overflow in +dead code since basically all systems INN builds on support Unix domain +sockets these days. Also track the buffer size more correctly in the +client side of this interface for the Unix domain socket case. + +=item * + +Group blocks in F are now correctly parsed and no longer +cause segfaults when loading this file. + +=item * + +Fixed a problem with B continuously segfaulting on amd64 hardware +(and possibly on lots of 64-bit platforms). Many thanks to Ollivier Robert +for his patch and also to Kai Gallasch for having reported the problem and +provided the FreeBSD server to debug it. + +=item * + +B now rotates B's log file, which prevents B +from silently dying when its log file reaches S<2 GB>. + +=item * + +S support has been added to INN thanks to Jakub Bogusz. + +=item * + +Some news clients hang when posting an article through a SSL connection: +it seems that B's SSL routines make it wrongly wait for data +completion. In order to fix the problem, the select() wait is now +just bypassed. However, the IDLE timer stat is currently not collected +for such connections. Thanks to Kachun Lee for this workaround. + +=item * + +Fixed a bug in the display of the used compressor (C was used +if arguments were passed to B or B). + +=item * + +Fixed a bug in B and B which prevented useful error +messages to be seen. Also add the B<-x> flag to B in order +to insert Xref: headers in articles which lack one. + +=item * + +If compiling with S, use its ndbm compatibility layer for +B in preference to searching for a traditional dbm library. +INN also supports S, 4.5 and 4.6 thanks to Marco d'Itri. + +=item * + +B now properly closes stdin/out/err when it becomes a daemon. +The issue was reported by Viktor Pilpenok and fixed by Marco d'Itri. + +=item * + +Added support for Diablo quickhash and hashfeed algorithms. +It allows to distribute the messages among several peers (new B flag +for F). Thanks to Miquel van Smoorenburg for this +implementation in INN. + +=item * + +B now listen on separate sockets for IPv4 and IPv6 connections +if the IPV6_V6ONLY socket option is available. There might also be +operating systems that still have separate IPv4 and IPv6 TCP implementations, +and advanced features like TCP SACK might not be available on v6 sockets. +Thanks to Miquel van Smoorenburg for this patch. + +=item * + +The two configuration options I and I can now +be set on a per-peer basis for B. Setting I +to C tells B to never attempt an IPv6 connection to that +host. Thanks to Miquel van Smoorenburg for this patch. + +=item * + +Added a I parameter to F (modeled on the concept of +I) to permit passing of command line arguments to instances of +B spawned from B. + +=item * + +A new F parameter called I has been added: +it allows to append a common name to the Path: header +on all incoming articles. I and I (if set) +are still appended to the path as usual, but I +is always appended as the last element (e.g. on the leftmost +side of the Path: header). Thanks to Miquel van Smoorenburg for +this feature. + +=item * + +B has been rewritten to use C. Indeed, F +is no longer shipped with S and the script did not work. + +=item * + +B will now check for a timeout and re-open the socket +if required. Additionally, B will switch to +cancel_ctlinnd in case cancel_nntp fails after sending +the Message-ID. Thanks to Christoph Biedl for the patch. A more +detailed documentation has also been written for perl-nocem(8). + +=item * + +The RADIUS configuration is now wrapped in a C block in +F. + +=item * + +Checkgroups when there is nothing to change no longer result in sending +a blank mail to administrators. Besides, no mail is sent by B +for the creation of a newsgroup when the action is C. + +=item * + +Checkgroups are now properly propagated even though the news server +does not carry the groups they are posted to. + +=item * + +B and B now handle wire format messages +so that articles from the spool can be directly fed to them. + +=item * + +Newgroup control messages for existing groups now change their description. +If a mail is sent to administrators, it reminds them to update their +F file. It also warns when there are missing or obsolete +descriptions. Furthermore, the F file is now written prettier +(from one to three tabulations between the name of the group and its +short description) and to.* groups cannot be created. + +=item * + +The sample F file has been extensively updated. + +=item * + +Fixed empty LISTGROUP replies which were not terminated. Thanks to +David Canzi for the patch. + +=item * + +In response to a LIST [file] command, if the file does not exist, +we assume it is not maintained and return C<503> instead of C<215> and +an empty file. Moreover, capability to LIST ACTIVE.TIMES for a wildmat +pattern as its third argument has been added in order to select wanted +newsgroups. + +=item * + +B now tries to authenticate if it does not receive a C<200> return +code after MODE READER. Indeed, it might be able to post even with +a C<201> return code and also with another codes like C<440> or C<480>. + +=item * + +If creating a new F file, set the ownership and mode appropriately. +B also expects fewer things to be private to the news user. Most +of the configuration files will never contain private information like +passwords. + +=item * + +Other minor bug fixes and documentation improvements. + +=back + +=head1 Changes in 2.4.3 =over 2 =item * Previous versions of INN had an optimization for handling XHDR Newsgroups -that used the Xref header from overview. While this does make the command +that used the Xref: header from overview. While this does make the command much faster, it doesn't produce accurate results and breaks the NNTP protocol, so this optimization has been removed. =item * -Fixed a bug in innd that allowed it to accept articles with duplicated +Fixed a bug in B that allowed it to accept articles with duplicated headers if the header occurred an odd number of times. Modified the -programs for rebuilding overview to use the last Xref header if there +programs for rebuilding overview to use the last Xref: header if there are multiple ones to avoid problems with spools that contain such invalid articles. @@ -25,17 +205,17 @@ approve posts to a moderated group. Tha =item * Increase the send and receive buffer on the Unix domain socket used by -ctlinnd. This should allow longer replies (particularly for innstat) on +B. This should allow longer replies (particularly for B) on platforms with very low default Unix domain socket buffer sizes. =item * -rnews's handling of articles with nul characters, NNTP errors, header +B's handling of articles with nul characters, NNTP errors, header problems, and deferrals has been significantly improved. =item * -Thomas Parmelan added support to send-uucp for specifying the funnel or +Thomas Parmelan added support to B for specifying the funnel or exploder site to flush for feeds managed through one and fixed a problem with picking up old stranded work files. @@ -46,7 +226,7 @@ documentation fixes. =back -=head1 Changes from 2.4.1 to 2.4.2 +=head1 Changes in 2.4.2 =over 2 @@ -58,9 +238,9 @@ the old BSD advertising clause has been =item * -make install and make update now always install the newly built binaries, +C and C now always install the newly built binaries, rather than only installing them if the modification times are newer. -This is the behavior that people expect. make install now also +This is the behavior that people expect. C now also automatically builds a new (empty) history database if one doesn't already exist. @@ -68,19 +248,19 @@ exist. The embedded Tcl filter code has been disabled (and will be removed entirely in the next major release of INN). It hasn't worked for some -time and causes innd crashes if compiled in (even if not used). If +time and causes B crashes if compiled in (even if not used). If someone wants to step forward and maintain it, I recommend starting from scratch and emulating the Perl and Python filters. =item * -ctlinnd should now successfully handle messages from INN up to the maximum +B should now successfully handle messages from INN up to the maximum allowable packet size in the protocol, fixing problems sites with many -active peers were having with innstat output. +active peers were having with B output. =item * -Overview generation has been fixed in both makehistory and innd to follow +Overview generation has been fixed in both B and B to follow the rules in the latest NNTP draft rather than just replacing special characters with spaces. This means that the unfolding of folded header lines will not introduce additional, incorrect whitespace in the overview @@ -88,22 +268,22 @@ data. =item * -B now uniformly responds with a 480 or 502 status code to attempts +B now uniformly responds with a C<480> or C<502> status code to attempts to read a newsgroup to which the user does not have access, depending on -whether the user has authenticated. Previously, it returned a 411 status +whether the user has authenticated. Previously, it returned a C<411> status code, claiming the group didn't exist, which confuses the reactive authentication capability of news readers. =item * -If a user is not authorized to approve articles (using the A access -control in readers.conf), articles that include Approved headers will be +If a user is not authorized to approve articles (using the C I +control in F), articles that include Approved: headers will be rejected even if posted to unmoderated groups. Some other site may consider that group to be moderated. =item * -The configuration parser used for readers.conf and others now correctly +The configuration parser used for F and others now correctly handles C<#> inside quoted strings and is more robust against unmatched double quotes. @@ -114,17 +294,17 @@ headers, rather than one. This bug has =item * -A bug that could cause heap corruption and random crashes in innd if INN +A bug that could cause heap corruption and random crashes in B if INN were compiled with Python support has been fixed. =item * -Some problems with innd's tracking of article size and enforcement of the +Some problems with B's tracking of article size and enforcement of the configured maximum article size have been fixed. =item * -pgpverify will now correctly verify signatures generated by GnuPG and +B will now correctly verify signatures generated by GnuPG and better supports GnuPG as the PGP implementation. =item * @@ -135,8 +315,8 @@ showed up on 64-bit platforms like AMD64 =item * -Improved the error reporting in the history database code, in inews, in -controlchan, and in expire. +Improved the error reporting in the history database code, in B, in +B, and in B. =item * @@ -144,21 +324,21 @@ Many other, more minor bugs have also be =back -=head1 Changes from 2.4.0 to 2.4.1 +=head1 Changes in 2.4.1 =over 2 =item * -SECURITY: Handle the special filing of control messages into per-type +SECURITY: Handle the special filing of control messages into per-type newsgroups more robustly. This closes a potentially exploitable buffer overflow. Thanks to Dan Riley for his excellent bug report. =item * -Fixed article handling in innd so that articles without a Path header +Fixed article handling in B so that articles without a Path: header (arising from peers sending malformatted articles or injecting -malformatted articles through rnews) would not cause innd to crash. (This +malformatted articles through rnews) would not cause B to crash. (This was not exploitable.) =item * @@ -167,8 +347,8 @@ Fixed a serious bug in XPAT handling, th =item * -configure now looks for sendmail only in /usr/sbin and /usr/lib, not on -the user's path. This should reduce the need for --with-sendmail if your +C now looks for B only in F and F, not on +the user's path. This should reduce the need for B<--with-sendmail> if your preferred sendmail is in a standard location. =item * @@ -179,14 +359,14 @@ oddly-named newsgroups. =item * -innd now never decreases the high water mark of a newsgroup when -renumbering, which should help ameliorate overview and active file +B now never decreases the high water mark of a newsgroup when +renumbering, which should help ameliorate overview and F file synchronization problems. =item * -Do not close and reopen the history file on ctlinnd reload when the server -is paused or throttled. This was breaking ctlinnd reload all during a +Do not close and reopen the F file on B reload when the server +is paused or throttled. This was breaking B reload all during a server pause. =item * @@ -207,10 +387,10 @@ Documentation and man pages have been cl =head1 Upgrading from 2.3 to 2.4 -The inn.conf parser has changed between INN 2.3 and 2.4. Due to that +The F parser has changed between S and 2.4. Due to that change, options in F that contain whitespace or a few other special characters must be quoted with double quotes, and empty parameters -(parameters with no value) are not allowed. INN 2.4 comes with a script, +(parameters with no value) are not allowed. S comes with a script, B, run automatically during C, that will attempt to fix any problems that it finds with your F file, saving the original as F. @@ -227,20 +407,20 @@ F. Adding: will tell INN to use the same history backend as was used in previous versions. B should take care of this for you. -ovdb is known to have some locking and timing issues related to how nnrpd +ovdb is known to have some locking and timing issues related to how B shuts down (or fails to shut down) the overview databases. If you have -stability problems with ovdb, try setting readserver to true in +stability problems with ovdb, try setting I to C in F. This will funnel all ovdb reads through a single process -with a cleaner interface to the underlying BerkeleyDB database. +with a cleaner interface to the underlying S database. -If you use Perl authentication for nnrpd (if I in -F is true), there have been major changes. See L<"Changes to -Perl Authentication Support for nnrpd"> in F for details. - -Similarly, if you use Python authentication for nnrpd (if -I in F is true), there have been major changes. -See L<"Changes to Python Authentication and Access Control Support for -nnrpd"> in F for details. +If you use Perl authentication for B (if I in +F is C), there have been major changes. See "Changes to +Perl Authentication Support for nnrpd" in F for details. + +Similarly, if you use Python authentication for B (if +I in F is C), there have been major changes. +See "Changes to Python Authentication and Access Control Support for +nnrpd" in F for details. If you use B, it has been completely rewritten and now takes a configuration file to specify its behavior. See its man page for more @@ -252,17 +432,17 @@ for the interfaces) to distinguish it fr since it now supports UTF-8. This may require changes in other software packages that link against INN's libraries. -If you are upgrading from a version prior to INN 2.3, see L<"Upgrading -from 2.2 to 2.3">. +If you are upgrading from a version prior to S, see L. -=head1 Changes from 2.3 to 2.4 +=head1 Changes in 2.4.0 =over 2 =item * IPv6 support has been added, disabled by default. If you have IPv6 -connectivity, build with --enable-ipv6 to try it. There are no known +connectivity, build with B<--enable-ipv6> to try it. There are no known bugs, but please report any problems you find (or even successes, if you use an unusual platform). There are a few changes of interest; further information is available in F. @@ -283,7 +463,7 @@ sections in F and F now optionally supports article injection via IHAVE, see readers.conf(5). Any articles injected this way must have Date, From, Message-ID, Newsgroups, Path, and Subject headers. X-Trace and X-Complaints-To headers will be added if the appropriate options are set @@ -293,13 +473,13 @@ headers). =item * -nnrpd now handles arbitrarily long lines in POST and IHAVE; administrators +B now handles arbitrarily long lines in POST and IHAVE; administrators who want to limit the length of lines in locally posted articles will need to add this to their local filters instead. =item * -nnrpd no longer handles the poorly-specified RFC 977 optional fourth +B no longer handles the poorly-specified S optional fourth argument to the NEWGROUPS command specifying the "distributions" that the command was supposed to apply to. @@ -309,16 +489,16 @@ newsgroups (which is generally fairly sh =item * -nnrpd no longer accepts UTC as a synonym for GMT for NEWGROUPS or NEWNEWS. +B no longer accepts UTC as a synonym for GMT for NEWGROUPS or NEWNEWS. This usage was never portable, and was rejected by the NNTP working group. It is being removed now in the hope that it will be caught before anyone starts to rely on it. =item * -innfeed supports a new peer parameter, I, that if set -to true feeds any backlog to a peer before new articles, see -innfeed.conf(5). When used in combination with I, +B supports a new peer parameter, I, that if set +to C feeds any backlog to a peer before new articles, see +innfeed.conf(5). When used in combination with I set to C<1>, this can be used to enforce in-order delivery of messages to a peer that is doing Xref slaving, avoiding cases where a higher-numbered message is received before a lower-numbered message in the same group. @@ -326,9 +506,9 @@ received before a lower-numbered message =item * Several other, more minor protocol issues have been fixed: connections -rejected due to the connection rate limiting in innd receive 400 replies -instead of 504 or 505, and ARTICLE without an argument will always either -retrieve the current article or return a 423 error, never advance the +rejected due to the connection rate limiting in B receive C<400> replies +instead of C<504> or C<505>, and ARTICLE without an argument will always either +retrieve the current article or return a C<423> error, never advance the current article number to the next valid article. See F for all of the known issues with INN's @@ -336,7 +516,7 @@ compliance with the current NNTP draft. =item * -All accesses to the history file for all parts of INN now go through a +All accesses to the F file for all parts of INN now go through a generic API like the storage and overview subsystems do. This will eventually allow new history implementations to be dropped in without affecting the rest of INN, and will significantly improve the @@ -351,7 +531,7 @@ quoted; see inn.conf(5). It fixes the l values must be included in F even if using the defaults for the use of shell or Perl scripts, and it will serve as the basis for standardizing and cleaning up the configuration file parsing in other -parts of INN. B is run during make update and should convert +parts of INN. B is run during C and should convert an existing F file for you. =item * @@ -365,9 +545,9 @@ that it did. =item * -Two configure options have changed names: --with-tmp-path is now ---with-tmp-dir, and --with-largefiles is now --enable-largefiles, to -improve consistency and better match the autoconf option guidelines. +Two C options have changed names: B<--with-tmp-path> is now +B<--with-tmp-dir>, and B<--with-largefiles> is now B<--enable-largefiles>, to +improve consistency and better match the C option guidelines. =item * @@ -380,29 +560,29 @@ page for details. Local connections to INN support a new special mode, MODE CANCEL, that allows efficient batch cancellation of messages. This is intended to be the preferred interface for external spam and abuse filters like NoCeM. -See L in innd(8) for details. +See "CANCEL FEEDS" in innd(8) for details. =item * Two new options, I and I, have been added to F to aid in building NFS based shared reader/writer platforms. -On the writer server configure nfswriter to true and on all of the readers -configure nfsreader to true; these options add calls to force data out to +On the writer server configure I to C and on all of the readers +configure I to C; these options add calls to force data out to the NFS server and force it to be read directly from the NFS server at the -appropriate moments. Note that it has only been tested on Solaris 8, +appropriate moments. Note that it has only been tested on S, using CNFS as the storage mechanism and tradindexed as the overview method. =item * A new option, I, has been added to F. If set -to true (the default), then the tradindexed overview method will use +to C (the default), then the tradindexed overview method will use mmap() to access its overview data (in 2.3 you couldn't control this; it always used mmap). =item * -Thanks to code contributed by CMU, innfeed can now feed an IMAP server as +Thanks to code contributed by CMU, B can now feed an IMAP server as well as other NNTP servers. See the man page for innfeed(8) for more information. @@ -416,12 +596,12 @@ a remote Samba server is now included. The wildmat functions in INN now support UTF-8, in a way that should allow them to still work with most simple 8-bit character sets in widespread use. As part of this change, some additional wildmat interfaces are now -available and the names have changed (to uwildmat, where u is for +available and the names have changed (to uwildmat, where C is for Unicode). See uwildmat(3) for the details. =item * -The interface between external authenticators and nnrpd is now properly +The interface between external authenticators and B is now properly documented, in F. A library implementing this interface in C is provided, which should make it easier to write additional authenticators resolvers. See libauth(3) for details, and any @@ -429,59 +609,259 @@ of the existing programs in F with setuid rnews or setgid inews, in I +with F parameters containing shell metacharacters but no spaces, +and in F with some versions of B. Fixed a variety of +size-related printf format warnings (e.g., C<%d> vs. C<%ld>) thanks to the work +of Winfried Szukalski. + +=back + +=head1 Changes in 2.3.4 + +=over 2 + +=item * + +LIST ACTIVE no longer returns data when given a single group argument if +the client is not authorized to read that group. + +=item * + +XHDR and XPAT weren't correctly parsing article headers, resulting in +searches for the header "newsgroup" matching the header "newsgroups". + +=item * + +Made CNFS more robust against crashes by actually syncing the cycbuff +headers to disk as was originally intended. Fixed a memory leak in the +tradspool code. + +=item * + +Two bugs in B when using GnuPG were fixed: it now correctly checks +for B (rather than B) when told to use GnuPG and expects the keyring +to be F (not F). + +=item * + +Substantial updates to the sample provided F file. + +=item * + +Compilation fixes with S, S, current versions of +Linux (including with large file support), and Tru64. B fixes for +ReiserFS. + +=item * + +Various bugs in the header handling in B have been fixed, including +hangs when using virtual domains and improper processing of folded headers +under certain circumstances. + +=item * + +Other minor bug fixes and documentation improvements. + +=back + +=head1 Changes in 2.3.3 + +=over 2 + +=item * + +B now supports using GnuPG to check signatures (rather than PGP) +without the B wrapper. GnuPG can check both old-style RSA signatures +and new OpenPGP signatures and is recommended over S. If you have +GnuPG installed, B will use it rather than PGP, which means that +you may have to create a new key ring for GnuPG to use to verify signatures +if you were previously using PGP. + +=item * + +Users can no longer post articles containing Approved: headers to +moderated groups by default; they must be specifically given that +permission with the I parameter in F. See the man page +for more details. + +=item * + +Two bugs in repacking overview index files and a reliability bug with +writing overview data were all fixed in the tradindexed overview method, +hopefully making it somewhat more reliable, particularly for B. + +=item * + +If F exists in the INN binary directory, it will be run with +the start or stop argument whenever B is run. This is available +as a hook for local startup and shutdown code. + +=item * + +The default history table hash sizes were increased because a too-small +value can cause serious performance problems (whereas a too-large hash +just wastes a bit of disk space). + +=item * + +The sample F file has been extensively updated. + +=item * + +Wildmat exclusions (C<@> and C) should now work properly in F +newsgroup patterns. + +=item * + +The implementation of the B<-w> flag for B was fixed; previously, +the value given to B<-w> to change B's notion of the current time +was scaled by too much. + +=item * + +Various other more minor bug fixes, standards compliance fixes, and +documentation improvements. + +=back + +=head1 Changes in 2.3.2 + +=over 2 + +=item * + +B can again handle regular filenames as input as well as storage API +tokens (allowing it to be used to import an old traditional spool). + +=item * + +Several problems with tagged-hash history files have been fixed thanks to +the debugging efforts of Andrew Gierth and Sang-yong Suh. + +=item * + +A very long-standing (since S!) NNTP protocol bug in B was +fixed. The response to an ARTICLE command retrieving a message by Message-ID +should have the Message-ID as the third word of the response, not the +fourth. Fixing this is reported to I cause problems with some +Netscape browsers, but other news servers correctly follow the protocol. + +=item * + +Some serious performance problems with expiration of tradspool should now +be at least somewhat alleviated. tradspool and timehash now know how to +output file names for removal rather than tokens, and B's ability to +remove regular files has been restored. This should bring expiration +times for tradspool back to within a factor of two of pre-storage-API +expiration times. + +=item * + +Added a sample F file and documentation for it and B. + +=back + +=head1 Changes in 2.3.1 + +=over 2 + +=item * + +B no longer downloads the F file, no longer tries to send +postings to moderated groups to the moderator directly, and in general +duplicates less of the functionality of B, instead letting B +handle it. This fixes the problem of B not working properly for users +other than news without being setgid. + +=item * + +Added a man page for B. + +=item * + +A serious bug in the embedded Perl authentication hooks was fixed, thanks +to Jan Rychter. + +=item * + +The annoying compilation problem with embedded Perl filtering on Linux +systems without libgdbm installed should be fixed. + +=item * + +INN now complains loudly at C time if the configured path for +temporary files is world-writeable, since this configuration can be a +security hole. + +=item * + +Many other varied bug fixes and documentation fixes of all sorts. =back =head1 Upgrading from 2.2 to 2.3 There may be additional things to watch out for not listed here; if you -run across any, please let inn-bugs@isc.org know about them. +run across any, please let know about them. -Simply doing a make update is not sufficient to upgrade; the history and +Simply doing a C is not sufficient to upgrade; the history and overview information will also have to be regenerated, since the formats of both files have changed between 2.2 and 2.3. Regardless of whether you were using the storage API or traditional spool under 2.2, you'll need to rebuild your overview and history files. You will also need to add a -storage.conf file, if you weren't using the storage API under INN 2.2. A -good default storage.conf file for 2.2 users would be: +F file, if you weren't using the storage API under S. A +good default F file for 2.2 users would be: method tradspool { newsgroups: * class: 0 } -Create this storage.conf file before rebuilding history or overview. +Create this F file before rebuilding history or overview. If you want to allow readers, or if you want to expire based on newsgroup name, you need to tell INN to generate overview data and pick an overview -method by setting I in F. See INSTALL and inn.conf(5) +method by setting I in F. See F and inn.conf(5) for more details. -The code that generates the dbz index files has been split into a seperate -program, F. F still generates the base history file +The code that generates the dbz index files has been split into a separate +program, B. B still generates the base F file and the overview information, but some of its options have been changed. To rebuild the history and overview files, use something like: - makehistory -b -f history.n -O -T/usr/local/news/tmp -l 600000 + makehistory -b -f history.n -O -T /usr/local/news/tmp -l 600000 -(change the /usr/local/news/tmp path to some directory that has plenty of -temporary space, and leave off -O if you're running a transit-only server +(change the F path to some directory that has plenty of +temporary space, and leave off B<-O> if you're running a transit-only server and don't intend to expire based on group name, and therefore don't need overview.) Or if your overview is buffindexed, use: makehistory -b -f history.n -O -F Both will generate a new history file as F and rebuild overview -at the same time. If you want to preseve a record of expired message IDs +at the same time. If you want to preseve a record of expired Message-IDs in the history file, run: awk 'NF==2 { print; }' < history >> history.n @@ -490,13 +870,13 @@ to append them to the new history file y new history file and make sure it looks right, then generate the new index files and move them into place: - makedbz -s `wc -l and F<.index> files, you may have a F<.pag> file if you're using tagged hash.) For reader machines, F has been replaced by F. @@ -518,16 +898,16 @@ preferred way to fix this would, rather or making it optional, to add support for Diablo-style header feeds and pull-on-demand of articles from a master server.) -The flags for F have changed, plus you probably don't want to -run overchan at all any more. Letting innd write overview data itself +The flags for B have changed, plus you probably don't want to +run B at all any more. Letting B write overview data itself results in somewhat slower performance, but is more reliable and has a better failure mode under high loads. Writing overview data directly is the default, so in a normal upgrade from 2.2 to 2.3 you'll want to comment -out or remove your overchan entry in F and set useoverchan to -false in F. +out or remove your B entry in F and set I to +C in F. -F is no longer installed, and no longer works (even with -traditional spool). If you have an entry for crosspost in F, +B is no longer installed, and no longer works (even with +traditional spool). If you have an entry for B in F, remove it. If you're importing a traditional spool from a pre-storage API INN server, @@ -536,8 +916,8 @@ new server rather than trying to build o the old spool. It's more reliable and ensures that everything gets put into the right place. The easiest way to do this is to generate, on your old server, a list of all of your existing article files and then feed -that list to innxmit. Further details can be found in the FAQ at -I. +that list to B. Further details can be found in the FAQ at +L. If you are using a version of Cleanfeed that still has a line in it like: @@ -547,10 +927,10 @@ you will need to change this line to: $lines = $hdr{'__LINES__'}; -to work with INN 2.3 or later. This is due to an internal optimization of -the interface to embedded filters that's new in INN 2.3. +to work with S or later. This is due to an internal optimization of +the interface to embedded filters that's new in S. -=head1 Changes from 2.2 to 2.3 +=head1 Changes in 2.3.0 =over 2 @@ -567,8 +947,8 @@ three separate overview implementations is very like traditional overview but uses an additional index file. The second (buffindexed) uses large buffers rather than separate files for each group and can handle a higher incoming article rate while still being -fast for readers. The third (ovdb) uses Berkeley DB to store overview -information (so you need to have Berkeley DB installed to use it). The +fast for readers. The third (ovdb) uses S to store overview +information (so you need to have S installed to use it). The I key in F chooses the overview method to use. Note that ovdb has not been as widely tested as the other overview @@ -590,7 +970,7 @@ multiple articles in a single file. See =item * -INN now supports embedded Python filters as well as Perl and TCL filters, +INN now supports embedded Python filters as well as Perl and Tcl filters, and supports Python authentication hooks. =item * @@ -599,24 +979,11 @@ There is preliminary support for news re =item * -Users can no longer post articles containing Approved: headers to -moderated groups by default; they must be specifically given that -permission with the access: parameter in F. See the man -page for more details. - -=item * - To simplify anti-abuse filtering, and to be more compliant with news standards and proposed standards, INN now treats as control messages only -articles containing a Control header. A Subject line beginning with +articles containing a Control: header. A Subject: line beginning with C is no longer sufficient for a message to be considered a control -message, and the Also-Control header is no longer supported. - -=item * - -inews is not installed setgid news and rnews is not installed setuid root -by default any more. If you need the old permissions, you have to give a -flag to configure. See F for more details. +message, and the Also-Control: header is no longer supported. =item * @@ -629,65 +996,115 @@ configured.) The build and installation system has been substantially overhauled. C now updates scripts as well as binaries and documentation, there is better support for parallel builds (C), there is less -make recursion, and far more of the system-dependent configuration is -handled directly by autoconf. libtool build support (including shared +C recursion, and far more of the system-dependent configuration is +handled directly by C. libtool build support (including shared library support) should be better than previous releases. +=back + +=head1 Changes in 2.2.3 + +=over 2 + =item * -All of the applicable bug fixes from the INN 2.2 STABLE series are also -included in INN 2.3. +B is not installed setgid news and B is not installed setuid root +by default any more. If you need the old permissions, you have to give a +flag to configure. See F for more details. + +=item * + +Fixed a security hole when I was enabled in F (not the +default). + +=item * + +Message-IDs are now limited to 250 octets to prevent interoperability +problems with other servers. + +=item * + +Embedded Perl filters now work with S. + +=item * + +Lots of bug fixes and changes for security paranoia. =back -=head1 Changes from 2.1 to 2.2 +=head1 Changes in 2.2.2 =over 2 =item * -New storage.conf file (replaces storage.ctl). +Various minor bug fixes and a Y2K bug fix. The Y2K bug is in version +version 2.2.1 only and will show up after S, 2000 when a news reader +issues a NEWNEWS command for a date prior to the year 2000. + +=back + +=head1 Changes in 2.2.1 + +=over 2 =item * -New (optional) way of handling non-cancel control messages (controlchan) +Various bug fixes, mostly notably fixes for potential buffer overflow +security vulnerabilities. + +=back + +=head1 Changes in 2.2.0 + +=over 2 + +=item * + +New F file (replaces F). + +=item * + +New (optional) way of handling non-cancel control messages (B) that serializes them and prevents server overload from control message storms. =item * -Support for actsyncd to fetch active file with ftp; configured by default -to use if you run actsyncd. -Be sure to read the manual page for actsync to configure an actsync.ign -file for your site, and test simpleftp if you do not configure with wget -or ncftp. Also see . +Support for B to fetch F file with B; configured by default +to use L if you run B. +Be sure to read the manual page for B to configure an F +file for your site, and test B if you do not C with B +or B. Also see L. =item * -Some options to configure are now moved to inn.conf (merge-to-groups and -pgp-verify). +Some options to C are now moved to F (I and +I, without the hyphen). =item * -inndf, a portable version of df(1), is supplied. +B, a portable version of df(1), is supplied. =item * -New cnfsstat program to show stats of cnfs buffers. +New B program to show stats of CNFS buffers. =item * -news2mail and mailpost programs for gatewaying news to mail and mail to +B and B programs for gatewaying news to mail and mail to news are supplied. =item * -pullnews program for doing a sucking feed is provided (not meant for large +B program for doing a sucking feed is provided (not meant for large feeds). =item * -The innshellvars.csh.in script is obsolete (and lives in the obsolete +The B script is obsolete (and lives in the F directory, for now). =back + +=cut diff -rup inn-2.4.3/doc/pod/newsfeeds.pod inn-2.4.4/doc/pod/newsfeeds.pod --- inn-2.4.3/doc/pod/newsfeeds.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/newsfeeds.pod 2008-05-05 03:18:36.000000000 -0700 @@ -123,9 +123,11 @@ poison logic only applies if the poison Control messages follow slightly different propagation rules than normal articles; see innd(8) for the details. Note that most subscriptions -should have C in their pattern list due to those +should have C in their pattern list due to those propagation rules (and since junk is a special internal newsgroup; see -I in inn.conf(5) for more details on what it's used for). +I in inn.conf(5) for more details on what it's used for) and +that the best way to keep control messages local to a site is with a +distribution. A subscription can be further modified by specifying distributions that the site should or should not receive. The default is to send all @@ -182,7 +184,7 @@ exclusion sub-field, incoming articles a the names specified in that exclusion sub-field appear in their Path: headers. If the C entry has a subscription list, that list is prepended to the subscription list of all other entries. For example, -C<*,!control*,!junk,!foo.*> could be used to set the default subscription +C<*,!control,!control.*,!junk,!foo.*> could be used to set the default subscription list for all other feeds so that local postings are not propagated unless C explicitly appears in the site's subscription list. This feature tends to be somewhat confusing since the default subscription is prepended @@ -382,6 +384,50 @@ should be a positive number between 0 an new process will run with. This flag can be used to raise the priority to normal if you're using the I parameter in F. +=item B I + +Specifies the I match expression for this site. It must be in +the form C or C. The Message-ID of the article +is hashed using MD5, which results in a 128-bit hash. The lowest +S<32 bits> are then taken by default as the hashfeed value (which is an +integer). If the hashfeed value modulus C plus one equals C or +is between C and C, the article will be fed to this site. All +these numbers must be integers. + +It is a deterministic way to control the flow of articles and to split a feed. +For instance: + + Q1/2 Feeds about 50% of all articles to this site. + Q2/2 Feeds the other 50% of all articles. + +Another example with three sites: + + Q1-3/10 Feeds about 30% of all articles. + Q4-5/10 Feeds about 20% of all articles. + Q6-10/10 Feeds about 50% of all articles. + +If this flag is specified multiple times, the contents will be +logically Ced together (just one match is needed). + +You can use an extended syntax of the form C or +C. As MD5 generates a 128-bit return value, +it is possible to specify from which byte-offset the 32-bit integer +used by hashfeed starts. The default value for C is C<_0> +and thirteen overlapping values from C<_0> to C<_12> can be used. +Only up to four totally independent values exist: C<_0>, C<_4>, +C<_8> and C<_12>. + +Therefore, it allows to a generate a second level of deterministic +distribution. Indeed, if a news server is fed C, it can go on +splitting thanks to C for instance. + +The algorithm is compatible with the one used by S and up. +If you want to use the legacy quickhashing method used by Diablo +before 5.1, you can put an C<@> sign just after the B flag (for +instance C, but the distribution of the messages is not +perfect with this legacy method whose use is discouraged and for +which offsets cannot be used). + =item B I If the amount of data queued for the site gets to be larger than I @@ -440,7 +486,7 @@ be retrieved given the storage API token The newsgroup the article is in; if cross-posted, then the first of the groups to which the article was posted that this site gets. (The difference from C is that this sends the newsgroup to which the article -was posted even if it's a control message.) +was posted even if it is a control message.) =item h @@ -650,7 +696,7 @@ for nntpsend(8) and funnel feeds for inn The former look like this: - feed.example.com:*,!control*,!junk:Tf,Wnm: + feed.example.com:*,!control,!control.*,!junk:Tf,Wnm: which generates a file named I/feed.example.com containing one line per article consisting of the storage API token, a space, and the @@ -658,12 +704,12 @@ message ID. The latter look like this: - feed.example.com:*,!control*,!junk:Tm:innfeed! + feed.example.com:*,!control,!control.*,!junk:Tm:innfeed! Very similar, except that this is the input to a funnel feed named C. One could also write this as: - example/feed.example.com:*,!control*,!junk:Ap,Tm:innfeed! + example/feed.example.com:*,!control,!control.*,!junk:Ap,Tm:innfeed! (note the B so that articles that contain just C in the Path: header will still be sent), which is completely equivalent except that @@ -733,15 +779,14 @@ entry for controlchan(8). This program only wants information about articles posted to a control newsgroup other than control.cancel, which due to the sorting of control messages described in innd(8) will send it all control messages except for -cancel messages provided that control.cancel exists. In this case, we -also exclude any article with a distribution of C. -B gets the storage API token, the name of the sending site -(for processing old-style ihave and sendme control messages, be sure to -read about I in controlchan(8)), and the message ID for each -article. +cancel messages. In this case, we also exclude any article with a +distribution of C. B gets the storage +API token, the name of the sending site (for processing old-style ihave +and sendme control messages, be sure to read about I in +controlchan(8)), and the message ID for each article. For many other examples, including examples of the special C site -entry, see the example newsfeeds file distributed with INN. Also see the +entry, see the example F file distributed with INN. Also see the install documentation that comes with INN for information about setting up the standard newsfeeds entries used by most sites. @@ -750,7 +795,7 @@ the standard newsfeeds entries used by m Written by Rich $alz for InterNetNews. Reformatted and rewritten in POD by Russ Allbery . -$Id: newsfeeds.pod 7134 2005-03-05 21:19:44Z vinocur $ +$Id: newsfeeds.pod 7741 2008-04-06 09:51:47Z iulius $ =head1 SEE ALSO diff -rup inn-2.4.3/doc/pod/nnrpd.pod inn-2.4.4/doc/pod/nnrpd.pod --- inn-2.4.3/doc/pod/nnrpd.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/nnrpd.pod 2008-05-05 03:18:36.000000000 -0700 @@ -30,6 +30,12 @@ configuration files will be immediately connections. If you are instead running B with the B<-D> option, any configuration changes won't take effect until B is restarted. +The F setting I can be used to pass any of the +options below to instances of B that are spawned directly from +B. Many options only make sense when B<-D> is used, so these +options should not be used with I. See also the discussion +of I in inn.conf(5). + When I in F is not 0, it will also reject connections if the load average is greater than that value (typically 16). B can also prevent high-volume posters from abusing your @@ -281,7 +287,7 @@ support added by Rob Robertston [B<-hq>] [B<-c> I] [B<-g> I] [B<-p> I] +B [B<-hqx>] [B<-c> I] [B<-g> I] [B<-p> I] [B<-r> I] [B<-s> I] [ ...] =head1 REQUIREMENTS @@ -72,6 +72,12 @@ Normally, B will feed the arti server running on localhost. To connect to a different host, specify a server with the B<-s> flag. +=item B<-x> + +If the B<-x> flag is used, an Xref: header is added to any article +that lacks one. It can be useful for instance if articles are fed +to a news server which has I set in F. + =back =head1 CONFIG FILE diff -rup inn-2.4.3/doc/pod/simpleftp.pod inn-2.4.4/doc/pod/simpleftp.pod --- inn-2.4.3/doc/pod/simpleftp.pod 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/doc/pod/simpleftp.pod 2008-05-05 03:18:36.000000000 -0700 @@ -8,37 +8,39 @@ B I [...] =head1 DESCRIPTION -B is a Perl script script that provides basic support for +B is a Perl script that provides basic support for fetching files with FTP in a batch oriented fashion. It takes one or more -FTP URLS on the command line. The file(s) will be retrieved from the +FTP URLs on the command line. The file(s) will be retrieved from the remote server and placed in the current directory with the same basename -as on the remote; e.g., C +as on the remote; e.g., L is stored as F in the current directory. +The script properly understands usernames, passwords and ports specified +as follows: + + ftp://user:password@host:port/path/file + =head1 BUGS B is an extremely poor substitute for more complete programs like the freely available B or B utilities. It was written only to provide elementary support in INN for non-interactive fetching of -the files in L without requiring +the files in L or +L without requiring administrators to install yet another package. Its shortcomings as a general purpose program are too numerous to mention, but one that stands -out is that B does not understand the complete syntax of URLs, -only the hostname and pathname parts -- it will not understand username, -password, port or parameter strings. - -The Perl libraries that it uses have the advantage of coming with Perl, -even older versions of Perl, but are not C<-w> safe and do not work nearly -as well as Net::FTP. +out is that downloaded files by B override existing files +with the same name in the local directory. =head1 HISTORY Tossed off by David C Lawrence for InterNetNews. +Rewritten to use Net::FTP by Julien Elie . -$Id: simpleftp.pod 6276 2003-04-03 00:54:02Z rra $ +$Id: simpleftp.pod 7739 2008-04-06 09:38:31Z iulius $ =head1 SEE ALSO -actsync(8) +actsync(8). =cut diff -rup inn-2.4.3/expire/Makefile inn-2.4.4/expire/Makefile --- inn-2.4.3/expire/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/expire/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -87,37 +87,45 @@ depend: Makefile $(SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. convdate.o: convdate.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h expire.o: expire.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inndcomm.h ../include/libinn.h ../include/paths.h \ - ../include/storage.h -expireover.o: expireover.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/qio.h ../include/libinn.h ../include/ov.h \ - ../include/storage.h ../include/inn/history.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/history.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h \ + ../include/inndcomm.h ../include/libinn.h ../include/paths.h \ + ../include/storage.h +expireover.o: expireover.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ../include/paths.h ../include/storage.h fastrm.o: fastrm.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ - ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ + ../include/storage.h grephistory.o: grephistory.c ../include/clibrary.h ../include/config.h \ - ../include/inn/defines.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h ../include/paths.h ../include/storage.h + ../include/inn/defines.h ../include/inn/system.h \ + ../include/inn/history.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h ../include/libinn.h \ + ../include/paths.h ../include/storage.h makedbz.o: makedbz.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/dbz.h ../include/libinn.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/qio.h ../include/paths.h ../include/storage.h -makehistory.o: makehistory.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/wait.h ../include/inn/buffer.h \ - ../include/inn/history.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/inn/wire.h \ - ../include/libinn.h ../include/ov.h ../include/storage.h \ - ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/dbz.h ../include/libinn.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h ../include/inn/qio.h \ + ../include/libinn.h ../include/paths.h ../include/storage.h +makehistory.o: makehistory.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/wait.h ../include/config.h ../include/inn/buffer.h \ + ../include/inn/defines.h ../include/inn/history.h \ + ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ + ../include/inn/wire.h ../include/libinn.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h ../include/paths.h \ + ../include/storage.h prunehistory.o: prunehistory.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/history.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/paths.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/inn/history.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h ../include/libinn.h \ + ../include/paths.h diff -rup inn-2.4.3/frontends/Makefile inn-2.4.4/frontends/Makefile --- inn-2.4.3/frontends/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -120,55 +120,66 @@ depend: Makefile $(SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. ctlinnd.o: ctlinnd.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inndcomm.h ../include/libinn.h \ - ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inndcomm.h ../include/libinn.h \ + ../include/paths.h decode.o: decode.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h encode.o: encode.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h getlist.o: getlist.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ - ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/libinn.h \ + ../include/paths.h inews.o: inews.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h ../include/nntp.h ../include/paths.h -innconfval.o: innconfval.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h +innconfval.o: innconfval.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ovdb_init.o: ovdb_init.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/ov.h ../include/storage.h \ - ../include/inn/history.h ../storage/ovdb/ovdb.h \ - ../storage/ovdb/ovdb-private.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../storage/ovdb/ovdb.h \ + ../storage/ovdb/ovdb-private.h ovdb_monitor.o: ovdb_monitor.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/setproctitle.h ../include/portable/wait.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h ../include/ov.h ../include/storage.h \ - ../include/inn/history.h ../storage/ovdb/ovdb.h \ - ../storage/ovdb/ovdb-private.h -ovdb_server.o: ovdb_server.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h ../include/portable/time.h \ - ../include/portable/setproctitle.h ../include/portable/socket.h \ - ../include/portable/wait.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/paths.h \ - ../include/storage.h ../include/ov.h ../include/inn/history.h \ - ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/setproctitle.h \ + ../include/config.h ../include/portable/wait.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h +ovdb_server.o: ovdb_server.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/mmap.h ../include/config.h \ + ../include/portable/time.h ../include/portable/setproctitle.h \ + ../include/portable/socket.h ../include/portable/wait.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ../include/paths.h \ + ../include/storage.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../storage/ovdb/ovdb.h \ + ../storage/ovdb/ovdb-private.h ovdb_stat.o: ovdb_stat.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/ov.h \ - ../include/storage.h ../include/inn/history.h ../include/paths.h \ - ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h ../include/paths.h \ + ../include/storage.h ../storage/ovdb/ovdb.h \ + ../storage/ovdb/ovdb-private.h rnews.o: rnews.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/wait.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/wire.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/wait.h ../include/config.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h \ + ../include/inn/wire.h ../include/libinn.h ../include/nntp.h \ + ../include/paths.h ../include/storage.h sm.o: sm.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/qio.h ../include/storage.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/qio.h ../include/storage.h diff -rup inn-2.4.3/frontends/inews.c inn-2.4.4/frontends/inews.c --- inn-2.4.3/frontends/inews.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/inews.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inews.c 7069 2004-12-19 22:15:41Z rra $ +/* $Id: inews.c 7769 2008-04-13 08:11:41Z iulius $ ** ** Send an article (prepared by someone on the local site) to the ** master news server. @@ -989,8 +989,12 @@ main(int ac, char *av[]) if ((j = atoi(buff)) != NNTP_BAD_COMMAND_VAL) i = j; - if (i != NNTP_POSTOK_VAL) - die("you do not have permission to post"); + if (i != NNTP_POSTOK_VAL) { + /* We try to authenticate in case it is all the same possible + * to post. */ + if (NNTPsendpassword((char *)NULL, FromServer, ToServer) < 0) + die("you do not have permission to post"); + } deadfile = NULL; } diff -rup inn-2.4.3/frontends/mailpost.in inn-2.4.4/frontends/mailpost.in --- inn-2.4.3/frontends/mailpost.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/mailpost.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,21 +1,24 @@ #! /usr/bin/perl # fixscript will replace this line with require innshellvars.pl -# mailpost - yet another mail-to-news filter +# mailpost - Yet another mail-to-news filter +# +# $Id: mailpost.in 7795 2008-04-26 08:28:08Z iulius $ +# # 21feb00 [added "lc" to duplicate header fixer stmt to make it case-insensitive] # doka 11may99 [fixed duplicate headers problem] -# brister 19oct98 cleaned up somewhat for perl v. 5. and made a little more robust. -# vixie 29jan95 RCS'd [$Id: mailpost.in 6793 2004-05-17 09:25:39Z rra $] +# brister 19oct98 [cleaned up somewhat for Perl v. 5. and made a little more robust] +# vixie 29jan95 [RCS'd] # vixie 15jun93 [added -m] # vixie 30jun92 [added -a and -d] # vixie 17jun92 [attempt simple-minded fixup to $path] # vixie 14jun92 [original] -use Getopt::Std ; +use Getopt::Std; use IPC::Open3; use IO::Select; use Sys::Syslog; -use strict ; +use strict; my $debugging = 0 ; my $tmpfile ; @@ -23,8 +26,8 @@ my $tmpfile2 ; my $msg ; END { - unlink ($tmpfile) if $tmpfile ; # incase we die() - unlink ($tmpfile2) if $tmpfile2 ; # incase we die() + unlink ($tmpfile) if $tmpfile ; # in case we die() + unlink ($tmpfile2) if $tmpfile2 ; # in case we die() } my $LOCK_SH = 1; @@ -40,9 +43,9 @@ openlog $usage, "pid", $inn::syslog_faci $usage .= "[ -r addr ][ -f addr ][ -a approved ][ -d distribution ]" . " [ -m mailing-list ][ -b database ][ -o output-path ] [ -c wait-time ]" . - " [ -x header [:header...] ] [ -p port ] newsgroups" ; + " [ -x header[:header...] ] [ -p port ] newsgroups" ; -use vars qw($opt_r $opt_f $opt_a $opt_d $opt_m $opt_b $opt_n $opt_o $opt_h $opt_c $opt_x $opt_p ) ; +use vars qw($opt_r $opt_f $opt_a $opt_d $opt_m $opt_b $opt_n $opt_o $opt_h $opt_c $opt_x $opt_p) ; getopts("hr:f:a:d:m:b:no:c:x:p:") || die "usage: $usage\n" ; die "usage: $usage\n" if $opt_h ; @@ -58,7 +61,7 @@ my $Maintainer = $inn::newsmaster || "us my $WhereTo = $opt_o || $Submit ; my $Mailname = $inn::fromhost ; -# can't use $inn::tmpdir as we're usually not running as news +# Can't use $inn::pathtmp as we're usually not running as news. my $Tmpdir = "/var/tmp" ; if ($debugging || $opt_n) { @@ -70,10 +73,10 @@ chop ($Mailname = `/bin/hostname`) if ! # -# our command-line argument(s) are the list of newsgroups to post to. +# Our command-line argument(s) are the list of newsgroups to post to. # -# there may be a "-r sender" or "-f sender" which becomes the $path -# (which is in turn overridden below by various optional headers.) +# There may be a "-r sender" or "-f sender" which becomes the $path +# (which is in turn overridden below by various optional headers). # # -d (distribution) and -a (approved) are also supported to supply # or override the mail headers by those names. @@ -114,11 +117,11 @@ if ($opt_x) { $newsgroups = join ",", @ARGV ; -die "usage: $0 newsgroup [newsgroup]\n" unless $newsgroups; +die "usage: $0 newsgroup [newsgroup ...]\n" unless $newsgroups; # -# do the header. our input is a mail message, with or without the From_ +# Do the header. Our input is a mail message, with or without the From. # #$message_id = sprintf("", time, $$, $Hostname); @@ -166,7 +169,7 @@ for (;;) { last unless defined $_ ; chomp ; - # gather up a single header with possible continuation lines into $line + # Gather up a single header with possible continuation lines into $line. if (/^\s+/) { if (! $line) { $msg = "First line with leading whitespace!" ; @@ -178,11 +181,11 @@ for (;;) { next ; } - # On the first header $line will be undefined. - ($_, $line) = ($line, $_) ; # swap $line and $_ ; + # On the first header, $line will be undefined. + ($_, $line) = ($line, $_) ; # Swap $line and $_. last if defined($_) && /^$/ ; - next if /^$/ ; # only on first header will this happen + next if /^$/ ; # Only on first header will this happen. push @errorText, "($_)\n"; @@ -246,14 +249,14 @@ for (;;) { next ; } - # strip out news trace headers since otherwise posting may fail. other - # trace headers will be renamed to add 'X-' so we don't have to worry - # about them. + # Strip out news X-Trace: and X-Complaints-To: headers since otherwise posting + # may fail. Other trace headers will be renamed to add 'X-' so we don't have + # to worry about them. if (/^X-(Trace|Complaints-To):\s*/sio) { next ; } - # random unknown header. prepend 'X-' if it's not already there. + # Random unknown header. Prepend 'X-' if it is not already there. $_ = "X-$_" unless /^X-/sio ; $weird_mail_hdrs .= "$_\n"; } @@ -268,7 +271,7 @@ if ($path !~ /\!/) { } $real_news_hdrs .= "Subject: ${subject}\n"; -$real_news_hdrs .= "Message-ID: ${msgIdHdr}\n" if defined($message_id); +$real_news_hdrs .= "Message-ID: ${msgIdHdr}\n" if defined($message_id); $real_news_hdrs .= "Mailing-List: ${mailing_list}\n" if defined($mailing_list); $real_news_hdrs .= "Distribution: ${distribution}\n" if defined($distribution); $real_news_hdrs .= "Approved: ${approved}\n" if defined($approved); @@ -278,20 +281,20 @@ $real_news_hdrs .= "References: ${refere my %headers = (); $real_news_hdrs =~ s/((.*?:) .*?($|\n)([ \t]+.*?($|\n))*)/$headers{lc$2}++?"":"$1"/ges; -# Inews writes error messages to stdout. We want to capture those and mail -# them back to the newsmaster. Trying to write and read from a subprocess is +# inews writes error messages to stdout. We want to capture those and mail +# them back to the newsmaster. Trying to write and read from a subprocess is # ugly and prone to deadlock, so we use a temp file. $tmpfile = sprintf "%s/mailpost.%d.%d", $Tmpdir, time, $$ ; if (!open TMPFILE,">$tmpfile") { - $msg = "cant open temp file ($tmpfile): $!" ; + $msg = "can't open temp file ($tmpfile): $!" ; $tmpfile = undef ; - syslog "err", "$msg\n" unless $debugging || -t STDERR ; - open TMPFILE, "|" . sprintf ($Sendmail, $Maintainer) || + syslog("err", "$msg\n") unless $debugging || -t STDERR ; + open(TMPFILE, "|" . sprintf ($Sendmail, $Maintainer)) || die "die(no tmpfile): sendmail: $!\n" ; print TMPFILE <<"EOF"; To: $Maintainer -Subject: mailpost failure ($newsgroups): $msg +Subject: mailpost failure ($newsgroups): $msg -------- Article Contents @@ -308,61 +311,61 @@ EOF my $rest; $rest .= $_ while (); -$rest =~ s/\n*$/\n/g; # Remove trailing \n except very last +$rest =~ s/\n*$/\n/g; # Remove trailing \n except very last. print TMPFILE $rest; close TMPFILE ; if ( ! $tmpfile ) { - # we had to bail and mail the article to the admin. + # We had to bail and mail the article to the admin. exit (0) ; } ## ## We've got the article in a temp file and now we validate some of the -## data we found and update our message-id database. +## data we found and update our Message-ID database. ## mailArtAndDie ("no From: found") unless $from; mailArtAndDie ("no Message-ID: found") unless $message_id; -mailArtAndDie ("Malformed message ID ($message_id)") +mailArtAndDie ("Malformed Message-ID ($message_id)") if ($message_id !~ /\<(\S+)\@(\S+)\>/); -# update (with locking) our message-id database. this is used to make sure we +# Update (with locking) our Message-ID database. This is used to make sure we # don't loop our own gatewayed articles back through the mailing list. -my ($lhs, $rhs) = ($1, $2); # of message_id match above. +my ($lhs, $rhs) = ($1, $2); # Of message_id matched above. $rhs =~ tr/A-Z/a-z/; $message_id = "${lhs}\@${rhs}"; -push @errorText, "(TAS message-id database for $message_id)\n"; +push @errorText, "(TAS Message-ID database for $message_id)\n"; my $lockfile = sprintf("%s.lock", $Database); -open LOCKFILE, "<$lockfile" || - open LOCKFILE, ">$lockfile" || +open(LOCKFILE, "<$lockfile") || + open(LOCKFILE, ">$lockfile") || mailArtAndDie ("can't open $lockfile: $!") ; my $i ; for ($i = 0 ; $i < 5 ; $i++) { - flock LOCKFILE, $LOCK_EX && last ; + flock(LOCKFILE, $LOCK_EX) && last ; sleep 1 ; } mailArtAndDie ("can't lock $lockfile: $!") if ($i == 5) ; my %DATABASE ; -dbmopen %DATABASE, $Database, 0666 || mailArtAndDie ("can't dbmopen $lockfile: $!"); +dbmopen(%DATABASE, $Database, 0666) || mailArtAndDie ("can't dbmopen $Database: $!"); if (defined $DATABASE{$message_id}) { exit 0 if (!$opt_c) ; ## crosspost -c - $newsgroups = append_newsgroups($DATABASE{$message_id}, $newsgroups) ; + $newsgroups = &append_newsgroups($DATABASE{$message_id}, $newsgroups) ; syslog "err", "crosspost $newsgroups\n" if $debugging ; } @@ -371,43 +374,43 @@ $DATABASE{$message_id} = $newsgroups ; mailArtAndDie ("TAS didn't set $message_id") unless defined $DATABASE{$message_id}; -dbmclose %DATABASE || mailArtAndDie ("can't dbmclose $lockfile: $!") ; +dbmclose(%DATABASE) || mailArtAndDie ("can't dbmclose $Database: $!") ; -flock LOCKFILE, $LOCK_UN || mailArtAndDie ("can't unlock $lockfile: $!"); +flock(LOCKFILE, $LOCK_UN) || mailArtAndDie ("can't unlock $lockfile: $!"); close LOCKFILE ; -## for crosspost +## For crosspost. if ($opt_c) { if (fork() != 0) { - undef $tmpfile; # dont unlink $tmpfile + undef $tmpfile; # Don't unlink $tmpfile. exit 0; } sleep $opt_c ; - open LOCKFILE, "<$lockfile" || - open LOCKFILE, ">$lockfile" || + open(LOCKFILE, "<$lockfile") || + open(LOCKFILE, ">$lockfile") || mailArtAndDie ("can't open $lockfile: $!") ; my $i ; for ($i = 0 ; $i < 5 ; $i++) { - flock LOCKFILE, $LOCK_EX && last ; + flock(LOCKFILE, $LOCK_EX) && last ; sleep 1 ; } mailArtAndDie ("can't lock $lockfile: $!") if ($i == 5) ; my $umask_bak = umask(); umask(000); - dbmopen %DATABASE, $Database, 0666 || mailArtAndDie ("can't dbmopen $lockfile: $!"); + dbmopen(%DATABASE, $Database, 0666) || mailArtAndDie ("can't dbmopen $Database: $!"); umask($umask_bak); my $dup = undef ; syslog "err", "check " . $DATABASE{$message_id} . " : $newsgroups\n" if $debugging ; $dup = 1 if ($DATABASE{$message_id} ne $newsgroups) ; - dbmclose %DATABASE || mailArtAndDie ("can't dbmclose $lockfile: $!") ; + dbmclose(%DATABASE) || mailArtAndDie ("can't dbmclose $Database: $!") ; - flock LOCKFILE, $LOCK_UN || mailArtAndDie ("can't unlock $lockfile: $!"); + flock(LOCKFILE, $LOCK_UN) || mailArtAndDie ("can't unlock $lockfile: $!"); close LOCKFILE ; if (defined($dup)) { @@ -415,11 +418,11 @@ if ($opt_c) { exit 0 ; } - # replace Newsgroups - open TMPFILE, "$tmpfile" || mailArtAndDie ("cannot open temp file ($tmpfile): $!") ; + # Replace Newsgroups:. + open(TMPFILE, "$tmpfile") || mailArtAndDie ("can't open temp file ($tmpfile): $!") ; $tmpfile2 = sprintf "%s/mailpost-crosspost.%d.%d", $Tmpdir, time, $$ ; if ( !open TMPFILE2, ">$tmpfile2") { - $msg = "cant open temp file ($tmpfile2): $!" ; + $msg = "can't open temp file ($tmpfile2): $!" ; $tmpfile2 = undef ; die $msg ; } @@ -438,18 +441,18 @@ if ($opt_c) { my $rest; $rest .= $_ while (); - $rest =~ s/\n*$/\n/g; # Remove trailing \n except very last + $rest =~ s/\n*$/\n/g; # Remove trailing \n except very last. print TMPFILE2 $rest; close TMPFILE2 ; close TMPFILE ; - rename $tmpfile2, $tmpfile || mailArtAndDie ("cannot rename $tmpfile2 $tmpfile: $!") ; + rename($tmpfile2, $tmpfile) || mailArtAndDie ("can't rename $tmpfile2 $tmpfile: $!") ; $tmpfile2 = undef ; } if (!open INEWS, "$WhereTo < $tmpfile 2>&1 |") { - mailArtAndDie ("cant start: $WhereTo: $!") ; + mailArtAndDie ("can't start $WhereTo: $!") ; } my @inews = ; @@ -470,18 +473,19 @@ sub mailArtAndDie { print STDERR $msg,"\n" if -t STDERR ; - open SENDMAIL, "|" . sprintf ($Sendmail,$Maintainer) || + open(SENDMAIL, "|" . sprintf ($Sendmail,$Maintainer)) || die "die($msg): sendmail: $!\n" ; print SENDMAIL <<"EOF" ; To: $Maintainer -Subject: mailpost failure ($newsgroups): $msg - +Subject: mailpost failure ($newsgroups) + $msg + EOF if ($tmpfile && -f $tmpfile) { print SENDMAIL "\n-------- Article Contents\n\n" ; - open FILE, "<$tmpfile" || die "open($tmpfile): $!\n" ; + open(FILE, "<$tmpfile") || die "open($tmpfile): $!\n" ; print SENDMAIL while ; close FILE ; } else { @@ -491,12 +495,12 @@ EOF # unlink $tmpfile ; - exit (0) ; # using a non-zero exit may cause problems. + exit (0) ; # Using a non-zero exit may cause problems. } # -# take 822-format name (either "comment comment" or "addr (comment)") +# Take 822-format name (either "comment comment" or "addr (comment)") # and return in always-qualified 974-format ("addr (comment)"). # sub fix_sender_addr { @@ -531,7 +535,7 @@ sub fix_sender_addr { } # -# delete leading and trailing blanks +# Delete leading and trailing blanks. # sub dltb { @@ -552,9 +556,10 @@ sub append_newsgroups ($$) { if ( !grep($_ eq $newsgroup,@orig)) { push @orig, $newsgroup ; } else { -# mailArtAndDie ("Duplicated Newsgroups: $newsgroup") ; +# mailArtAndDie ("Duplicate Newsgroups: $newsgroup") ; } } return join ",", @orig ; } + diff -rup inn-2.4.3/frontends/ovdb_init.c inn-2.4.4/frontends/ovdb_init.c --- inn-2.4.3/frontends/ovdb_init.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/ovdb_init.c 2008-05-05 03:18:36.000000000 -0700 @@ -466,16 +466,11 @@ int main(int argc, char **argv) if(ovdb_conf.readserver) { if(ovdb_check_pidfile(OVDB_SERVER_PIDFILE) == false) { notice("starting ovdb server"); - switch(fork()) { - case -1: - sysdie("cannot fork"); - case 0: - setsid(); - execl(concatpath(innconf->pathbin, "ovdb_server"), - "ovdb_server", SPACES, NULL); - syswarn("cannot exec ovdb_server"); - _exit(1); - } + daemonize(innconf->pathtmp); + execl(concatpath(innconf->pathbin, "ovdb_server"), "ovdb_server", + SPACES, NULL); + syswarn("cannot exec ovdb_server"); + _exit(1); } else warn("ovdb_server already running"); } diff -rup inn-2.4.3/frontends/ovdb_stat.c inn-2.4.4/frontends/ovdb_stat.c --- inn-2.4.3/frontends/ovdb_stat.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/ovdb_stat.c 2008-05-05 03:18:36.000000000 -0700 @@ -266,12 +266,18 @@ static struct datatab LOCK_tab[] = { { INT32, F(st_nobjects), -1, -1, "Current objects" }, { INT32, F(st_maxnobjects), -1, -1, "Maximum objects" }, #endif +#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 4 + { INT32, F(st_lock_wait), -1, -1, "Lock conflicts" }, +#else { INT32, F(st_nconflicts), -1, -1, "Lock conflicts" }, +#endif { INT32, F(st_nrequests), -1, -1, "Lock requests" }, { INT32, F(st_nreleases), -1, -1, "Lock releases" }, { DIFF32, F(st_nrequests), F(st_nreleases), F(st_ndeadlocks), "Outstanding locks" }, -#if DB_VERSION_MAJOR >= 4 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 0) - { INT32, F(st_nnowaits), -1, -1, "Lock requests that would have waited" }, +#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 4 + { INT32, F(st_lock_nowait), -1, -1, "Lock conflicts w/o subsequent wait" }, +#elif DB_VERSION_MAJOR >= 4 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 0) + { INT32, F(st_nnowaits), -1, -1, "Lock conflicts w/o subsequent wait" }, #endif { INT32, F(st_ndeadlocks), -1, -1, "Deadlocks" }, #if DB_VERSION_MAJOR >= 4 diff -rup inn-2.4.3/frontends/pullnews.in inn-2.4.4/frontends/pullnews.in --- inn-2.4.3/frontends/pullnews.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/pullnews.in 2008-05-05 03:18:36.000000000 -0700 @@ -4,7 +4,7 @@ # Start Date: Sat, 10 Oct 1998 21:40:11 +0200 # Project: INN # File: pullnews.pl -# RCSId: $Id: pullnews.in 6782 2004-05-17 07:46:10Z rra $ +# RCSId: $Id: pullnews.in 7796 2008-04-26 08:36:58Z iulius $ # Time-stamp: # Description: A very simple pull feeder. Connects to multiple remote # machines (in the guise of a reader), and pulls over articles @@ -61,7 +61,7 @@ require 5.004; $0 =~ s!.*/!!; my $rcsID =<<'EOM'; -$Id: pullnews.in 6782 2004-05-17 07:46:10Z rra $ +$Id: pullnews.in 7796 2008-04-26 08:36:58Z iulius $ EOM $SIG{INT} = \&outtaHere ; @@ -80,7 +80,7 @@ my $defaultPort = 119; my $defaultHost = "localhost"; $usage =~ s!.*/!!; -$usage .= " [ -h -q -r file -g groups -c config -s host -p port ] +$usage .= " [ -h -q -x -r file -g groups -c config -s host -p port ] -g groups specifies a collection of groups to get. The value must be a single argument with commas between group names: @@ -102,6 +102,8 @@ $usage .= " [ -h -q -r file -g groups -c -r file instead of feeding to a server $0 will instead create an rnews-compatible file. + -x insert an Xref header in any article that lacks one. + -q $0 will normally be verbose about what it's doing. This option will make it quiet. @@ -109,8 +111,8 @@ $usage .= " [ -h -q -r file -g groups -c "; -use vars qw($opt_q $opt_r $opt_s $opt_c $opt_g $opt_p $opt_h); -getopts("r:c:s:qg:p:h") || die $usage; +use vars qw($opt_q $opt_r $opt_x $opt_s $opt_c $opt_g $opt_p $opt_h); +getopts("r:c:s:qxg:p:h") || die $usage; die $usage if $opt_h; @@ -137,15 +139,15 @@ my $pulled = {} ; my %passwd = (); if ($rnews) { - open RNEWS, ">$rnews" || + open(RNEWS, ">$rnews") || die "cant open rnews-format ouptut: $rnews: $!\n"; if ($rnews eq "-") { - open LOG, ">/dev/null" || die "can\'t open /dev/null!: $!\n"; + open(LOG, ">/dev/null") || die "can\'t open /dev/null!: $!\n"; } else { - open LOG, ">&STDOUT" || die "can't dup stdout!: $!\n"; + open(LOG, ">&STDOUT") || die "can't dup stdout!: $!\n"; } } else { - open LOG, ">&STDOUT" || die "can't dup stdout!: $!\n"; + open(LOG, ">&STDOUT") || die "can't dup stdout!: $!\n"; } my $oldfh = select ; @@ -173,7 +175,7 @@ if (@groupsToGet && ! $quiet) { print LOG "\n"; } -open FILE, "<$groupFile" || die "cant open group file $groupFile\n" ; +open(FILE, "<$groupFile") || die "can't open group file $groupFile\n" ; while () { next if m!^\s*\#! || m!^\s*$! ; @@ -334,7 +336,7 @@ sub stats { sub saveConfig { $SIG{INT} = $SIG{QUIT} = 'IGNORE'; - open FILE,">$groupFile" || die "cant open $groupFile: $!\n" ; + open(FILE,">$groupFile") || die "can't open $groupFile: $!\n" ; my $server ; my $group ; @@ -413,6 +415,7 @@ sub crossFeedGroup { my $article = $fromServer->article($i) ; if ($article) { my $msgid ; + my $xref = 0; my $headers = 1; my $idx; @@ -421,6 +424,10 @@ sub crossFeedGroup { $msgid = $1 ; } + if ($opt_x && $article->[$idx] =~ m!^xref:!i) { + $xref = 1; + } + # catch some of the more common problems with articles. if ($article->[$idx] =~ m!^\s+\n$!) { $article->[$idx] = "\n"; @@ -435,6 +442,13 @@ sub crossFeedGroup { next ; } + # some old servers lack Xref: which bothers a downstream INN if + # it has xrefslave set, so add one just before the blank line. + if ($opt_x && !$xref) { + warn "No xref found in article, adding\n"; + splice(@{$article}, $idx, 0, "Xref: $server $group: $i\n"); + } + $pulled->{$server}->{$group}++; if ($rnews) { diff -rup inn-2.4.3/frontends/sys2nf.c inn-2.4.4/frontends/sys2nf.c --- inn-2.4.3/frontends/sys2nf.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/frontends/sys2nf.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: sys2nf.c 6135 2003-01-19 01:15:40Z rra $ +/* $Id: sys2nf.c 7741 2008-04-06 09:51:47Z iulius $ ** ** Read a C news "sys" file and split it up into a set of INN ** newsfeeds entries. Also works with B news. @@ -211,7 +211,7 @@ DoSub(F, p) SawAll = (strcmp(s, "all") == 0); if (SawAll) - s = SawBang ? "*" : "*,!control"; + s = SawBang ? "*" : "*,!control,!control.*"; len += strlen(s); fprintf(F, "%s", s); diff -rup inn-2.4.3/history/Makefile inn-2.4.4/history/Makefile --- inn-2.4.3/history/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/history/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -91,14 +91,18 @@ depend: $(SOURCES) $(EXTRA_SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. his.o: his.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h \ - ../include/inn/history.h ../include/inn/messages.h \ - ../include/inn/timer.h ../include/libinn.h ../include/storage.h \ - hisinterface.h hismethods.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h ../include/inn/history.h \ + ../include/inn/defines.h ../include/inn/messages.h \ + ../include/inn/timer.h ../include/libinn.h ../include/storage.h \ + hisinterface.h hismethods.h hismethods.o: hismethods.c hisinterface.h ../include/config.h \ - ../include/inn/defines.h hismethods.h hisv6/hisv6.h + ../include/inn/defines.h ../include/inn/system.h hismethods.h \ + hisv6/hisv6.h hisv6/hisv6.o: hisv6/hisv6.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h hisinterface.h hisv6/hisv6.h \ - hisv6/hisv6-private.h ../include/inn/history.h ../include/storage.h \ - ../include/libinn.h ../include/dbz.h ../include/inn/timer.h \ - ../include/inn/qio.h ../include/inn/sequence.h ../include/inndcomm.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + hisinterface.h ../include/config.h hisv6/hisv6.h hisv6/hisv6-private.h \ + ../include/inn/history.h ../include/inn/defines.h ../include/storage.h \ + ../include/libinn.h ../include/dbz.h ../include/libinn.h \ + ../include/inn/innconf.h ../include/inn/timer.h ../include/inn/qio.h \ + ../include/inn/sequence.h ../include/inndcomm.h diff -rup inn-2.4.3/include/config.h.in inn-2.4.4/include/config.h.in --- inn-2.4.3/include/config.h.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/include/config.h.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,5 +1,5 @@ /* include/config.h.in. Generated automatically from configure.in by autoheader 2.13. */ -/* $Id: config.h.in 6759 2004-05-17 04:06:42Z rra $ +/* $Id: config.h.in 7565 2006-08-28 02:42:54Z eagle $ ** ** Here be configuration data used by various InterNetNews programs. This ** file is used as source for the autoheader script, which from it and @@ -312,6 +312,9 @@ /* Define if you have the header file. */ #undef HAVE_DLFCN_H +/* Define if you have the header file. */ +#undef HAVE_ET_COM_ERR_H + /* Define if you have the header file. */ #undef HAVE_GDBM_NDBM_H @@ -423,18 +426,6 @@ /* Define to 1 to compile in support for keyword generation code. */ #undef DO_KEYWORDS -/* Define if BerkeleyDB is available. */ -#undef USE_BERKELEY_DB - -/* Define if OpenSSL is available. */ -#undef HAVE_SSL - -/* Define if SASL is available. */ -#undef HAVE_SASL - -/* Define if SASL is available. */ -#undef HAVE_SASL - /* Define to compile in Perl script support. */ #undef DO_PERL @@ -444,11 +435,26 @@ /* Define if you have the setproctitle function. */ #undef HAVE_SETPROCTITLE +/* Define if you have PAM. */ +#undef HAVE_PAM + +/* Define if BerkeleyDB is available. */ +#undef USE_BERKELEY_DB + +/* Define if the BerkeleyDB dbm compatibility layer is available. */ +#undef HAVE_BDB_DBM + /* Define if you have a dbm library. */ #undef HAVE_DBM -/* Define if you have PAM. */ -#undef HAVE_PAM +/* Define if OpenSSL is available. */ +#undef HAVE_SSL + +/* Define if SASL is available. */ +#undef HAVE_SASL + +/* Define if SASL is available. */ +#undef HAVE_SASL /* Some versions of glibc need this defined for pread/pwrite. */ #undef _GNU_SOURCE diff -rup inn-2.4.3/include/inn/innconf.h inn-2.4.4/include/inn/innconf.h --- inn-2.4.3/include/inn/innconf.h 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/include/inn/innconf.h 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innconf.h 6201 2003-02-03 00:58:26Z rra $ +/* $Id: innconf.h 7751 2008-04-06 14:35:40Z iulius $ ** ** inn.conf parser interface. ** @@ -39,6 +39,7 @@ struct innconf { long maxartsize; /* Reject articles bigger than this */ long maxconnections; /* Max number of incoming NNTP connections */ char *pathalias; /* Prepended Host for the Path line */ + char *pathcluster; /* Appended Host for the Path line */ bool pgpverify; /* Verify control messages with pgpverify? */ long port; /* Which port innd should listen on */ bool refusecybercancels; /* Reject message IDs with "data + cp->Start, j = 0 ; j < i ; j++) { switch (hp[j].index) { case HDR__PATH: - if (!data->Hassamepath || data->AddAlias) { + if (!data->Hassamepath || data->AddAlias || Pathcluster.used) { /* write heading data */ iov[iovcnt].iov_base = (char *) p; iov[iovcnt++].iov_len = HDR(HDR__PATH) - p; arth.len += HDR(HDR__PATH) - p; + /* append clusterpath */ + if (Pathcluster.used) { + iov[iovcnt].iov_base = Pathcluster.data; + iov[iovcnt++].iov_len = Pathcluster.used; + arth.len += Pathcluster.used; + } /* now append new one */ iov[iovcnt].iov_base = Path.data; iov[iovcnt++].iov_len = Path.used; @@ -455,6 +462,8 @@ ARTstore(CHANNEL *cp) } /* next to write */ p = HDR(HDR__PATH); + if (data->Hassamecluster) + p += Pathcluster.used; } break; case HDR__XREF: @@ -1553,6 +1562,88 @@ ListHas(const char **list, const char *p } /* +** Even though we have already calculated the Message-ID MD5sum, +** we have to do it again since unfortunately HashMessageID() +** lowercases the Message-ID first. We also need to remain +** compatible with Diablo's hashfeed. +*/ + +static unsigned int +HashFeedMD5(char *MessageID, unsigned int offset) +{ + static char LastMessageID[128]; + static char *LastMessageIDPtr; + static struct md5_context context; + unsigned int ret; + + if (offset > 12) + return 0; + + /* Some light caching. */ + if (MessageID != LastMessageIDPtr || + strcmp(MessageID, LastMessageID) != 0) { + md5_init(&context); + md5_update(&context, (unsigned char *)MessageID, strlen(MessageID)); + md5_final(&context); + LastMessageIDPtr = MessageID; + strncpy(LastMessageID, MessageID, sizeof(LastMessageID) - 1); + LastMessageID[sizeof(LastMessageID) - 1] = 0; + } + + memcpy(&ret, &context.digest[12 - offset], 4); + + return ntohl(ret); +} + +/* +** Old-style Diablo (< 5.1) quickhash. +** +*/ +static unsigned int +HashFeedQH(char *MessageID, unsigned int *tmp) +{ + unsigned char *p; + int n; + + if (*tmp != (unsigned int)-1) + return *tmp; + + p = (unsigned char *)MessageID; + n = 0; + while (*p) + n += *p++; + *tmp = (unsigned int)n; + + return *tmp; +} + +/* +** Return true if an element of the HASHFEEDLIST matches +** the hash of the Message-ID. +*/ +static bool +HashFeedMatch(HASHFEEDLIST *hf, char *MessageID) +{ + unsigned int qh = (unsigned int)-1; + unsigned int h; + + while (hf) { + if (hf->type == HASHFEED_MD5) + h = HashFeedMD5(MessageID, hf->offset); + else if (hf->type == HASHFEED_QH) + h = HashFeedQH(MessageID, &qh); + else + continue; + if ((h % hf->mod + 1) >= hf->begin && + (h % hf->mod + 1) <= hf->end) + return true; + hf = hf->next; + } + + return false; +} + +/* ** Propagate an article to the sites have "expressed an interest." */ static void @@ -1625,6 +1716,11 @@ ARTpropagate(ARTDATA *data, const char * * cross-posting. */ continue; + if (sp->HashFeedList && + !HashFeedMatch(sp->HashFeedList, HDR(HDR__MESSAGE_ID))) + /* hashfeed doesn't match */ + continue; + if (list && *list != NULL && sp->Distributions && !DISTwantany(sp->Distributions, list)) /* Not in the site's desired list of distributions. */ @@ -1856,10 +1952,18 @@ ARTpost(CHANNEL *cp) return false; } - if (strncmp(Path.data, hops[0], Path.used - 1) == 0) + i = strlen(hops[0]); + if (i == Path.used - 1 && + strncmp(Path.data, hops[0], Path.used - 1) == 0) data->Hassamepath = true; else data->Hassamepath = false; + if (Pathcluster.data != NULL && + i == Pathcluster.used - 1 && + strncmp(Pathcluster.data, hops[0], Pathcluster.used - 1) == 0) + data->Hassamecluster = true; + else + data->Hassamecluster = false; if (Pathalias.data != NULL && !ListHas((const char **)hops, (const char *)innconf->pathalias)) data->AddAlias = true; @@ -2078,6 +2182,9 @@ ARTpost(CHANNEL *cp) if (data->Followcount == 0) data->Followcount = data->Groupcount; } + + LikeNewgroup = (LikeNewgroup || strcmp(ControlWord, "checkgroups") == 0); + /* Control messages to "foo.ctl" are treated as if they were * posted to "foo". I should probably apologize for all the * side-effects in the if. */ @@ -2099,14 +2206,15 @@ ARTpost(CHANNEL *cp) if ((ngp = NGfind(p)) == NULL) { GroupMissing = true; if (LikeNewgroup && Approved) { - /* Newgroup/rmgroup being sent to a group that doesn't exist. Assume - * it is being sent to the group being created or removed, nd send the - * group to all sites that would or would have had the group if it were - * created. */ - ARTsendthegroup(*groups); - Accepted = true; + /* Checkgroups/newgroup/rmgroup being sent to a group that doesn't + * exist. Assume it is being sent to the group being created or + * removed (or to the admin group to which the checkgroups is posted), + * and send it to all sites that would or would have had the group + * if it were created. */ + ARTsendthegroup(*groups); + Accepted = true; } else - NonExist = true; + NonExist = true; ARTpoisongroup(*groups); if (innconf->mergetogroups) { @@ -2210,8 +2318,12 @@ ARTpost(CHANNEL *cp) *ngptr++ = ngp; for (isp = ngp->Sites, i = ngp->nSites; --i >= 0; isp++) { if (*isp >= 0) { - sp = &Sites[*isp]; - SITEmark(sp, ngp); + /* Checkgroups/newgroup/rmgroup posted to local.example + * will still be sent with the newsfeeds patterns + * "*,!local.*" and "*,@local.*". So as not to propagate + * them, "!control,!control.*" should be added. */ + sp = &Sites[*isp]; + SITEmark(sp, ngp); } } } diff -rup inn-2.4.3/innd/cc.c inn-2.4.4/innd/cc.c --- inn-2.4.3/innd/cc.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/cc.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: cc.c 7416 2005-10-09 04:29:52Z eagle $ +/* $Id: cc.c 7748 2008-04-06 13:49:56Z iulius $ ** ** Routines for the control channel. ** @@ -1388,6 +1388,16 @@ CCreload(char *av[]) Pathalias.Used = strlen(innconf->pathalias) + 1; Pathalias.Data = xmalloc(Pathalias.Used + 1); sprintf(Pathalias.Data, "%s!", innconf->pathalias); + } + if (Pathcluster.Used > 0) + free(Pathcluster.Data); + if (innconf->pathcluster == NULL) { + Pathcluster.Used = 0; + Pathcluster.Data = NULL; + } else { + Pathcluster.Used = strlen(innconf->pathcluster) + 1; + Pathcluster.Data = xmalloc(Pathcluster.Used + 1); + sprintf(Pathcluster.Data, "%s!", innconf->pathcluster); } } #endif @@ -1801,7 +1811,7 @@ CCreader(CHANNEL *cp) memcpy (&protocol,buff,sizeof (protocol)) ; memcpy (&bufflen,buff + sizeof (protocol),sizeof (bufflen)) ; bufflen = ntohs (bufflen); - if (bufflen < HEADER_SIZE) { + if (bufflen < HEADER_SIZE || bufflen > BIG_BUFFER) { syslog(L_ERROR, "%s cant read CCreader bad length", LogName); return; } diff -rup inn-2.4.3/innd/innd.c inn-2.4.4/innd/innd.c --- inn-2.4.3/innd/innd.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/innd.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innd.c 6990 2004-10-01 05:10:30Z rra $ +/* $Id: innd.c 7748 2008-04-06 13:49:56Z iulius $ ** ** Variable definitions, miscellany, and main(). */ @@ -155,7 +155,7 @@ catch_terminate(int sig) killer_signal = sig; #ifndef HAVE_SIGACTION - xsignal(signal, catch_terminate); + xsignal(sig, catch_terminate); #endif } @@ -477,6 +477,15 @@ main(int ac, char *av[]) Pathalias.data = xmalloc(Pathalias.size); snprintf(Pathalias.data, Pathalias.size, "%s!", innconf->pathalias); } + if (innconf->pathcluster == NULL) { + Pathcluster.used = 0; + Pathcluster.data = NULL; + } else { + Pathcluster.used = strlen(innconf->pathcluster) + 1; + Pathcluster.size = Pathcluster.used + 1; + Pathcluster.data = xmalloc(Pathcluster.size); + snprintf(Pathcluster.data, Pathcluster.size, "%s!", innconf->pathcluster); + } /* Trace history ? */ if (innconf->stathist != NULL) { syslog(L_NOTICE, "logging hist stats to %s", innconf->stathist); diff -rup inn-2.4.3/innd/innd.h inn-2.4.4/innd/innd.h --- inn-2.4.3/innd/innd.h 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/innd.h 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innd.h 6907 2004-05-27 18:55:23Z rra $ +/* $Id: innd.h 7748 2008-04-06 13:49:56Z iulius $ ** ** Many of the data types used here have abbreviations, such as CT ** for CHANNELTYPE. Here are a list of the conventions and meanings: @@ -240,6 +240,8 @@ typedef struct _ARTDATA { bool AddAlias; /* Whether Pathalias should be added to this article */ bool Hassamepath; /* Whether this article matches Path */ + bool Hassamecluster; /* Whether this article matches + Pathcluster */ } ARTDATA; /* @@ -407,6 +409,22 @@ typedef enum _FEEDTYPE { /* +** Diablo-style hashed feeds or hashfeeds. +*/ +#define HASHFEED_QH 1 +#define HASHFEED_MD5 2 + +typedef struct _HASHFEEDLIST { + int type; + unsigned int begin; + unsigned int end; + unsigned int mod; + unsigned int offset; + struct _HASHFEEDLIST *next; +} HASHFEEDLIST; + + +/* ** A site may reject something in its subscription list if it has ** too many hops, or a bad distribution. */ @@ -458,6 +476,7 @@ typedef struct _SITE { struct buffer Buffer; bool Buffered; char ** Originator; + HASHFEEDLIST * HashFeedList; int Next; int Prev; } SITE; @@ -567,6 +586,7 @@ extern bool StreamingOff; extern bool Tracing; EXTERN struct buffer Path; EXTERN struct buffer Pathalias; +EXTERN struct buffer Pathcluster; EXTERN char * ModeReason; /* NNTP reject message */ EXTERN char * NNRPReason; /* NNRP reject message */ EXTERN char * Reservation; /* Reserved lock message */ diff -rup inn-2.4.3/innd/inndstart.c inn-2.4.4/innd/inndstart.c --- inn-2.4.3/innd/inndstart.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/inndstart.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inndstart.c 6611 2004-01-11 23:21:54Z rra $ +/* $Id: inndstart.c 7749 2008-04-06 14:15:04Z iulius $ ** ** Open the privileged port, then exec innd. ** @@ -213,6 +213,23 @@ main(int argc, char *argv[]) syswarn("can't set file descriptor limit to %ld", innconf->rlimitnofile); +#if defined(HAVE_INET6) && defined(IPV6_V6ONLY) + /* If we have the IPV6_V6ONLY socket option, and it works, + always open separate IPv4 and IPv6 sockets. */ + if (addr_specified == 0 && addr6_specified == 0) { + j = socket(PF_INET6, SOCK_STREAM, 0); + if (j >= 0) { + i = 1; + if (setsockopt (j, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&i, + sizeof i) == 0) { + addr_specified = 1; + addr6_specified = 1; + } + close (j); + } + } +#endif + /* Create a socket and name it. */ #ifdef HAVE_INET6 if( ! (addr_specified || addr6_specified) ) { @@ -266,6 +283,12 @@ main(int argc, char *argv[]) sizeof i) < 0) syswarn("can't set SO_REUSEADDR"); #endif +#ifdef IPV6_V6ONLY + i = 1; + if (setsockopt(s[snum], IPPROTO_IPV6, IPV6_V6ONLY, (char *)&i, + sizeof i) < 0) + syswarn("can't set IPV6_V6ONLY"); +#endif memset(&server6, 0, sizeof server6); server6.sin6_port = htons(port); server6.sin6_family = AF_INET6; diff -rup inn-2.4.3/innd/newsfeeds.c inn-2.4.4/innd/newsfeeds.c --- inn-2.4.3/innd/newsfeeds.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/newsfeeds.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: newsfeeds.c 6156 2003-01-19 20:58:05Z rra $ +/* $Id: newsfeeds.c 7730 2008-04-06 08:27:16Z iulius $ ** ** Routines for the in-core data structures for the newsfeeds file. */ @@ -448,6 +448,7 @@ SITEparseone(char *Entry, SITE *sp, char int isp; SITE *nsp; struct buffer b; + HASHFEEDLIST *hf; b = sp->Buffer; *sp = SITEnull; @@ -467,6 +468,7 @@ SITEparseone(char *Entry, SITE *sp, char sp->NeedOverviewCreation = false; sp->FeedwithoutOriginator = false; sp->DropFiltered = false; + sp->HashFeedList = NULL; /* Nip off the first field, the site name. */ if ((f2 = strchr(Entry, NF_FIELD_SEP)) == NULL) @@ -603,6 +605,37 @@ SITEparseone(char *Entry, SITE *sp, char if (*++p && CTYPE(isdigit, *p)) sp->Nice = atoi(p); break; + case 'Q': + hf = xmalloc(sizeof(HASHFEEDLIST)); + p++; + /* Check whether it is a quickhash or a MD5 hashfeed. */ + if (*p == '@') { + p++; + hf->type = HASHFEED_QH; + } else + hf->type = HASHFEED_MD5; + /* Check the presence of a starting byte-offset for hashfeed. */ + if ((u = strchr(p, '_')) != NULL) { + if (sscanf(u + 1, "%u", &hf->offset) != 1 || hf->offset > 12) { + free(hf); + return "invalid hash offset for Q param in field 3"; + } + } else + hf->offset = 0; + if (sscanf(p, "%u/%u", &hf->begin, &hf->mod) == 2) { + hf->end = hf->begin; + } else if (sscanf(p, "%u-%u/%u", &hf->begin, &hf->end, + &hf->mod) != 3) { + free(hf); + return "hash not in x/z or x-y/z format for Q param in field 3"; + } + if (hf->begin > hf->end || hf->end > hf->mod) { + free(hf); + return "incorrect hash values for Q param in field 3"; + } + hf->next = sp->HashFeedList; + sp->HashFeedList = hf; + break; case 'S': if (*++p && CTYPE(isdigit, *p)) sp->StartSpooling = atol(p); diff -rup inn-2.4.3/innd/perl.c inn-2.4.4/innd/perl.c --- inn-2.4.3/innd/perl.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/perl.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 6242 2003-02-21 15:33:15Z alexk $ +/* $Id: perl.c 7815 2008-05-05 08:43:58Z iulius $ ** ** Perl filtering support for innd. ** @@ -240,6 +240,7 @@ char * PLstats(void) { dSP; + char *argv[] = { NULL }; if (perl_get_cv("filter_stats", false) == NULL) return NULL; @@ -249,7 +250,7 @@ PLstats(void) ENTER; SAVETMPS; - perl_call_argv("filter_stats", G_EVAL | G_NOARGS, NULL); + perl_call_argv("filter_stats", G_EVAL | G_NOARGS, argv); SPAGAIN; result = POPp; if (result != NULL && *result) diff -rup inn-2.4.3/innd/rc.c inn-2.4.4/innd/rc.c --- inn-2.4.3/innd/rc.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/rc.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: rc.c 7438 2005-12-11 21:22:34Z eagle $ +/* $Id: rc.c 7751 2008-04-06 14:35:40Z iulius $ ** ** Routines for the remote connect channel. Create an Internet stream ** socket that processes connect to. If the incoming site is not one of @@ -12,6 +12,7 @@ #include #include "inn/innconf.h" +#include "inn/vector.h" #include "innd.h" #define TEST_CONFIG(a, b) \ @@ -450,9 +451,14 @@ RCrejectwritedone(CHANNEL *cp) void RChandoff(int fd, HANDOFF h) { - const char *argv[6]; + const char **argv; char buff[SMBUF]; int i; + unsigned int j; + struct vector *flags; + + flags = vector_split_space(innconf->nnrpdflags, NULL); + argv = xmalloc( (flags->count + 6) * sizeof(char*) ); if (RCnnrpd == NULL) RCnnrpd = concatpath(innconf->pathbin, "nnrpd"); @@ -484,11 +490,17 @@ RChandoff(int fd, HANDOFF h) argv[i++] = "-t"; if (RCslaveflag) argv[i++] = RCslaveflag; + + for(j = 0; j < flags->count; j++) { + argv[i++] = flags->strings[j]; + } argv[i] = NULL; /* Call NNRP; don't send back a QUIT message if Spawn fails since * that's a major error we want to find out about quickly. */ (void)Spawn(innconf->nicekids, fd, fd, fd, (char * const *)argv); + vector_free(flags); + free(argv); } @@ -945,14 +957,19 @@ RCreadfile (REMOTEHOST_DATA **data, REMO RCadddata(data, &infocount, K_BEGIN_GROUP, T_STRING, word); groupcount++; if (groupcount == 1) { + /* First group block. */ group_params = groups = xmalloc(sizeof(REMOTEHOST)); } else if (groupcount >= maxgroup) { - /* alloc 5 groups */ + /* Alloc 5 groups for extra nested group blocks. */ groups = xrealloc(groups, (groupcount + 4) * sizeof(REMOTEHOST)); - maxgroup += 5; - group_params = groups + groupcount - 1; - } + maxgroup += 5; + group_params = groups + groupcount - 1; + } + else { + /* Nested group block (no need to extend groups). */ + group_params++; + } group_params->Label = word; group_params->Skip = groupcount > 1 ? groups[groupcount - 2].Skip : default_params.Skip; @@ -1241,10 +1258,13 @@ RCreadfile (REMOTEHOST_DATA **data, REMO RCadddata(data, &infocount, K_END_GROUP, T_STRING, NULL); group_params->Label = NULL; groupcount--; - if (groupcount == 0) - free(groups); - else - group_params--; + if (groupcount == 0) { + /* We are now outside a group block. */ + free(groups); + maxgroup = 0; + } else { + group_params--; + } } else { syslog(L_ERROR, RIGHT_BRACE, LogName, linecount, filename); @@ -1660,7 +1680,7 @@ RCwritelist(char *filename) if (*p == '/') q = p + 1; - fprintf (F, "## $Revision: 7438 $\n"); + fprintf (F, "## $Revision: 7751 $\n"); fprintf (F, "## %s - names and addresses that feed us news\n", q); free(r); fprintf (F, "##\n\n"); diff -rup inn-2.4.3/innd/site.c inn-2.4.4/innd/site.c --- inn-2.4.3/innd/site.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/site.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: site.c 6716 2004-05-16 20:26:56Z rra $ +/* $Id: site.c 7748 2008-04-06 13:49:56Z iulius $ ** ** Routines to implement site-feeding. Mainly working with channels to ** do buffering and determine what to send. @@ -390,11 +390,18 @@ SITEwritefromflags(SITE *sp, ARTDATA *Da case FEED_PATH: if (Dirty) buffer_append(bp, ITEMSEP, strlen(ITEMSEP)); - if (!Data->Hassamepath) - buffer_append(bp, Path.data, Path.used); - if (Data->AddAlias) - buffer_append(bp, Pathalias.data, Pathalias.used); - buffer_append(bp, HDR(HDR__PATH), HDR_LEN(HDR__PATH)); + if (!Data->Hassamepath || Data->AddAlias || Pathcluster.used) { + if (Pathcluster.used) + buffer_append(bp, Pathcluster.data, Pathcluster.used); + buffer_append(bp, Path.data, Path.used); + if (Data->AddAlias) + buffer_append(bp, Pathalias.data, Pathalias.used); + } + if (Data->Hassamecluster) + buffer_append(bp, HDR(HDR__PATH) + Pathcluster.used, + HDR_LEN(HDR__PATH) - Pathcluster.used); + else + buffer_append(bp, HDR(HDR__PATH), HDR_LEN(HDR__PATH)); break; case FEED_REPLIC: if (Dirty) @@ -997,6 +1004,7 @@ void SITEfree(SITE *sp) { SITE *s; + HASHFEEDLIST *hf, *hn; int new; int i; @@ -1051,6 +1059,13 @@ SITEfree(SITE *sp) sp->FNLnames.data = NULL; sp->FNLnames.size = 0; } + if (sp->HashFeedList) { + for (hf = sp->HashFeedList; hf; hf = hn) { + hn = hf->next; + free(hf); + } + sp->HashFeedList = NULL; + } /* If this site was a master, find a new one. */ if (sp->IsMaster) { diff -rup inn-2.4.3/innd/status.c inn-2.4.4/innd/status.c --- inn-2.4.3/innd/status.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innd/status.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: status.c 6372 2003-05-31 19:48:28Z rra $ +/* $Id: status.c 7547 2006-08-26 06:18:14Z eagle $ ** ** Periodic status reporting. */ @@ -122,8 +122,10 @@ STATUSsummary(void) #else path = concatpath(innconf->pathlog, STATUS_FILE); #endif - if ((F = Fopen(path, "w", TEMPORARYOPEN)) == NULL) + if ((F = Fopen(path, "w", TEMPORARYOPEN)) == NULL) { + syslog(L_ERROR, "%s cannot open %s: %m", LogName, path); return; + } #if defined(HTML_STATUS) /* HTML Header */ diff -rup inn-2.4.3/innfeed/Makefile inn-2.4.4/innfeed/Makefile --- inn-2.4.3/innfeed/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innfeed/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6855 2004-05-20 22:25:05Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -118,47 +118,59 @@ depend: Makefile $(SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. article.o: article.c innfeed.h ../include/inn/timer.h \ - ../include/config.h ../include/clibrary.h ../include/portable/mmap.h \ - ../include/inn/messages.h ../include/libinn.h ../include/storage.h \ - article.h misc.h buffer.h endpoint.h + ../include/inn/defines.h ../include/inn/system.h ../include/config.h \ + ../include/inn/defines.h ../include/clibrary.h ../include/config.h \ + ../include/portable/mmap.h ../include/config.h \ + ../include/inn/messages.h ../include/libinn.h ../include/storage.h \ + article.h misc.h buffer.h endpoint.h buffer.o: buffer.c innfeed.h ../include/inn/timer.h \ - ../include/config.h ../include/clibrary.h ../include/inn/messages.h \ - ../include/libinn.h buffer.h misc.h + ../include/inn/defines.h ../include/inn/system.h ../include/config.h \ + ../include/inn/defines.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/libinn.h buffer.h misc.h config_l.o: config_l.c innfeed.h ../include/inn/timer.h \ - ../include/libinn.h ../include/config.h configfile.h config_y.h \ - misc.h + ../include/inn/defines.h ../include/inn/system.h ../include/libinn.h \ + ../include/inn/defines.h ../include/config.h configfile.h config_y.h \ + misc.h ../include/config.h config_y.o: config_y.c innfeed.h ../include/inn/timer.h \ - ../include/config.h ../include/clibrary.h ../include/inn/messages.h \ - ../include/libinn.h configfile.h misc.h + ../include/inn/defines.h ../include/inn/system.h ../include/config.h \ + ../include/inn/defines.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/libinn.h configfile.h misc.h endpoint.o: endpoint.c innfeed.h ../include/inn/timer.h \ - ../include/config.h ../include/clibrary.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h buffer.h misc.h configfile.h endpoint.h host.h -host.o: host.c innfeed.h ../include/inn/timer.h ../include/config.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h article.h misc.h buffer.h configfile.h \ - connection.h endpoint.h host.h innlistener.h tape.h + ../include/inn/defines.h ../include/inn/system.h ../include/config.h \ + ../include/inn/defines.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/libinn.h buffer.h misc.h \ + configfile.h endpoint.h host.h +host.o: host.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/config.h ../include/inn/defines.h \ + ../include/clibrary.h ../include/config.h ../include/portable/socket.h \ + ../include/config.h ../include/inn/innconf.h ../include/inn/messages.h \ + ../include/libinn.h article.h misc.h buffer.h configfile.h connection.h \ + endpoint.h host.h innlistener.h tape.h innlistener.o: innlistener.c innfeed.h ../include/inn/timer.h \ - ../include/config.h ../include/clibrary.h ../include/inn/messages.h \ - ../include/libinn.h article.h misc.h buffer.h configfile.h endpoint.h \ - host.h innlistener.h ../include/nntp.h tape.h -main.o: main.c innfeed.h ../include/inn/timer.h ../include/config.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/storage.h \ - article.h misc.h buffer.h configfile.h connection.h endpoint.h host.h \ - innlistener.h tape.h -misc.o: misc.c innfeed.h ../include/inn/timer.h ../include/config.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h \ - endpoint.h misc.h tape.h + ../include/inn/defines.h ../include/inn/system.h ../include/config.h \ + ../include/inn/defines.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/libinn.h article.h misc.h buffer.h \ + configfile.h endpoint.h host.h innlistener.h ../include/nntp.h tape.h +main.o: main.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/config.h ../include/inn/defines.h \ + ../include/clibrary.h ../include/config.h ../include/portable/socket.h \ + ../include/config.h ../include/portable/time.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/libinn.h ../include/storage.h \ + article.h misc.h buffer.h configfile.h connection.h endpoint.h host.h \ + innlistener.h tape.h +misc.o: misc.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/config.h ../include/inn/defines.h \ + ../include/clibrary.h ../include/config.h ../include/inn/messages.h \ + ../include/libinn.h endpoint.h misc.h tape.h startinnfeed.o: startinnfeed.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h -tape.o: tape.c innfeed.h ../include/inn/timer.h ../include/config.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h article.h misc.h \ - configfile.h endpoint.h tape.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h +tape.o: tape.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/config.h ../include/inn/defines.h \ + ../include/clibrary.h ../include/config.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/libinn.h article.h misc.h \ + configfile.h endpoint.h tape.h version.o: version.c diff -rup inn-2.4.3/innfeed/connection.c inn-2.4.4/innfeed/connection.c --- inn-2.4.3/innfeed/connection.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innfeed/connection.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: connection.c 6998 2004-10-01 06:08:09Z rra $ +/* $Id: connection.c 7793 2008-04-26 08:15:40Z iulius $ ** ** The implementation of the innfeed Connection class. ** @@ -207,10 +207,6 @@ static Connection gCxnList = NULL ; static unsigned int gCxnCount = 0 ; static unsigned int max_reconnect_period = MAX_RECON_PER ; static unsigned int init_reconnect_period = INIT_RECON_PER ; -static struct sockaddr_in *bind_addr = NULL; -#ifdef HAVE_INET6 -static struct sockaddr_in6 *bind_addr6 = NULL; -#endif #if 0 static bool inited = false ; #endif @@ -328,7 +324,6 @@ static int fudgeFactor (int initVal) ; int cxnConfigLoadCbk (void *data UNUSED) { long iv ; - char *sv ; int rval = 1 ; FILE *fp = (FILE *) data ; @@ -364,43 +359,6 @@ int cxnConfigLoadCbk (void *data UNUSED) iv = INIT_RECON_PER ; init_reconnect_period = (unsigned int) iv ; -#ifdef HAVE_INET6 - if (getString (topScope,"bindaddress6",&sv,NO_INHERIT)) - { - struct addrinfo *res, hints; - - memset( &hints, 0, sizeof( hints ) ); - hints.ai_flags = AI_NUMERICHOST; - if( getaddrinfo( sv, NULL, &hints, &res ) ) - { - logOrPrint (LOG_ERR, fp, - "innfeed unable to determine IPv6 bind address") ; - } - else - { - bind_addr6 = (struct sockaddr_in6 *) xmalloc (res->ai_addrlen); - memcpy( bind_addr6, res->ai_addr, res->ai_addrlen ); - } - } -#endif - - if (getString (topScope,"bindaddress",&sv,NO_INHERIT)) - { - struct in_addr addr ; - - if (!inet_aton(sv,&addr)) - { - logOrPrint (LOG_ERR, fp, - "innfeed unable to determine IPv4 bind address") ; - } - else - { - bind_addr = (struct sockaddr_in *) - xmalloc (sizeof(struct sockaddr_in)); - make_sin( (struct sockaddr_in *)bind_addr, &addr ); - } - } - return rval ; } @@ -515,13 +473,16 @@ Connection newConnection (Host host, */ bool cxnConnect (Connection cxn) { - struct sockaddr_storage cxnAddr, cxnSelf ; - struct sockaddr *retAddr; + const struct sockaddr_storage cxnAddr, cxnSelf ; + const struct sockaddr *retAddr; int fd, rval ; const char *peerName = hostPeerName (cxn->myHost) ; char msgbuf[100]; + const struct sockaddr_in *bind_addr = hostBindAddr (cxn->myHost) ; + int family = 0; #ifdef HAVE_INET6 char paddr[INET6_ADDRSTRLEN]; + const struct sockaddr_in6 *bind_addr6 = hostBindAddr6 (cxn->myHost) ; #endif ASSERT (cxn->myEp == NULL) ; @@ -545,7 +506,10 @@ bool cxnConnect (Connection cxn) cxn->state = cxnConnectingS ; - retAddr = hostIpAddr (cxn->myHost) ; +#ifdef HAVE_INET6 + family = hostAddrFamily (cxn->myHost); +#endif + retAddr = hostIpAddr (cxn->myHost, family) ; if (retAddr == NULL) { @@ -553,7 +517,7 @@ bool cxnConnect (Connection cxn) return false ; } - memcpy( &cxnAddr, retAddr, SA_LEN(retAddr) ); + memcpy( (void *)&cxnAddr, retAddr, SA_LEN(retAddr) ); #ifdef HAVE_INET6 if( cxnAddr.ss_family == AF_INET6 ) @@ -581,7 +545,7 @@ bool cxnConnect (Connection cxn) /* bind to a specified IPv6 address */ if( (cxnAddr.ss_family == AF_INET6) && bind_addr6 ) { - memcpy( &cxnSelf, bind_addr6, sizeof(struct sockaddr_in6) ); + memcpy( (void *)&cxnSelf, bind_addr6, sizeof(struct sockaddr_in6) ); if (bind (fd, (struct sockaddr *) &cxnSelf, sizeof(struct sockaddr_in6)) < 0) { @@ -605,7 +569,7 @@ bool cxnConnect (Connection cxn) if (bind_addr) #endif { - memcpy( &cxnSelf, bind_addr, sizeof(struct sockaddr_in) ); + memcpy( (void *)&cxnSelf, bind_addr, sizeof(struct sockaddr_in) ); if (bind (fd, (struct sockaddr *) &cxnSelf, sizeof(struct sockaddr_in) ) < 0) { @@ -1380,6 +1344,30 @@ static void connectionDone (EndPoint e, /* + * This is called when we are so far in the connection setup that + * we're confident it'll work. If the connection is IPv6, remove + * the IPv4 addresses from the address list. + */ +static void connectionIfIpv6DeleteIpv4Addr (Connection cxn) +{ +#ifdef HAVE_INET6 + struct sockaddr_storage ss; + socklen_t len = sizeof(ss); + + if (getpeername (endPointFd (cxn->myEp), (struct sockaddr *)&ss, &len) < 0) + return; + if (ss.ss_family != AF_INET6) + return; + + hostDeleteIpv4Addr (cxn->myHost); +#endif +} + + + + + +/* * Called when the banner message has been read off the wire and is * in the buffer(s). When this function returns the state of the * Connection will still be cxnConnectingS unless something broken, @@ -1472,6 +1460,10 @@ static void getBanner (EndPoint e, IoSta if ( isOk ) { + /* If we got this far and the connection is IPv6, remove + the IPv4 addresses from the address list. */ + connectionIfIpv6DeleteIpv4Addr (cxn); + if (hostUsername (cxn->myHost) != NULL && hostPassword (cxn->myHost) != NULL) issueAuthUser (e,cxn); diff -rup inn-2.4.3/innfeed/endpoint.c inn-2.4.4/innfeed/endpoint.c --- inn-2.4.3/innfeed/endpoint.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innfeed/endpoint.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: endpoint.c 6648 2004-01-25 20:07:11Z rra $ +/* $Id: endpoint.c 7738 2008-04-06 09:33:33Z iulius $ ** ** The implementation of the innfeed EndPoint object class. ** @@ -1644,7 +1644,7 @@ void setSigHandler (int signum, void (*p if (sigHandlers == NULL) { sigHandlers = xmalloc (sizeof(sigfn) * NSIG) ; - sigFlags = xmalloc (sizeof(int) * NSIG) ; + sigFlags = xmalloc (sizeof(sig_atomic_t) * NSIG) ; for (i = 0 ; i < NSIG ; i++) { sigHandlers [i] = NULL ; diff -rup inn-2.4.3/innfeed/host.c inn-2.4.4/innfeed/host.c --- inn-2.4.3/innfeed/host.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innfeed/host.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: host.c 6958 2004-06-29 22:44:03Z rra $ +/* $Id: host.c 7801 2008-04-26 11:32:18Z iulius $ ** ** The implementation of the innfeed Host class. ** @@ -81,12 +81,18 @@ typedef struct host_param_s { char *peerName; char *ipName; + struct sockaddr_in *bindAddr; +#ifdef HAVE_INET6 + struct sockaddr_in6 *bindAddr6; +#endif + int family; unsigned int articleTimeout; unsigned int responseTimeout; unsigned int initialConnections; unsigned int absMaxConnections; unsigned int maxChecks; unsigned short portNum; + bool forceIPv4; unsigned int closePeriod; unsigned int dynamicMethod; bool wantStreaming; @@ -486,18 +492,38 @@ HostParams newHostParams(HostParams p) params->peerName = xstrdup(params->peerName); if (params->ipName) params->ipName = xstrdup(params->ipName); + if (params->bindAddr) + { + struct sockaddr_in *s = params->bindAddr; + params->bindAddr = xmalloc(sizeof(*s)); + memcpy(params->bindAddr, s, sizeof(*s)); + } +#ifdef HAVE_INET6 + if (params->bindAddr6) + { + struct sockaddr_in6 *s = params->bindAddr6; + params->bindAddr6 = xmalloc(sizeof(*s)); + memcpy(params->bindAddr6, s, sizeof(*s)); + } +#endif } else { /* Fill in defaults */ params->peerName=NULL; params->ipName=NULL; + params->bindAddr=NULL; +#ifdef HAVE_INET6 + params->bindAddr6=NULL; +#endif + params->family = 0; params->articleTimeout=ARTTOUT; params->responseTimeout=RESPTOUT; params->initialConnections=INIT_CXNS; params->absMaxConnections=MAX_CXNS; params->maxChecks=MAX_Q_SIZE; params->portNum=PORTNUM; + params->forceIPv4=FORCE_IPv4; params->closePeriod=CLOSE_PERIOD; params->dynamicMethod=METHOD_STATIC; params->wantStreaming=STREAM; @@ -530,6 +556,12 @@ void freeHostParams(HostParams params) free (params->peerName) ; if (params->ipName) free (params->ipName) ; + if (params->bindAddr) + free (params->bindAddr) ; +#ifdef HAVE_INET6 + if (params->bindAddr6) + free (params->bindAddr6) ; +#endif free (params) ; } @@ -1107,7 +1139,7 @@ Host newHost (InnListener listener, Host return nh ; } -struct sockaddr *hostIpAddr (Host host) +struct sockaddr *hostIpAddr (Host host, int family) { int i ; struct sockaddr **newIpAddrPtrs = NULL; @@ -1122,10 +1154,15 @@ struct sockaddr *hostIpAddr (Host host) #ifdef HAVE_INET6 int gai_ret; struct addrinfo *res, *p; + struct addrinfo hints; - if(( gai_ret = getaddrinfo(host->params->ipName, NULL, NULL, &res)) != 0 - || res == NULL ) - + memset(&hints, 0, sizeof(hints)); + hints.ai_family = family ? family : AF_UNSPEC; +#ifdef AI_ADDRCONFIG + hints.ai_flags = AI_ADDRCONFIG; +#endif + if((gai_ret = getaddrinfo(host->params->ipName, NULL, &hints, &res)) != 0 + || res == NULL) { warn ("%s can't resolve hostname %s: %s", host->params->peerName, host->params->ipName, gai_ret == 0 ? "no addresses returned" @@ -1227,6 +1264,27 @@ struct sockaddr *hostIpAddr (Host host) } +#ifdef HAVE_INET6 +/* + * Delete IPv4 addresses from the address list. + */ +void hostDeleteIpv4Addr (Host host) +{ + int i, j; + + if (!host->ipAddrs) + return; + for (i = 0, j = 0; host->ipAddrs[i]; i++) { + if (host->ipAddrs[i]->sa_family != AF_INET) + host->ipAddrs[j++] = host->ipAddrs[i]; + } + host->ipAddrs[j] = 0; + if (host->nextIpAddr >= j) + host->nextIpAddr = 0; +} +#endif + + void hostIpFailed (Host host) { if (host->ipAddrs) @@ -1275,6 +1333,31 @@ void printHostInfo (Host host, FILE *fp, fprintf (fp,"%s peer-name : %s\n",indent,host->params->peerName) ; fprintf (fp,"%s ip-name : %s\n",indent,host->params->ipName) ; + if (host->params->family == AF_INET6) + { + fprintf (fp,"%s bindaddress : none\n",indent); + } + else + { + fprintf (fp,"%s bindaddress : %s\n",indent, + host->params->bindAddr == NULL || + host->params->bindAddr->sin_addr.s_addr == 0 ? "any" : + inet_ntoa(host->params->bindAddr->sin_addr)); + } +#ifdef HAVE_INET6 + if (host->params->family == AF_INET) + { + fprintf (fp,"%s bindaddress6 : none\n",indent); + } + else + { + char buf[128]; + fprintf (fp,"%s bindaddress6 : %s\n",indent, + host->params->bindAddr6 == NULL ? "any" : + inet_ntop(AF_INET6, &host->params->bindAddr6->sin6_addr, + buf, sizeof(buf))); + } +#endif fprintf (fp,"%s abs-max-connections : %d\n",indent, host->params->absMaxConnections) ; fprintf (fp,"%s active-connections : %d\n",indent,host->activeCxns) ; @@ -2425,6 +2508,38 @@ const char *hostPeerName (Host host) } /* + * get the IPv4 bindaddress + */ +const struct sockaddr_in *hostBindAddr (Host host) +{ + ASSERT (host != NULL) ; + + return host->params->bindAddr ; +} + +#ifdef HAVE_INET6 +/* + * get the IPv6 bindaddress + */ +const struct sockaddr_in6 *hostBindAddr6 (Host host) +{ + ASSERT (host != NULL) ; + + return host->params->bindAddr6 ; +} + +/* + * get the address family + */ +int hostAddrFamily (Host host) +{ + ASSERT (host != NULL) ; + + return host->params->family ; +} +#endif + +/* * get the username and password for authentication */ const char *hostUsername (Host host) @@ -2611,6 +2726,70 @@ static HostParams hostDetails (scope *s, } +#ifdef HAVE_INET6 + if (getString(s,"bindaddress6",&q,isDefault?NO_INHERIT:INHERIT)) + { + struct addrinfo *res, hints; + + if (strcmp(q, "none") == 0) + p->family = AF_INET; + else if (p->family == AF_INET) + p->family = 0; + + if (strcmp(q, "any") != 0 && strcmp(q, "all") != 0 && + strcmp(q, "none") != 0) + { + memset( &hints, 0, sizeof( hints ) ); + hints.ai_flags = AI_NUMERICHOST; + if( getaddrinfo( q, NULL, &hints, &res ) ) + { + logOrPrint (LOG_ERR, fp, + "unable to determine IPv6 bind address for %s", + p->peerName) ; + } + else + { + p->bindAddr6 = (struct sockaddr_in6 *) xmalloc (res->ai_addrlen); + memcpy( p->bindAddr6, res->ai_addr, res->ai_addrlen ); + } + } + } +#endif + + if (getString(s,"bindaddress",&q,isDefault?NO_INHERIT:INHERIT)) + { + struct in_addr addr ; + +#ifdef HAVE_INET6 + if (strcmp(q, "none") == 0) { + if (p->family) { + logOrPrint (LOG_ERR,fp,"cannot set both bindaddress and bindaddress6" + " to \"none\" -- ignoring them for %s",p->peerName); + p->family = 0; + } else { + p->family = AF_INET6; + } + } else if (p->family == AF_INET6) + p->family = 0; +#endif + + if (strcmp(q, "any") != 0 && strcmp(q, "all") != 0 && + strcmp(q, "none") != 0) + { + if (!inet_aton(q,&addr)) + { + logOrPrint (LOG_ERR, fp, + "unable to determine IPv4 bind address for %s", + p->peerName) ; + } + else + { + p->bindAddr = (struct sockaddr_in *) + xmalloc (sizeof(struct sockaddr_in)); + make_sin( (struct sockaddr_in *)p->bindAddr, &addr ); + } + } + } /* check required global defaults are there and have good values */ @@ -2676,6 +2855,12 @@ static HostParams hostDetails (scope *s, GETINT(s,fp,"port-number",0,LONG_MAX,REQ,p->portNum, inherit); GETINT(s,fp,"backlog-limit",0,LONG_MAX,REQ,p->backlogLimit, inherit); +#ifdef HAVE_INET6 + GETBOOL(s,fp,"force-ipv4",NOTREQ,p->forceIPv4,inherit); + if (p->forceIPv4) + p->family = AF_INET; +#endif + if (findValue (s,"backlog-factor",inherit) == NULL && findValue (s,"backlog-limit-high",inherit) == NULL) { diff -rup inn-2.4.3/innfeed/host.h inn-2.4.4/innfeed/host.h --- inn-2.4.3/innfeed/host.h 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innfeed/host.h 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: host.h 6648 2004-01-25 20:07:11Z rra $ +/* $Id: host.h 7778 2008-04-17 21:27:22Z iulius $ ** ** The public interface to the Host class. ** @@ -85,7 +85,10 @@ void hostFlush (Host host) ; void hostSendArticle (Host host, Article article) ; /* return an IP address for the host */ -struct sockaddr *hostIpAddr (Host host) ; +struct sockaddr *hostIpAddr (Host host, int family) ; + +/* Delete all IPv4 addresses from the address list */ +void hostDeleteIpv4Addr (Host host); /* mark the current IP address as failed and rotate to the next one */ void hostIpFailed (Host host) ; @@ -150,6 +153,13 @@ bool hostGimmeArticle (Host host, Connec /* get the name that INN uses for this host */ const char *hostPeerName (Host host) ; +/* get the bindaddress */ +const struct sockaddr_in *hostBindAddr(Host host) ; +#ifdef HAVE_INET6 +const struct sockaddr_in6 *hostBindAddr6(Host host) ; +int hostAddrFamily (Host host); +#endif + /* get the username and password for authentication */ const char *hostUsername (Host host) ; const char *hostPassword (Host host) ; diff -rup inn-2.4.3/innfeed/innfeed.h inn-2.4.4/innfeed/innfeed.h --- inn-2.4.3/innfeed/innfeed.h 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/innfeed/innfeed.h 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innfeed.h 6648 2004-01-25 20:07:11Z rra $ +/* $Id: innfeed.h 7559 2006-08-28 02:10:39Z eagle $ ** ** innfeed's configuration values. ** @@ -62,6 +62,7 @@ #define NOCHECKHIGH 95.0 /* no-check-high */ #define NOCHECKLOW 90.0 /* no-check-low */ #define PORTNUM 119 /* port-number */ +#define FORCE_IPv4 false /* force using IPv4 */ #define BLOGLIMIT 0 /* backlog-limit */ #define LIMIT_FUDGE 1.10 /* backlog-factor */ #define BLOGLIMIT_HIGH 0 /* backlog-limit-high */ diff -rup inn-2.4.3/lib/Makefile inn-2.4.4/lib/Makefile --- inn-2.4.3/lib/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/lib/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -92,159 +92,207 @@ depend: Makefile $(SOURCES) $(EXTRA_SOUR # DO NOT DELETE THIS LINE -- make depend depends on it. buffer.o: buffer.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/buffer.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/buffer.h ../include/inn/defines.h ../include/libinn.h cleanfrom.o: cleanfrom.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h clientactive.o: clientactive.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/libinn.h ../include/nntp.h ../include/paths.h clientlib.o: clientlib.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h \ - ../include/nntp.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/nntp.h concat.o: concat.c ../include/config.h ../include/inn/defines.h \ - ../include/libinn.h + ../include/inn/system.h ../include/libinn.h ../include/config.h conffile.o: conffile.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/conffile.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/conffile.h ../include/libinn.h confparse.o: confparse.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/confparse.h \ - ../include/inn/hashtab.h ../include/inn/messages.h \ - ../include/inn/vector.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/confparse.h ../include/inn/defines.h \ + ../include/inn/hashtab.h ../include/inn/messages.h \ + ../include/inn/vector.h ../include/libinn.h daemonize.o: daemonize.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h date.o: date.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h dbz.o: dbz.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/dbz.h ../include/libinn.h \ - ../include/inn/innconf.h ../include/inn/mmap.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/dbz.h ../include/libinn.h ../include/inn/messages.h \ + ../include/inn/defines.h ../include/inn/innconf.h ../include/inn/mmap.h \ + ../include/libinn.h defdist.o: defdist.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h \ - ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/paths.h fdflags.o: fdflags.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h fdlimit.o: fdlimit.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h genid.o: genid.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h getfqdn.o: getfqdn.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h ../include/paths.h -getmodaddr.o: getmodaddr.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h ../include/paths.h +getmodaddr.o: getmodaddr.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h gettime.o: gettime.c ../include/config.h ../include/inn/defines.h \ - ../include/libinn.h + ../include/inn/system.h ../include/libinn.h ../include/config.h hash.o: hash.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/md5.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/md5.h ../include/inn/defines.h ../include/libinn.h hashtab.o: hashtab.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/hashtab.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/hashtab.h ../include/inn/defines.h ../include/libinn.h innconf.o: innconf.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/confparse.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/vector.h ../include/libinn.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/confparse.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h \ + ../include/inn/vector.h ../include/libinn.h ../include/paths.h inndcomm.o: inndcomm.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h \ - ../include/portable/socket.h ../include/inn/innconf.h \ - ../include/inndcomm.h ../include/libinn.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h \ + ../include/portable/socket.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inndcomm.h ../include/libinn.h \ + ../include/paths.h list.o: list.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/list.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/list.h ../include/inn/defines.h localopen.o: localopen.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h \ - ../include/nntp.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h lockfile.o: lockfile.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h makedir.o: makedir.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h md5.o: md5.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/md5.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/md5.h ../include/inn/defines.h messages.o: messages.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h mmap.o: mmap.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/mmap.h \ - ../include/inn/messages.h ../include/inn/mmap.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/mmap.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h \ + ../include/inn/mmap.h parsedate.o: parsedate.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h qio.o: qio.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/qio.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/qio.h ../include/inn/defines.h ../include/libinn.h radix32.o: radix32.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h readin.o: readin.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h remopen.o: remopen.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/inn/innconf.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h -reservedfd.o: reservedfd.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h +reservedfd.o: reservedfd.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h resource.o: resource.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h -sendarticle.o: sendarticle.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h ../include/libinn.h \ - ../include/nntp.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h +sendarticle.o: sendarticle.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h ../include/nntp.h sendpass.o: sendpass.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h \ - ../include/nntp.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h sequence.o: sequence.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/sequence.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/sequence.h ../include/inn/defines.h sockaddr.o: sockaddr.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h ../include/libinn.h timer.o: timer.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h \ - ../include/inn/messages.h ../include/inn/timer.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h \ + ../include/inn/timer.h ../include/libinn.h tst.o: tst.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/tst.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/tst.h ../include/inn/defines.h ../include/libinn.h uwildmat.o: uwildmat.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h vector.o: vector.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/vector.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/vector.h ../include/inn/defines.h ../include/libinn.h version.o: version.c ../include/config.h ../include/inn/defines.h \ - ../include/inn/version.h + ../include/inn/system.h ../include/inn/version.h wire.o: wire.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/wire.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/wire.h ../include/inn/defines.h ../include/libinn.h xfopena.o: xfopena.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h xmalloc.o: xmalloc.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h ../include/libinn.h xsignal.o: xsignal.c ../include/config.h ../include/inn/defines.h \ - ../include/libinn.h + ../include/inn/system.h ../include/libinn.h ../include/config.h xwrite.o: xwrite.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h fseeko.o: fseeko.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h ftello.o: ftello.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h -getpagesize.o: getpagesize.c ../include/config.h \ - ../include/inn/defines.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h +getpagesize.o: getpagesize.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h hstrerror.o: hstrerror.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h inet_aton.o: inet_aton.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h inet_ntoa.o: inet_ntoa.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h -memcmp.o: memcmp.c ../include/config.h ../include/inn/defines.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h +memcmp.o: memcmp.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h mkstemp.o: mkstemp.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/time.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/time.h ../include/config.h pread.o: pread.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h pwrite.o: pwrite.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h setenv.o: setenv.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h setproctitle.o: setproctitle.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/setproctitle.h ../include/inn/messages.h -strcasecmp.o: strcasecmp.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h -strerror.o: strerror.c ../include/config.h ../include/inn/defines.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/setproctitle.h \ + ../include/config.h ../include/inn/messages.h ../include/inn/defines.h +strcasecmp.o: strcasecmp.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h +strerror.o: strerror.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h strlcat.o: strlcat.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h strlcpy.o: strlcpy.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h strspn.o: strspn.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h strtok.o: strtok.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h perl.o: perl.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h ../include/ppport.h \ - ../include/innperl.h + ../include/inn/system.h diff -rup inn-2.4.3/lib/dbz.c inn-2.4.4/lib/dbz.c --- inn-2.4.3/lib/dbz.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/lib/dbz.c 2008-05-05 03:18:36.000000000 -0700 @@ -701,7 +701,7 @@ static void closehashtable(hash_table *t free(tab->core); if (tab->incore == INCORE_MMAP) { #if defined(HAVE_MMAP) - if (munmap(tab->core, (int)conf.tsize * tab->reclen) == -1) { + if (munmap(tab->core, conf.tsize * tab->reclen) == -1) { syswarn("closehashtable: munmap failed"); } #else @@ -1246,8 +1246,8 @@ static bool getcore(hash_table *tab) { char *it; - int nread; - int i; + ssize_t nread; + size_t i; struct stat st; size_t length = conf.tsize * tab->reclen; @@ -1303,14 +1303,16 @@ getcore(hash_table *tab) static bool putcore(hash_table *tab) { - int size; + size_t size; + ssize_t result; if (tab->incore == INCORE_MEM) { if(options.writethrough) return true; nonblocking(tab->fd, false); size = tab->reclen * conf.tsize; - if (pwrite(tab->fd, tab->core, size, 0) != size) { + result = xpwrite(tab->fd, tab->core, size, 0); + if (result < 0 || (size_t) result != size) { nonblocking(tab->fd, options.nonblock); return false; } @@ -1318,7 +1320,7 @@ putcore(hash_table *tab) } #ifdef HAVE_MMAP if(tab->incore == INCORE_MMAP) { - msync(tab->core, (int)conf.tsize * tab->reclen, MS_ASYNC); + msync(tab->core, conf.tsize * tab->reclen, MS_ASYNC); } #endif return true; @@ -1540,7 +1542,7 @@ set(searcher *sp, hash_table *tab, void debug("set: incore"); if (tab->incore == INCORE_MMAP) { if (innconf->nfswriter) { - mapcntl(where, tab->reclen, MS_ASYNC); + inn_mapcntl(where, tab->reclen, MS_ASYNC); } return true; } diff -rup inn-2.4.3/lib/innconf.c inn-2.4.4/lib/innconf.c --- inn-2.4.3/lib/innconf.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/lib/innconf.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innconf.c 7471 2005-12-15 04:53:16Z eagle $ +/* $Id: innconf.c 7751 2008-04-06 14:35:40Z iulius $ ** ** Manage the global innconf struct. ** @@ -163,6 +163,7 @@ const struct config config_table[] = { { K(nntplinklog), BOOL (false) }, { K(noreader), BOOL (false) }, { K(pathalias), STRING (NULL) }, + { K(pathcluster), STRING (NULL) }, { K(pauseretrytime), NUMBER (300) }, { K(peertimeout), NUMBER (3600) }, { K(port), NUMBER (119) }, @@ -203,6 +204,7 @@ const struct config config_table[] = { { K(nfsreaderdelay), NUMBER (60) }, { K(nicenewnews), NUMBER (0) }, { K(nicennrpd), NUMBER (0) }, + { K(nnrpdflags), STRING ("") }, { K(nnrpdauthsender), BOOL (false) }, { K(nnrpdloadlimit), NUMBER (16) }, { K(nnrpdoverstats), BOOL (false) }, diff -rup inn-2.4.3/lib/inndcomm.c inn-2.4.4/lib/inndcomm.c --- inn-2.4.3/lib/inndcomm.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/lib/inndcomm.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inndcomm.c 7414 2005-10-09 03:58:19Z eagle $ +/* $Id: inndcomm.c 7597 2007-01-16 23:11:05Z eagle $ ** ** Library routines to let other programs control innd. */ @@ -256,6 +256,7 @@ ICCcommand(char cmd, const char *argv[], /* now stick in the protocol version and the length. */ buff -= HEADER_SIZE; + bufsiz += HEADER_SIZE; protocol = ICC_PROTOCOL_1; memcpy(buff, &protocol, sizeof(protocol)); memcpy(buff + sizeof(protocol), &rlen, sizeof(rlen)); @@ -370,6 +371,10 @@ ICCcommand(char cmd, const char *argv[], memcpy(&protocol, buff, sizeof(protocol)); memcpy(&rlen, buff + sizeof(protocol), sizeof(rlen)); rlen = ntohs(rlen) - HEADER_SIZE; + if (rlen > bufsiz) { + ICCfailure = "bad length"; + return -1; + } i = RECVorREAD(ICCfd, buff, rlen); if (i != rlen) { diff -rup inn-2.4.3/lib/mmap.c inn-2.4.4/lib/mmap.c --- inn-2.4.3/lib/mmap.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/lib/mmap.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: mmap.c 5607 2002-08-18 22:20:10Z rra $ +/* $Id: mmap.c 7598 2007-02-09 02:40:51Z eagle $ ** ** MMap manipulation routines ** @@ -18,7 +18,7 @@ ** Figure out what page an address is in and flush those pages */ void -mapcntl(void *p, size_t length, int flags) +inn__mapcntl(void *p, size_t length, int flags) { int pagesize; diff -rup inn-2.4.3/lib/perl.c inn-2.4.4/lib/perl.c --- inn-2.4.3/lib/perl.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/lib/perl.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 6135 2003-01-19 01:15:40Z rra $ +/* $Id: perl.c 7815 2008-05-05 08:43:58Z iulius $ ** ** Embedded Perl support for INN. ** @@ -62,6 +62,7 @@ bool PerlFilter(bool value) { dSP; + char *argv[] = { NULL }; if (value == PerlFilterActive) return true; @@ -71,7 +72,7 @@ PerlFilter(bool value) if (perl_get_cv("filter_end", false) != NULL) { ENTER; SAVETMPS; - perl_call_argv("filter_end", G_EVAL | G_DISCARD | G_NOARGS, NULL); + perl_call_argv("filter_end", G_EVAL | G_DISCARD | G_NOARGS, argv); if (SvTRUE(ERRSV)) { syslog (L_ERROR, "SERVER perl function filter_end died: %s", SvPV(ERRSV, PL_na)); @@ -172,11 +173,10 @@ int PERLreadfilter(char *filterfile, con ENTER ; SAVETMPS ; - argv[0] = filterfile ; - argv[1] = NULL ; - + argv[0] = NULL; + if (perl_get_cv("filter_before_reload", false) != NULL) { - perl_call_argv("filter_before_reload",G_EVAL|G_DISCARD|G_NOARGS,NULL); + perl_call_argv("filter_before_reload", G_EVAL|G_DISCARD|G_NOARGS, argv); if (SvTRUE(ERRSV)) /* check $@ */ { syslog (L_ERROR,"SERVER perl function filter_before_reload died: %s", SvPV(ERRSV, PL_na)) ; @@ -185,6 +185,9 @@ int PERLreadfilter(char *filterfile, con } } + argv[0] = filterfile ; + argv[1] = NULL ; + PerlSilence(); perl_call_argv ("_load_", 0, argv) ; PerlUnSilence(); @@ -209,8 +212,9 @@ int PERLreadfilter(char *filterfile, con PerlFilter (false) ; } + argv[0] = NULL; if (perl_get_cv("filter_after_reload", false) != NULL) { - perl_call_argv("filter_after_reload", G_EVAL|G_DISCARD|G_NOARGS, NULL); + perl_call_argv("filter_after_reload", G_EVAL|G_DISCARD|G_NOARGS, argv); if (SvTRUE(ERRSV)) /* check $@ */ { syslog (L_ERROR,"SERVER perl function filter_after_reload died: %s", SvPV(ERRSV, PL_na)) ; diff -rup inn-2.4.3/nnrpd/Makefile inn-2.4.4/nnrpd/Makefile --- inn-2.4.3/nnrpd/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6965 2004-07-15 02:16:13Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -72,106 +72,123 @@ depend: $(SOURCES) # DO NOT DELETE THIS LINE -- make depend depends on it. article.o: article.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/wire.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h ../include/ov.h ../include/inn/history.h tls.h \ - cache.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/wire.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h tls.h cache.h cache.o: cache.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/inn/tst.h \ - ../include/inn/list.h ../include/libinn.h ../include/storage.h \ - cache.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/inn/tst.h \ + ../include/inn/list.h ../include/libinn.h ../include/storage.h cache.h group.o: group.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h ../include/ov.h ../include/inn/history.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h commands.o: commands.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/wait.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h ../include/ov.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/wait.h ../include/config.h nnrpd.h \ + ../include/portable/socket.h ../include/portable/time.h \ + ../include/inn/qio.h ../include/inn/defines.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h ../include/inn/innconf.h \ + ../include/inn/messages.h line.o: line.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/messages.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/messages.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h list.o: list.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h nnrpd.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ - ../include/nntp.h ../include/paths.h ../include/storage.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/ov.h \ - ../include/inn/history.h ../include/inn/innconf.h \ - ../include/inn/messages.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + nnrpd.h ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h \ + ../include/inn/defines.h ../include/libinn.h ../include/nntp.h \ + ../include/paths.h ../include/storage.h ../include/inn/vector.h \ + ../include/inn/timer.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../include/inn/innconf.h \ + ../include/inn/messages.h misc.o: misc.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h tls.h sasl_config.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h tls.h sasl_config.h newnews.o: newnews.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/wire.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h ../include/ov.h ../include/inn/history.h \ - cache.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/inn/wire.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h cache.h nnrpd.o: nnrpd.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/setproctitle.h \ - ../include/portable/wait.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/libinn.h ../include/ov.h \ - ../include/storage.h ../include/inn/history.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/nntp.h ../include/paths.h \ - ../include/inn/vector.h ../include/inn/timer.h tls.h sasl_config.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/setproctitle.h ../include/config.h \ + ../include/portable/wait.h ../include/inn/innconf.h \ + ../include/inn/defines.h ../include/inn/messages.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h nnrpd.h \ + ../include/portable/socket.h ../include/portable/time.h \ + ../include/inn/qio.h ../include/nntp.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h tls.h sasl_config.h perl.o: perl.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h post.h ../include/ppport.h \ - ../include/innperl.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h post.h perm.o: perm.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/wait.h \ - ../include/conffile.h ../include/inn/innconf.h ../include/innperl.h \ - nnrpd.h ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/wait.h ../include/config.h ../include/conffile.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/innperl.h \ + nnrpd.h ../include/portable/socket.h ../include/portable/time.h \ + ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ + ../include/paths.h ../include/storage.h ../include/inn/vector.h \ + ../include/inn/timer.h post.o: post.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h ../include/ov.h ../include/inn/history.h \ - post.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h post.h python.o: python.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h ../include/inn/hashtab.h -sasl_config.o: sasl_config.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h nnrpd.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ - ../include/nntp.h ../include/paths.h ../include/storage.h \ - ../include/inn/vector.h ../include/inn/timer.h sasl_config.h -tls.o: tls.c ../include/config.h ../include/inn/defines.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h tls.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/hashtab.h +sasl_config.o: sasl_config.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h sasl_config.h +tls.o: tls.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h nnrpd.h ../include/portable/socket.h \ + ../include/config.h ../include/portable/time.h ../include/inn/qio.h \ + ../include/inn/defines.h ../include/libinn.h ../include/config.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h tls.h sasl_config.h track.o: track.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h nnrpd.h \ - ../include/portable/socket.h ../include/portable/time.h \ - ../include/inn/qio.h ../include/libinn.h ../include/nntp.h \ - ../include/paths.h ../include/storage.h ../include/inn/vector.h \ - ../include/inn/timer.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h nnrpd.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/inn/qio.h ../include/libinn.h \ + ../include/nntp.h ../include/paths.h ../include/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h diff -rup inn-2.4.3/nnrpd/article.c inn-2.4.4/nnrpd/article.c --- inn-2.4.3/nnrpd/article.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/article.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: article.c 7267 2005-06-06 05:10:01Z eagle $ +/* $Id: article.c 7538 2006-08-26 05:44:06Z eagle $ ** ** Article-related routines. */ @@ -647,7 +647,8 @@ void CMDfetch(int ac, char *av[]) return; } tart=art; - Reply("%d %ld %s %s\r\n", what->ReplyCode, art, av[1], what->Item); + Reply("%d %lu %s %s\r\n", what->ReplyCode, (unsigned long) art, + av[1], what->Item); if (what->Type != STstat) { ARTsendmmap(what->Type); } diff -rup inn-2.4.3/nnrpd/commands.c inn-2.4.4/nnrpd/commands.c --- inn-2.4.3/nnrpd/commands.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/commands.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: commands.c 6617 2004-01-12 05:18:44Z rra $ +/* $Id: commands.c 7542 2006-08-26 05:57:11Z eagle $ ** ** Miscellaneous commands. */ @@ -414,7 +414,7 @@ void CMDnewgroups(int ac, char *av[]) key.name = p; if ((gd = bsearch(&key, grouplist, numgroups, sizeof(GROUPDATA), GroupCompare)) == NULL) continue; - Printf("%s %d %d %s\r\n", p, gd->high, gd->low, q); + Printf("%s %u %u %s\r\n", p, gd->high, gd->low, q); numfound--; } for (i = 0; i < numgroups; i++) { diff -rup inn-2.4.3/nnrpd/group.c inn-2.4.4/nnrpd/group.c --- inn-2.4.3/nnrpd/group.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/group.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: group.c 7502 2006-03-20 02:29:37Z eagle $ +/* $Id: group.c 7538 2006-08-26 05:44:06Z eagle $ ** ** Newsgroups and the active file. */ @@ -130,9 +130,8 @@ void CMDgroup(int ac, char *av[]) } OVclosesearch(handle); } - Reply("%d %d %ld %ld %s\r\n", - NNTP_GROUPOK_VAL, - count, ARTlow, ARThigh, group); + Reply("%d %d %lu %lu %s\r\n", NNTP_GROUPOK_VAL, count, + (unsigned long) ARTlow, (unsigned long) ARThigh, group); } GRPcount++; ARTnumber = ARTlow; @@ -151,13 +150,14 @@ void CMDgroup(int ac, char *av[]) available it shouldn't hurt to return the same thing. */ if (count == 0) { Reply("%d 0 0 0 %s\r\n", NNTP_GROUPOK_VAL, group); + Printf(".\r\n"); } else if ((handle = OVopensearch(group, ARTlow, ARThigh)) != NULL) { - Reply("%d %d %ld %ld %s\r\n", NNTP_GROUPOK_VAL, count, ARTlow, - ARThigh, group); + Reply("%d %d %lu %lu %s\r\n", NNTP_GROUPOK_VAL, count, + (unsigned long) ARTlow, (unsigned long) ARThigh, group); while (OVsearch(handle, &i, NULL, NULL, &token, NULL)) { if (PERMaccessconf->nnrpdcheckart && !ARTinstorebytoken(token)) continue; - Printf("%ld\r\n", i); + Printf("%lu\r\n", (unsigned long) i); } OVclosesearch(handle); Printf(".\r\n"); @@ -190,7 +190,8 @@ GRPreport() if (GRPcur) { strlcpy(buff, GRPcur, sizeof(buff)); - syslog(L_NOTICE, "%s group %s %ld", ClientHost, buff, GRParticles); + syslog(L_NOTICE, "%s group %s %lu", ClientHost, buff, + (unsigned long) GRParticles); GRParticles = 0; repbuff[0]='\0'; } diff -rup inn-2.4.3/nnrpd/line.c inn-2.4.4/nnrpd/line.c --- inn-2.4.3/nnrpd/line.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/line.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: line.c 7471 2005-12-15 04:53:16Z eagle $ +/* $Id: line.c 7756 2008-04-10 19:59:21Z iulius $ ** ** Line by line reading support from sockets/pipes ** @@ -141,27 +141,50 @@ line_read(struct line *line, int timeout line->allocated = newsize; } } - /* wait for activity on stdin, updating timer stats as we - * go */ - do { - struct timeval t; - - FD_ZERO(&rmask); - FD_SET(STDIN_FILENO, &rmask); - t.tv_sec = timeout; - t.tv_usec = 0; - TMRstart(TMR_IDLE); - i = select(STDIN_FILENO + 1, &rmask, NULL, NULL, &t); - TMRstop(TMR_IDLE); - if (i == -1 && errno != EINTR) { - syswarn("%s can't select", ClientHost); - return RTtimeout; - } - } while (i == -1); - /* if stdin didn't select, we must have timed out */ - if (i == 0 || !FD_ISSET(STDIN_FILENO, &rmask)) - return RTtimeout; +#ifdef HAVE_SSL + /* It seems that the SSL_read cannot be mixed with select() + * as in the current code. SSL communicates in its own data + * blocks and hand shaking. The do_readline using SSL_read + * could return, but still with a partial line in the SSL_read + * buffer. Then the server SSL routine would sit there waiting + * for completion of that data block while nnrpd sat at the + * select() routine waiting for more data from the server. + * + * Here, we decide to just bypass the select() wait. Unlike + * innd with multiple threads, the select on nnrpd is just + * waiting on a single file descriptor, so it is not really + * essential with blocked read like SSL_read. Using an alarm + * signal around SSL_read for non active timeout, SSL works + * without dead locks. However, without the select() wait, + * the IDLE timer stat won't be collected... + */ + if (tls_conn == NULL) { +#endif + /* Wait for activity on stdin, updating timer stats as we + * go. */ + do { + struct timeval t; + + FD_ZERO(&rmask); + FD_SET(STDIN_FILENO, &rmask); + t.tv_sec = timeout; + t.tv_usec = 0; + TMRstart(TMR_IDLE); + i = select(STDIN_FILENO + 1, &rmask, NULL, NULL, &t); + TMRstop(TMR_IDLE); + if (i == -1 && errno != EINTR) { + syswarn("%s can't select", ClientHost); + return RTtimeout; + } + } while (i == -1); + + /* If stdin didn't select, we must have timed out. */ + if (i == 0 || !FD_ISSET(STDIN_FILENO, &rmask)) + return RTtimeout; +#ifdef HAVE_SSL + } +#endif count = line_doread(where, line->allocated - (where - line->start)); diff -rup inn-2.4.3/nnrpd/list.c inn-2.4.4/nnrpd/list.c --- inn-2.4.3/nnrpd/list.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/list.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: list.c 6986 2004-10-01 04:57:36Z rra $ +/* $Id: list.c 7731 2008-04-06 08:40:29Z iulius $ ** ** List commands. */ @@ -61,7 +61,7 @@ static LISTINFO INFOschema = { }; static LISTINFO INFOmotd = { "motd", _PATH_MOTD, NULL, false, "motd", - "Message of the day text." + "Message of the day text" }; static LISTINFO *info[] = { @@ -133,7 +133,7 @@ CMD_list_single(char *group) } if (OVgroupstats(group, &lo, &hi, NULL, &flag) && flag != '=') { Reply("%d %s.\r\n", NNTP_LIST_FOLLOWS_VAL, INFOactive.Format); - Printf("%s %010d %010d %c\r\n.\r\n", group, hi, lo, flag); + Printf("%s %010u %010u %c\r\n.\r\n", group, hi, lo, flag); return true; } return false; @@ -179,7 +179,7 @@ CMDlist(int ac, char *av[]) if (CMD_list_single(wildarg)) return; } - } else if (lp == &INFOgroups) { + } else if (lp == &INFOgroups || lp == &INFOactivetimes) { if (ac == 3) wildarg = av[2]; } @@ -204,16 +204,12 @@ CMDlist(int ac, char *av[]) qp = QIOopen(path); free(path); if (qp == NULL) { - if (!lp->Required && errno == ENOENT) { - Reply("%d %s.\r\n", NNTP_LIST_FOLLOWS_VAL, lp->Format); - Printf(".\r\n"); - } - else { - syslog(L_ERROR, "%s cant fopen %s %m", ClientHost, lp->File); - Reply("%d No list of %s available.\r\n", - NNTP_TEMPERR_VAL, lp->Items); - } - return; + Reply("%d No list of %s available.\r\n", + NNTP_TEMPERR_VAL, lp->Items); + if (lp->Required || errno != ENOENT) { + syslog(L_ERROR, "%s cant fopen %s %m", ClientHost, lp->File); + } + return; } Reply("%d %s.\r\n", NNTP_LIST_FOLLOWS_VAL, lp->Format); diff -rup inn-2.4.3/nnrpd/nnrpd.c inn-2.4.4/nnrpd/nnrpd.c --- inn-2.4.3/nnrpd/nnrpd.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/nnrpd.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nnrpd.c 7269 2005-06-07 03:47:54Z eagle $ +/* $Id: nnrpd.c 7731 2008-04-06 08:40:29Z iulius $ ** ** NNTP server for readers (NNRP) for InterNetNews. ** @@ -130,7 +130,7 @@ static CMDENT CMDtable[] = { { "last", CMDnextlast, true, 1, 1, NULL }, { "list", CMDlist, true, 1, 3, - "[active|active.times|extensions|newsgroups|distributions|distrib.pats|overview.fmt|subscriptions|motd]" }, + "[active|active.times|distrib.pats|distributions|extensions|moderators|motd|newsgroups|overview.fmt|subscriptions]" }, { "listgroup", CMDgroup, true, 1, 2, "newsgroup" }, { "mode", CMDmode, false, 2, 2, @@ -385,6 +385,7 @@ Address2Name6(struct sockaddr *sa, char int ret; bool valid = 0; struct addrinfo hints, *res, *res0; + char *p; /* Get the official hostname, store it away. */ ret = getnameinfo( sa, SA_LEN( sa ), hostname, i, NULL, 0, NI_NAMEREQD ); @@ -423,9 +424,13 @@ Address2Name6(struct sockaddr *sa, char freeaddrinfo( res0 ); - if( valid ) return true; - else - { + if (valid) { + /* Make all lowercase for matching. */ + for (p = hostname; *p != '\0'; p++) + if (CTYPE(isupper, *p)) + *p = tolower(*p); + return true; + } else { HostErrorStr = mismatch_error; return false; } diff -rup inn-2.4.3/nnrpd/perl.c inn-2.4.4/nnrpd/perl.c --- inn-2.4.3/nnrpd/perl.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/nnrpd/perl.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 6221 2003-02-10 03:21:27Z rra $ +/* $Id: perl.c 7815 2008-05-05 08:43:58Z iulius $ ** ** Embedded Perl support for INN. ** @@ -63,6 +63,7 @@ char *HandleHeaders(char *article) HE *scan; SV *modswitch; int OtherSize; + char *argv[] = { NULL }; if(!PerlLoaded) { loadPerl(); @@ -112,7 +113,7 @@ char *HandleHeaders(char *article) sv_setpv(body, article); /* Call the filtering function */ - rc = perl_call_argv("filter_post", G_EVAL|G_SCALAR, NULL); + rc = perl_call_argv("filter_post", G_EVAL|G_SCALAR, argv); SPAGAIN; diff -rup inn-2.4.3/samples/control.ctl inn-2.4.4/samples/control.ctl --- inn-2.4.3/samples/control.ctl 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/samples/control.ctl 2008-05-05 03:18:36.000000000 -0700 @@ -1,8 +1,13 @@ ## control.ctl - Access control for control messages. -## Last modified: 2006-03-19 +## Last modified: 2008-03-05 ## ## Based on rone's unified control.ctl file. ## +## For a web presentation of the information recorded here, as well as +## other useful information about Usenet hierarchies, please see: +## +## +## ## Please copy usenet-config@isc.org on any updates to this file so that ## it can be updated in the INN CVS repository and on ftp.isc.org. For ## changes to a public hierarchy, please also post the changes to @@ -14,8 +19,9 @@ ## this file for the most up-to-date hierarchy control information and ## please use the latest version if you intend to carry all hierarchies. ## -## You may wish to review and change the policy for alt.*, free.*, and -## it-alt.* below before using this file on your server. +## You may wish to review and change the policy for alt.*, free.*, +## it-alt.*, and oesterreich.* below before using this file on your +## server. ## ## Format: ## ::: @@ -35,7 +41,7 @@ ## location by following the action with an = and the ## log ("mail" says to mail the admin, an empty location ## tosses the log information, and a relative path xxx -## logs to $LOG/xxx.log. +## logs to $LOG/xxx.log). ## ## The *last* matching entry is used. See the expire.ctl(5) man page for ## complete information. @@ -71,7 +77,7 @@ ## hierarchies from your server if you carry them, unless you've ## contacted the listed contact address and arranged a feed. ## -## If you have permission to carry any of the hierachies so listed in +## If you have permission to carry any of the hierarchies so listed in ## this file, you should change the entries for those hierarchies below. ## ## The comments of this file aren't in any formal or well-defined syntax, @@ -82,6 +88,9 @@ ## for the hierarchy), URL, Key URL (URL for PGP key), Key fingerprint, Key ## mail (address to mail for PGP key), and Syncable server (for actsync or ## a similar tool). +## +## Names used in this file that cannot be encoded in 7bit ASCII are in +## UTF-8. The only non-7bit-ASCII content is in comments. ## ------------------------------------------------------------------------- ## DEFAULT @@ -136,11 +145,31 @@ rmgroup:*:a.bsu.*:doit newgroup:*:acs.*|osu.*:mail rmgroup:*:acs.*|osu.*:doit +## ADASS (Astronomical Data Analysis Software and Systems) +# URL: http://iraf.noao.edu/iraf/web/adass_news.html +checkgroups:news@iraf.noao.edu:adass.*:doit +newgroup:news@iraf.noao.edu:adass.*:doit +rmgroup:news@iraf.noao.edu:adass.*:doit + ## AHN (Athens-Clarke County, Georgia, USA) checkgroups:greg@*.ucns.uga.edu:ahn.*:doit newgroup:greg@*.ucns.uga.edu:ahn.*:doit rmgroup:greg@*.ucns.uga.edu:ahn.*:doit +## AIOE (Aioe.org) +# Contact: usenet@aioe.org +# URL: http://news.aioe.org/hierarchy/ +# Admin group: aioe.system +# Key URL: http://news.aioe.org/hierarchy/aioe.txt +# Key fingerprint = 2203 1AAC 51E7 C7FD 664F 1D80 90DF 6C71 2322 A7F8 +# Syncable server: nntp.aioe.org +# *PGP* See comment at top of file. +newgroup:*:aioe.*:drop +rmgroup:*:aioe.*:drop +checkgroups:usenet@aioe.org:aioe.*:verify-usenet@aioe.org +newgroup:usenet@aioe.org:aioe.*:verify-usenet@aioe.org +rmgroup:usenet@aioe.org:aioe.*:verify-usenet@aioe.org + ## AIR (*DEFUNCT* -- Stanford University, USA) # Contact: news@news.stanford.edu # This hierarchy is defunct. Please remove it. @@ -172,19 +201,33 @@ rmgroup:*:alive.*:doit # # Accept all newgroups (except ones forged from Big 8 newgroup issuers, # who never issue alt.* control messages) and silently ignore all -# rmgroups. This file used to attempt to track and recommend trusted -# rmgroup issuers; it no longer does because they change too frequently. +# rmgroups. +# # What policy to use for alt.* groups varies widely from site to site. # For a small site, it is strongly recommended that this policy be changed -# to drop all newgroups for alt.* as well as rmgroups and that the news -# admin only add new alt.* groups on request, as tons of alt.* newgroups +# to drop all newgroups and rmgroups for alt.*. The local news admin can +# then add new alt.* groups only on user request. Tons of alt.* newgroups # are sent out regularly with the intent more to create nonsense entries -# in active files than to actually create a useable newsgroup. +# in active files than to actually create a useable newsgroup. The admin +# may still want to check the control message archive, as described below. +# +# Quality, user-desirable new groups can often be discovered by a quick +# perusal of recent alt.* newgroup messages after discarding obvious junk +# groups. One good initial filter is to check the archive of control +# messages for a requested group to see if a syntactically valid newgroup +# message was issued. Many of the junk control messages are invalid and +# won't be archived, and many sites will only add alt.* groups with valid +# control messages. To check the archive, see if: # -# Other options and comments on alt.* groups can be found at -# , one of the many alt.* FAQ sites. Be aware -# that there is no official, generally accepted alt.* policy and all -# information about alt.* groups available is essentially someone's +# ftp://ftp.isc.org/pub/usenet/control/alt/.gz +# +# exists (replacing with the name of the group) and read the +# first and last few control messages to see if the newsgroup should be +# moderated. (Some alt.* groups that should be moderated are created +# unmoderated by hijackers to try to damage the newsgroup.) +# +# Be aware that there is no official, generally accepted alt.* policy and +# all information about alt.* groups available is essentially someone's # opinion, including these comments. There are nearly as many different # policies with regard to alt.* groups as there are Usenet sites. # @@ -213,9 +256,13 @@ rmgroup:newsbastard@arkane.demon.co.uk:a ## AT (Austria) # URL: http://www.usenet.at/ # Admin group: at.usenet.gruppen -checkgroups:control@usenet.backbone.at:at.*:doit -newgroup:control@usenet.backbone.at:at.*:doit -rmgroup:control@usenet.backbone.at:at.*:doit +# Key URL: http://www.usenet.at/pgpkey.asc +# *PGP* See comment at top of file. +newgroup:*:at.*:drop +rmgroup:*:at.*:drop +checkgroups:control@usenet.backbone.at:at.*:verify-control@usenet.backbone.at +newgroup:control@usenet.backbone.at:at.*:verify-control@usenet.backbone.at +rmgroup:control@usenet.backbone.at:at.*:verify-control@usenet.backbone.at ## AUS (Australia) # Contact: ausadmin@aus.news-admin.org @@ -229,7 +276,9 @@ checkgroups:ausadmin@aus.news-admin.org: newgroup:ausadmin@aus.news-admin.org:aus.*:verify-ausadmin@aus.news-admin.org rmgroup:ausadmin@aus.news-admin.org:aus.*:verify-ausadmin@aus.news-admin.org -## AUSTIN (Texas, USA) +## AUSTIN (Austin, Texas, USA) +# URL: http://frenzy.austin.tx.us/austin/ +# Admin group: austin.usenet.config checkgroups:chip@unicom.com:austin.*:doit checkgroups:fletcher@cs.utexas.edu:austin.*:doit checkgroups:pug@pug.net:austin.*:doit @@ -263,20 +312,6 @@ rmgroup:ba-mod@nas.nasa.gov:ba.*:verify- newgroup:*:backbone.*:mail rmgroup:*:backbone.*:doit -## BAYNET (Bayerische Buergernetze, Deutschland) -# Contact: news@mayn.de -# URL: http://www.mayn.de/users/news/ -# Admin group: baynet.announce -# Key URL: http://home.mayn.de/news/pubkey-news.mayn.de -# Key fingerprint = F7 AD 96 D8 7A 3F 7E 84 02 0C 83 9A DB 8F EB B8 -# Syncable server: news.mayn.de (contact news@mayn.de if permission denied) -# *PGP* See comment at top of file. -newgroup:*:baynet.*:drop -rmgroup:*:baynet.*:drop -checkgroups:news@mayn.de:baynet.*:verify-news.mayn.de -newgroup:news@mayn.de:baynet.*:verify-news.mayn.de -rmgroup:news@mayn.de:baynet.*:verify-news.mayn.de - ## BC (British Columbia, Canada) checkgroups:bc_van_usenet@fastmail.ca:bc.*:doit newgroup:bc_van_usenet@fastmail.ca:bc.*:doit @@ -290,7 +325,7 @@ rmgroup:news@*netuse.de:bda.*:doit ## BE (Belgique/Belgie/Belgien/Belgium) # Contact: be-hierarchy-admin@usenet.be # URL: http://usenet.be/ -# Admin group: be.announce.newgroups +# Admin group: be.announce # Key URL: http://usenet.be/be.announce.newgroups.asc # Key fingerprint = 30 2A 45 94 70 DE 1F D5 81 8C 58 64 D2 F7 08 71 # *PGP* See comment at top of file. @@ -314,7 +349,7 @@ checkgroups:news@*ibl.bm:bermuda.*:doit newgroup:news@*ibl.bm:bermuda.*:doit rmgroup:news@*ibl.bm:bermuda.*:doit -## BES (*PRIVATE* -- Bejing Electron Spectrometer) +## BES (*PRIVATE* -- Beijing Electron Spectrometer) # Contact: news@news.stanford.edu # For private use only, contact the above address for information. newgroup:news@news.stanford.edu:bes.*:mail @@ -461,12 +496,10 @@ newgroup:*:chaven.*:mail rmgroup:*:chaven.*:doit ## CHI (Chicago, USA) +# URL: http://lull.org/pub/chi-newsgroup-faq checkgroups:lisbon@*chi.il.us:chi.*:doit -checkgroups:lisbon@*interaccess.com:chi.*:doit newgroup:lisbon@*chi.il.us:chi.*:doit -newgroup:lisbon@*interaccess.com:chi.*:doit rmgroup:lisbon@*chi.il.us:chi.*:doit -rmgroup:lisbon@*interaccess.com:chi.*:doit ## CHILE (Chile and Chilean affairs) # Contact: mod-cga@usenet.cl @@ -486,17 +519,6 @@ checkgroups:news@fdma.com:christnet.*:do newgroup:news@fdma.com:christnet.*:doit rmgroup:news@fdma.com:christnet.*:doit -## CITYSCP & DEMON (Cityscape Internet Services & Demon Internet, UK) -# Contact: Dave Williams -# Admin group: demon.news -# Key URL: ftp://ftp.demon.co.uk/pub/news/doc/demon.news.txt -# *PGP* See comment at top of file. -newgroup:*:cityscp.*|demon.*:drop -rmgroup:*:cityscp.*|demon.*:drop -checkgroups:newsmaster@demon.net:cityscp.*|demon.*:verify-demon.news -newgroup:newsmaster@demon.net:cityscp.*|demon.*:verify-demon.news -rmgroup:newsmaster@demon.net:cityscp.*|demon.*:verify-demon.news - ## CL (*PRIVATE* -- CL-Netz, German) # Contact: koordination@cl-netz.de # URL: http://www.cl-netz.de/ @@ -510,19 +532,19 @@ rmgroup:*:cl.*:doit #newgroup:koordination@cl-netz.de:cl.*:verify-cl.netz.infos #rmgroup:koordination@cl-netz.de:cl.*:verify-cl.netz.infos -## CLARI (Features and News, available on a commercial basis) +## CLARI (*PRIVATE* -- Features and News, available on a commercial basis) # Contact: support@clari.net # Admin group: clari.net.admin # Key URL: http://www.clari.net/tech/clarikey.txt +# For private use only, contact the above address for information. # *PGP* See comment at top of file. newgroup:*:clari.*:drop rmgroup:*:clari.*:drop -checkgroups:cl*@clarinet.com:clari.*:verify-ClariNet.Group -newgroup:cl*@clarinet.com:clari.*:verify-ClariNet.Group +newgroup:cl*@clarinet.com:clari.*:mail rmgroup:cl*@clarinet.com:clari.*:verify-ClariNet.Group ## CMI (*LOCAL* -- Champaign County, IL, USA) -# Contact: news@uiuc.edu +# Contact: news@ks.uiuc.edu # For local use only, contact the above address for information. newgroup:*:cmi.*:mail rmgroup:*:cmi.*:doit @@ -534,6 +556,7 @@ newgroup:*:cmu.*:mail rmgroup:*:cmu.*:doit ## CN (China) +# URL: http://news.yaako.com/ # Admin group: cn.announce # Key fingerprint = 62 97 EE 33 F7 16 25 C1 A4 9E 47 BA C5 3E 5E 9E # *PGP* See comment at top of file. @@ -564,25 +587,17 @@ checkgroups:news@supernews.net:codewarri newgroup:news@supernews.net:codewarrior.*:doit rmgroup:news@supernews.net:codewarrior.*:doit -## COMP, HUMANITIES, MISC, NEWS, REC, SCI, SOC, TALK (The Big 8) -# Contact: group-admin@isc.org +## COMP, HUMANITIES, MISC, NEWS, REC, SCI, SOC, TALK (The Big Eight) +# Contact: board@big-8.org +# URL: http://www.big-8.org/ +# Admin group: news.announce.newgroups # Key fingerprint = F5 35 58 D3 55 64 10 14 07 C6 95 53 13 6F D4 07 # *PGP* See comment at top of file. newgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop rmgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop -newgroup:group-admin@isc.org:*:drop -newgroup:tale@*uu.net:*:drop -rmgroup:group-admin@isc.org:*:drop -rmgroup:tale@*uu.net:*:drop checkgroups:group-admin@isc.org:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:verify-news.announce.newgroups -newgroup:group-admin@isc.org:comp.*|misc.*:verify-news.announce.newgroups -newgroup:group-admin@isc.org:humanities.*:verify-news.announce.newgroups -newgroup:group-admin@isc.org:news.*|rec.*|sci.*:verify-news.announce.newgroups -newgroup:group-admin@isc.org:soc.*|talk.*:verify-news.announce.newgroups -rmgroup:group-admin@isc.org:comp.*|misc.*:verify-news.announce.newgroups -rmgroup:group-admin@isc.org:humanities.*:verify-news.announce.newgroups -rmgroup:group-admin@isc.org:news.*|rec.*|sci.*:verify-news.announce.newgroups -rmgroup:group-admin@isc.org:soc.*|talk.*:verify-news.announce.newgroups +newgroup:group-admin@isc.org:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:verify-news.announce.newgroups +rmgroup:group-admin@isc.org:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:verify-news.announce.newgroups ## COMPUTER42 (Computer 42, Germany) # Contact: Dirk Schmitt @@ -653,6 +668,7 @@ rmgroup:moderator@dana.de:de.alt.*:verif ## DFW (Dallas/Fort Worth, Texas, USA) # URL: http://www.cirr.com/dfw/ +# Admin group: dfw.usenet.config checkgroups:eric@*cirr.com:dfw.*:doit newgroup:eric@*cirr.com:dfw.*:doit rmgroup:eric@*cirr.com:dfw.*:doit @@ -727,6 +743,7 @@ rmgroup:admin@england.news-admin.org:eng # Contact: moderador@corus-es.org # URL: http://www.corus-es.org/docs/es_newsadmins_faq.txt # Admin group: es.news.anuncios +# Key URL: http://www.corus-es.org/docs/esnews.asc # *PGP* See comment at top of file. newgroup:*:es.*:drop rmgroup:*:es.*:drop @@ -791,7 +808,7 @@ checkgroups:root@mbh.org:fido.*:doit newgroup:root@mbh.org:fido.*:doit rmgroup:root@mbh.org:fido.*:doit -## FIDO.BELG (FidoNet) +## FIDO.BELG (Belgian FidoNet) # Admin group: fido.belg.news # *PGP* See comment at top of file. newgroup:*:fido.belg.*:drop @@ -800,8 +817,20 @@ checkgroups:fidobelg@mail.z2.fidonet.org newgroup:fidobelg@mail.z2.fidonet.org:fido.belg.*:verify-fido.belg.news rmgroup:fidobelg@mail.z2.fidonet.org:fido.belg.*:verify-fido.belg.news -## FIDO7 (FidoNet) +## FIDO.GER (German FIDO Net Echos) +# URL: ftp://ftp.fu-berlin.de/doc/news/fido.ger/fido.ger-info.english +# Key URL: ftp://ftp.fu-berlin.de/doc/news/fido.ger/PGP-Key +# *PGP* See comment at top of file. +newgroup:*:fido.ger.*:drop +rmgroup:*:fido.ger.*:drop +checkgroups:fido.ger@news.fu-berlin.de:fido.ger.*:verify-fido.ger@news.fu-berlin.de +newgroup:fido.ger@news.fu-berlin.de:fido.ger.*:verify-fido.ger@news.fu-berlin.de +rmgroup:fido.ger@news.fu-berlin.de:fido.ger.*:verify-fido.ger@news.fu-berlin.de + +## FIDO7 (Russian FidoNet) +# URL: http://www.fido7.ru/ # Admin group: fido7.postmasters +# Key URL: http://www.fido7.ru/pgpcontrol.html # *PGP* See comment at top of file. newgroup:*:fido7.*:drop rmgroup:*:fido7.*:drop @@ -816,7 +845,7 @@ rmgroup:*@*.fi:finet.*:doit ## FJ (Japan and Japanese language) # Contact: committee@fj-news.org -# URL: http://www.is.tsukuba.ac.jp/~yas/fj/ +# URL: http://www.fj-news.org/index.html.en # Admin group: fj.news.announce # Key URL: http://www.is.tsukuba.ac.jp/~yas/fj/fj.asc # *PGP* See comment at top of file. @@ -844,7 +873,7 @@ checkgroups:news@flora.ottawa.on.ca:flor newgroup:news@flora.ottawa.on.ca:flora.*:verify-flora-news rmgroup:news@flora.ottawa.on.ca:flora.*:verify-flora-news -## FR (French Language) +## FR (French language) # URL: http://www.usenet-fr.news.eu.org/ # Admin group: fr.usenet.forums.annonces # Key URL: http://www.usenet-fr.news.eu.org/fur/usenet/presentation-fr.html @@ -893,12 +922,21 @@ newgroup:news@news.gatech.edu:git*class. rmgroup:news@news.gatech.edu:git.*:doit ## GNU (Free Software Foundation) -checkgroups:gnu@prep.ai.mit.edu:gnu.*:doit -checkgroups:news@*ai.mit.edu:gnu.*:doit -newgroup:gnu@prep.ai.mit.edu:gnu.*:doit -newgroup:news@*ai.mit.edu:gnu.*:doit -rmgroup:gnu@prep.ai.mit.edu:gnu.*:doit -rmgroup:news@*ai.mit.edu:gnu.*:doit +# URL: http://www.gnu.org/usenet/usenet.html +# Admin group: gnu.gnusenet.config +# Key URL: http://www.gnu.org/usenet/usenet-pgp-key.txt +# *PGP* See comment at top of file. +newgroup:*:gnu.*:drop +rmgroup:*:gnu.*:drop +checkgroups:usenet@gnu.org:gnu.*:verify-usenet@gnu.org +newgroup:usenet@gnu.org:gnu.*:verify-usenet@gnu.org +rmgroup:usenet@gnu.org:gnu.*:verify-usenet@gnu.org + +## GNUU (*PRIVATE* -- GNUU e.V., Oberursel, Germany) +# Contact: news@gnuu.de +# For private use only, contact the above address for information. +newgroup:*:gnuu.*:mail +rmgroup:*:gnuu.*:doit ## GOV (Government Information) # Admin group: gov.usenet.announce @@ -915,6 +953,19 @@ checkgroups:news@nit.gwu.edu:gwu.*:doit newgroup:news@nit.gwu.edu:gwu.*:doit rmgroup:news@nit.gwu.edu:gwu.*:doit +## HAMBURG (City of Hamburg, Germany) +# Contact: hamburg@steering-group.net +# URL: http://www.steering-group.net/hamburg/ +# Admin group: hamburg.koordination +# Key URL: http://www.steering-group.net/hamburg/hamburg.koordination.txt +# Key fingerprint = 3E E7 0C BB 6E 01 94 EE 45 6F C5 57 F4 B9 54 8E +# *PGP* See comment at top of file. +newgroup:*:hamburg.*:drop +rmgroup:*:hamburg.*:drop +checkgroups:hamburg@steering-group.net:hamburg.*:verify-hamburg.koordination +newgroup:hamburg@steering-group.net:hamburg.*:verify-hamburg.koordination +rmgroup:hamburg@steering-group.net:hamburg.*:verify-hamburg.koordination + ## HAMILTON (Canadian) checkgroups:news@*dcss.mcmaster.ca:hamilton.*:doit newgroup:news@*dcss.mcmaster.ca:hamilton.*:doit @@ -942,9 +993,9 @@ checkgroups:newgroups-request@usenet.or. newgroup:newgroups-request@usenet.or.kr:han.*:verify-han.news.admin rmgroup:newgroups-request@usenet.or.kr:han.*:verify-han.news.admin -## HARVARD (Harvard University, Cambridge, MA) -checkgroups:*@*.harvard.edu:harvard.*:doit -newgroup:*@*.harvard.edu:harvard.*:doit +## HARVARD (*LOCAL* -- Harvard University, Cambridge, MA) +# For local use only. +newgroup:*@*.harvard.edu:harvard.*:mail rmgroup:*@*.harvard.edu:harvard.*:doit ## HAWAII (Hawaii, USA) @@ -982,6 +1033,20 @@ checkgroups:news@academ.com:houston.*:ve newgroup:news@academ.com:houston.*:verify-houston.usenet.config rmgroup:news@academ.com:houston.*:verify-houston.usenet.config +## HR (Croatian language) +# Contact: newsmaster@carnet.hr +# URL: http://newsfeed.carnet.hr/control/ +# Admin group: hr.news.admin +# Key URL: http://newsfeed.carnet.hr/control/key.txt +# Key fingerprint = 0EE5 74FB 1C40 7ADB 0AAC A52F 7192 1BA3 ED63 AD9A +# Syncable server: news.carnet.hr +# *PGP* See comment at top of file. +newgroup:*:hr.*:drop +rmgroup:*:hr.*:drop +checkgroups:newsmaster@carnet.hr:hr.*:verify-newsmaster@carnet.hr +newgroup:newsmaster@carnet.hr:hr.*:verify-newsmaster@carnet.hr +rmgroup:newsmaster@carnet.hr:hr.*:verify-newsmaster@carnet.hr + ## HUMANITYQUEST (Humanities discussion) # Contact: news-admin@humanityquest.com # URL: http://www.humanityquest.com/projects/newsgroups/ @@ -1039,7 +1104,7 @@ newgroup:control@usenet.ie:ie.*:verify-c rmgroup:control@usenet.ie:ie.*:verify-control@usenet.ie ## IEEE (*DEFUNCT* -- Institute of Electrical and Electronic Engineers) -# Contact: +# Contact: postoffice@ieee.org # This hierarchy is defunct. Please remove it. newgroup:*:ieee.*:mail rmgroup:*:ieee.*:doit @@ -1144,7 +1209,20 @@ checkgroups:japan.admin.announce@news.ef newgroup:japan.admin.announce@news.efnet.com:japan.*:verify-japan.admin.announce@news.efnet.com rmgroup:japan.admin.announce@news.efnet.com:japan.*:verify-japan.admin.announce@news.efnet.com +## JLUG (Japan Linux Users Group) +# Contact: news@linux.or.jp +# URL: http://www.linux.or.jp/community/news/index.html +# Admin group: jlug.config +# Key URL: http://www.linux.or.jp/pgpkey/news +# *PGP* See comment at top of file. +newgroup:*:jlug.*:drop +rmgroup:*:jlug.*:drop +checkgroups:news@linux.or.jp:jlug.*:verify-news@linux.or.jp +newgroup:news@linux.or.jp:jlug.*:verify-news@linux.or.jp +rmgroup:news@linux.or.jp:jlug.*:verify-news@linux.or.jp + ## K12 (US Educational Network) +# URL: http://www.k12groups.org/ checkgroups:braultr@*csmanoirs.qc.ca:k12.*:doit newgroup:braultr@*csmanoirs.qc.ca:k12.*:doit rmgroup:braultr@*csmanoirs.qc.ca:k12.*:doit @@ -1184,6 +1262,14 @@ checkgroups:dan@sky.net:kc.*:doit newgroup:dan@sky.net:kc.*:doit rmgroup:dan@sky.net:kc.*:doit +## KGK (Administered by KGK, Japan) +# Contact: Keiji KOSAKA +# URL: http://film.rlss.okayama-u.ac.jp/~kgk/kgk/index.html +# Admin group: kgk.admin +checkgroups:usenet@film.rlss.okayama-u.ac.jp:kgk.*:doit +newgroup:usenet@film.rlss.okayama-u.ac.jp:kgk.*:doit +rmgroup:usenet@film.rlss.okayama-u.ac.jp:kgk.*:doit + ## KIEL (Kiel, Germany) # URL: http://news.koehntopp.de/kiel/ checkgroups:kris@koehntopp.de:kiel.*:doit @@ -1228,6 +1314,13 @@ rmgroup:linux-admin@bofh.it:linux.*:veri newgroup:*:local.*:mail rmgroup:*:local.*:drop +## LUEBECK (Luebeck, Germany) +# Contact: usenet@zybrkat.org +# Admin group: luebeck.admin +checkgroups:usenet@zybrkat.org:luebeck.*:doit +newgroup:usenet@zybrkat.org:luebeck.*:doit +rmgroup:usenet@zybrkat.org:luebeck.*:doit + ## MALTA (Nation of Malta) # Contact: cmeli@cis.um.edu.mt # URL: http://www.malta.news-admin.org/ @@ -1322,25 +1415,29 @@ newgroup:scs@lokkur.dexter.mi.us:mi.*:do rmgroup:scs@lokkur.dexter.mi.us:mi.*:doit ## MICROSOFT (Microsoft Corporation, USA) -# Contact: usenet@microsoft.com -# Key URL: http://www.microsoft.com/usenetadmin/pgpkey.txt -# Key fingerprint = 1C 3B EB AF 7C 5C 8A B0 CD 5F 5C B0 AB 74 4F B1 +# +# Control articles for that hierarchy are not issued by Microsoft itself +# but by a Usenet active participant in order to improve the quality of +# the propagation of Microsoft newsgroups. Their official URL is: +# http://www.microsoft.com/communities/newsgroups/list/en-us/default.aspx +# +# Contact: control-microsoft@trigofacile.com +# URL: http://www.trigofacile.com/divers/usenet/clefs/index.htm +# Admin group: microsoft.public.news.server +# Key URL: http://www.trigofacile.com/divers/usenet/clefs/pgpkey-microsoft.asc +# Key fingerprint = DF70 5FC9 F615 D52E 02DB A3CB 63A9 8D13 E60E 2FAA +# Syncable server: msnews.microsoft.com # *PGP* See comment at top of file. newgroup:*:microsoft.*:drop rmgroup:*:microsoft.*:drop -checkgroups:usenet@microsoft.com:microsoft.*:verify-usenet@microsoft.com -newgroup:usenet@microsoft.com:microsoft.*:verify-usenet@microsoft.com -rmgroup:usenet@microsoft.com:microsoft.*:verify-usenet@microsoft.com - -## MICROSOFT.PRIVATE (*PRIVATE* -- Microsoft Corporation, USA) -# Contact: usenet@microsoft.com -# For private use only, contact the above address for information. -newgroup:usenet@microsoft.com:microsoft.private.*:mail -rmgroup:usenet@microsoft.com:microsoft.private.*:doit +checkgroups:control-microsoft@trigofacile.com:microsoft.*:verify-control-microsoft@trigofacile.com +newgroup:control-microsoft@trigofacile.com:microsoft.*:verify-control-microsoft@trigofacile.com +rmgroup:control-microsoft@trigofacile.com:microsoft.*:verify-control-microsoft@trigofacile.com ## MILW (Milwaukee, Wisconsin, USA) # Contact: milw@usenet.mil.wi.us -# URL: http://usenet.mil.wi.us +# URL: http://usenet.mil.wi.us/ +# Admin group: milw.config # Key URL: http://usenet.mil.wi.us/pgpkey # Key fingerprint = 6E 9B 9F 70 98 AB 9C E5 C3 C0 05 82 21 5B F4 9E # *PGP* See comment at top of file. @@ -1415,6 +1512,16 @@ rmgroup:*:ncu.*:doit # rmgroup:*:nersc.*:doit ## NET (Usenet 2) +# +# This was a failed experiment in a different newsgroup creation policy and +# administrative policy which has now been almost entirely abandoned. The +# information is retained here for the few sites still using it, but sites +# not already carrying the groups probably won't be interested. +# +# (This was also the original unmoderated Usenet hierarchy from before the +# Great Renaming. The groups that used to be in net.* in the 1980s are now +# in the Big Eight hierarchies.) +# # URL: http://www.usenet2.org # Admin group: net.config # Key URL: http://www.usenet2.org/control@usenet2.org.asc @@ -1422,9 +1529,9 @@ rmgroup:*:ncu.*:doit # *PGP* See comment at top of file. newgroup:*:net.*:drop rmgroup:*:net.*:drop -checkgroups:control@usenet2.org:net.*:verify-control@usenet2.org -newgroup:control@usenet2.org:net.*:verify-control@usenet2.org -rmgroup:control@usenet2.org:net.*:verify-control@usenet2.org +#checkgroups:control@usenet2.org:net.*:verify-control@usenet2.org +#newgroup:control@usenet2.org:net.*:verify-control@usenet2.org +#rmgroup:control@usenet2.org:net.*:verify-control@usenet2.org ## NETINS (*LOCAL* -- netINS, Inc) # Contact: news@netins.net @@ -1445,6 +1552,12 @@ checkgroups:news@netscape.com:netscape.* newgroup:news@netscape.com:netscape.*:verify-netscape.public.admin rmgroup:news@netscape.com:netscape.*:verify-netscape.public.admin +## NF (Newfoundland and Labrador, Canada) +# Contact: randy@mun.ca +checkgroups:randy@mun.ca:nf.*:doit +newgroup:randy@mun.ca:nf.*:doit +rmgroup:randy@mun.ca:nf.*:doit + ## NIAGARA (Niagara Peninsula, USA/Canada) checkgroups:news@niagara.com:niagara.*:doit newgroup:news@niagara.com:niagara.*:doit @@ -1465,6 +1578,25 @@ checkgroups:ktomita@jade.dti.ne.jp:nihon newgroup:ktomita@jade.dti.ne.jp:nihon.*:doit rmgroup:ktomita@jade.dti.ne.jp:nihon.*:doit +## NIPPON (*PRIVATE* -- Japan) +# URL: http://www.gcd.org/news/nippon/ +# Admin group: nippon.news.group +# Key URL: http://www.gcd.org/news/nippon/ +# Key fingerprint = BC CF 15 CD B1 3C DF B3 C3 DE 35 6F 2F F7 46 DB +# For private use only. +# *PGP* See comment at top of file. +newgroup:*:nippon.*:drop +rmgroup:*:nippon.*:drop +newgroup:news@gcd.org:nippon.*:mail +rmgroup:news@gcd.org:nippon.*:verify-nippon.news.group + +## NJ (New Jersey, USA) +# Contact: nj-admin@gunslinger.net +# URL: http://www.exit109.com/~jeremy/nj/ +checkgroups:nj-admin@gunslinger.net:nj.*:doit +newgroup:nj-admin@gunslinger.net:nj.*:doit +rmgroup:nj-admin@gunslinger.net:nj.*:doit + ## NL (Netherlands) # Contact: nl-admin@nic.surfnet.nl # URL: http://nl.news-admin.org/info/nladmin.html @@ -1573,6 +1705,19 @@ checkgroups:bob@tsunami.sugarland.unocal newgroup:bob@tsunami.sugarland.unocal.com:oc.*:doit rmgroup:bob@tsunami.sugarland.unocal.com:oc.*:doit +## OESTERREICH (Free Austria) +# +# This is apparently another alt.* or free.* but specific to Austria. +# Currently, the ftp.isc.org list doesn't honor newgroup messages in the +# hierarchy due to lack of requests, but here is the information in case +# any news admin wishes to carry it. +# +# URL: http://www.tahina.priv.at/~cm/oe/index.en.html +#newgroup:*:oesterreich.*:doit +#newgroup:group-admin@isc.org:oesterreich.*:drop +#newgroup:tale@*uu.net:oesterreich.*:drop +#rmgroup:*:oesterreich.*:drop + ## OH (Ohio, USA) checkgroups:trier@ins.cwru.edu:oh.*:doit newgroup:trier@ins.cwru.edu:oh.*:doit @@ -1593,8 +1738,31 @@ checkgroups:pkern@gpu.utcc.utoronto.ca:o newgroup:pkern@gpu.utcc.utoronto.ca:ont.*:doit rmgroup:pkern@gpu.utcc.utoronto.ca:ont.*:doit +## OPENNEWS (Open News Network) +# URL: http://www.open-news-network.org/ +# *PGP* See comment at top of file. +newgroup:*:opennews.*:drop +rmgroup:*:opennews.*:drop +checkgroups:schiller@babsi.de:opennews.*:verify-news@news2.open-news-network.org +newgroup:schiller@babsi.de:opennews.*:verify-news@news2.open-news-network.org +rmgroup:schiller@babsi.de:opennews.*:verify-news@news2.open-news-network.org + +## OPENWATCOM (Open Watcom compilers) +# Contact: admin@openwatcom.news-admin.org +# URL: http://www.openwatcom.org/ +# Admin group: openwatcom.contributors +# Key URL: http://cmeerw.org/files/openwatcom/pgp-openwatcom.asc +# Syncable server: news.openwatcom.org +# *PGP* See comment at top of file. +newgroup:*:openwatcom.*:drop +rmgroup:*:openwatcom.*:drop +checkgroups:admin@openwatcom.news-admin.org:openwatcom.*:verify-admin@openwatcom.news-admin.org +newgroup:admin@openwatcom.news-admin.org:openwatcom.*:verify-admin@openwatcom.news-admin.org +rmgroup:admin@openwatcom.news-admin.org:openwatcom.*:verify-admin@openwatcom.news-admin.org + ## OPERA (Opera Software, Oslo, Norway) # Contact: usenet@opera.com +# Syncable server: news.opera.com # *PGP* See comment at top of file. newgroup:*:opera.*:drop rmgroup:*:opera.*:drop @@ -1642,6 +1810,18 @@ checkgroups:postmaster@upb.de:pbinfo.*:v newgroup:postmaster@upb.de:pbinfo.*:verify-news@uni-paderborn.de rmgroup:postmaster@upb.de:pbinfo.*:verify-news@uni-paderborn.de +## PERL (Perl Programming Language) +# Contact: newsadmin@perl.org +# URL: http://www.nntp.perl.org/about/ +# Key URL: http://www.nntp.perl.org/about/newsadmin@perl.org.pgp +# Key fingerprint = 438F D1BA 4DCC 3B1A BED8 2BCC 3298 8A7D 8B2A CFBB +# *PGP* See comment at top of file. +newgroup:*:perl.*:drop +rmgroup:*:perl.*:drop +checkgroups:newsadmin@perl.org:perl.*:verify-newsadmin@perl.org +newgroup:newsadmin@perl.org:perl.*:verify-newsadmin@perl.org +rmgroup:newsadmin@perl.org:perl.*:verify-newsadmin@perl.org + ## PGH (Pittsburgh, Pennsylvania, USA) # Admin group: pgh.config # *PGP* See comment at top of file. @@ -1779,6 +1959,7 @@ newgroup:satgroup@endicor.com:sat.*:veri rmgroup:satgroup@endicor.com:sat.*:verify-satgroup@endicor.com ## SBAY (South Bay/Silicon Valley, California) +# URL: http://www.sbay.org/sbay-newsgroups.html checkgroups:ikluft@thunder.sbay.org:sbay.*:doit checkgroups:steveh@grafex.sbay.org:sbay.*:doit newgroup:ikluft@thunder.sbay.org:sbay.*:doit @@ -1789,7 +1970,7 @@ rmgroup:steveh@grafex.sbay.org:sbay.*:do ## SCHULE (?) # Contact: schule-admin@roxel.ms.sub.org # URL: http://home.pages.de/~schule-admin/ -# Admin group: schule.konfig +# Admin group: schule.admin # Key URL: http://www.afaik.de/usenet/admin/schule/control/schule.asc # Key fingerprint = 64 06 F0 AE E1 46 85 0C BD CA 0E 53 8B 1E 73 D2 # *PGP* See comment at top of file. @@ -1799,6 +1980,28 @@ checkgroups:newsctrl@schule.de:schule.*: newgroup:newsctrl@schule.de:schule.*:verify-schule.konfig rmgroup:newsctrl@schule.de:schule.*:verify-schule.konfig +## SCOT (Scotland) +# URL: http://scot.news-admin.org/ +# Admin group: scot.newsgroups.discuss +# Key URL: http://scot.news-admin.org/signature.html +# *PGP* See comment at top of file. +newgroup:*:scot.*:drop +rmgroup:*:scot.*:drop +checkgroups:control@scot.news-admin.org:scot.*:verify-control@scot.news-admin.org +newgroup:control@scot.news-admin.org:scot.*:verify-control@scot.news-admin.org +rmgroup:control@scot.news-admin.org:scot.*:verify-control@scot.news-admin.org + +## SCOUT (Scouts and guides) +# URL: http://news.scoutnet.org/ +# Admin group: scout.admin +# Key URL: http://news.scoutnet.org/scout-pgpkey.asc +# *PGP* See comment at top of file. +newgroup:*:scout.*:drop +rmgroup:*:scout.*:drop +checkgroups:control@news.scoutnet.org:scout.*:verify-control@news.scoutnet.org +newgroup:control@news.scoutnet.org:scout.*:verify-control@news.scoutnet.org +rmgroup:control@news.scoutnet.org:scout.*:verify-control@news.scoutnet.org + ## SDNET (Greater San Diego Area, California, USA) # URL: http://www-rohan.sdsu.edu/~wk/sdnet/sdnet.html checkgroups:wkronert@sunstroke.sdsu.edu:sdnet.*:doit @@ -1813,9 +2016,7 @@ rmgroup:*:sdsu.*:doit ## SE (Sweden) # Contact: usenet@usenet-se.net -# URL: http://www.usenet-se.net/ # Admin group: se.internet.news.meddelanden -# Key URL: http://www.usenet-se.net/pgp-key.txt # Key fingerprint = 68 03 F0 FD 0C C3 4E 69 6F 0D 0C 60 3C 58 63 96 # *PGP* See comment at top of file. newgroup:*:se.*:drop @@ -1850,7 +2051,9 @@ newgroup:archives@israel.nysernet.org:sh rmgroup:archives@israel.nysernet.org:shamash.*:doit ## SI (The Republic of Slovenia) +# URL: http://www.arnes.si/news/config/ # Admin group: si.news.announce.newsgroups +# Key URL: http://www.arnes.si/news/config/ # *PGP* See comment at top of file. newgroup:*:si.*:drop rmgroup:*:si.*:drop @@ -1858,6 +2061,12 @@ checkgroups:news-admin@arnes.si:si.*:ver newgroup:news-admin@arnes.si:si.*:verify-si.news.announce.newsgroups rmgroup:news-admin@arnes.si:si.*:verify-si.news.announce.newsgroups +## SJ (St. John's, Newfoundland and Labrador, Canada) +# Contact: randy@mun.ca +checkgroups:randy@mun.ca:sj.*:doit +newgroup:randy@mun.ca:sj.*:doit +rmgroup:randy@mun.ca:sj.*:doit + ## SK (Slovakia) checkgroups:uhlar@ccnews.ke.sanet.sk:sk.*:doit newgroup:uhlar@ccnews.ke.sanet.sk:sk.*:doit @@ -1884,6 +2093,12 @@ checkgroups:usenet@news.spokane.wa.us:sp newgroup:usenet@news.spokane.wa.us:spokane.*:doit rmgroup:usenet@news.spokane.wa.us:spokane.*:doit +## SSLUG (*PRIVATE* -- Skåne Sjælland Linux User Group) +# URL: http://en.sslug.dk/ +# For private use only. +newgroup:sparre@sslug.se:sslug.*:mail +rmgroup:sparre@sslug.se:sslug.*:doit + ## STAROFFICE (StarOffice business suite, Sun Microsystems, Inc.) # Contact: news@starnews.sun.com # Admin group: staroffice.admin @@ -1992,11 +2207,10 @@ checkgroups:usenet@thur.de:thur.*:verify newgroup:usenet@thur.de:thur.*:verify-thur.net.news.groups rmgroup:usenet@thur.de:thur.*:verify-thur.net.news.groups -## TNN (The Network News, Japan) -checkgroups:netnews@news.iij.ad.jp:tnn.*:doit -checkgroups:tnn@iij-mc.co.jp:tnn.*:doit -newgroup:netnews@news.iij.ad.jp:tnn.*:doit -newgroup:tnn@iij-mc.co.jp:tnn.*:doit +## TNN (*DEFUNCT* -- The Network News, Japan) +# This hierarchy is defunct. Please remove it. +newgroup:netnews@news.iij.ad.jp:tnn.*:mail +newgroup:tnn@iij-mc.co.jp:tnn.*:mail rmgroup:netnews@news.iij.ad.jp:tnn.*:doit rmgroup:tnn@iij-mc.co.jp:tnn.*:doit @@ -2039,6 +2253,9 @@ rmgroup:usenet@academ.com:tx.*:doit ## UCB (University of California Berkeley, USA) # Contact: Chris van den Berg +# URL: http://www.net.berkeley.edu/usenet/ +# Key URL: http://www.net.berkeley.edu/usenet/usenet.asc +# Key fingerprint = 96 B8 8E 9A 98 09 37 7D 0E EC 81 88 DB 90 29 BF # *PGP* See comment at top of file. newgroup:*:ucb.*:drop rmgroup:*:ucb.*:drop @@ -2068,7 +2285,7 @@ newgroup:news@mayn.de:ufra.*:verify-news rmgroup:news@mayn.de:ufra.*:verify-news.mayn.de ## UIUC (*LOCAL* -- University of Illinois at Urbana-Champaign, USA) -# Contact: usenet@uiuc.edu +# Contact: news@ks.uiuc.edu # For local use only, contact the above address for information. newgroup:*:uiuc.*:mail rmgroup:*:uiuc.*:doit @@ -2127,17 +2344,19 @@ checkgroups:control@usenetnews.us:us.*:d newgroup:control@usenetnews.us:us.*:doit rmgroup:control@usenetnews.us:us.*:doit -## UT (University of Toronto, Canada) -# newgroup:news@ecf.toronto.edu:ut.*:doit -# newgroup:news@ecf.toronto.edu:ut.class.*:mail -# rmgroup:news@ecf.toronto.edu:ut.*:doit +## UT (*LOCAL* -- University of Toronto, Canada) +# URL: http://www.utoronto.ca/ns/utornews/ +#newgroup:news@ecf.toronto.edu:ut.*:doit +#newgroup:news@ecf.toronto.edu:ut.class.*:mail +#rmgroup:news@ecf.toronto.edu:ut.*:doit ## UTA (Finnish) checkgroups:news@news.cc.tut.fi:uta.*:doit newgroup:news@news.cc.tut.fi:uta.*:doit rmgroup:news@news.cc.tut.fi:uta.*:doit -## UTEXAS (University of Texas, USA) +## UTEXAS (*LOCAL* -- University of Texas, USA) +# URL: http://www.utexas.edu/its/usenet/index.php newgroup:fletcher@cs.utexas.edu:utexas.*:doit newgroup:news@geraldo.cc.utexas.edu:utexas.*:doit newgroup:fletcher@cs.utexas.edu:utexas*class.*:mail @@ -2158,9 +2377,14 @@ newgroup:*:uva.*:mail rmgroup:*:uva.*:doit ## UW (University of Waterloo, Canada) -checkgroups:bcameron@math.uwaterloo.ca:uw.*:doit -newgroup:bcameron@math.uwaterloo.ca:uw.*:doit -rmgroup:bcameron@math.uwaterloo.ca:uw.*:doit +# Admin group: uw.newsgroups +# Syncable server: news.uwaterloo.ca +# *PGP* See comment at top of file. +newgroup:*:uw.*:drop +rmgroup:*:uw.*:drop +checkgroups:newsgroups@news.uwaterloo.ca:uw.*:verify-uw.newsgroups +newgroup:newsgroups@news.uwaterloo.ca:uw.*:verify-uw.newsgroups +rmgroup:newsgroups@news.uwaterloo.ca:uw.*:verify-uw.newsgroups ## UWARWICK (*LOCAL* -- University of Warwick, UK) # Contact: Jon Harley @@ -2169,6 +2393,7 @@ newgroup:*:uwarwick.*:mail rmgroup:*:uwarwick.*:doit ## UWO (University of Western Ontario, London, Canada) +# URL: http://www.uwo.ca/its/news/groups.uwo.html checkgroups:reggers@julian.uwo.ca:uwo.*:doit newgroup:reggers@julian.uwo.ca:uwo.*:doit rmgroup:reggers@julian.uwo.ca:uwo.*:doit @@ -2196,6 +2421,17 @@ checkgroups:cts@dragon.com:vmsnet.*:doit newgroup:cts@dragon.com:vmsnet.*:doit rmgroup:cts@dragon.com:vmsnet.*:doit +## WA (Western Australia) +# Contact: ausadmin@aus.news-admin.org +# URL: http://wa.news-admin.org/ +# Key URL: http://aus.news-admin.org/ausadmin.asc +# *PGP* See comment at top of file. +newgroup:*:wa.*:drop +rmgroup:*:wa.*:drop +checkgroups:ausadmin@aus.news-admin.org:wa.*:verify-ausadmin@aus.news-admin.org +newgroup:ausadmin@aus.news-admin.org:wa.*:verify-ausadmin@aus.news-admin.org +rmgroup:ausadmin@aus.news-admin.org:wa.*:verify-ausadmin@aus.news-admin.org + ## WADAI (Japanese ?) checkgroups:kohe-t@*wakayama-u.ac.jp:wadai.*:doit newgroup:kohe-t@*wakayama-u.ac.jp:wadai.*:doit @@ -2239,9 +2475,9 @@ checkgroups:mills@cc.umanitoba.ca:wpg.*: newgroup:mills@cc.umanitoba.ca:wpg.*:doit rmgroup:mills@cc.umanitoba.ca:wpg.*:doit -## WPI (Worcester Polytechnic Institute, Worcester, MA) -checkgroups:aej@*.wpi.edu:wpi.*:doit -newgroup:aej@*.wpi.edu:wpi.*:doit +## WPI (*LOCAL* -- Worcester Polytechnic Institute, Worcester, MA) +# For local use only. +newgroup:aej@*.wpi.edu:wpi.*:mail rmgroup:aej@*.wpi.edu:wpi.*:doit ## WU (Washington University at St. Louis, MO) diff -rup inn-2.4.3/samples/inn.conf.in inn-2.4.4/samples/inn.conf.in --- inn-2.4.3/samples/inn.conf.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/samples/inn.conf.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: inn.conf.in 6201 2003-02-03 00:58:26Z rra $ +## $Id: inn.conf.in 7751 2008-04-06 14:35:40Z iulius $ ## ## inn.conf -- INN configuration data ## @@ -44,6 +44,7 @@ linecountfuzz: 0 maxartsize: 1000000 maxconnections: 50 #pathalias: +#pathcluster: pgpverify: @pgpverify@ port: 119 refusecybercancels: false @@ -77,6 +78,7 @@ clienttimeout: 600 initialtimeout: 10 msgidcachesize: 10000 nnrpdcheckart: true +nnrpdflags: "" noreader: false readerswhenstopped: false readertrack: false diff -rup inn-2.4.3/samples/innfeed.conf inn-2.4.4/samples/innfeed.conf --- inn-2.4.3/samples/innfeed.conf 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/samples/innfeed.conf 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -# $Revision: 6211 $ +# $Revision: 7559 $ # # Sample innfeed config file. See the comment block at the # end for a fuller description of the format, and innfeed.conf(5) for a @@ -56,6 +56,7 @@ no-check-high: 95.0 no-check-low: 90.0 no-check-filter: 50.0 port-number: 119 +force-ipv4: false drop-deferred: false min-queue-connection: false backlog-limit: 0 diff -rup inn-2.4.3/samples/newsfeeds.in inn-2.4.4/samples/newsfeeds.in --- inn-2.4.3/samples/newsfeeds.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/samples/newsfeeds.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: newsfeeds.in 5855 2002-11-25 17:56:46Z rra $ +## $Id: newsfeeds.in 7741 2008-04-06 09:51:47Z iulius $ ## ## newsfeeds - determine where Usenet articles get sent ## @@ -35,8 +35,8 @@ ## distributions listed are negated (starting with !), then the server ## will only accept articles without those distributions. ## -## Patterns affect *outgoing* feeds. Distributions affect *incoming* -## feeds. +## For the ME line (and the ME line *only*), patterns affect *outgoing* +## feeds and distributions affect *incoming* feeds. # Empty default subscription list, reject all incoming articles with a # distribution of "local" or "collabra-internal," accept all others. @@ -82,8 +82,11 @@ controlchan!\ # A real-time feed through innfeed. Don't send articles with a distribution # of "foo", since those articles are internal. +# Note that control messages will be sent even though "!control,!control.*" +# is specified. It is useful not to forget that pattern since control +# messages for local.* would still be sent with "*,@local.*" only. #news.uu.net/uunet\ -# :*,!junk,!control*/!foo\ +# :*,!junk,!control,!control.*/!foo\ # :Tm:innfeed! # Create a batch file in @SPOOLDIR@/outgoing for all articles @@ -91,12 +94,13 @@ controlchan!\ # be named nic.near.net, the default file name, and either nntpsend or # send-nntp can send articles from that spool file. #nic.near.net\ -# :*,!junk,!control*/!foo\ +# :*,!junk,!control,!control.*/!foo\ # :Tf,Wnm: -# A UUCP feed, where we try to keep the "batching" between 4K and 1K. +# A UUCP feed, where we try to keep the "batching" between 4 KB and 1 KB. +# You can use send-uucp(8) to process these batch files. #ihnp4\ -# :*,!junk,!control/!foo\ +# :*,!junk,!control,!control.*/!foo\ # :Tf,Wnb,B4096/1024: diff -rup inn-2.4.3/samples/radius.conf inn-2.4.4/samples/radius.conf --- inn-2.4.3/samples/radius.conf 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/samples/radius.conf 2008-05-05 03:18:36.000000000 -0700 @@ -1,9 +1,11 @@ -# $Id: radius.conf 5895 2002-12-01 20:31:23Z rra $ +# $Id: radius.conf 7556 2006-08-28 02:00:28Z eagle $ # # Sample RADIUS configuration file for the RADIUS readers.conf # authenticator. If you're not using that authenticator, this file is not # used. +server radius { + # Hostname of the RADIUS server. #radhost: radius-server.example.com @@ -57,3 +59,5 @@ radport: 1645 # response to come from a different IP address). ignore-source: false + +} diff -rup inn-2.4.3/scripts/Makefile inn-2.4.4/scripts/Makefile --- inn-2.4.3/scripts/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/scripts/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7739 2008-04-06 09:38:31Z iulius $ ## ## Files that can be handled by fixscript (and need to be so handled) need ## a rule to build them from the .in version, and then all files need an @@ -74,6 +74,6 @@ innupgrade: innupgrade.in $(FIX) ; $( innwatch: innwatch.in $(FIX) ; $(FIX) innwatch.in rc.news: rc.news.in $(FIX) ; $(FIX) rc.news.in scanlogs: scanlogs.in $(FIX) ; $(FIX) scanlogs.in -simpleftp: simpleftp.in $(FIX) ; $(FIX) simpleftp.in +simpleftp: simpleftp.in $(FIX) ; $(FIX) -i simpleftp.in tally.control: tally.control.in $(FIX) ; $(FIX) tally.control.in writelog: writelog.in $(FIX) ; $(FIX) writelog.in diff -rup inn-2.4.3/scripts/inncheck.in inn-2.4.4/scripts/inncheck.in --- inn-2.4.3/scripts/inncheck.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/scripts/inncheck.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,5 +1,5 @@ #!@_PATH_PERL@ -- -## $Revision: 7137 $ +## $Revision: 7748 $ ## Sanity-check the configuration of an INN system ## by Brendan Kehoe and Rich $alz. @@ -67,16 +67,16 @@ $newsgroup = '@NEWSGRP@'; ## The modes of the config files we can check. %modes = ( 'active', @FILEMODE@, - 'control.ctl', 0640, - 'expire.ctl', 0640, + 'control.ctl', 0644, + 'expire.ctl', 0644, 'incoming.conf', 0640, 'inn.conf', 0644, 'moderators', 0644, 'newsfeeds', 0644, 'overview.fmt', 0644, - 'nntpsend.ctl', 0640, + 'nntpsend.ctl', 0644, 'passwd.nntp', 0640, - 'readers.conf', 0640 + 'readers.conf', 0644 ); @@ -306,6 +306,9 @@ inn_conf # } elsif ( $k eq "pathalias" ) { # print "$file:$line: pathalias has a ! in it\n" # if $v =~ /!/; +# } elsif ( $k eq "pathcluster" ) { +# print "$file:$line: pathcluster has a ! in it\n" +# if $v =~ /!/; # } elsif ( $k eq "server" ) { # print "$file:$line: server (`$v') isn't local hostname\n" # if $pedantic && $fqdn !~ /^$v/; @@ -367,6 +370,7 @@ moderators 'N', '^[mu]$', 'O', '^\S+$', 'P', '^\d+$', + 'Q', '^@?\d+(-\d+)?/\d+(_\d+)?$', 'S', '^\d+$', 'T', '^[cflmpx]$', 'W', '^[befghmnpst*DGHNPOR]*$', diff -rup inn-2.4.3/scripts/innreport_inn.pm inn-2.4.4/scripts/innreport_inn.pm --- inn-2.4.3/scripts/innreport_inn.pm 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/scripts/innreport_inn.pm 2008-05-05 03:18:36.000000000 -0700 @@ -241,9 +241,19 @@ sub collect { return 1 if $left =~ /^SERVER perl filtering enabled$/o; # SERVER perl filtering disabled return 1 if $left =~ /^SERVER perl filtering disabled$/o; + # SERVER Python filtering enabled + return 1 if $left =~ /^SERVER Python filtering enabled$/o; + # SERVER Python filtering disabled + return 1 if $left =~ /^SERVER Python filtering disabled$/o; # SERVER cancelled +id return 1 if $left =~ /^SERVER cancelled /o; } + # Python filter + return 1 if $left =~ /^defined python methods$/o; + return 1 if $left =~ /^python interpreter initialized OK$/o; + return 1 if $left =~ /^python: First load, so I can do initialization stuff.$/o; + return 1 if $left =~ /^python: spamfilter successfully hooked into INN$/o; + return 1 if $left =~ /^python: filter_close running, bye!$/o; # rejecting[perl] if ($left =~ /^rejecting\[perl\] <[^>]+> \d+ (.*)/o) { $innd_filter_perl{$1}++; @@ -363,6 +373,8 @@ sub collect { } # closed (without times (?)) return 1 if $left =~ m/\S+ closed$/o; + # closed (for a cancel feed - MODE CANCEL) + return 1 if $left =~ m/localhost:\d+ closed seconds \d+ cancels \d+$/o; # checkpoint return 1 if $left =~ m/^\S+:\d+ checkpoint /o; # if ($left =~ /(\S+):\d+ checkpoint seconds (\d+) accepted (\d+) @@ -1225,6 +1237,8 @@ sub collect { return 1 if $left =~ /\S+ cant opendir \S+ I\/O error$/o; # perl filtering enabled return 1 if $left =~ /perl filtering enabled$/o; + # Python filtering enabled + return 1 if $left =~ /Python filtering enabled$/o; # connect if ($left =~ /(\S+) (\([0-9a-fA-F:.]*\) )?connect$/o) { my $cust = $1; @@ -1566,6 +1580,16 @@ sub collect { return 1 if $left =~ m/rejected 437 ECP rejected/o; # rejected 437 "Subject" header too long return 1 if $left =~ m/header too long/o; + # rejected 437 Too long line in header 1163 bytes + return 1 if $left =~ m/rejected 437 Too long line in header/o; + # rejected 437 Too many newsgroups (meow) + return 1 if $left =~ m/rejected 437 Too many newsgroups/o; + # rejected 437 Space before colon in "${OLD}/send-nntp.1${Z} - cat /dev/null >${MOST_LOGS}/send-nntp.log - fi - if [ -s ${MOST_LOGS}/send-uucp.log ] ; then - ${LOG_COMPRESS} <${MOST_LOGS}/send-uucp.log >${OLD}/send-uucp.1${Z} - cat /dev/null >${MOST_LOGS}/send-uucp.log - fi else ## Don't use the real OLD directory, instead use TMPDIR OLD=${TMPDIR} diff -rup inn-2.4.3/scripts/simpleftp.in inn-2.4.4/scripts/simpleftp.in --- inn-2.4.3/scripts/simpleftp.in 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/scripts/simpleftp.in 2008-05-05 03:18:36.000000000 -0700 @@ -1,34 +1,25 @@ -#! /usr/bin/perl -# fixscript will replace this line with require innshellvars.pl +#! /usr/bin/perl -w -# simpleftp -# Author: David Lawrence +# simpleftp - Rudimentary FTP client. +# +# Author: David Lawrence . +# Rewritten by Julien Elie to use Net::FTP. # # Fetch files to the local machine based on URLs on the command line. -# Uses perl's ftp.pl, which in turn uses chat2.pl. Not very speedy. -# There is a better perl ftp module in the libnet package, -# but it would require the INN admin to install yet another package. -# There is a perl www module which can do ftp in the libwww package, -# but that has the same issue as the libnet module. -# INN's configure searches for ncftp, wget, linx, et cetera, +# INN's configure searches for ncftp, wget, linx, et caetera, # but they're all system add-ons, so this is provided. -# Perl5 is already required by other parts of INN, it only took a half hour +# +# Perl 5 is already required by other parts of INN; it only took a half hour # to write this, so this was the easiest way to go for a backup plan. -# This script is nowhere near as flexible as libwww. If you really need +# +# This script is nowhere near as flexible as libwww. If you really need # that kind of power, get libwww and use it. This is just sufficient for what # INN needed. -# NOTE: ftp.pl and chat2.pl are not -w safe (uninitialized values errors) - use strict; +use Net::FTP; use Sys::Hostname; -# $ENV{'PATH'} = '/bin:/usr/bin:/usr/ucb'; - -# trick ftp.pl into not demanding this file. -$INC{'sys/socket.ph'} = 1; -require 'ftp.pl'; - $0 =~ s(.*/)(); my $usage = "Usage: $0 ftp-URL ...\n"; @@ -41,47 +32,59 @@ for (@ARGV) { or die $usage; } -my ($user, $pass, $lasthost); - -$user = 'anonymous'; -$pass = (getpwuid($<))[0] . '@' . hostname; +my ($lasthost, $ftp); -# this will keep track of how many _failed_ +# This will keep track of how many _failed_. my $exit = @ARGV; for (@ARGV) { my ($host, $path) = m%^ftp://([^/]+)(/.+)%; + my $user = 'anonymous'; + my $pass = (getpwuid($<))[0] . '@' . hostname; + my $port = 21; + unless (defined $host && defined $path) { warn "$0: bad URL: $_\n"; next; } - # NOTE: URLs with usernames, passwords, ports or parameters are not supported + if ($host =~ /(.*):(.*)\@(.*)/) { + $user = $1; + $pass = $2; + $host = $3; + } + + if ($host =~ /(.*):(.*)/) { + $port = $1; + $host = $2; + } if (defined $lasthost && $host ne $lasthost) { - ftp::close(); + $ftp->quit; $lasthost = undef; } unless (defined $lasthost) { - ftp::open($host, getservbyname('ftp', 'tcp') || 21, 0, 1) + $ftp = Net::FTP->new($host, Port => $port) or next; - ftp::login($user, $pass) - or next; - ftp::type("i") + $ftp->login($user, $pass) or next; } my $localfile = $path; + $path =~ s([^/]+$)(); $localfile =~ s(.*/)(); - ftp::get($path, $localfile) + + $ftp->cwd($path) + or next; + $ftp->get($localfile) or next; $exit--; $lasthost = $host; } -ftp::close() +$ftp->quit if defined $lasthost; exit $exit; diff -rup inn-2.4.3/site/Makefile inn-2.4.4/site/Makefile --- inn-2.4.3/site/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/site/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Revision: 6980 $ +## $Revision: 7512 $ include ../Makefile.global top = .. @@ -137,6 +137,9 @@ $D$(PATH_ACTIVE_TIMES): chmod $(FILEMODE) $@ $D$(PATH_HISTORY): touch $@ + chown $(NEWSUSER) $@ + chgrp $(NEWSGROUP) $@ + chmod $(FILEMODE) $@ $(PATHBIN)/makedbz -i -o ## Remove files that are unchanged from the release version. diff -rup inn-2.4.3/storage/Makefile inn-2.4.4/storage/Makefile --- inn-2.4.3/storage/Makefile 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/storage/Makefile 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 6806 2004-05-18 01:18:57Z rra $ +## $Id: Makefile 7727 2008-04-06 07:59:46Z iulius $ include ../Makefile.global @@ -97,99 +97,129 @@ depend: Makefile $(SOURCES) $(EXTRA_SOUR # DO NOT DELETE THIS LINE -- make depend depends on it. expire.o: expire.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h \ - ../include/ov.h ../include/storage.h ../include/inn/history.h \ - ovinterface.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ovinterface.h ../include/storage.h ../include/inn/history.h \ + ../include/paths.h interface.o: interface.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/conffile.h ../include/inn/innconf.h \ - ../include/inn/wire.h interface.h ../include/storage.h \ - ../include/libinn.h methods.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/conffile.h ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/wire.h interface.h ../include/storage.h \ + ../include/libinn.h methods.h ../include/paths.h methods.o: methods.c interface.h ../include/config.h \ - ../include/inn/defines.h ../include/storage.h methods.h cnfs/cnfs.h \ - timecaf/timecaf.h timehash/timehash.h tradspool/tradspool.h \ - trash/trash.h + ../include/inn/defines.h ../include/inn/system.h ../include/storage.h \ + ../include/config.h methods.h cnfs/cnfs.h timecaf/timecaf.h \ + ../include/config.h interface.h timehash/timehash.h ../include/config.h \ + interface.h tradspool/tradspool.h ../include/config.h interface.h \ + trash/trash.h ../include/config.h interface.h ov.o: ov.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/innconf.h ../include/libinn.h \ - ../include/ov.h ../include/storage.h ../include/inn/history.h \ - ovinterface.h ovmethods.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ovinterface.h ../include/storage.h ../include/inn/history.h ovmethods.h overdata.o: overdata.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/inn/buffer.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/qio.h ../include/inn/wire.h ../include/inn/vector.h \ - ../include/libinn.h ovinterface.h ../include/ov.h \ - ../include/storage.h ../include/inn/history.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/inn/buffer.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ + ../include/inn/wire.h ../include/inn/vector.h ../include/libinn.h \ + ovinterface.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../include/storage.h ../include/inn/history.h \ + ../include/paths.h ovmethods.o: ovmethods.c ovinterface.h ../include/config.h \ - ../include/inn/defines.h ../include/ov.h ../include/storage.h \ - ../include/inn/history.h buffindexed/buffindexed.h ovdb/ovdb.h \ - tradindexed/tradindexed.h + ../include/inn/defines.h ../include/inn/system.h ../include/ov.h \ + ../include/storage.h ../include/config.h ../include/inn/history.h \ + ../include/inn/defines.h ../include/storage.h ../include/inn/history.h \ + buffindexed/buffindexed.h ovdb/ovdb.h tradindexed/tradindexed.h \ + ../include/config.h ../include/ov.h ../include/storage.h buffindexed/buffindexed.o: buffindexed/buffindexed.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h ../include/inn/innconf.h \ - ../include/libinn.h ../include/ov.h ../include/storage.h \ - ../include/inn/history.h ../include/paths.h ovinterface.h \ - buffindexed/buffindexed.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/mmap.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ../include/paths.h ovinterface.h ../include/config.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h ../include/storage.h \ + buffindexed/buffindexed.h cnfs/cnfs.o: cnfs/cnfs.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/mmap.h \ - ../include/portable/time.h ../include/inn/innconf.h interface.h \ - ../include/storage.h ../include/libinn.h methods.h ../include/paths.h \ - ../include/inn/wire.h ../include/inn/mmap.h cnfs/cnfs.h \ - cnfs/cnfs-private.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/mmap.h ../include/config.h \ + ../include/portable/time.h ../include/inn/innconf.h \ + ../include/inn/defines.h interface.h ../include/config.h \ + ../include/storage.h ../include/libinn.h methods.h interface.h \ + ../include/paths.h ../include/inn/wire.h ../include/inn/mmap.h \ + cnfs/cnfs.h cnfs/cnfs-private.h ovdb/ovdb.o: ovdb/ovdb.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/portable/socket.h \ - ../include/portable/time.h ../include/conffile.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h ../include/paths.h ../include/storage.h \ - ../include/ov.h ../include/inn/history.h ovinterface.h ovdb/ovdb.h \ - ovdb/ovdb-private.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/socket.h ../include/config.h \ + ../include/portable/time.h ../include/conffile.h \ + ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ../include/paths.h \ + ../include/storage.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ovinterface.h ../include/config.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ovdb/ovdb.h ovdb/ovdb-private.h timecaf/caf.o: timecaf/caf.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h timecaf/caf.h -timecaf/timecaf.o: timecaf/timecaf.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h timecaf/caf.h ../include/inn/innconf.h \ - ../include/inn/wire.h ../include/libinn.h methods.h interface.h \ - ../include/storage.h timecaf/timecaf.h ../include/paths.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h timecaf/caf.h +timecaf/timecaf.o: timecaf/timecaf.c ../include/config.h ../include/inn/defines.h \ + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/portable/mmap.h ../include/config.h timecaf/caf.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/inn/wire.h \ + ../include/libinn.h methods.h interface.h ../include/config.h \ + ../include/storage.h timecaf/timecaf.h interface.h ../include/paths.h timehash/timehash.o: timehash/timehash.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h ../include/inn/innconf.h \ - ../include/inn/wire.h ../include/libinn.h methods.h interface.h \ - ../include/storage.h ../include/paths.h timehash/timehash.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/mmap.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/inn/wire.h \ + ../include/libinn.h methods.h interface.h ../include/config.h \ + ../include/storage.h ../include/paths.h timehash/timehash.h interface.h tradindexed/tdx-cache.o: tradindexed/tdx-cache.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/hashtab.h ../include/inn/messages.h \ - ../include/libinn.h ../include/storage.h tradindexed/tdx-private.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/inn/hashtab.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ../include/storage.h \ + tradindexed/tdx-private.h tradindexed/tdx-data.o: tradindexed/tdx-data.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/mmap.h ../include/libinn.h ../include/ov.h \ - ../include/storage.h ovinterface.h tradindexed/tdx-private.h \ - tradindexed/tdx-structure.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/mmap.h ../include/config.h \ + ../include/inn/history.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h \ + ../include/inn/mmap.h ../include/libinn.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h ovinterface.h \ + ../include/config.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../include/storage.h tradindexed/tdx-private.h \ + tradindexed/tdx-structure.h tradindexed/tdx-group.o: tradindexed/tdx-group.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h ../include/inn/hashtab.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/mmap.h ../include/inn/qio.h ../include/libinn.h \ - ../include/paths.h tradindexed/tdx-private.h ../include/storage.h \ - tradindexed/tdx-structure.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/mmap.h ../include/config.h \ + ../include/inn/hashtab.h ../include/inn/defines.h \ + ../include/inn/innconf.h ../include/inn/messages.h \ + ../include/inn/mmap.h ../include/inn/qio.h ../include/inn/vector.h \ + ../include/libinn.h ../include/paths.h tradindexed/tdx-private.h \ + ../include/storage.h tradindexed/tdx-structure.h tradindexed/tradindexed.o: tradindexed/tradindexed.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/libinn.h ../include/ov.h ../include/storage.h \ - ../include/inn/history.h tradindexed/tdx-private.h \ - tradindexed/tdx-structure.h tradindexed/tradindexed.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ + ../include/inn/messages.h ../include/libinn.h ../include/ov.h \ + ../include/storage.h ../include/inn/history.h ../include/storage.h \ + tradindexed/tdx-private.h tradindexed/tdx-structure.h \ + tradindexed/tradindexed.h tradspool/tradspool.o: tradspool/tradspool.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/portable/mmap.h ../include/inn/innconf.h \ - ../include/inn/qio.h ../include/inn/wire.h ../include/libinn.h \ - ../include/paths.h methods.h interface.h ../include/storage.h \ - tradspool/tradspool.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/portable/mmap.h ../include/config.h \ + ../include/inn/innconf.h ../include/inn/defines.h ../include/inn/qio.h \ + ../include/inn/wire.h ../include/libinn.h ../include/paths.h methods.h \ + interface.h ../include/config.h ../include/storage.h \ + tradspool/tradspool.h interface.h trash/trash.o: trash/trash.c ../include/config.h ../include/inn/defines.h \ - ../include/clibrary.h ../include/libinn.h methods.h interface.h \ - ../include/storage.h trash/trash.h + ../include/inn/system.h ../include/clibrary.h ../include/config.h \ + ../include/libinn.h methods.h interface.h ../include/config.h \ + ../include/storage.h trash/trash.h interface.h tradindexed/tdx-util.o: tradindexed/tdx-util.c ../include/config.h \ - ../include/inn/defines.h ../include/clibrary.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/vector.h ../include/libinn.h ../include/ov.h \ - ../include/storage.h ovinterface.h ../include/paths.h \ - tradindexed/tdx-private.h tradindexed/tdx-structure.h + ../include/inn/defines.h ../include/inn/system.h ../include/clibrary.h \ + ../include/config.h ../include/inn/buffer.h ../include/inn/defines.h \ + ../include/inn/history.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/inn/vector.h ../include/libinn.h \ + ../include/ov.h ../include/storage.h ../include/inn/history.h \ + ovinterface.h ../include/config.h ../include/ov.h ../include/storage.h \ + ../include/inn/history.h ../include/paths.h tradindexed/tdx-private.h \ + ../include/storage.h tradindexed/tdx-structure.h diff -rup inn-2.4.3/storage/buffindexed/buffindexed.c inn-2.4.4/storage/buffindexed/buffindexed.c --- inn-2.4.3/storage/buffindexed/buffindexed.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/storage/buffindexed/buffindexed.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: buffindexed.c 6854 2004-05-20 22:23:28Z rra $ +/* $Id: buffindexed.c 7602 2007-02-10 22:19:49Z eagle $ ** ** Overview buffer and index method. */ @@ -312,8 +312,8 @@ static bool ovparse_part_line(char *l) { } l = ++p; - /* Length/size of symbolic partition */ - len = strtoul(l, NULL, 10) * 1024; /* This value in KB in decimal */ + /* Length/size of symbolic partition in KB */ + len = strtoul(l, NULL, 10) * (off_t) 1024; /* ** The minimum article offset will be the size of the bitfield itself, ** len / (blocksize * 8), plus however many additional blocks the OVBUFFHEAD diff -rup inn-2.4.3/storage/ovdb/ovdb.c inn-2.4.4/storage/ovdb/ovdb.c --- inn-2.4.3/storage/ovdb/ovdb.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/storage/ovdb/ovdb.c 2008-05-05 03:18:36.000000000 -0700 @@ -1526,7 +1526,13 @@ int ovdb_open_berkeleydb(int mode, int f OVDBenv->set_errcall(OVDBenv, OVDBerror); OVDBenv->set_cachesize(OVDBenv, 0, ovdb_conf.cachesize, 1); +#if DB_VERSION_MAJOR >= 4 + OVDBenv->set_lk_max_locks(OVDBenv, ovdb_conf.maxlocks); + OVDBenv->set_lk_max_lockers(OVDBenv, ovdb_conf.maxlocks); + OVDBenv->set_lk_max_objects(OVDBenv, ovdb_conf.maxlocks); +#else OVDBenv->set_lk_max(OVDBenv, ovdb_conf.maxlocks); +#endif #if DB_VERSION_MAJOR >= 4 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 2) if(ovdb_conf.txn_nosync) diff -rup inn-2.4.3/storage/tradindexed/tdx-data.c inn-2.4.4/storage/tradindexed/tdx-data.c --- inn-2.4.3/storage/tradindexed/tdx-data.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/storage/tradindexed/tdx-data.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: tdx-data.c 6387 2003-07-12 19:07:16Z rra $ +/* $Id: tdx-data.c 7598 2007-02-09 02:40:51Z eagle $ ** ** Overview data file handling for the tradindexed overview method. ** @@ -1083,7 +1083,7 @@ tdx_data_audit(const char *group, struct /* All done. Close things down and flush the data we changed, if necessary. */ if (changed) - mapcntl(index, sizeof(*index), MS_ASYNC); + inn_mapcntl(index, sizeof(*index), MS_ASYNC); end: tdx_data_close(data); diff -rup inn-2.4.3/storage/tradindexed/tdx-group.c inn-2.4.4/storage/tradindexed/tdx-group.c --- inn-2.4.3/storage/tradindexed/tdx-group.c 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/storage/tradindexed/tdx-group.c 2008-05-05 03:18:36.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: tdx-group.c 6593 2004-01-05 21:40:07Z rra $ +/* $Id: tdx-group.c 7598 2007-02-09 02:40:51Z eagle $ ** ** Group index handling for the tradindexed overview method. ** @@ -380,7 +380,7 @@ index_expand(struct group_index *index) index->header->freelist.recno = i; } - mapcntl(index->header, index_file_size(index->count), MS_ASYNC); + inn_mapcntl(index->header, index_file_size(index->count), MS_ASYNC); return true; } @@ -459,7 +459,7 @@ entry_splice(struct group_entry *entry, { *parent = entry->next.recno; entry->next.recno = -1; - mapcntl(parent, sizeof(*parent), MS_ASYNC); + inn_mapcntl(parent, sizeof(*parent), MS_ASYNC); } @@ -480,8 +480,8 @@ index_add(struct group_index *index, str } entry->next.recno = index->header->hash[bucket].recno; index->header->hash[bucket].recno = entry_loc(index, entry); - mapcntl(&index->header->hash[bucket], sizeof(struct loc), MS_ASYNC); - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(&index->header->hash[bucket], sizeof(struct loc), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); } @@ -529,8 +529,8 @@ freelist_add(struct group_index *index, { entry->next.recno = index->header->freelist.recno; index->header->freelist.recno = entry_loc(index, entry); - mapcntl(&index->header->freelist, sizeof(struct loc), MS_ASYNC); - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(&index->header->freelist, sizeof(struct loc), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); } @@ -600,7 +600,7 @@ tdx_index_entry(struct group_index *inde return NULL; entry = index->entries + loc; if (innconf->tradindexedmmap && innconf->nfsreader) - mapcntl(entry, sizeof *entry, MS_INVALIDATE); + inn_mapcntl(entry, sizeof *entry, MS_INVALIDATE); return entry; } @@ -630,7 +630,7 @@ tdx_index_add(struct group_index *index, entry = &index->entries[loc]; if (entry->flag != *flag) { entry->flag = *flag; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); } return true; } @@ -645,7 +645,7 @@ tdx_index_add(struct group_index *index, } loc = index->header->freelist.recno; index->header->freelist.recno = index->entries[loc].next.recno; - mapcntl(&index->header->freelist, sizeof(struct loc), MS_ASYNC); + inn_mapcntl(&index->header->freelist, sizeof(struct loc), MS_ASYNC); /* Initialize the entry. */ entry = &index->entries[loc]; @@ -820,11 +820,11 @@ tdx_data_add(struct group_index *index, old_base = entry->base; entry->indexinode = data->indexinode; entry->base = data->base; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); if (!tdx_data_pack_finish(data)) { entry->base = old_base; entry->indexinode = old_inode; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); goto fail; } } @@ -839,7 +839,7 @@ tdx_data_add(struct group_index *index, if (entry->high < article->number) entry->high = article->number; entry->count++; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); index_lock_group(index->fd, offset, INN_LOCK_UNLOCK); return true; @@ -880,7 +880,7 @@ tdx_index_rebuild_finish(struct group_in *entry = *new; entry->indexinode = new_inode; new->indexinode = new_inode; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); offset = entry - index->entries; index_lock_group(index->fd, offset, INN_LOCK_UNLOCK); return true; @@ -930,12 +930,12 @@ tdx_expire(const char *group, ARTNUM *lo old_base = entry->base; entry->indexinode = new_entry.indexinode; entry->base = new_entry.base; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); tdx_data_close(data); if (!tdx_data_rebuild_finish(group)) { entry->base = old_base; entry->indexinode = old_inode; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); goto fail; } @@ -1169,7 +1169,7 @@ index_audit_loc(struct group_index *inde if (fix && error) { *loc = -1; - mapcntl(loc, sizeof(*loc), MS_ASYNC); + inn_mapcntl(loc, sizeof(*loc), MS_ASYNC); } } @@ -1187,7 +1187,7 @@ index_audit_deleted(struct group_entry * number); if (fix) { HashClear(&entry->hash); - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); } } } @@ -1327,7 +1327,7 @@ index_audit_group(struct group_index *in } else { if (entry->flag != group->flag) { entry->flag = group->flag; - mapcntl(entry, sizeof(*entry), MS_ASYNC); + inn_mapcntl(entry, sizeof(*entry), MS_ASYNC); } tdx_data_audit(group->name, entry, fix); } diff -rup inn-2.4.3/support/config.guess inn-2.4.4/support/config.guess --- inn-2.4.3/support/config.guess 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/support/config.guess 2008-05-05 03:18:36.000000000 -0700 @@ -1,9 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. -timestamp='2005-08-03' +timestamp='2008-03-12' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -55,8 +56,8 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -106,7 +107,7 @@ set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; @@ -160,6 +161,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -206,8 +208,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} @@ -325,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; - i86pc:SunOS:5.*:*) + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) @@ -527,7 +532,7 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[45]) + *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -764,12 +769,19 @@ EOF echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; - i*:MINGW*:*) + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) @@ -779,9 +791,18 @@ EOF i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; @@ -815,6 +836,16 @@ EOF echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) @@ -851,7 +882,11 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) @@ -870,7 +905,11 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) @@ -919,9 +958,15 @@ EOF sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent @@ -964,7 +1009,7 @@ EOF LIBC=gnulibc1 # endif #else - #ifdef __INTEL_COMPILER + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout @@ -974,7 +1019,11 @@ EOF LIBC=dietlibc #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit @@ -1167,6 +1216,9 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1176,6 +1228,15 @@ EOF SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1185,7 +1246,6 @@ EOF *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in - *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} @@ -1264,6 +1324,9 @@ EOF i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1424,9 +1487,9 @@ This script, last modified $timestamp, h the operating system you are using. It is advised that you download the most up to date version of the config scripts from - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff -rup inn-2.4.3/support/config.sub inn-2.4.4/support/config.sub --- inn-2.4.3/support/config.sub 2006-03-19 20:14:57.000000000 -0800 +++ inn-2.4.4/support/config.sub 2008-05-05 03:18:36.000000000 -0700 @@ -1,9 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. -timestamp='2005-07-08' +timestamp='2008-03-26' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -71,8 +72,8 @@ Report bugs and patches to reported) return 0; if (WIFEXITED(ts->status) && WEXITSTATUS(ts->status) != 0) { @@ -522,7 +522,7 @@ test_run(struct testset *ts) static void test_fail_summary(const struct testlist *fails) { - const struct testset *ts; + struct testset *ts; int i, chars, total, first, last; puts(header);