diff --git a/ChangeLog b/ChangeLog index 2ae9cf67c2..d57b12b088 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Dec 24 04:56:48 2012 NARUSE, Yui + + * lib/net/http/generic_request.rb (Net::HTTPGenericRequest): + set content-length to zero on empty post requests + by Gregory Ostermayr + https://github.com/ruby/ruby/pull/201 fix GH-201 + Sun Dec 23 19:09:16 2012 Koichi Sasada * thread.c: rename methods: diff --git a/lib/net/http/generic_request.rb b/lib/net/http/generic_request.rb index 704f159245..e8525b3d15 100644 --- a/lib/net/http/generic_request.rb +++ b/lib/net/http/generic_request.rb @@ -89,6 +89,9 @@ class Net::HTTPGenericRequest def set_body_internal(str) #:nodoc: internal use only raise ArgumentError, "both of body argument and HTTPRequest#body set" if str and (@body or @body_stream) self.body = str if str + if @body.nil? && @body_stream.nil? && @body_data.nil? && request_body_permitted? + self.body = '' + end end # diff --git a/test/net/http/test_http.rb b/test/net/http/test_http.rb index fef010ab67..996a453cf1 100644 --- a/test/net/http/test_http.rb +++ b/test/net/http/test_http.rb @@ -310,6 +310,7 @@ module TestNetHTTP_version_1_1_methods start {|http| _test_post__base http _test_post__file http + _test_post__no_data http } end @@ -332,6 +333,14 @@ module TestNetHTTP_version_1_1_methods assert_equal data, f.string end + def _test_post__no_data(http) + unless self.is_a?(TestNetHTTP_v1_2_chunked) + data = nil + res = http.post('/', data) + assert_not_equal '411', res.code + end + end + def test_s_post_form url = "http://#{config('host')}:#{config('port')}/" res = Net::HTTP.post_form(