Only log one host blocking message
The message would be logged multiple times if multiple authentication attemps failed at the same time. Also renamed the RateLimit class method to the same as the Listener one.
This commit is contained in:
@ -56,11 +56,18 @@ namespace
|
||||
class RateLimit
|
||||
{
|
||||
public:
|
||||
bool auth_failed(const std::string& remote)
|
||||
/**
|
||||
* Mark authentication from a host as failed
|
||||
*
|
||||
* @param remote The host from which the connection originated
|
||||
*
|
||||
* @return True if this was the failure that caused the host to be blocked
|
||||
*/
|
||||
bool mark_auth_as_failed(const std::string& remote)
|
||||
{
|
||||
auto& u = m_failures[remote];
|
||||
u.last_failure = Clock::now();
|
||||
return ++u.failures >= config_get_global_options()->max_auth_errors_until_block;
|
||||
return ++u.failures == config_get_global_options()->max_auth_errors_until_block;
|
||||
}
|
||||
|
||||
bool is_blocked(const std::string& remote)
|
||||
@ -1030,7 +1037,7 @@ void Listener::accept_connections()
|
||||
|
||||
void Listener::mark_auth_as_failed(const std::string& remote)
|
||||
{
|
||||
if (rate_limit.auth_failed(remote))
|
||||
if (rate_limit.mark_auth_as_failed(remote))
|
||||
{
|
||||
MXS_NOTICE("Host '%s' blocked for %d seconds due to too many authentication failures.",
|
||||
remote.c_str(), BLOCK_TIME);
|
||||
|
Reference in New Issue
Block a user