diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-28 08:05:46 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-28 08:05:46 +0000 |
commit | c44978b99f0454b8f00674f2f407893c8c47248e (patch) | |
tree | 24896759b54bb19e4242167cc7f24bdc19385163 /lib/webrick/httpresponse.rb | |
parent | ebf53485287780ba1642c59963e996999c43b976 (diff) |
webrick: favor .write over << method
This will make the next change to use IO.copy_stream
easier-to-read. When we can drop Ruby 2.4 support in a few
years, this will allow us to use writev(2) with multiple
arguments for headers and chunked responses.
* lib/webrick/cgi.rb (write): new wrapper method
lib/webrick/httpresponse.rb: (send_header): use socket.write
(send_body_io): ditto
(send_body_string): ditto
(send_body_proc): ditto
(_write_data): ditto
(ChunkedWrapper#write): ditto
(_send_file): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/webrick/httpresponse.rb')
-rw-r--r-- | lib/webrick/httpresponse.rb | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/webrick/httpresponse.rb b/lib/webrick/httpresponse.rb index d76310f935..eddd3388ed 100644 --- a/lib/webrick/httpresponse.rb +++ b/lib/webrick/httpresponse.rb @@ -293,7 +293,7 @@ module WEBrick data << "Set-Cookie: " << cookie.to_s << CRLF } data << CRLF - _write_data(socket, data) + socket.write(data) end end @@ -401,14 +401,14 @@ module WEBrick @body.readpartial(@buffer_size, buf) size = buf.bytesize data = "#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}" - _write_data(socket, data) + socket.write(data) data.clear @sent_size += size rescue EOFError break end while true buf.clear - _write_data(socket, "0#{CRLF}#{CRLF}") + socket.write("0#{CRLF}#{CRLF}") else size = @header['content-length'].to_i _send_file(socket, @body, 0, size) @@ -429,13 +429,13 @@ module WEBrick size = buf.bytesize data = "#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}" buf.clear - _write_data(socket, data) + socket.write(data) @sent_size += size end - _write_data(socket, "0#{CRLF}#{CRLF}") + socket.write("0#{CRLF}#{CRLF}") else if @body && @body.bytesize > 0 - _write_data(socket, @body) + socket.write(@body) @sent_size = @body.bytesize end end @@ -446,7 +446,7 @@ module WEBrick # do nothing elsif chunked? @body.call(ChunkedWrapper.new(socket, self)) - _write_data(socket, "0#{CRLF}#{CRLF}") + socket.write("0#{CRLF}#{CRLF}") else size = @header['content-length'].to_i @body.call(socket) @@ -466,7 +466,7 @@ module WEBrick @resp.instance_eval { size = buf.bytesize data = "#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}" - _write_data(socket, data) + socket.write(data) data.clear @sent_size += size } @@ -483,18 +483,19 @@ module WEBrick if size == 0 while buf = input.read(@buffer_size) - _write_data(output, buf) + output.write(buf) end else while size > 0 sz = @buffer_size < size ? @buffer_size : size buf = input.read(sz) - _write_data(output, buf) + output.write(buf) size -= buf.bytesize end end end + # preserved for compatibility with some 3rd-party handlers def _write_data(socket, data) socket << data end |