File tree Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -214,13 +214,13 @@ def session_options=(options)
214
214
215
215
# Override Rack's GET method to support indifferent access
216
216
def GET
217
- @env [ "action_dispatch.request.query_parameters" ] ||= normalize_parameters ( super )
217
+ @env [ "action_dispatch.request.query_parameters" ] ||= ( normalize_parameters ( super ) || { } )
218
218
end
219
219
alias :query_parameters :GET
220
220
221
221
# Override Rack's POST method to support indifferent access
222
222
def POST
223
- @env [ "action_dispatch.request.request_parameters" ] ||= normalize_parameters ( super )
223
+ @env [ "action_dispatch.request.request_parameters" ] ||= ( normalize_parameters ( super ) || { } )
224
224
end
225
225
alias :request_parameters :POST
226
226
Original file line number Diff line number Diff line change @@ -385,6 +385,18 @@ class RequestTest < ActiveSupport::TestCase
385
385
assert_equal ( { "bar" => 2 } , request . query_parameters )
386
386
end
387
387
388
+ test "parameters still accessible after rack parse error" do
389
+ mock_rack_env = { "QUERY_STRING" => "x[y]=1&x[y][][w]=2" , "rack.input" => "foo" }
390
+ request = nil
391
+ begin
392
+ request = stub_request ( mock_rack_env )
393
+ request . parameters
394
+ rescue TypeError => e
395
+ # rack will raise a TypeError when parsing this query string
396
+ end
397
+ assert_equal ( { } , request . parameters )
398
+ end
399
+
388
400
test "formats with accept header" do
389
401
request = stub_request 'HTTP_ACCEPT' => 'text/html'
390
402
request . expects ( :parameters ) . at_least_once . returns ( { } )
You can’t perform that action at this time.
0 commit comments