From fbba128f73e9a297ca6252c85d3c42b34241ff2f Mon Sep 17 00:00:00 2001 From: Leon Breedt Date: Tue, 16 Aug 2005 05:54:12 +0000 Subject: special-case non-existent target method handling for 'system.multicall' calls when the method does not exist, to conform to the RFC and return the error inline in the multicall response. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2023 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionwebservice/lib/action_web_service/dispatcher/abstract.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'actionwebservice/lib/action_web_service/dispatcher/abstract.rb') diff --git a/actionwebservice/lib/action_web_service/dispatcher/abstract.rb b/actionwebservice/lib/action_web_service/dispatcher/abstract.rb index 7e43892b24..cf3af538ab 100644 --- a/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +++ b/actionwebservice/lib/action_web_service/dispatcher/abstract.rb @@ -62,6 +62,10 @@ module ActionWebService # :nodoc: def xmlrpc_multicall_invoke(invocations) responses = [] invocations.each do |invocation| + if invocation.is_a?(Hash) + responses << invocation + next + end begin case web_service_dispatching_mode when :direct @@ -120,7 +124,11 @@ module ActionWebService # :nodoc: multicall_request = request.dup multicall_request.method_name = method_name multicall_request.method_params = params - web_service_invocation(multicall_request, level + 1) + begin + web_service_invocation(multicall_request, level + 1) + rescue Exception => e + {'faultCode' => 4, 'faultMessage' => e.message} + end end end end -- cgit v1.2.3