[ruby-dev:50760] [Ruby trunk Bug#15468] Net::Protocol::BufferedIO#write raises NoMethodError when sending large multi-byte string

From: naruse@...
Date: 2019-01-12 21:03:36 UTC
List: ruby-dev #50760
Issue #15468 has been updated by naruse (Yui NARUSE).

Backport changed from 2.4: DONTNEED, 2.5: DONTNEED, 2.6: REQUIRED to 2.4: D=
ONTNEED, 2.5: DONTNEED, 2.6: DONE

ruby_2_6 r66799 merged revision(s) 66582.

----------------------------------------
Bug #15468: Net::Protocol::BufferedIO#write raises NoMethodError when sendi=
ng large multi-byte string
https://bugs.ruby-lang.org/issues/15468#change-76269

* Author: eitoball (Eito Katagiri)
* Status: Closed
* Priority: Normal
* Assignee:=20
* Target version:=20
* ruby -v: ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
* Backport: 2.4: DONTNEED, 2.5: DONTNEED, 2.6: DONE
----------------------------------------
ruby-2.6.0=E3=81=A7=E5=A4=A7=E3=81=8D=E3=81=AAJSON=E6=96=87=E5=AD=97=E5=88=
=97=E3=82=92Net::HTTP=E3=81=A7POST=E3=81=99=E3=82=8B=E3=81=A8=E4=BB=A5=E4=
=B8=8B=E3=81=AE=E3=82=88=E3=81=86=E3=81=AB NoMothodError =E3=81=8C=E7=99=BA=
=E7=94=9F=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=AA=E3=82=8A=E3=
=81=BE=E3=81=97=E3=81=9F=E3=80=82
~~~
$ ruby -rnet/http -rjson -v -e "Net::HTTP.post(URI('http://httpbin.org/post=
'), { text: '=E3=81=82'*100_000 }.to_json, 'Content-Type' =3D> 'application=
/json')"
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
Traceback (most recent call last):
        19: from -e:1:in `<main>'
        18: from lib/ruby/2.6.0/net/http.rb:500:in `post'
        17: from lib/ruby/2.6.0/net/http.rb:605:in `start'
        16: from lib/ruby/2.6.0/net/http.rb:920:in `start'
        15: from lib/ruby/2.6.0/net/http.rb:502:in `block in post'
        14: from lib/ruby/2.6.0/net/http.rb:1281:in `post'
        13: from lib/ruby/2.6.0/net/http.rb:1493:in `send_entity'
        12: from lib/ruby/2.6.0/net/http.rb:1479:in `request'
        11: from lib/ruby/2.6.0/net/http.rb:1506:in `transport_request'
        10: from lib/ruby/2.6.0/net/http.rb:1506:in `catch'
         9: from lib/ruby/2.6.0/net/http.rb:1507:in `block in transport_req=
uest'
         8: from lib/ruby/2.6.0/net/http/generic_request.rb:123:in `exec'
         7: from lib/ruby/2.6.0/net/http/generic_request.rb:189:in `send_re=
quest_with_body'
         6: from lib/ruby/2.6.0/net/protocol.rb:247:in `write'
         5: from lib/ruby/2.6.0/net/protocol.rb:265:in `writing'
         4: from lib/ruby/2.6.0/net/protocol.rb:248:in `block in write'
         3: from lib/ruby/2.6.0/net/protocol.rb:275:in `write0'
         2: from lib/ruby/2.6.0/net/protocol.rb:275:in `each_with_index'
         1: from lib/ruby/2.6.0/net/protocol.rb:275:in `each'
lib/ruby/2.6.0/net/protocol.rb:280:in `block in write0': undefined method `=
bytesize' for nil:NilClass (NoMethodError)
~~~

=E7=90=86=E7=94=B1=E3=81=AF=E3=80=81Net::Protocol::BufferedIO#write0=E3=81=
=A7=E3=80=81String#[]=E3=81=A7=E9=80=81=E4=BF=A1=E3=81=95=E3=82=8C=E3=81=A6=
=E3=81=84=E3=81=AA=E3=81=84=E6=96=87=E5=AD=97=E5=88=97=E3=82=92=E6=B1=82=E3=
=82=81=E3=82=8B=E9=9A=9B=E3=81=AB=E6=96=87=E5=AD=97=E5=88=97=E3=81=AB=E3=83=
=9E=E3=83=AB=E3=83=81=E3=83=90=E3=82=A4=E3=83=88=E6=96=87=E5=AD=97=E3=81=8C=
=E5=90=AB=E3=81=BE=E3=82=8C=E3=81=A6=E3=81=84=E3=82=8B=E3=81=A8IO#write_non=
block=E3=81=A7=E8=BF=94=E3=81=A3=E3=81=A6=E3=81=8F=E3=82=8B=E9=80=81=E4=BF=
=A1=E3=81=95=E3=82=8C=E3=81=9F=E3=83=90=E3=82=A4=E3=83=88=E6=95=B0=E3=81=8C=
=E6=96=87=E5=AD=97=E6=95=B0=E3=82=92=E8=B6=85=E3=81=88=E3=82=8B=E3=81=9F=E3=
=82=81=E3=80=81nil=E3=81=AB=E3=81=AA=E3=82=8B=E3=81=9F=E3=82=81=E3=81=A0=E3=
=81=A8=E8=80=83=E3=81=88=E3=81=A6=E3=81=84=E3=81=BE=E3=81=99=E3=80=82https:=
//github.com/ruby/ruby/pull/2058 =E3=82=92=E9=80=81=E3=81=A3=E3=81=A6=E3=81=
=BF=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82



--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next