diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index d8c22c38c..9f7620029 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -8,6 +8,18 @@ class EppController < ApplicationController before_action :latin_only before_action :validate_request before_action :update_epp_session + + around_action :catch_epp_errors + def catch_epp_errors + err = catch(:epp_error) do + yield + nil + end + return unless err + @errors = [err] + handle_errors + end + helper_method :current_user rescue_from StandardError do |e| diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 7c837d8fd..8f65bee37 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -617,8 +617,10 @@ class Epp::Domain < Domain def reject_transfer(frame, current_user) pt = pending_transfer if current_user.registrar != pt.transfer_from - add_epp_error('2304', nil, nil, I18n.t('transfer_can_be_rejected_only_by_current_registrar')) - return false + throw :epp_error, { + msg: I18n.t('transfer_can_be_rejected_only_by_current_registrar'), + code: '2304' + } end transaction do