aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorStephen Becker IV <github@deathbyescalator.com>2013-06-18 14:22:30 -0700
committerStephen Becker IV <github@deathbyescalator.com>2013-06-19 06:29:52 -0700
commit8ffd139edd062fe3e888895d4af80730a0798758 (patch)
tree4c2b60f55cb322a4739363a4125ccc6de78ff84e /actionpack
parent0f89689b2357f39da52515b83391db58689a1361 (diff)
downloadrails-8ffd139edd062fe3e888895d4af80730a0798758.tar.gz
rails-8ffd139edd062fe3e888895d4af80730a0798758.tar.bz2
rails-8ffd139edd062fe3e888895d4af80730a0798758.zip
Fix undefined method `ref' for nil:NilClass for bad accept headers
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG.md4
-rw-r--r--actionpack/lib/action_dispatch/http/mime_type.rb2
-rw-r--r--actionpack/test/controller/render_test.rb6
3 files changed, 11 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md
index 46ebc2a61a..c7820d5d9a 100644
--- a/actionpack/CHANGELOG.md
+++ b/actionpack/CHANGELOG.md
@@ -1,3 +1,7 @@
+* Fix `Mime::Type.parse` when bad accepts header is looked up.
+
+ *Becker*
+
* Element of the `collection_check_boxes` and `collection_radio_buttons` can
optionally contain html attributes as the last element of the array.
diff --git a/actionpack/lib/action_dispatch/http/mime_type.rb b/actionpack/lib/action_dispatch/http/mime_type.rb
index 61dbf2b96c..ef144c3c76 100644
--- a/actionpack/lib/action_dispatch/http/mime_type.rb
+++ b/actionpack/lib/action_dispatch/http/mime_type.rb
@@ -175,7 +175,7 @@ module Mime
def parse(accept_header)
if accept_header !~ /,/
accept_header = accept_header.split(PARAMETER_SEPARATOR_REGEXP).first
- parse_trailing_star(accept_header) || [Mime::Type.lookup(accept_header)]
+ parse_trailing_star(accept_header) || [Mime::Type.lookup(accept_header)].compact
else
list, index = AcceptList.new, 0
accept_header.split(',').each do |header|
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index 72411ec900..fd835795c0 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -1089,6 +1089,12 @@ class RenderTest < ActionController::TestCase
assert_equal '<test>passed formatted html erb</test>', @response.body
end
+ def test_should_render_formatted_html_erb_template_with_bad_accepts_header
+ @request.env["HTTP_ACCEPT"] = "; a=dsf"
+ get :formatted_xml_erb
+ assert_equal '<test>passed formatted html erb</test>', @response.body
+ end
+
def test_should_render_formatted_html_erb_template_with_faulty_accepts_header
@request.accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, appliction/x-shockwave-flash, */*"
get :formatted_xml_erb