summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2020-01-16 17:39:28 -0800
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2020-01-18 09:42:42 +1300
commit5b7e48e1e13d5df458d83855af60cb0498d836b3 (patch)
tree8dae59e8f36a7c66dfc666a758c54389605fbbf4
parentdfc8e020f43aa9397486d1a47529d500613af1dd (diff)
downloadrack-5b7e48e1e13d5df458d83855af60cb0498d836b3.tar.gz
Make Rack::Request#ssl? be true for wss scheme
wss is used for Websockets sent over a TLS connection, just as https ised used for HTTP sent over a TLS connection. Fixes #1020
-rw-r--r--lib/rack/request.rb2
-rw-r--r--test/spec_request.rb4
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb
index 54ea86c4..973c7148 100644
--- a/lib/rack/request.rb
+++ b/lib/rack/request.rb
@@ -270,7 +270,7 @@ module Rack
end
def ssl?
- scheme == 'https'
+ scheme == 'https' || scheme == 'wss'
end
def ip
diff --git a/test/spec_request.rb b/test/spec_request.rb
index 5f418ffd..cc262b55 100644
--- a/test/spec_request.rb
+++ b/test/spec_request.rb
@@ -574,6 +574,10 @@ class RackRequestTest < Minitest::Spec
request.scheme.must_equal "https"
request.must_be :ssl?
+ request = make_request(Rack::MockRequest.env_for("/", 'rack.url_scheme' => 'wss'))
+ request.scheme.must_equal "wss"
+ request.must_be :ssl?
+
request = make_request(Rack::MockRequest.env_for("/", 'HTTP_HOST' => 'www.example.org:8080'))
request.scheme.must_equal "http"
request.wont_be :ssl?