]> git.saurik.com Git - apt.git/commit - apt-pkg/acquire-item.cc
use the same redirection mirror for all index files
authorDavid Kalnischkies <david@kalnischkies.de>
Fri, 15 Apr 2016 22:07:28 +0000 (00:07 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 25 Apr 2016 13:35:52 +0000 (15:35 +0200)
commit9b8034a9fd40b4d05075fda719e61f6eb4c45678
treee7b9ed03d297e7aac374b6fc36949d66ad4e4a2e
parent30979dd7616105302f06af82f419eb62d7b613f8
use the same redirection mirror for all index files

Redirection services like httpredir.debian.org tend to use a set of
mirrors from which they pick a mirror at "random" for each requested
file, which is usually benefitial for the download of debs, but for the
index files this can quickly cause problems (aka hashsum mismatches) if
the two (or more) mirrors involved are only slightly out-of-sync.

This commit "resolves" this issue by using the mirror we ended up using
to get the (signed) Release file directly to get the index files
belonging to this Release file instead of asking the redirection
service which eliminates the risk of hitting out-of-sync mirrors.

As an obvious downside the redirection service can't serve partial
mirrors anymore for indexes and the download of indexes indexed in the
same Release file can't be done in parallel (from different mirrors).

This does not effect the download of non-index files like deb-files as
out-of-sync mirrors aren't a huge problem there, so the parallel
download outweights a potentially 404 error (also because this causes no
errenous downloads while hashsum mismatches download the entire file
before finding out that it was pointless).

The rational for this is that indexes are relative to the Release file.
If we would be talking about a HTML page including images, such a
behaviour is obvious and intended – not doing it means in the best case
a bunch of "useless" requests which will all be answered with a
redirect.
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
test/integration/test-handle-redirect-as-used-mirror-change