From a72fe4ea45a94a09a8c31377fad935af6465b700 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Tue, 26 Jun 2007 01:19:18 +0000 Subject: Give the legacy X-POST_DATA_FORMAT header greater precedence during params parsing for backward compatibility. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7126 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_controller/request.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'actionpack/lib') diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb index 5dbd4db9f5..528f076c24 100755 --- a/actionpack/lib/action_controller/request.rb +++ b/actionpack/lib/action_controller/request.rb @@ -68,9 +68,7 @@ module ActionController # For backward compatibility, the post format is extracted from the # X-Post-Data-Format HTTP header if present. def content_type - @content_type ||= - content_type_from_legacy_post_data_format_header || - Mime::Type.lookup(content_type_without_parameters) + @content_type ||= Mime::Type.lookup(content_type_without_parameters) end # Returns the accepted MIME type for the request @@ -296,8 +294,10 @@ module ActionController protected # The raw content type string. Use when you need parameters such as # charset or boundary which aren't included in the content_type MIME type. + # Overridden by the X-POST_DATA_FORMAT header for backward compatibility. def content_type_with_parameters - env['CONTENT_TYPE'].to_s + content_type_from_legacy_post_data_format_header || + env['CONTENT_TYPE'].to_s end # The raw content type string with its parameters stripped off. @@ -309,8 +309,8 @@ module ActionController def content_type_from_legacy_post_data_format_header if x_post_format = @env['HTTP_X_POST_DATA_FORMAT'] case x_post_format.to_s.downcase - when 'yaml'; Mime::YAML - when 'xml'; Mime::XML + when 'yaml'; 'application/x-yaml' + when 'xml'; 'application/xml' end end end @@ -319,6 +319,8 @@ module ActionController return {} if content_length.zero? content_type, boundary = self.class.extract_multipart_boundary(content_type_with_parameters) + + # Don't parse params for unknown requests. return {} if content_type.blank? mime_type = Mime::Type.lookup(content_type) -- cgit v1.2.3