Push potential fix for #578

This commit is contained in:
Omar Roth 2019-06-26 14:44:06 -05:00
parent 818cd2454d
commit ebfd7d2153
No known key found for this signature in database
GPG Key ID: B8254FB7EC3D37F2

View File

@ -224,4 +224,28 @@ class HTTP::Client
response
end
# See https://github.com/crystal-lang/crystal/issues/7843
private def socket
socket = @socket
return socket if socket
hostname = @host.starts_with?('[') && @host.ends_with?(']') ? @host[1..-2] : @host
socket = TCPSocket.new hostname, @port, @dns_timeout, @connect_timeout
socket.read_timeout = @read_timeout if @read_timeout
socket.sync = false
{% if !flag?(:without_openssl) %}
if tls = @tls
_socket = socket
begin
socket = OpenSSL::SSL::Socket::Client.new(socket, context: tls, sync_close: true, hostname: @host)
rescue
_socket.close
end
end
{% end %}
@socket = socket
end
end