|
|
@ -4002,20 +4002,23 @@ void Session::handleMetadataReceivedAlert(const lt::metadata_received_alert *p) |
|
|
|
|
|
|
|
|
|
|
|
void Session::handleFileErrorAlert(const lt::file_error_alert *p) |
|
|
|
void Session::handleFileErrorAlert(const lt::file_error_alert *p) |
|
|
|
{ |
|
|
|
{ |
|
|
|
qDebug() << Q_FUNC_INFO; |
|
|
|
|
|
|
|
// NOTE: Check this function!
|
|
|
|
|
|
|
|
TorrentHandle *const torrent = m_torrents.value(p->handle.info_hash()); |
|
|
|
TorrentHandle *const torrent = m_torrents.value(p->handle.info_hash()); |
|
|
|
if (torrent) { |
|
|
|
if (!torrent) |
|
|
|
const InfoHash hash = torrent->hash(); |
|
|
|
return; |
|
|
|
if (!m_recentErroredTorrents.contains(hash)) { |
|
|
|
|
|
|
|
m_recentErroredTorrents.insert(hash); |
|
|
|
|
|
|
|
const QString msg = QString::fromStdString(p->message()); |
|
|
|
|
|
|
|
LogMsg(tr("An I/O error occurred, '%1' paused. %2").arg(torrent->name(), msg)); |
|
|
|
|
|
|
|
emit fullDiskError(torrent, msg); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_recentErroredTorrentsTimer->start(); |
|
|
|
const InfoHash hash = torrent->hash(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!m_recentErroredTorrents.contains(hash)) { |
|
|
|
|
|
|
|
m_recentErroredTorrents.insert(hash); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const QString msg = QString::fromStdString(p->message()); |
|
|
|
|
|
|
|
LogMsg(tr("File error alert. Torrent: \"%1\". File: \"%2\". Reason: %3") |
|
|
|
|
|
|
|
.arg(torrent->name(), p->filename(), msg) |
|
|
|
|
|
|
|
, Log::WARNING); |
|
|
|
|
|
|
|
emit fullDiskError(torrent, msg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_recentErroredTorrentsTimer->start(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Session::handlePortmapWarningAlert(const lt::portmap_error_alert *p) |
|
|
|
void Session::handlePortmapWarningAlert(const lt::portmap_error_alert *p) |
|
|
|