diff --git a/internal/torrent/manager.go b/internal/torrent/manager.go index e65c607..e6a0ce5 100644 --- a/internal/torrent/manager.go +++ b/internal/torrent/manager.go @@ -520,18 +520,24 @@ func (t *TorrentManager) repair(torrentID string, selectedFiles []File, tryReins // or if there's only 1 missing file, we will download 1 more to prevent a rename missingFilesPlus1 := strings.Join(getFileIDs(missingFiles), ",") missingFilesPlus1 += fmt.Sprintf(",%d", otherStreamableFileIDs[0]) + log.Println("Trying to reinsert with 1 extra file", missingFilesPlus1) t.reinsertTorrent(torrent, missingFilesPlus1, false) - } else { + } else if len(selectedFiles) > 1 { // if not, last resort: add only the missing files but do it in 2 batches half := len(missingFiles) / 2 missingFiles1 := strings.Join(getFileIDs(missingFiles[:half]), ",") missingFiles2 := strings.Join(getFileIDs(missingFiles[half:]), ",") if missingFiles1 != "" { + log.Println("Trying to reinsert with 1/2 batches", missingFiles1) t.reinsertTorrent(torrent, missingFiles1, false) } if missingFiles2 != "" { + log.Println("Trying to reinsert with 2/2 batches", missingFiles2) t.reinsertTorrent(torrent, missingFiles2, false) } + } else { + log.Println("Cannot repair", torrent.Name) + return } log.Println("Waiting for downloads to finish") }