[前][次][番号順一覧][スレッド一覧]

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 "", @s.call('test.add', ", "")
   end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]