The infamous to-do list

Russ Allbery rra at
Sun Jun 25 06:49:03 UTC 2000

Olaf Titz <olaf at> writes:

> The actsync config files are horribly ugly and unclear and that whole
> mess should be reworked (which basically means rewriting actsyncd)
> instead. One of the things it has to support cleanly is syncing against
> multiple sources (e.g. my upstream for the standard groups,
> for netscape.*).

Good point.  Added.

> What is the procedure to get something into contrib? :-)

Mail it here or to me, or just make it available somewhere public and have
it draw my attention (and have an appropriate license).  :)

> Yes. The way I've already recommended this once goes as follows:
> 1. take the content of that line as string (built like now or perhaps
>    with additional info) into a buffer
> 2. if an encryption routine is built in and a key configured
>    then encrypt that buffer
> 3. output the buffer's content in base64.
> This way you generate a useful header whether encryption routines are
> available at install time or not.

The interactions with the O flag in newsfeeds need to be considered too,
plus it would be nice if X-Trace could be used by remote sites for rate
limiting (a la NNTP-Posting-Host) even in encoded form.  The same dialup
line encrypted and base64-encoded still provides a constant string to
filter against.

> Because it fits here: I have another wishlist item, standardized support
> for Cancel-Lock.

Yup, added.

>> * Revisit support for aliased groups and what nnrpd does with them.
>>   Should posts to the alias automatically be redirected to the real
>>   group?

> No. This breaks the least surprise principle and the don't touch the
> headers principle. Better reject the posting and leave it to the
> client to sort out (as good clients already do).

I clarified this point a bit.

> In the INN 1.x days someone wrote a C News-like configurable sendbatches
> driver; I'd like to see such a thing reappear. (Where you can configure
> the size, compression and sending method for each peer in a file and
> generate all batches with one command.)


> Speaking of SIGHUP, it would be nice if that could force a re-read of
> inn.conf. ;-) But I doubt that can be done, too much is static AFAICT.


> I'd like to see this "fix" limited to a narrow set of special cases like
> two-digit years, for the reasons stated above.

Noted.  I also added stricter checks for locally posted articles;
currently, INN will accept anything parsedate accepts, which includes a
lot of stuff that isn't even remotely RFC-compliant.

>> * nnrpd's NNTP command parsing interacts poorly with AUTHINFO and
>>   passwords containing spaces.  The correct solution isn't clear; check
>>   with the current NNTP RFC draft?

> Better (IMHO) first check with current clients' actual behavior. Not
> sure if this would break anything though.


> I still favor the approach to drop the self-expire/non-self-expire
> distinction completely and treat the disappearing of articles as
> something which just does happen. This way you can use alternate expire
> programs, which may suit local policies or installation issues better,
> and the code gets less complex.

The problem is that this has other undesireable side effects.  LIST ACTIVE
and GROUP return different high/low marks, some clients see a bunch of
nonexistant articles, etc.

> Still further in the future would be a complete rework of the expire
> subsystem. I'd like a daemon which continually checks if articles are
> expired or to be expired and does the necessary work, instead of the
> current somewhat disruptive cron job. (To get this completely working
> would need all databases, including history, in a format which allows
> delete operations.)

This is definitely the direction that I'm heading.  The history file will
acquire such an interface with the next rewrite.

> One wishlist item for me (or is it implemented already in some way?):
> the filter should be able to tell innd to file the article into (an)
> additional group(s). This way I could define an extra group for local
> postings, or make a kibozing group, etc.

Not really implemented yet.  Added.

> The current reserve/pause/throttle scheme is completely broken. One of
> the more obvious problems is that expire fails if something else happens
> to pause the server at the wrong moment. A possible way around that
> would be a locking protocol that goes like this:

>   while (!reserve()) {
>     if (reason==throttled)
>       return ERROR;
>     sleep(30+random());
>   }
>   pause();
>   /* do work */
>   unpause();
>   unreserve();

> which is obeyed by _every_ program trying to access the history, active
> etc. Another thing is that the PID of the lock-holder should always be
> recorded in the lock message, to see if the process has died.

> This should all go into a library routine and probably into an "ctlinnd
> lock" command, of course.



Russ Allbery (rra at             <>

More information about the inn-workers mailing list