diff --git a/src/client.cpp b/src/client.cpp index 247980e100565a602dfa1cec7315c67b8416be69..5a063f8b647850c96d5a219e6894235ac9c6a22c 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -68,7 +68,6 @@ Client::on_connect(std::shared_ptr<Session> s, boost::system::error_code ec) } // Check if the request is already cancelled and we shouldn't move forward. - std::unique_lock<std::mutex> cancel_lock(s->cancel_guard); if (s->is_cancelled) return on_request_complete(s); @@ -87,7 +86,6 @@ Client::on_handshake(std::shared_ptr<Session> s, boost::system::error_code ec) } // Check if the request is already cancelled and we shouldn't move forward. - std::unique_lock<std::mutex> cancel_lock(s->cancel_guard); if (s->is_cancelled) return on_request_complete(s); @@ -112,7 +110,6 @@ Client::on_write(std::shared_ptr<Session> s, return s->on_failure(s->id, ec); } - std::unique_lock<std::mutex> cancel_lock(s->cancel_guard); if (s->is_cancelled) return on_request_complete(s); @@ -156,10 +153,8 @@ Client::cancel_request(RequestID request_id) std::unique_lock<std::mutex> lock(active_sessions_guard_); auto it = active_sessions_.find(request_id); - if (it != active_sessions_.end()) { - std::unique_lock<std::mutex> cancel_lock(it->second->cancel_guard); + if (it != active_sessions_.end()) it->second->is_cancelled = true; - } } void diff --git a/src/session.hpp b/src/session.hpp index b126c04ca1f79c584ffc728bf3eb11e57591fe52..277b07a79bdc30b3aaec302b6d53da5a16f9707b 100644 --- a/src/session.hpp +++ b/src/session.hpp @@ -1,10 +1,10 @@ #pragma once +#include <atomic> #include <boost/asio.hpp> #include <boost/asio/ssl.hpp> #include <boost/beast.hpp> #include <memory> -#include <mutex> namespace mtx { namespace client { @@ -62,9 +62,7 @@ struct Session //! Function to be called when the request fails. FailureCallback on_failure; //! Whether or not the request has been cancelled. - bool is_cancelled; - //! Retricting access to the cancelled bool. - std::mutex cancel_guard; + std::atomic_bool is_cancelled; }; } }