Skip to content
Browse files

Merge pull request #8490 from mattv/fix_request_raw_post

Fix rewinding in ActionDispatch::Request#raw_post
Conflicts:
	actionpack/CHANGELOG.md
  • Loading branch information...
1 parent 73f0d53 commit 6fbee4fc539cc29c68c0d515fa5e0af208f3f681 @rafaelfranca rafaelfranca committed
View
5 actionpack/CHANGELOG.md
@@ -1,5 +1,10 @@
## Rails 3.2.10 (unreleased) ##
+* Fix a bug in ActionDispatch::Request#raw_post that caused env['rack.input']
+ to be read but not rewound.
+
+ *Matt Venables*
+
* More descriptive error messages when calling `render :partial` with
an invalid `:layout` argument.
#8376
View
5 actionpack/lib/action_dispatch/http/request.rb
@@ -179,8 +179,9 @@ def server_software
# work with raw requests directly.
def raw_post
unless @env.include? 'RAW_POST_DATA'
- @env['RAW_POST_DATA'] = body.read(@env['CONTENT_LENGTH'].to_i)
- body.rewind if body.respond_to?(:rewind)
+ raw_post_body = body
+ @env['RAW_POST_DATA'] = raw_post_body.read(@env['CONTENT_LENGTH'].to_i)
+ raw_post_body.rewind if raw_post_body.respond_to?(:rewind)
end
@env['RAW_POST_DATA']
end
View
7 actionpack/test/dispatch/request_test.rb
@@ -530,6 +530,13 @@ def url_for(options = {})
assert_equal Mime::XML, request.negotiate_mime([Mime::XML, Mime::CSV])
end
+ test "raw_post rewinds rack.input if RAW_POST_DATA is nil" do
+ request = stub_request('rack.input' => StringIO.new("foo"),
+ 'CONTENT_LENGTH' => 3)
+ assert_equal "foo", request.raw_post
+ assert_equal "foo", request.env['rack.input'].read
+ end
+
test "process parameter filter" do
test_hashes = [
[{'foo'=>'bar'},{'foo'=>'bar'},%w'food'],

0 comments on commit 6fbee4f

Please sign in to comment.
Something went wrong with that request. Please try again.