mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-29 05:48:47 +03:00
- When incomplete torrents are saved to a different path, check if content is already present at final location
- Automacillay force a data recheck every time a torrent is moved (because libtorrent does not take care of checking if the torrent data exists at the destination location)
This commit is contained in:
parent
ae6acc4ca2
commit
cac6f7428c
2 changed files with 32 additions and 9 deletions
|
@ -763,12 +763,15 @@ QTorrentHandle Bittorrent::addMagnetUri(QString magnet_uri, bool resumed) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QString savePath = getSavePath(hash);
|
QString savePath = getSavePath(hash);
|
||||||
qDebug("addMagnetURI: using save_path: %s", savePath.toLocal8Bit().data());
|
if(!defaultTempPath.isEmpty() && resumed && !TorrentPersistentData::isSeed(hash)) {
|
||||||
if(defaultTempPath.isEmpty() || (resumed && TorrentPersistentData::isSeed(hash))) {
|
qDebug("addMagnetURI: Temp folder is enabled.");
|
||||||
p.save_path = savePath.toLocal8Bit().data();
|
|
||||||
} else {
|
|
||||||
p.save_path = defaultTempPath.toLocal8Bit().data();
|
p.save_path = defaultTempPath.toLocal8Bit().data();
|
||||||
|
qDebug("addMagnetURI: using save_path: %s", defaultTempPath.toLocal8Bit().data());
|
||||||
|
} else {
|
||||||
|
p.save_path = savePath.toLocal8Bit().data();
|
||||||
|
qDebug("addMagnetURI: using save_path: %s", savePath.toLocal8Bit().data());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LIBTORRENT_0_15
|
#ifdef LIBTORRENT_0_15
|
||||||
// Skip checking and directly start seeding (new in libtorrent v0.15)
|
// Skip checking and directly start seeding (new in libtorrent v0.15)
|
||||||
if(TorrentTempData::isSeedingMode(hash)){
|
if(TorrentTempData::isSeedingMode(hash)){
|
||||||
|
@ -799,6 +802,13 @@ QTorrentHandle Bittorrent::addMagnetUri(QString magnet_uri, bool resumed) {
|
||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
Q_ASSERT(h.hash() == hash);
|
Q_ASSERT(h.hash() == hash);
|
||||||
|
|
||||||
|
// If temp path is enabled, move torrent
|
||||||
|
if(!defaultTempPath.isEmpty() && !resumed) {
|
||||||
|
qDebug("Temp folder is enabled, moving new torrent to temp folder");
|
||||||
|
h.move_storage(defaultTempPath);
|
||||||
|
}
|
||||||
|
|
||||||
// Connections limit per torrent
|
// Connections limit per torrent
|
||||||
h.set_max_connections(Preferences::getMaxConnecsPerTorrent());
|
h.set_max_connections(Preferences::getMaxConnecsPerTorrent());
|
||||||
// Uploads limit per torrent
|
// Uploads limit per torrent
|
||||||
|
@ -927,11 +937,13 @@ QTorrentHandle Bittorrent::addTorrent(QString path, bool fromScanDir, QString fr
|
||||||
} else {
|
} else {
|
||||||
savePath = getSavePath(hash);
|
savePath = getSavePath(hash);
|
||||||
}
|
}
|
||||||
qDebug("addTorrent: using save_path: %s", savePath.toLocal8Bit().data());
|
if(!defaultTempPath.isEmpty() && resumed && !TorrentPersistentData::isSeed(hash)) {
|
||||||
if(defaultTempPath.isEmpty() || (resumed && TorrentPersistentData::isSeed(hash))) {
|
qDebug("addTorrent::Temp folder is enabled.");
|
||||||
p.save_path = savePath.toLocal8Bit().data();
|
|
||||||
} else {
|
|
||||||
p.save_path = defaultTempPath.toLocal8Bit().data();
|
p.save_path = defaultTempPath.toLocal8Bit().data();
|
||||||
|
qDebug("addTorrent: using save_path: %s", defaultTempPath.toLocal8Bit().data());
|
||||||
|
} else {
|
||||||
|
p.save_path = savePath.toLocal8Bit().data();
|
||||||
|
qDebug("addTorrent: using save_path: %s", savePath.toLocal8Bit().data());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LIBTORRENT_0_15
|
#ifdef LIBTORRENT_0_15
|
||||||
|
@ -972,6 +984,12 @@ QTorrentHandle Bittorrent::addTorrent(QString path, bool fromScanDir, QString fr
|
||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If temp path is enabled, move torrent
|
||||||
|
if(!defaultTempPath.isEmpty() && !resumed) {
|
||||||
|
qDebug("Temp folder is enabled, moving new torrent to temp folder");
|
||||||
|
h.move_storage(defaultTempPath);
|
||||||
|
}
|
||||||
|
|
||||||
// Connections limit per torrent
|
// Connections limit per torrent
|
||||||
h.set_max_connections(Preferences::getMaxConnecsPerTorrent());
|
h.set_max_connections(Preferences::getMaxConnecsPerTorrent());
|
||||||
// Uploads limit per torrent
|
// Uploads limit per torrent
|
||||||
|
@ -1704,6 +1722,11 @@ void Bittorrent::addConsoleMessage(QString msg, QString) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (storage_moved_alert* p = dynamic_cast<storage_moved_alert*>(a.get())) {
|
||||||
|
QTorrentHandle h(p->handle);
|
||||||
|
if(h.is_valid())
|
||||||
|
h.force_recheck(); //XXX: Required by libtorrent for now
|
||||||
|
}
|
||||||
else if (metadata_received_alert* p = dynamic_cast<metadata_received_alert*>(a.get())) {
|
else if (metadata_received_alert* p = dynamic_cast<metadata_received_alert*>(a.get())) {
|
||||||
QTorrentHandle h(p->handle);
|
QTorrentHandle h(p->handle);
|
||||||
if(h.is_valid()) {
|
if(h.is_valid()) {
|
||||||
|
|
|
@ -319,7 +319,7 @@ public:
|
||||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
|
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
|
||||||
QHash<QString, QVariant> all_data = settings.value("torrents", QHash<QString, QVariant>()).toHash();
|
QHash<QString, QVariant> all_data = settings.value("torrents", QHash<QString, QVariant>()).toHash();
|
||||||
QHash<QString, QVariant> data = all_data[hash].toHash();
|
QHash<QString, QVariant> data = all_data[hash].toHash();
|
||||||
return data["seed"].toBool();
|
return data.value("seed", false).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isMagnet(QString hash) {
|
static bool isMagnet(QString hash) {
|
||||||
|
|
Loading…
Reference in a new issue