diff --git a/app/controllers/epp/base_controller.rb b/app/controllers/epp/base_controller.rb index 520b97c4f..3400a07e5 100644 --- a/app/controllers/epp/base_controller.rb +++ b/app/controllers/epp/base_controller.rb @@ -32,7 +32,7 @@ module Epp def respond_with_session_limit_exceeded_error(exception) epp_errors.add(:epp_errors, code: '2502', - message: 'Session limit exceeded, try again later') + msg: Shunter.default_error_message) handle_errors log_exception(exception) end diff --git a/app/lib/shunter.rb b/app/lib/shunter.rb index 045f7fdd0..3339a8fcd 100644 --- a/app/lib/shunter.rb +++ b/app/lib/shunter.rb @@ -9,6 +9,10 @@ module Shunter BASE_CONNECTION = ENV['shunter_redis_connection'] || { host: 'redis', port: 6379 } + def default_error_message + "Session limit exceeded. Current limit is #{default_threshold} in #{default_timespan} seconds" + end + def default_timespan ENV['shunter_default_timespan'] || ONE_MINUTE end diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index c6589b63d..bb2bc84a1 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -105,6 +105,9 @@ class Epp::Domain < Domain max: Setting.ns_max_count } ], + '2502' => [ # Rate limit exceeded + %i[base session_limit_exceeded], + ], ] } end diff --git a/app/models/epp/response/result/code.rb b/app/models/epp/response/result/code.rb index f2b1ccd3b..916683840 100644 --- a/app/models/epp/response/result/code.rb +++ b/app/models/epp/response/result/code.rb @@ -62,7 +62,7 @@ module Epp 2308 => 'Data management policy violation', 2400 => 'Command failed', 2501 => 'Authentication error; server closing connection', - 2502 => 'Session limit exceeded; server closing connection', + 2502 => Shunter.default_error_message, }.freeze private_constant :DEFAULT_DESCRIPTIONS diff --git a/test/integration/epp/domain/info/base_test.rb b/test/integration/epp/domain/info/base_test.rb index 25c65d476..56f9cd775 100644 --- a/test/integration/epp/domain/info/base_test.rb +++ b/test/integration/epp/domain/info/base_test.rb @@ -236,6 +236,7 @@ class EppDomainInfoBaseTest < EppTestCase response_xml = Nokogiri::XML(response.body) assert_epp_response :session_limit_exceeded_server_closing_connection assert_correct_against_schema response_xml + assert response.body.include?(Shunter.default_error_message) ENV["shunter_default_threshold"] = '10000' ENV["shunter_enabled"] = 'false' end diff --git a/test/models/epp/response/result/code_test.rb b/test/models/epp/response/result/code_test.rb index a78c92d3a..ca41db458 100644 --- a/test/models/epp/response/result/code_test.rb +++ b/test/models/epp/response/result/code_test.rb @@ -85,7 +85,7 @@ class EppResponseResultCodeTest < ActiveSupport::TestCase 2308 => 'Data management policy violation', 2400 => 'Command failed', 2501 => 'Authentication error; server closing connection', - 2502 => 'Session limit exceeded; server closing connection' + 2502 => Shunter.default_error_message } assert_equal descriptions, Epp::Response::Result::Code.default_descriptions end