From eea01b94a3299e8937cbe991c7f5c24abdef7908 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 | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 492bfac3b..e962a125e 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -4065,14 +4065,29 @@ bool SessionImpl::isPaused() const void SessionImpl::pause() { - if (!m_isPaused) - { - if (isRestored()) - m_nativeSession->pause(); + if (m_isPaused) + return; - m_isPaused = true; - emit paused(); + if (isRestored()) + { + m_nativeSession->pause(); + + 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()