From 73ce93d635990ad7ee24cee09639dc3893a36de6 Mon Sep 17 00:00:00 2001 From: cryptocode Date: Tue, 26 Feb 2019 14:52:31 +0100 Subject: [PATCH] Capture buffers in io lambdas (#1787) --- nano/node/node.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/nano/node/node.cpp b/nano/node/node.cpp index 87c8645c..09680f72 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -242,7 +242,7 @@ void nano::network::republish (nano::block_hash const & hash_a, std::shared_ptr< BOOST_LOG (node.log) << boost::str (boost::format ("Publishing %1% to %2%") % hash_a.to_string () % endpoint_a); } std::weak_ptr node_w (node.shared ()); - send_buffer (buffer_a->data (), buffer_a->size (), endpoint_a, [node_w, endpoint_a](boost::system::error_code const & ec, size_t size) { + send_buffer (buffer_a->data (), buffer_a->size (), endpoint_a, [buffer_a, node_w, endpoint_a](boost::system::error_code const & ec, size_t size) { if (auto node_l = node_w.lock ()) { if (ec && node_l->config.logging.network_logging ()) @@ -558,18 +558,14 @@ void nano::network::send_confirm_req (nano::endpoint const & endpoint_a, std::sh void nano::network::send_confirm_req_hashes (nano::endpoint const & endpoint_a, std::vector> const & roots_hashes_a) { nano::confirm_req message (roots_hashes_a); - std::vector bytes; - { - nano::vectorstream stream (bytes); - message.serialize (stream); - } + auto buffer_l (message.to_bytes ()); if (node.config.logging.network_message_logging ()) { BOOST_LOG (node.log) << boost::str (boost::format ("Sending confirm req hashes to %1%") % endpoint_a); } std::weak_ptr node_w (node.shared ()); node.stats.inc (nano::stat::type::message, nano::stat::detail::confirm_req, nano::stat::dir::out); - send_buffer (bytes.data (), bytes.size (), endpoint_a, [node_w](boost::system::error_code const & ec, size_t size) { + send_buffer (buffer_l->data (), buffer_l->size (), endpoint_a, [buffer_l, node_w](boost::system::error_code const & ec, size_t size) { if (auto node_l = node_w.lock ()) { if (ec && node_l->config.logging.network_logging ())