aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rwxr-xr-xactionpack/lib/action_controller/cgi_ext/cgi_methods.rb11
-rw-r--r--actionpack/test/controller/webservice_test.rb6
2 files changed, 12 insertions, 5 deletions
diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
index f19e70839d..941646c530 100755
--- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
+++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
@@ -63,11 +63,12 @@ class CGIMethods #:nodoc:
when Proc
strategy.call(raw_post_data)
when :xml_simple
- typecast_xml_value(XmlSimple.xml_in(raw_post_data,
- 'forcearray' => false,
- 'forcecontent' => true,
- 'keeproot' => true,
- 'contentkey' => '__content__'))
+ raw_post_data.blank? ? nil :
+ typecast_xml_value(XmlSimple.xml_in(raw_post_data,
+ 'forcearray' => false,
+ 'forcecontent' => true,
+ 'keeproot' => true,
+ 'contentkey' => '__content__'))
when :yaml
YAML.load(raw_post_data)
when :xml_node
diff --git a/actionpack/test/controller/webservice_test.rb b/actionpack/test/controller/webservice_test.rb
index 5cf92146a8..9874b2092b 100644
--- a/actionpack/test/controller/webservice_test.rb
+++ b/actionpack/test/controller/webservice_test.rb
@@ -92,6 +92,12 @@ class WebServiceTest < Test::Unit::TestCase
assert_equal 'content...', @controller.params["summary"]
assert_equal 'SimpleXml', @controller.params["title"]
end
+
+ def test_use_xml_ximple_with_empty_request
+ ActionController::Base.param_parsers[Mime::XML] = :xml_simple
+ assert_nothing_raised { process('POST', 'application/xml', "") }
+ assert_equal "", @controller.response.body
+ end
def test_deprecated_request_methods
process('POST', 'application/x-yaml')