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()