From 1fd98b15a4f93c77182b080c68960d6d1c0bcd59 Mon Sep 17 00:00:00 2001 From: James Turnbull Date: Wed, 8 Jul 2009 08:44:19 +1000 Subject: Fixes #2367 - Mongrel::HTTPRequest returns a StringIO object When the PUT body is large enough that Mongrel::HTTPRequest#body returns a StringIO object instead of a String. StringIO#to_s then returns "" instead of the string contents. When that string is passed to YAML it returns false which is then passed to save_object without any real time checking. This is a combination of patches from Jordan Curzon and Ricky Zhou. --- lib/puppet/network/http/mongrel/rest.rb | 2 +- spec/unit/network/http/mongrel/rest.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/puppet/network/http/mongrel/rest.rb b/lib/puppet/network/http/mongrel/rest.rb index fe1ed1088..8a4de1cce 100644 --- a/lib/puppet/network/http/mongrel/rest.rb +++ b/lib/puppet/network/http/mongrel/rest.rb @@ -41,7 +41,7 @@ class Puppet::Network::HTTP::MongrelREST < Mongrel::HttpHandler # return the request body def body(request) - request.body + request.body.read end def set_content_type(response, format) diff --git a/spec/unit/network/http/mongrel/rest.rb b/spec/unit/network/http/mongrel/rest.rb index 5dd3d6475..01d561a48 100755 --- a/spec/unit/network/http/mongrel/rest.rb +++ b/spec/unit/network/http/mongrel/rest.rb @@ -59,7 +59,7 @@ describe "Puppet::Network::HTTP::MongrelREST" do end it "should return the request body as the body" do - @request.expects(:body).returns "mybody" + @request.expects(:body).returns StringIO.new("mybody") @handler.body(@request).should == "mybody" end -- cgit