From f81ccced1d8f65ded31ef5ba3bfe92ef98e6d6a8 Mon Sep 17 00:00:00 2001 From: Brandon Dewitt Date: Thu, 4 Aug 2016 10:41:52 -0600 Subject: [PATCH] allow an ssl_context to be passed via :ssl_context in options to connect --- lib/websocket-client-simple/client.rb | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/websocket-client-simple/client.rb b/lib/websocket-client-simple/client.rb index 128f523..6994354 100644 --- a/lib/websocket-client-simple/client.rb +++ b/lib/websocket-client-simple/client.rb @@ -20,13 +20,17 @@ def connect(url, options={}) @socket = TCPSocket.new(uri.host, uri.port || (uri.scheme == 'wss' ? 443 : 80)) if ['https', 'wss'].include? uri.scheme - ctx = OpenSSL::SSL::SSLContext.new - ctx.ssl_version = options[:ssl_version] || 'SSLv23' - ctx.verify_mode = options[:verify_mode] || OpenSSL::SSL::VERIFY_NONE #use VERIFY_PEER for verification - cert_store = OpenSSL::X509::Store.new - cert_store.set_default_paths - ctx.cert_store = cert_store - @socket = ::OpenSSL::SSL::SSLSocket.new(@socket, ctx) + ssl_context = options[:ssl_context] || begin + ctx = OpenSSL::SSL::SSLContext.new + ctx.ssl_version = options[:ssl_version] || 'SSLv23' + ctx.verify_mode = options[:verify_mode] || OpenSSL::SSL::VERIFY_NONE #use VERIFY_PEER for verification + cert_store = OpenSSL::X509::Store.new + cert_store.set_default_paths + ctx.cert_store = cert_store + ctx + end + + @socket = ::OpenSSL::SSL::SSLSocket.new(@socket, ssl_context) @socket.connect end @handshake = ::WebSocket::Handshake::Client.new :url => url, :headers => options[:headers]