Browse Source

Merge pull request #12037 from an0n666/seed-mode-fix

Check if file exists in seed mode
adaptive-webui-19844
Mike Tzou 5 years ago committed by GitHub
parent
commit
949daf6c73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 27
      src/base/bittorrent/session.cpp
  2. 1
      src/base/bittorrent/session.h

27
src/base/bittorrent/session.cpp

@ -4275,6 +4275,9 @@ void Session::handleAlert(const lt::alert *a) @@ -4275,6 +4275,9 @@ void Session::handleAlert(const lt::alert *a)
case lt::file_error_alert::alert_type:
handleFileErrorAlert(static_cast<const lt::file_error_alert*>(a));
break;
case lt::read_piece_alert::alert_type:
handleReadPieceAlert(static_cast<const lt::read_piece_alert*>(a));
break;
case lt::add_torrent_alert::alert_type:
handleAddTorrentAlert(static_cast<const lt::add_torrent_alert*>(a));
break;
@ -4395,6 +4398,15 @@ void Session::createTorrentHandle(const lt::torrent_handle &nativeHandle) @@ -4395,6 +4398,15 @@ void Session::createTorrentHandle(const lt::torrent_handle &nativeHandle)
// Torrent could have error just after adding to libtorrent
if (torrent->hasError())
LogMsg(tr("Torrent errored. Torrent: \"%1\". Error: %2.").arg(torrent->name(), torrent->error()), Log::WARNING);
// Check if file(s) exist when using seed mode
if (params.skipChecking && torrent->hasMetadata()) {
#if (LIBTORRENT_VERSION_NUM < 10200)
nativeHandle.read_piece(0);
#else
nativeHandle.read_piece(lt::piece_index_t(0));
#endif
}
}
void Session::handleAddTorrentAlert(const lt::add_torrent_alert *p)
@ -4499,6 +4511,21 @@ void Session::handleFileErrorAlert(const lt::file_error_alert *p) @@ -4499,6 +4511,21 @@ void Session::handleFileErrorAlert(const lt::file_error_alert *p)
m_recentErroredTorrentsTimer->start();
}
void Session::handleReadPieceAlert(const lt::read_piece_alert *p) const
{
#if (LIBTORRENT_VERSION_NUM < 10200)
if (p->ec) {
p->handle.auto_managed(false);
p->handle.force_recheck();
}
#else
if (p->error) {
p->handle.unset_flags(lt::torrent_flags::auto_managed);
p->handle.force_recheck();
}
#endif
}
void Session::handlePortmapWarningAlert(const lt::portmap_error_alert *p)
{
LogMsg(tr("UPnP/NAT-PMP: Port mapping failure, message: %1").arg(QString::fromStdString(p->message())), Log::CRITICAL);

1
src/base/bittorrent/session.h

@ -567,6 +567,7 @@ namespace BitTorrent @@ -567,6 +567,7 @@ namespace BitTorrent
void handleStateUpdateAlert(const lt::state_update_alert *p);
void handleMetadataReceivedAlert(const lt::metadata_received_alert *p);
void handleFileErrorAlert(const lt::file_error_alert *p);
void handleReadPieceAlert(const lt::read_piece_alert *p) const;
void handleTorrentRemovedAlert(const lt::torrent_removed_alert *p);
void handleTorrentDeletedAlert(const lt::torrent_deleted_alert *p);
void handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_alert *p);

Loading…
Cancel
Save