Use shared_ptr for CurlGet stream and improved thread-safety.

This commit is contained in:
Jari Sundell
2025-06-17 16:15:40 +02:00
committed by GitHub
parent 12347843a9
commit 64cb3d11a0
4 changed files with 13 additions and 12 deletions
+3 -1
View File
@@ -8,7 +8,7 @@
namespace core {
HttpQueue::iterator
HttpQueue::insert(const std::string& url, std::iostream* stream) {
HttpQueue::insert(const std::string& url, std::shared_ptr<std::ostream> stream) {
auto itr = base_type::insert(end(), torrent::net::HttpGet(url, stream));
itr->add_done_slot([this, itr]() { erase(itr); });
@@ -16,6 +16,7 @@ HttpQueue::insert(const std::string& url, std::iostream* stream) {
torrent::net_thread::http_stack()->start_get(*itr);
// TODO: Move above?
for (auto& slot : m_signal_insert)
slot(*itr);
@@ -27,6 +28,7 @@ HttpQueue::erase(iterator signal_itr) {
for (const auto& slot : m_signal_erase)
slot(*signal_itr);
signal_itr->close();
base_type::erase(signal_itr);
}