Downloads are not possible to resume if the queue is lost since segmented downloads introduced
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| DC++ |
Fix Released
|
Undecided
|
Unassigned | ||
Bug Description
...so here's a function for recheck the temporary files' integrity and rebuild the queue item's segments thus it makes possible to resume downloads when the queue item is lost. The idea came from uTorrent's similar function and I used the dropped Advanced resume by tth algorythm as a base.
This is a suprisingly frequent problem and support questions about a solution can be found either in DC++'s or other mods' forums.
The patch introduces a menu function called Recheck integrity for the files stored in the queue. If the queue is lost or damaged the user re-adds the same files to the queue and then he/she will be able to recheck the integrity of the files. As the queue item's segmentset will be rebuilt the download can be resumed from where it stopped.
The function also useful for salvage the blocks remain intact in the rare case when the tempfile is damaged somehow. Also it may helps the user in a common case when the tempfile stucks in the unfinished folder because of move problems at the time the file is finished. If recheck results 100% finished file then it will try the move operation again.
The initial version of the patch contained code for disconnect all running downloads before the start of the recheck operation, however, because I was unable to find a reliable way to wait until all running segments finished this part was removed. In the attached patch the opreration starts only if the queue item is not running.
Thanks poy for help optimize the code and the functionality of this patch.
| Changed in dcplusplus: | |
| status: | New → Fix Committed |
| Changed in dcplusplus: | |
| status: | Fix Committed → Fix Released |

recheck4.patch - nearly the same as eMTee's recheck3.patch but in a threaded way, so that the GUI doesn't freeze while rechecking. tener to propagate results of the recheck operation to the GUI.
event added in QueueManagerLis
not tested.