ruby-changes:20808
From: shugo <ko1@a...>
Date: Fri, 5 Aug 2011 13:37:56 +0900 (JST)
Subject: [ruby-changes:20808] shugo:r32856 (trunk): * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use
shugo 2011-08-05 13:35:28 +0900 (Fri, 05 Aug 2011) New Revision: 32856 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32856 Log: * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use String#bytesize instead of String#size. Modified files: trunk/ChangeLog trunk/lib/xmlrpc/client.rb trunk/lib/xmlrpc/server.rb trunk/test/xmlrpc/test_webrick_server.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 32855) +++ ChangeLog (revision 32856) @@ -1,3 +1,8 @@ +Fri Aug 5 13:32:43 2011 Shugo Maeda <shugo@r...> + + * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use + String#bytesize instead of String#size. + Fri Aug 5 12:18:20 2011 Nobuyoshi Nakada <nobu@r...> * vm_eval.c (check_funcall): try respond_to? first if redefined. Index: lib/xmlrpc/client.rb =================================================================== --- lib/xmlrpc/client.rb (revision 32855) +++ lib/xmlrpc/client.rb (revision 32856) @@ -501,7 +501,7 @@ header = { "User-Agent" => USER_AGENT, "Content-Type" => "text/xml; charset=utf-8", - "Content-Length" => request.size.to_s, + "Content-Length" => request.bytesize.to_s, "Connection" => (async ? "close" : "keep-alive") } @@ -559,10 +559,10 @@ end expected = resp["Content-Length"] || "<unknown>" - if data.nil? or data.size == 0 - raise "Wrong size. Was #{data.size}, should be #{expected}" - elsif expected != "<unknown>" and expected.to_i != data.size and resp["Transfer-Encoding"].nil? - raise "Wrong size. Was #{data.size}, should be #{expected}" + if data.nil? or data.bytesize == 0 + raise "Wrong size. Was #{data.bytesize}, should be #{expected}" + elsif expected != "<unknown>" and expected.to_i != data.bytesize and resp["Transfer-Encoding"].nil? + raise "Wrong size. Was #{data.bytesize}, should be #{expected}" end set_cookies = resp.get_fields("Set-Cookie") Index: lib/xmlrpc/server.rb =================================================================== --- lib/xmlrpc/server.rb (revision 32855) +++ lib/xmlrpc/server.rb (revision 32856) @@ -456,7 +456,7 @@ $stdin.binmode if $stdin.respond_to? :binmode data = $stdin.read(length) - http_error(400, "Bad Request") if data.nil? or data.size != length + http_error(400, "Bad Request") if data.nil? or data.bytesize != length http_write(process(data), "Content-type" => "text/xml; charset=utf-8") } @@ -487,7 +487,7 @@ h = {} header.each {|key, value| h[key.to_s.capitalize] = value} h['Status'] ||= "200 OK" - h['Content-length'] ||= body.size.to_s + h['Content-length'] ||= body.bytesize.to_s str = "" h.each {|key, value| str << "#{key}: #{value}\r\n"} @@ -531,7 +531,7 @@ @ap.binmode data = @ap.read(length) - http_error(400, "Bad Request") if data.nil? or data.size != length + http_error(400, "Bad Request") if data.nil? or data.bytesize != length http_write(process(data), 200, "Content-type" => "text/xml; charset=utf-8") } @@ -562,7 +562,7 @@ h = {} header.each {|key, value| h[key.to_s.capitalize] = value} h['Status'] ||= "200 OK" - h['Content-length'] ||= body.size.to_s + h['Content-length'] ||= body.bytesize.to_s h.each {|key, value| @ap.headers_out[key] = value } @ap.content_type = h["Content-type"] @@ -751,17 +751,17 @@ data = request.body - if data.nil? or data.size != length + if data.nil? or data.bytesize != length raise WEBrick::HTTPStatus::BadRequest end resp = process(data) - if resp.nil? or resp.size <= 0 + if resp.nil? or resp.bytesize <= 0 raise WEBrick::HTTPStatus::InternalServerError end response.status = 200 - response['Content-Length'] = resp.size + response['Content-Length'] = resp.bytesize response['Content-Type'] = "text/xml; charset=utf-8" response.body = resp end Index: test/xmlrpc/test_webrick_server.rb =================================================================== --- test/xmlrpc/test_webrick_server.rb (revision 32855) +++ test/xmlrpc/test_webrick_server.rb (revision 32856) @@ -1,3 +1,5 @@ +# coding: utf-8 + require 'test/unit' require 'webrick' require_relative 'webrick_testing' @@ -125,5 +127,8 @@ ok, param = @s.call2('test.add', 1, 2, 3) assert_equal false, ok assert_equal(-99, param.faultCode) + + # multibyte characters + assert_equal "