mirror of
https://gitea.invidious.io/iv-org/invidious-copy-2022-03-16.git
synced 2024-08-15 00:53:18 +00:00
Add override to mute IO::Error in HTTP::Server::Response::Output
This commit is contained in:
parent
e5557b515e
commit
1955241d58
1 changed files with 30 additions and 2 deletions
|
@ -48,11 +48,39 @@ class HTTP::Client
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Mute the ClientError exception raised when a connection is flushed.
|
# Mute the ClientError exception raised when a
|
||||||
# This happends when the connection is unexpectedly closed by the client.
|
# connection is unexpectedly closed by the client.
|
||||||
#
|
#
|
||||||
class HTTP::Server::Response
|
class HTTP::Server::Response
|
||||||
class Output
|
class Output
|
||||||
|
# Copy-paste of https://github.com/crystal-lang/crystal/blob/1.2.2/src/http/server/response.cr#L205-L228
|
||||||
|
# but without the "raise" statement in `rescue ex`
|
||||||
|
private def unbuffered_write(slice : Bytes)
|
||||||
|
return if slice.empty?
|
||||||
|
|
||||||
|
unless response.wrote_headers?
|
||||||
|
if response.version != "HTTP/1.0" && !response.headers.has_key?("Content-Length")
|
||||||
|
response.headers["Transfer-Encoding"] = "chunked"
|
||||||
|
@chunked = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ensure_headers_written
|
||||||
|
|
||||||
|
if @chunked
|
||||||
|
slice.size.to_s(@io, 16)
|
||||||
|
@io << "\r\n"
|
||||||
|
@io.write(slice)
|
||||||
|
@io << "\r\n"
|
||||||
|
else
|
||||||
|
@io.write(slice)
|
||||||
|
end
|
||||||
|
rescue ex : IO::Error
|
||||||
|
unbuffered_close
|
||||||
|
end
|
||||||
|
|
||||||
|
# Copy-paste of https://github.com/crystal-lang/crystal/blob/1.2.2/src/http/server/response.cr#L274-L280
|
||||||
|
# but without the "raise" statement in `rescue ex`
|
||||||
private def unbuffered_flush
|
private def unbuffered_flush
|
||||||
@io.flush
|
@io.flush
|
||||||
rescue ex : IO::Error
|
rescue ex : IO::Error
|
||||||
|
|
Loading…
Reference in a new issue