From b462a2bf0cd2253cf24494a68af6c4773ced6a1c Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Mon, 4 Nov 2024 16:27:21 +0300 Subject: [PATCH] Reset tracker entries when pause the session PR #21738. --- src/base/bittorrent/sessionimpl.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 496308fef53a..7ccaa6a89dec 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -4072,14 +4072,29 @@ bool SessionImpl::isPaused() const void SessionImpl::pause() { - if (!m_isPaused) + if (m_isPaused) + return; + + if (isRestored()) { - if (isRestored()) - m_nativeSession->pause(); + m_nativeSession->pause(); - m_isPaused = true; - emit paused(); + for (TorrentImpl *torrent : asConst(m_torrents)) + { + torrent->resetTrackerEntryStatuses(); + + const QList trackers = torrent->trackers(); + QHash updatedTrackers; + updatedTrackers.reserve(trackers.size()); + + for (const TrackerEntryStatus &status : trackers) + updatedTrackers.emplace(status.url, status); + emit trackerEntryStatusesUpdated(torrent, updatedTrackers); + } } + + m_isPaused = true; + emit paused(); } void SessionImpl::resume()