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