From f0ee6aba2958f64cbf0bbec9097b6f9bc7a6b9e0 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sun, 16 Jan 2022 16:06:15 +0300 Subject: [PATCH] Correctly handle received metadata It did not work correctly, since it assumed that 'lt::torrent_plugin' is created at an earlier stage and is able to track all changes in the torrent state, but in reality it turned out that it was created after the torrent moved to the `downloading_metadata` state, so we had to additionally handle it in the constructor. PR #16121. --- src/base/bittorrent/nativetorrentextension.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/base/bittorrent/nativetorrentextension.cpp b/src/base/bittorrent/nativetorrentextension.cpp index ff79d6d73..92583dc91 100644 --- a/src/base/bittorrent/nativetorrentextension.cpp +++ b/src/base/bittorrent/nativetorrentextension.cpp @@ -41,6 +41,7 @@ namespace NativeTorrentExtension::NativeTorrentExtension(const lt::torrent_handle &torrentHandle) : m_torrentHandle {torrentHandle} { + on_state(m_torrentHandle.status({}).state); } bool NativeTorrentExtension::on_pause() @@ -56,7 +57,10 @@ bool NativeTorrentExtension::on_pause() void NativeTorrentExtension::on_state(const lt::torrent_status::state_t state) { if (m_state == lt::torrent_status::downloading_metadata) - m_torrentHandle.set_flags(lt::torrent_flags::stop_when_ready); + { + m_torrentHandle.unset_flags(lt::torrent_flags::auto_managed); + m_torrentHandle.pause(); + } m_state = state; }