-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1.0.3] Optimize handling of invalid vote message #913
Conversation
plugins/net_plugin/net_plugin.cpp
Outdated
@@ -4025,19 +4025,25 @@ namespace eosio { | |||
case vote_result_t::invalid_signature: | |||
case vote_result_t::max_exceeded: // close peer immediately | |||
fc_elog(vote_logger, "Exceeded max votes per connection for ${c}", ("c", connection_id)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not from your PR. But this logging only lists Exceeded max votes
as the failure reason. It can be unknown_public_key or invalid_signature
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed it.
fc_elog(vote_logger, "Exceeded max votes per connection for ${c}", ("c", connection_id)); | ||
my_impl->connections.for_each_connection([connection_id](const connection_ptr& c) { | ||
fc_elog(vote_logger, "Invalid vote(s), closing connection - ${c}", ("c", connection_id)); | ||
my_impl->connections.any_of_connections([connection_id](const connection_ptr& c) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe define a new API in connections_manager:
template <typename F>
void for_connection(uint32_t connection_id, F&& f) {
any_of_connections([connection_id, f = std::forward<F>(f)](const connection_ptr& c) {
if (c->connection_id == connection_id) {
f();
return true;
}
return false;
});
Note:start |
Small optimization of handling of errors for vote messages. Shortcut out of loop when connection is found.
Improve error message for invalid vote message.