Passing nano::protocol_constants in to message_parser rather than referencing it statically.
This commit is contained in:
parent
fe97b2e898
commit
7b7a105867
4 changed files with 17 additions and 11 deletions
|
|
@ -67,7 +67,8 @@ TEST (message_parser, exact_confirm_ack_size)
|
|||
nano::network_filter filter (1);
|
||||
nano::block_uniquer block_uniquer;
|
||||
nano::vote_uniquer vote_uniquer (block_uniquer);
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work);
|
||||
nano::protocol_constants protocol;
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work, protocol);
|
||||
auto block (std::make_shared<nano::send_block> (1, 1, 2, nano::keypair ().prv, 4, *system.work.generate (nano::root (1))));
|
||||
auto vote (std::make_shared<nano::vote> (0, nano::keypair ().prv, 0, std::move (block)));
|
||||
nano::confirm_ack message (vote);
|
||||
|
|
@ -101,7 +102,8 @@ TEST (message_parser, exact_confirm_req_size)
|
|||
nano::network_filter filter (1);
|
||||
nano::block_uniquer block_uniquer;
|
||||
nano::vote_uniquer vote_uniquer (block_uniquer);
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work);
|
||||
nano::protocol_constants protocol;
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work, protocol);
|
||||
auto block (std::make_shared<nano::send_block> (1, 1, 2, nano::keypair ().prv, 4, *system.work.generate (nano::root (1))));
|
||||
nano::confirm_req message (std::move (block));
|
||||
std::vector<uint8_t> bytes;
|
||||
|
|
@ -134,7 +136,8 @@ TEST (message_parser, exact_confirm_req_hash_size)
|
|||
nano::network_filter filter (1);
|
||||
nano::block_uniquer block_uniquer;
|
||||
nano::vote_uniquer vote_uniquer (block_uniquer);
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work);
|
||||
nano::protocol_constants protocol;
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work, protocol);
|
||||
nano::send_block block (1, 1, 2, nano::keypair ().prv, 4, *system.work.generate (nano::root (1)));
|
||||
nano::confirm_req message (block.hash (), block.root ());
|
||||
std::vector<uint8_t> bytes;
|
||||
|
|
@ -167,7 +170,8 @@ TEST (message_parser, exact_publish_size)
|
|||
nano::network_filter filter (1);
|
||||
nano::block_uniquer block_uniquer;
|
||||
nano::vote_uniquer vote_uniquer (block_uniquer);
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work);
|
||||
nano::protocol_constants protocol;
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work, protocol);
|
||||
auto block (std::make_shared<nano::send_block> (1, 1, 2, nano::keypair ().prv, 4, *system.work.generate (nano::root (1))));
|
||||
nano::publish message (std::move (block));
|
||||
std::vector<uint8_t> bytes;
|
||||
|
|
@ -200,7 +204,8 @@ TEST (message_parser, exact_keepalive_size)
|
|||
nano::network_filter filter (1);
|
||||
nano::block_uniquer block_uniquer;
|
||||
nano::vote_uniquer vote_uniquer (block_uniquer);
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work);
|
||||
nano::protocol_constants protocol;
|
||||
nano::message_parser parser (filter, block_uniquer, vote_uniquer, visitor, system.work, protocol);
|
||||
nano::keepalive message;
|
||||
std::vector<uint8_t> bytes;
|
||||
{
|
||||
|
|
|
|||
|
|
@ -327,19 +327,19 @@ std::string nano::message_parser::status_string ()
|
|||
return "[unknown parse_status]";
|
||||
}
|
||||
|
||||
nano::message_parser::message_parser (nano::network_filter & publish_filter_a, nano::block_uniquer & block_uniquer_a, nano::vote_uniquer & vote_uniquer_a, nano::message_visitor & visitor_a, nano::work_pool & pool_a) :
|
||||
nano::message_parser::message_parser (nano::network_filter & publish_filter_a, nano::block_uniquer & block_uniquer_a, nano::vote_uniquer & vote_uniquer_a, nano::message_visitor & visitor_a, nano::work_pool & pool_a, nano::protocol_constants const & protocol) :
|
||||
publish_filter (publish_filter_a),
|
||||
block_uniquer (block_uniquer_a),
|
||||
vote_uniquer (vote_uniquer_a),
|
||||
visitor (visitor_a),
|
||||
pool (pool_a),
|
||||
status (parse_status::success)
|
||||
status (parse_status::success),
|
||||
protocol{ protocol }
|
||||
{
|
||||
}
|
||||
|
||||
void nano::message_parser::deserialize_buffer (uint8_t const * buffer_a, size_t size_a)
|
||||
{
|
||||
static nano::network_constants network_constants;
|
||||
status = parse_status::success;
|
||||
auto error (false);
|
||||
if (size_a <= max_safe_udp_message_size)
|
||||
|
|
@ -349,7 +349,7 @@ void nano::message_parser::deserialize_buffer (uint8_t const * buffer_a, size_t
|
|||
nano::message_header header (error, stream);
|
||||
if (!error)
|
||||
{
|
||||
if (header.version_using < get_protocol_constants ().protocol_version_min ())
|
||||
if (header.version_using < protocol.protocol_version_min ())
|
||||
{
|
||||
status = parse_status::outdated_version;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ public:
|
|||
outdated_version,
|
||||
duplicate_publish_message
|
||||
};
|
||||
message_parser (nano::network_filter &, nano::block_uniquer &, nano::vote_uniquer &, nano::message_visitor &, nano::work_pool &);
|
||||
message_parser (nano::network_filter &, nano::block_uniquer &, nano::vote_uniquer &, nano::message_visitor &, nano::work_pool &, nano::protocol_constants const & protocol);
|
||||
void deserialize_buffer (uint8_t const *, size_t);
|
||||
void deserialize_keepalive (nano::stream &, nano::message_header const &);
|
||||
void deserialize_publish (nano::stream &, nano::message_header const &, nano::uint128_t const & = 0);
|
||||
|
|
@ -271,6 +271,7 @@ public:
|
|||
nano::message_visitor & visitor;
|
||||
nano::work_pool & pool;
|
||||
parse_status status;
|
||||
nano::protocol_constants const & protocol;
|
||||
std::string status_string ();
|
||||
static const size_t max_safe_udp_message_size;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -541,7 +541,7 @@ void nano::transport::udp_channels::receive_action (nano::message_buffer * data_
|
|||
if (allowed_sender)
|
||||
{
|
||||
udp_message_visitor visitor (node, data_a->endpoint, sink);
|
||||
nano::message_parser parser (node.network.publish_filter, node.block_uniquer, node.vote_uniquer, visitor, node.work);
|
||||
nano::message_parser parser (node.network.publish_filter, node.block_uniquer, node.vote_uniquer, visitor, node.work, node.network_params.protocol);
|
||||
parser.deserialize_buffer (data_a->buffer, data_a->size);
|
||||
if (parser.status == nano::message_parser::parse_status::success)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue