To reproduce,
1. download a file from https://www.thinkbroadband.com/download,
2. wait for a while to ensure that parallel jobs are created,
3. kill Chrome, and relaunch it
4. Download will resume, but never reach 100%
5. User have to resume the download by killing Chrome, and restart it (simply pause/resume won't work)
Here is the reason
Download relies on accept-range response header to determine whether parallel job should be created. However, server may not issue accept-range header for a ranged request, instead it uses content-range header.
As a result, when resuming the download in 3, Chrome only creates 1 download job although there are 2 pieces left to download. After the 1st piece got downloaded, chrome will no longer able to proceed as there are no logic to create the 2nd download job.
Simply pausing/resuming the download won't work as Chrome is still using the same download job, which has already issued the url request. Killing Chrome causes a new download job to be created, which will issue a new url request for the 2nd piece.
Comment 1 by qin...@chromium.org
, Aug 26 2017