From eda74b81992e9fa1a9e708f93f75e829d12ccbd1 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Tue, 19 Nov 2024 11:36:53 +0900 Subject: [PATCH] Fix close on send. --- include/async_mqtt/impl/endpoint_send.hpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/include/async_mqtt/impl/endpoint_send.hpp b/include/async_mqtt/impl/endpoint_send.hpp index 54e3716b..02ec49e1 100644 --- a/include/async_mqtt/impl/endpoint_send.hpp +++ b/include/async_mqtt/impl/endpoint_send.hpp @@ -26,7 +26,7 @@ send_op { using events_it_type = typename events_type::iterator; std::shared_ptr events = nullptr; events_it_type it = events_it_type{}; - enum { dispatch, write, sent, complete } state = dispatch; + enum { dispatch, write, sent, close, complete } state = dispatch; template bool process_one_event( @@ -102,10 +102,9 @@ send_op { }, [&](event_close) { std::cout << __FILE__ << ":" << __LINE__ << ":" << &a_ep << std::endl; - state = complete; - auto ep_copy{ep}; - async_close( - force_move(ep_copy), + state = close; + as::post( + a_ep.get_executor(), force_move(self) ); return false; @@ -173,6 +172,14 @@ send_op { force_move(self) ); } break; + case close: { + state = complete; + auto ep_copy{ep}; + async_close( + force_move(ep_copy), + force_move(self) + ); + } break; case complete: { if (decided_error) { std::cout << __FILE__ << ":" << __LINE__ << ":" << &a_ep << std::endl;