summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/net/http/generic_request.rb3
-rw-r--r--test/net/http/test_http.rb9
3 files changed, 19 insertions, 0 deletions
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 <naruse@ruby-lang.org>
+
+ * lib/net/http/generic_request.rb (Net::HTTPGenericRequest):
+ set content-length to zero on empty post requests
+ by Gregory Ostermayr <gregory.ostermayr@gmail.com>
+ https://github.com/ruby/ruby/pull/201 fix GH-201
+
Sun Dec 23 19:09:16 2012 Koichi Sasada <ko1@atdot.net>
* 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(