diff options
| author | Omar Roth <omarroth@protonmail.com> | 2019-06-26 14:44:06 -0500 |
|---|---|---|
| committer | Omar Roth <omarroth@protonmail.com> | 2019-06-26 14:44:06 -0500 |
| commit | ebfd7d21535cfcf30daf578e86028d49087af517 (patch) | |
| tree | c9475259687bd4d7d801db2b2000827adf4f8c95 | |
| parent | 818cd2454de4d6ea20d4ac2765a7d4e4083eecd9 (diff) | |
| download | invidious-ebfd7d21535cfcf30daf578e86028d49087af517.tar.gz invidious-ebfd7d21535cfcf30daf578e86028d49087af517.tar.bz2 invidious-ebfd7d21535cfcf30daf578e86028d49087af517.zip | |
Push potential fix for #578
| -rw-r--r-- | src/invidious/helpers/handlers.cr | 24 |
1 files changed, 24 insertions, 0 deletions
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 |
