diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd_client/Torrents.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd_client/Torrents.cpp --- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd_client/Torrents.cpp 2026-09-14 14:11:42.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd_client/Torrents.cpp 2026-09-14 11:57:03.000000000 +0000 @@ -208,12 +208,7 @@ if (!f.is_open ()) { - auto mode = std::ios::binary | std::ios::in; auto filePath = fullFilePath; - if (isPart) - { - filePath += ".part"; - mode |= std::ios::out; - } - f.open (filePath, mode); + if (isPart) filePath += ".part"; + f.open (filePath, std::ios::binary | std::ios::in | std::ios::out); } auto ts = i2p::util::GetMonotonicSeconds (); diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd_client/TorrentsTunnel.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd_client/TorrentsTunnel.cpp --- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd_client/TorrentsTunnel.cpp 2026-09-14 14:11:42.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd_client/TorrentsTunnel.cpp 2026-09-14 11:57:03.000000000 +0000 @@ -807,4 +807,5 @@ auto ts = i2p::util::GetMonotonicSeconds (); for (auto it: m_Torrents) + { if (ts > it.second->GetNextUpdateStatusTime ()) { @@ -819,12 +820,13 @@ UpdatePeersPerPiece (it.second); } - boost::asio::post (GetDiskIOService (), [torrent = it.second, ts]() - { - for (auto it: torrent->GetFiles ()) - if (ts > it->lastAccessTime + TORRENT_FILE_INACTIVITY_TIMEOUT) - it->Close (); - }); it.second->SetNextUpdateStatusTime (ts + TORRENTS_STATUS_UPDATE_INTERVAL + GetLocalDestination ()->GetRng ()() % TORRENTS_STATUS_UPDATE_INTERVAL_VARIANCE); } + boost::asio::post (GetDiskIOService (), [torrent = it.second, ts]() + { + for (auto it: torrent->GetFiles ()) + if (ts > it->lastAccessTime + TORRENT_FILE_INACTIVITY_TIMEOUT) + it->Close (); + }); + } ScheduleStatusUpdate (); }