Browse Source

- BUGFIX: Added safety mecanism which adds the torrents back to the list in case qbittorrent-resume.conf gets deleted or corrupted.

adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
5d1ed7a564
  1. 22
      src/bittorrent.cpp

22
src/bittorrent.cpp

@ -1529,14 +1529,31 @@ void bittorrent::applyEncryptionSettings(pe_settings se) {
// backup directory // backup directory
void bittorrent::startUpTorrents() { void bittorrent::startUpTorrents() {
qDebug("Resuming unfinished torrents"); qDebug("Resuming unfinished torrents");
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
QStringList fileNames; QStringList fileNames;
QStringList known_torrents = TorrentPersistentData::knownTorrents(); QStringList known_torrents = TorrentPersistentData::knownTorrents();
if(known_torrents.empty()) {
if(known_torrents.empty() && !settings.value("v1_4_x_torrent_imported", false).toBool()) {
qDebug("No known torrent, importing old torrents"); qDebug("No known torrent, importing old torrents");
importOldTorrents(); importOldTorrents();
return; return;
} }
// Safety measure because some people reported torrent loss since
// we switch the v1.5 way of resuming torrents on startup
QStringList filters;
filters << "*.torrent";
QStringList torrents_on_hd = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted);
foreach(QString hash, torrents_on_hd) {
hash.chop(8); // remove trailing .torrent
if(!known_torrents.contains(hash)) {
std::cerr << "ERROR Detected!!! Adding back torrent " << hash.toLocal8Bit().data() << " which got lost for some reason." << std::endl;
addTorrent(torrentBackup.path()+QDir::separator()+hash+".torrent", false, QString(), true);
}
}
// End of safety measure
qDebug("Starting up torrents"); qDebug("Starting up torrents");
if(isQueueingEnabled()) { if(isQueueingEnabled()) {
QList<QPair<int, QString> > hashes; QList<QPair<int, QString> > hashes;
@ -1697,7 +1714,7 @@ void bittorrent::applyFormerAttributeFiles(QTorrentHandle h) {
// TODO: Remove in qBittorrent v1.6.0 // TODO: Remove in qBittorrent v1.6.0
void bittorrent::importOldTorrents() { void bittorrent::importOldTorrents() {
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
if(!settings.value("v1_4_x_torrent_imported", false).toBool()) { Q_ASSERT(!settings.value("v1_4_x_torrent_imported", false).toBool());
// Import old torrent // Import old torrent
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
QStringList fileNames; QStringList fileNames;
@ -1771,5 +1788,4 @@ void bittorrent::importOldTorrents() {
} }
settings.setValue("v1_4_x_torrent_imported", true); settings.setValue("v1_4_x_torrent_imported", true);
std::cout << "Successfully imported torrents from v1.4.x (or previous) instance" << std::endl; std::cout << "Successfully imported torrents from v1.4.x (or previous) instance" << std::endl;
}
} }

Loading…
Cancel
Save