Skip to content

Commit

Permalink
Provide correct error description in "upload mode"
Browse files Browse the repository at this point in the history
  • Loading branch information
glassez committed May 27, 2021
1 parent 0c71756 commit 6aa8251
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/base/bittorrent/session.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4580,8 +4580,9 @@ void Session::handleFileErrorAlert(const lt::file_error_alert *p)
if (!torrent)
return;

const TorrentID id = torrent->id();
torrent->handleAlert(p);

const TorrentID id = torrent->id();
if (!m_recentErroredTorrents.contains(id))
{
m_recentErroredTorrents.insert(id);
Expand Down
16 changes: 15 additions & 1 deletion src/base/bittorrent/torrentimpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1005,7 +1005,13 @@ QString TorrentImpl::error() const
return QString::fromStdString(m_nativeStatus.errc.message());

if (m_nativeStatus.flags & lt::torrent_flags::upload_mode)
return tr("There's not enough space on disk. Torrent is currently in \"upload only\" mode.");
{
const QString writeErrorStr = tr("Couldn't write to file.");
const QString uploadModeStr = tr("Torrent is currently in \"upload only\" mode.");
const QString errorMessage = QString::fromLocal8Bit(m_lastFileError.error.message().c_str());

return writeErrorStr + QLatin1Char(' ') + errorMessage + QLatin1String(". ") + uploadModeStr;
}

return {};
}
Expand Down Expand Up @@ -1922,6 +1928,11 @@ void TorrentImpl::handleFileCompletedAlert(const lt::file_completed_alert *p)
}
}

void TorrentImpl::handleFileErrorAlert(const lt::file_error_alert *p)
{
m_lastFileError = {p->error, p->op};
}

#if (LIBTORRENT_VERSION_NUM >= 20003)
void TorrentImpl::handleFilePrioAlert(const lt::file_prio_alert *)
{
Expand Down Expand Up @@ -1981,6 +1992,9 @@ void TorrentImpl::handleAlert(const lt::alert *a)
case lt::file_completed_alert::alert_type:
handleFileCompletedAlert(static_cast<const lt::file_completed_alert*>(a));
break;
case lt::file_error_alert::alert_type:
handleFileErrorAlert(static_cast<const lt::file_error_alert*>(a));
break;
case lt::torrent_finished_alert::alert_type:
handleTorrentFinishedAlert(static_cast<const lt::torrent_finished_alert*>(a));
break;
Expand Down
8 changes: 8 additions & 0 deletions src/base/bittorrent/torrentimpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ namespace BitTorrent
HandleMetadata
};

struct FileErrorInfo
{
lt::error_code error;
lt::operation_t operation;
};

class TorrentImpl final : public QObject, public Torrent
{
Q_DISABLE_COPY(TorrentImpl)
Expand Down Expand Up @@ -255,6 +261,7 @@ namespace BitTorrent

void handleFastResumeRejectedAlert(const lt::fastresume_rejected_alert *p);
void handleFileCompletedAlert(const lt::file_completed_alert *p);
void handleFileErrorAlert(const lt::file_error_alert *p);
#if (LIBTORRENT_VERSION_NUM >= 20003)
void handleFilePrioAlert(const lt::file_prio_alert *p);
#endif
Expand Down Expand Up @@ -310,6 +317,7 @@ namespace BitTorrent
QHash<lt::file_index_t, QVector<QString>> m_oldPath;

QHash<QString, QMap<lt::tcp::endpoint, int>> m_trackerPeerCounts;
FileErrorInfo m_lastFileError;

// Persistent data
QString m_name;
Expand Down

0 comments on commit 6aa8251

Please sign in to comment.