aboutsummaryrefslogtreecommitdiffstats
path: root/lib/webrick
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-28 08:05:46 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-28 08:05:46 +0000
commitbce85767aba6a6fa71f15ed909ef68cff815fe18 (patch)
tree24896759b54bb19e4242167cc7f24bdc19385163 /lib/webrick
parent2d55a587865ef6d44f55e5cd2219889963b84b83 (diff)
downloadruby-bce85767aba6a6fa71f15ed909ef68cff815fe18.tar.gz
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')
-rw-r--r--lib/webrick/cgi.rb4
-rw-r--r--lib/webrick/httpresponse.rb21
2 files changed, 15 insertions, 10 deletions
diff --git a/lib/webrick/cgi.rb b/lib/webrick/cgi.rb
index 94f385f1dd..33f1542731 100644
--- a/lib/webrick/cgi.rb
+++ b/lib/webrick/cgi.rb
@@ -265,6 +265,10 @@ module WEBrick
@out_port << data
end
+ def write(data)
+ @out_port.write(data)
+ end
+
def cert
return nil unless defined?(OpenSSL)
if pem = @env["SSL_SERVER_CERT"]
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