Use Content-Length if greater than current size

The server may temporarily report an incorrect size that is smaller
than the actual size. Content-Length is expected to always be
accurate, but its value does not correspond to the full file size
when resuming downloads. Use Content-Length only if it's bigger
than the currently known size.

Change-Id: I2cc06bfbd2349f21528047b4840f549fbe84964e
This commit is contained in:
Gabriele M
2018-04-28 15:34:02 +02:00
parent 907486ad4f
commit 4f7db45fa6

View File

@@ -157,17 +157,15 @@ public class UpdaterController implements Controller {
@Override
public void onResponse(int statusCode, String url, DownloadClient.Headers headers) {
final Update update = mDownloads.get(downloadId).mUpdate;
if (update.getFileSize() <= 0) {
String contentLength = headers.get("Content-Length");
if (contentLength != null) {
try {
long size = Long.parseLong(contentLength);
if (size > 0) {
update.setFileSize(size);
}
} catch (NumberFormatException e) {
Log.e(TAG, "Could not get content-length");
String contentLength = headers.get("Content-Length");
if (contentLength != null) {
try {
long size = Long.parseLong(contentLength);
if (update.getFileSize() < size) {
update.setFileSize(size);
}
} catch (NumberFormatException e) {
Log.e(TAG, "Could not get content-length");
}
}
update.setStatus(UpdateStatus.DOWNLOADING);