Skip to content

Compile Warnings : -Wmismatched-new-delete #2

@MBO-Intraffic

Description

@MBO-Intraffic

I successfully created a SMPP client with your code.
But I get a couple of '-Wmismatched-new-delete' warnings which I think are too serious to ignore.

Steps taken:
I removed the FMT library form the example/client.
I only build the client
I build under Redhat 8

I tried the same under Ubuntu with boost 1.86.0 but I get more problems.

This is build output:

TDEVTEST-DEUV01 [dei@localhost smpp]$ mkdir build
TDEVTEST-DEUV01 [dei@localhost smpp]$ cd build/
TDEVTEST-DEUV01 [dei@localhost build]$ cmake ..
-- The CXX compiler identification is GNU 12.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/rh/gcc-toolset-12/root/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Boost: /opt/boost_1_83_0/lib/cmake/Boost-1.83.0/BoostConfig.cmake (found suitable version "1.83.0", minimum required is "1.81")  
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/repos/smpp/smpp/build
TDEVTEST-DEUV01 [dei@localhost build]$ cmake --build .
[ 25%] Building CXX object example/CMakeFiles/client.dir/client.cpp.o
In file included from /opt/repos/smpp/smpp/include/smpp/net.hpp:10,
                 from /opt/repos/smpp/smpp/include/smpp.hpp:8,
                 from /opt/repos/smpp/smpp/example/client.cpp:5:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:231:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, unsigned int), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, unsigned int)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  231 |       [](auto state, auto* self, auto* const pdu) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  232 |       {
      |       ~
  233 |         auto command_id      = std::decay_t<decltype(*pdu)>::command_id;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  234 |         auto sequence_number = self->next_sequence_number();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  235 | 
      |        
  236 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  237 |         {
      |         ~
  238 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  239 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  240 |             co_return { ec, {} };
      |             ~~~~~~~~~~~~~~~~~~~~~
  241 |         }
      |         ~
  242 | 
      |        
  243 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  244 | 
      |        
  245 |         auto ec = boost::system::error_code{};
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  246 |         try
      |         ~~~
  247 |         {
      |         ~
  248 |           self->send_buf_.resize(header_length); // reserved for header
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |           serialize_to(&self->send_buf_, *pdu);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  250 |           auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  251 |           detail::serialize_header(header_buf, self->send_buf_.size(), command_id, sequence_number);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  252 |           auto [wec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  253 |           ec            = wec;
      |           ~~~~~~~~~~~~~~~~~~~~
  254 |         }
      |         ~
  255 |         catch (const std::exception&)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  256 |         {
      |         ~
  257 |           ec = error::serialization_failed;
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  258 |         }
      |         ~
  259 | 
      |        
  260 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  261 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  262 |         co_return { ec, sequence_number };
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  263 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:231:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send<smpp::bind_transceiver, const boost::asio::deferred_t&>(const smpp::bind_transceiver&, const boost::asio::deferred_t&)::<lambda(auto:62, auto:63*, auto:64*)>&; Args = {smpp::session*&, const smpp::bind_transceiver* const&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, unsigned int), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, unsigned int)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:328:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  328 |       [](auto state, auto* self) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  329 |       {
      |       ~
  330 |         for (auto needs_more = false, needs_post = true, pending_enquire_link = false;;)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  331 |         {
      |         ~
  332 |           using enum command_id;
      |           ~~~~~~~~~~~~~~~~~~~~~~
  333 | 
      |        
  334 |           if (needs_more)
      |           ~~~~~~~~~~~~~~~
  335 |           {
      |           ~
  336 |             self->enquire_link_timer_.expires_after(self->enquire_link_interval_);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  337 |             auto [order, receive_ec, received, timer_ec] =
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  338 |               co_await asio::experimental::make_parallel_group(
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  339 |                 [&](auto token) { return self->socket_.async_receive(self->receive_buf_.prepare(64 * 1024), token); },
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  340 |                 [&](auto token) { return self->enquire_link_timer_.async_wait(token); })
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  341 |                 .async_wait(asio::experimental::wait_for_one(), deferred_tuple);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  342 | 
      |        
  343 |             needs_post = false;
      |             ~~~~~~~~~~~~~~~~~~~
  344 |             needs_more = false;
      |             ~~~~~~~~~~~~~~~~~~~
  345 |             self->receive_buf_.commit(received);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  346 | 
      |        
  347 |             if (order[0] == 0) // receive completed first
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  348 |             {
      |             ~
  349 |               pending_enquire_link = false;
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  350 |               if (receive_ec)
      |               ~~~~~~~~~~~~~~~
  351 |                 co_return { receive_ec, {}, {}, {} };
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  352 |             }
      |             ~
  353 |             else if (pending_enquire_link)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  354 |             {
      |             ~
  355 |               co_await self->async_send_command(unbind, self->next_sequence_number(), deferred_tuple);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  356 |               self->shutdown_socket();
      |               ~~~~~~~~~~~~~~~~~~~~~~~~
  357 |               co_return { error::enquire_link_timeout, {}, {}, {} };
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  358 |             }
      |             ~
  359 |             else
      |             ~~~~
  360 |             {
      |             ~
  361 |               pending_enquire_link = true;
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  362 |               co_await self->async_send_command(enquire_link, self->next_sequence_number(), deferred_tuple);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  363 |             }
      |             ~
  364 |           }
      |           ~
  365 | 
      |        
  366 |           if (self->receive_buf_.size() < header_length)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  367 |           {
      |           ~
  368 |             needs_more = true;
      |             ~~~~~~~~~~~~~~~~~~
  369 |             continue;
      |             ~~~~~~~~~
  370 |           }
      |           ~
  371 | 
      |        
  372 |           auto header_buf = std::span<const uint8_t, header_length>{ self->receive_buf_ };
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  373 |           auto [command_length, command_id, command_status, sequence_number] = detail::deserialize_header(header_buf);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  374 | 
      |        
  375 |           if (self->receive_buf_.size() < command_length)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  376 |           {
      |           ~
  377 |             needs_more = true;
      |             ~~~~~~~~~~~~~~~~~~
  378 |             continue;
      |             ~~~~~~~~~
  379 |           }
      |           ~
  380 | 
      |        
  381 |           if (command_id == enquire_link)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  382 |           {
      |           ~
  383 |             co_await self->async_send_command(enquire_link_resp, sequence_number, deferred_tuple);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  384 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  385 |           }
      |           ~
  386 |           else if (command_id == enquire_link_resp)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  387 |           {
      |           ~
  388 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  389 |           }
      |           ~
  390 |           else if (command_id == unbind || command_id == unbind_resp)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  391 |           {
      |           ~
  392 |             if (command_id == unbind)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~
  393 |             {
      |             ~
  394 |               auto [ec] = co_await self->async_send_command(unbind_resp, sequence_number, deferred_tuple);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  395 |               if (ec)
      |               ~~~~~~~
  396 |                 co_return { ec, {}, {}, {} };
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  397 |             }
      |             ~
  398 |             self->shutdown_socket();
      |             ~~~~~~~~~~~~~~~~~~~~~~~~
  399 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  400 |             co_return { error::unbinded, {}, {}, {} };
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  401 |           }
      |           ~
  402 |           else
      |           ~~~~
  403 |           {
      |           ~
  404 |             auto body_buf =
      |             ~~~~~~~~~~~~~~~
  405 |               std::span{ self->receive_buf_.begin() + header_length, self->receive_buf_.begin() + command_length };
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  406 |             auto pdu = pdu_variant{};
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~
  407 |             try
      |             ~~~
  408 |             {
      |             ~
  409 |               [&, command_id = command_id ]<std::size_t... Is>(std::index_sequence<Is...>)
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  410 |               {
      |               ~
  411 |                 if (!((command_id == std::decay_t<decltype(std::get<Is>(pdu_variant{}))>::command_id
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  412 |                          ? (pdu = deserialize<std::decay_t<decltype(std::get<Is>(pdu_variant{}))>>(body_buf), true)
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  413 |                          : false) ||
      |                          ~~~~~~~~~~~
  414 |                       ...))
      |                       ~~~~~
  415 |                   throw std::logic_error{ "Unknown PDU" };
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  416 |               }
      |               ~
  417 |               (std::make_index_sequence<std::variant_size_v<pdu_variant> - 1>()); // -1 because of invalid_pdu
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  418 |             }
      |             ~
  419 |             catch (const std::exception& e)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  420 |             {
      |             ~
  421 |               pdu =
      |               ~~~~~
  422 |                 invalid_pdu{ { self->receive_buf_.begin(), self->receive_buf_.begin() + command_length }, e.what() };
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  423 |             }
      |             ~
  424 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  425 |             if (needs_post) // prevents stack growth
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  426 |               co_await asio::post(state.get_io_executor(), asio::deferred);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  427 |             co_return { {}, std::move(pdu), sequence_number, command_status };
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  428 |           }
      |           ~
  429 |         }
      |         ~
  430 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:328:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_receive<const boost::asio::deferred_t&>(const boost::asio::deferred_t&)::<lambda(auto:74, auto:75*)>&; Args = {smpp::session*&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:231:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, unsigned int), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, unsigned int)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  231 |       [](auto state, auto* self, auto* const pdu) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  232 |       {
      |       ~
  233 |         auto command_id      = std::decay_t<decltype(*pdu)>::command_id;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  234 |         auto sequence_number = self->next_sequence_number();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  235 | 
      |        
  236 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  237 |         {
      |         ~
  238 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  239 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  240 |             co_return { ec, {} };
      |             ~~~~~~~~~~~~~~~~~~~~~
  241 |         }
      |         ~
  242 | 
      |        
  243 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  244 | 
      |        
  245 |         auto ec = boost::system::error_code{};
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  246 |         try
      |         ~~~
  247 |         {
      |         ~
  248 |           self->send_buf_.resize(header_length); // reserved for header
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |           serialize_to(&self->send_buf_, *pdu);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  250 |           auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  251 |           detail::serialize_header(header_buf, self->send_buf_.size(), command_id, sequence_number);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  252 |           auto [wec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  253 |           ec            = wec;
      |           ~~~~~~~~~~~~~~~~~~~~
  254 |         }
      |         ~
  255 |         catch (const std::exception&)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  256 |         {
      |         ~
  257 |           ec = error::serialization_failed;
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  258 |         }
      |         ~
  259 | 
      |        
  260 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  261 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  262 |         co_return { ec, sequence_number };
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  263 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:231:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send<smpp::submit_sm, const boost::asio::deferred_t&>(const smpp::submit_sm&, const boost::asio::deferred_t&)::<lambda(auto:62, auto:63*, auto:64*)>&; Args = {smpp::session*&, const smpp::submit_sm* const&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, unsigned int), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, unsigned int)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:198:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  198 |       [](auto state, auto* self, auto command_id, auto sequence_number) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  199 |       {
      |       ~
  200 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  201 |         {
      |         ~
  202 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  203 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  204 |             co_return ec;
      |             ~~~~~~~~~~~~~
  205 |         }
      |         ~
  206 | 
      |        
  207 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  208 | 
      |        
  209 |         self->send_buf_.resize(header_length); // reserved for header
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  210 |         auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  211 |         detail::serialize_header(header_buf, header_length, command_id, sequence_number);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  212 |         auto [ec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  213 | 
      |        
  214 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  215 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  216 |         co_return ec;
      |         ~~~~~~~~~~~~~
  217 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:198:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send_command<const boost::asio::deferred_t&>(smpp::command_id, uint32_t, const boost::asio::deferred_t&)::<lambda(auto:56, auto:57*, auto:58, auto:59)>&; Args = {smpp::session*&, smpp::command_id&, unsigned int&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:198:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::as_tuple_handler<boost::asio::experimental::detail::co_composed_handler<void(boost::asio::any_io_executor), boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>, boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>, void(std::tuple<boost::system::error_code>)> >; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  198 |       [](auto state, auto* self, auto command_id, auto sequence_number) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  199 |       {
      |       ~
  200 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  201 |         {
      |         ~
  202 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  203 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  204 |             co_return ec;
      |             ~~~~~~~~~~~~~
  205 |         }
      |         ~
  206 | 
      |        
  207 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  208 | 
      |        
  209 |         self->send_buf_.resize(header_length); // reserved for header
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  210 |         auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  211 |         detail::serialize_header(header_buf, header_length, command_id, sequence_number);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  212 |         auto [ec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  213 | 
      |        
  214 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  215 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  216 |         co_return ec;
      |         ~~~~~~~~~~~~~
  217 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:198:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send_command<const boost::asio::as_tuple_t<boost::asio::deferred_t>&>(smpp::command_id, uint32_t, const boost::asio::as_tuple_t<boost::asio::deferred_t>&)::<lambda(auto:56, auto:57*, auto:58, auto:59)>&; Args = {smpp::session*&, smpp::command_id&, unsigned int&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::as_tuple_handler<boost::asio::experimental::detail::co_composed_handler<void(boost::asio::any_io_executor), boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>, boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>, void(std::tuple<boost::system::error_code>)> >; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’
[ 50%] Linking CXX executable client
[ 50%] Built target client
[ 75%] Building CXX object example/CMakeFiles/server.dir/server.cpp.o
In file included from /opt/repos/smpp/smpp/include/smpp/net.hpp:10,
                 from /opt/repos/smpp/smpp/include/smpp.hpp:8,
                 from /opt/repos/smpp/smpp/example/server.cpp:5:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:328:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  328 |       [](auto state, auto* self) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  329 |       {
      |       ~
  330 |         for (auto needs_more = false, needs_post = true, pending_enquire_link = false;;)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  331 |         {
      |         ~
  332 |           using enum command_id;
      |           ~~~~~~~~~~~~~~~~~~~~~~
  333 | 
      |        
  334 |           if (needs_more)
      |           ~~~~~~~~~~~~~~~
  335 |           {
      |           ~
  336 |             self->enquire_link_timer_.expires_after(self->enquire_link_interval_);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  337 |             auto [order, receive_ec, received, timer_ec] =
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  338 |               co_await asio::experimental::make_parallel_group(
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  339 |                 [&](auto token) { return self->socket_.async_receive(self->receive_buf_.prepare(64 * 1024), token); },
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  340 |                 [&](auto token) { return self->enquire_link_timer_.async_wait(token); })
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  341 |                 .async_wait(asio::experimental::wait_for_one(), deferred_tuple);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  342 | 
      |        
  343 |             needs_post = false;
      |             ~~~~~~~~~~~~~~~~~~~
  344 |             needs_more = false;
      |             ~~~~~~~~~~~~~~~~~~~
  345 |             self->receive_buf_.commit(received);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  346 | 
      |        
  347 |             if (order[0] == 0) // receive completed first
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  348 |             {
      |             ~
  349 |               pending_enquire_link = false;
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  350 |               if (receive_ec)
      |               ~~~~~~~~~~~~~~~
  351 |                 co_return { receive_ec, {}, {}, {} };
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  352 |             }
      |             ~
  353 |             else if (pending_enquire_link)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  354 |             {
      |             ~
  355 |               co_await self->async_send_command(unbind, self->next_sequence_number(), deferred_tuple);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  356 |               self->shutdown_socket();
      |               ~~~~~~~~~~~~~~~~~~~~~~~~
  357 |               co_return { error::enquire_link_timeout, {}, {}, {} };
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  358 |             }
      |             ~
  359 |             else
      |             ~~~~
  360 |             {
      |             ~
  361 |               pending_enquire_link = true;
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  362 |               co_await self->async_send_command(enquire_link, self->next_sequence_number(), deferred_tuple);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  363 |             }
      |             ~
  364 |           }
      |           ~
  365 | 
      |        
  366 |           if (self->receive_buf_.size() < header_length)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  367 |           {
      |           ~
  368 |             needs_more = true;
      |             ~~~~~~~~~~~~~~~~~~
  369 |             continue;
      |             ~~~~~~~~~
  370 |           }
      |           ~
  371 | 
      |        
  372 |           auto header_buf = std::span<const uint8_t, header_length>{ self->receive_buf_ };
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  373 |           auto [command_length, command_id, command_status, sequence_number] = detail::deserialize_header(header_buf);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  374 | 
      |        
  375 |           if (self->receive_buf_.size() < command_length)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  376 |           {
      |           ~
  377 |             needs_more = true;
      |             ~~~~~~~~~~~~~~~~~~
  378 |             continue;
      |             ~~~~~~~~~
  379 |           }
      |           ~
  380 | 
      |        
  381 |           if (command_id == enquire_link)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  382 |           {
      |           ~
  383 |             co_await self->async_send_command(enquire_link_resp, sequence_number, deferred_tuple);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  384 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  385 |           }
      |           ~
  386 |           else if (command_id == enquire_link_resp)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  387 |           {
      |           ~
  388 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  389 |           }
      |           ~
  390 |           else if (command_id == unbind || command_id == unbind_resp)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  391 |           {
      |           ~
  392 |             if (command_id == unbind)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~
  393 |             {
      |             ~
  394 |               auto [ec] = co_await self->async_send_command(unbind_resp, sequence_number, deferred_tuple);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  395 |               if (ec)
      |               ~~~~~~~
  396 |                 co_return { ec, {}, {}, {} };
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  397 |             }
      |             ~
  398 |             self->shutdown_socket();
      |             ~~~~~~~~~~~~~~~~~~~~~~~~
  399 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  400 |             co_return { error::unbinded, {}, {}, {} };
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  401 |           }
      |           ~
  402 |           else
      |           ~~~~
  403 |           {
      |           ~
  404 |             auto body_buf =
      |             ~~~~~~~~~~~~~~~
  405 |               std::span{ self->receive_buf_.begin() + header_length, self->receive_buf_.begin() + command_length };
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  406 |             auto pdu = pdu_variant{};
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~
  407 |             try
      |             ~~~
  408 |             {
      |             ~
  409 |               [&, command_id = command_id ]<std::size_t... Is>(std::index_sequence<Is...>)
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  410 |               {
      |               ~
  411 |                 if (!((command_id == std::decay_t<decltype(std::get<Is>(pdu_variant{}))>::command_id
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  412 |                          ? (pdu = deserialize<std::decay_t<decltype(std::get<Is>(pdu_variant{}))>>(body_buf), true)
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  413 |                          : false) ||
      |                          ~~~~~~~~~~~
  414 |                       ...))
      |                       ~~~~~
  415 |                   throw std::logic_error{ "Unknown PDU" };
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  416 |               }
      |               ~
  417 |               (std::make_index_sequence<std::variant_size_v<pdu_variant> - 1>()); // -1 because of invalid_pdu
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  418 |             }
      |             ~
  419 |             catch (const std::exception& e)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  420 |             {
      |             ~
  421 |               pdu =
      |               ~~~~~
  422 |                 invalid_pdu{ { self->receive_buf_.begin(), self->receive_buf_.begin() + command_length }, e.what() };
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  423 |             }
      |             ~
  424 |             self->receive_buf_.consume(command_length);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  425 |             if (needs_post) // prevents stack growth
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  426 |               co_await asio::post(state.get_io_executor(), asio::deferred);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  427 |             co_return { {}, std::move(pdu), sequence_number, command_status };
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  428 |           }
      |           ~
  429 |         }
      |         ~
  430 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:328:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_receive<const boost::asio::deferred_t&>(const boost::asio::deferred_t&)::<lambda(auto:74, auto:75*)>&; Args = {smpp::session*&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:278:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  278 |       [](auto state, auto* self, auto* const pdu, auto sequence_number, auto command_status) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  279 |       {
      |       ~
  280 |         auto command_id = std::decay_t<decltype(*pdu)>::command_id;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  281 | 
      |        
  282 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  283 |         {
      |         ~
  284 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  285 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  286 |             co_return ec;
      |             ~~~~~~~~~~~~~
  287 |         }
      |         ~
  288 | 
      |        
  289 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  290 | 
      |        
  291 |         auto ec = boost::system::error_code{};
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  292 |         try
      |         ~~~
  293 |         {
      |         ~
  294 |           self->send_buf_.resize(header_length); // reserved for header
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  295 |           serialize_to(&self->send_buf_, *pdu);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  296 |           auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  297 |           detail::serialize_header(header_buf, self->send_buf_.size(), command_id, sequence_number, command_status);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  298 |           auto [wec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  299 |           ec            = wec;
      |           ~~~~~~~~~~~~~~~~~~~~
  300 |         }
      |         ~
  301 |         catch (const std::exception&)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  302 |         {
      |         ~
  303 |           ec = error::serialization_failed;
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  304 |         }
      |         ~
  305 | 
      |        
  306 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  307 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  308 |         co_return ec;
      |         ~~~~~~~~~~~~~
  309 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:278:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send<smpp::bind_transceiver_resp, const boost::asio::deferred_t&>(const smpp::bind_transceiver_resp&, uint32_t, smpp::command_status, const boost::asio::deferred_t&)::<lambda(auto:67, auto:68*, auto:69*, auto:70, auto:71)>&; Args = {smpp::session*&, const smpp::bind_transceiver_resp* const&, unsigned int&, smpp::command_status&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:278:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  278 |       [](auto state, auto* self, auto* const pdu, auto sequence_number, auto command_status) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  279 |       {
      |       ~
  280 |         auto command_id = std::decay_t<decltype(*pdu)>::command_id;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  281 | 
      |        
  282 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  283 |         {
      |         ~
  284 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  285 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  286 |             co_return ec;
      |             ~~~~~~~~~~~~~
  287 |         }
      |         ~
  288 | 
      |        
  289 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  290 | 
      |        
  291 |         auto ec = boost::system::error_code{};
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  292 |         try
      |         ~~~
  293 |         {
      |         ~
  294 |           self->send_buf_.resize(header_length); // reserved for header
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  295 |           serialize_to(&self->send_buf_, *pdu);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  296 |           auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  297 |           detail::serialize_header(header_buf, self->send_buf_.size(), command_id, sequence_number, command_status);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  298 |           auto [wec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  299 |           ec            = wec;
      |           ~~~~~~~~~~~~~~~~~~~~
  300 |         }
      |         ~
  301 |         catch (const std::exception&)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  302 |         {
      |         ~
  303 |           ec = error::serialization_failed;
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  304 |         }
      |         ~
  305 | 
      |        
  306 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  307 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  308 |         co_return ec;
      |         ~~~~~~~~~~~~~
  309 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:278:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send<smpp::submit_sm_resp, const boost::asio::deferred_t&>(const smpp::submit_sm_resp&, uint32_t, smpp::command_status, const boost::asio::deferred_t&)::<lambda(auto:67, auto:68*, auto:69*, auto:70, auto:71)>&; Args = {smpp::session*&, const smpp::submit_sm_resp* const&, unsigned int&, smpp::command_status&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code), boost::asio::any_io_executor>; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’
/opt/repos/smpp/smpp/include/smpp/net/session.hpp: In lambda function:
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:198:7: warning: ‘static void boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator delete(void*, std::size_t) [with Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::as_tuple_handler<boost::asio::experimental::detail::co_composed_handler<void(boost::asio::any_io_executor), boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>, boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>, void(std::tuple<boost::system::error_code>)> >; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’ called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete]
  198 |       [](auto state, auto* self, auto command_id, auto sequence_number) -> void
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  199 |       {
      |       ~
  200 |         while (!self->send_buf_.empty()) // ongoing send operation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  201 |         {
      |         ~
  202 |           auto [ec] = co_await self->send_cv_.async_wait(deferred_tuple);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  203 |           if (ec != asio::error::operation_aborted || !!state.cancelled())
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  204 |             co_return ec;
      |             ~~~~~~~~~~~~~
  205 |         }
      |         ~
  206 | 
      |        
  207 |         state.reset_cancellation_state(asio::enable_terminal_cancellation());
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  208 | 
      |        
  209 |         self->send_buf_.resize(header_length); // reserved for header
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  210 |         auto header_buf = std::span<uint8_t, header_length>{ self->send_buf_ };
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  211 |         detail::serialize_header(header_buf, header_length, command_id, sequence_number);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  212 |         auto [ec, _] = co_await asio::async_write(self->socket_, asio::buffer(self->send_buf_), deferred_tuple);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  213 | 
      |        
  214 |         self->send_buf_.clear();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~
  215 |         self->send_cv_.cancel_one();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  216 |         co_return ec;
      |         ~~~~~~~~~~~~~
  217 |       },
      |       ~
/opt/repos/smpp/smpp/include/smpp/net/session.hpp:198:7: note: returned from ‘static void* boost::asio::experimental::detail::co_composed_promise<Executors, Handler, Return>::operator new(std::size_t, C&&, boost::asio::experimental::detail::co_composed_state<Executors, Handler, Return>&, Args&& ...) [with C = const smpp::session::async_send_command<const boost::asio::as_tuple_t<boost::asio::deferred_t>&>(smpp::command_id, uint32_t, const boost::asio::as_tuple_t<boost::asio::deferred_t>&)::<lambda(auto:56, auto:57*, auto:58, auto:59)>&; Args = {smpp::session*&, smpp::command_id&, unsigned int&}; Executors = void(boost::asio::any_io_executor); Handler = boost::asio::detail::as_tuple_handler<boost::asio::experimental::detail::co_composed_handler<void(boost::asio::any_io_executor), boost::asio::detail::awaitable_async_op_handler<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status), boost::asio::any_io_executor>, boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code, std::variant<smpp::alert_notification, smpp::bind_receiver, smpp::bind_receiver_resp, smpp::bind_transceiver, smpp::bind_transceiver_resp, smpp::bind_transmitter, smpp::bind_transmitter_resp, smpp::cancel_sm, smpp::cancel_sm_resp, smpp::data_sm, smpp::data_sm_resp, smpp::deliver_sm, smpp::deliver_sm_resp, smpp::generic_nack, smpp::outbind, smpp::query_sm, smpp::query_sm_resp, smpp::replace_sm, smpp::replace_sm_resp, smpp::submit_sm, smpp::submit_sm_resp, smpp::invalid_pdu>, unsigned int, smpp::command_status)>, void(std::tuple<boost::system::error_code>)> >; Return = boost::asio::experimental::detail::co_composed_returns<void(boost::system::error_code)>]’
[100%] Linking CXX executable server
[100%] Built target server

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions