alpm: Fix wrong xferred/total sizes when resuming downloads

When a package is already partially downloaded in the cache, its download
size will only be of what's left to be downloaded. Since pkg->download_size
is what's used when calculating the total download size for the totaldl
callback, same thing apply.

However, the download progress callback was including this initial size,
which would thus lead to invalid values (and percentage) used in frontends.
That is, the progress bar could e.g. go further than 100%

In the case of pacman, there is a sanity check for different historical
reason (44a57c89), so before the possible "overflow" was noticed, the total
download size/progress reported was wrong. Once caught, the TotalDownload
option was ignored and it would use individual file download values as
fallback instead.

Signed-off-by: Olivier Brunel <jjk@jjacky.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Olivier Brunel 2014-07-31 19:42:28 +02:00 committed by Allan McRae
parent ca8319aec9
commit 1e3c088c2e

View file

@ -131,7 +131,9 @@ static int dload_progress_cb(void *file, double dltotal, double dlnow,
payload->handle->dlcb(payload->remote_name, 0, (off_t)dltotal); payload->handle->dlcb(payload->remote_name, 0, (off_t)dltotal);
} }
payload->handle->dlcb(payload->remote_name, current_size, total_size); /* do NOT include initial_size since it wasn't part of the package's
* download_size (nor included in the total download size callback) */
payload->handle->dlcb(payload->remote_name, (off_t)dlnow, (off_t)dltotal);
payload->prevprogress = current_size; payload->prevprogress = current_size;