[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[leafnode-list] [1.9.*][2.0b*] Bug



krasel@xxxxxxxxxxxxxxxxxxxxxxxxxxxx (Cornelius Krasel) writes:

> History of 1.9.18 -- changes since 1.9.17:
> 
> fetchnews.c:
> - postarticles(): under certain circumstances, files were not closed.
>   Bug found by Carl D. Cravens <raven@xxxxxxxxxxx>.

postarticles is a horrible mess and suffers from nondeterministic
behaviour.

This bug report applies to recent 1.9.17 ... 1.9.18 (I don't bother to
check older versions), 2.0b* up to b5, 2.0b5_ma1 ... 2.0b5_ma7:

Actually, fetchnews is supposed to try to post the article to all
servers to overcome bad propagation, however, if any server already has
the Message-ID of the article to be posted, the article is killed
(unlinked). So, imagine a setup with three servers:

#1 
#2 is fed by #1 over a FAST link (such as fu-berlin <-> uni-dortmund)
#3 suffers from propagation problems, and is not fed directly by #1.

Now, leafnode posts on #1, #2 virtually immediately also has the
article. leafnode tries #2, the article is already there, leafnode
unlinks the article. #3 never sees it. It would however see it if the
#1->#2 propagation was slower or #3 would be tried before #2.

This is nonsense. Either the article is unlinked as soon as it has
successfully been posted to ANY server (may cause propagation problems)
or leafnode gets a RELIABLE posting scheme, implemented in a READABLE
postarticles function.

I already suggested to have one out.going per server, it's not too much
work IMO (one change to nntpd, some changes to fetchnews and newsq,
possibly texpire). A server that does not allow posting could be marked
as such by creating an empty file, say
out.going/my.server/dont.post.here.

Some encapsulation of "queue" handling would not hurt.

Unless there's some bad screaming, I'll go fix that in 2.0b8.

-- 
Matthias Andree

-- 
leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx -- mailing list for leafnode
To unsubscribe, send mail with "unsubscribe" in the subject to the list