From ebfd7d21535cfcf30daf578e86028d49087af517 Mon Sep 17 00:00:00 2001 From: Omar Roth Date: Wed, 26 Jun 2019 14:44:06 -0500 Subject: [PATCH] Push potential fix for #578 --- src/invidious/helpers/handlers.cr | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/invidious/helpers/handlers.cr b/src/invidious/helpers/handlers.cr index 216f9b5d..4494b854 100644 --- a/src/invidious/helpers/handlers.cr +++ b/src/invidious/helpers/handlers.cr @@ -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