Skip to content

Commit 45feea2

Browse files
authored
Merge commit from fork
1 parent f2ca636 commit 45feea2

3 files changed

Lines changed: 10 additions & 15 deletions

File tree

lib/bandit/pipeline.ex

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,22 +73,17 @@ defmodule Bandit.Pipeline do
7373
) :: Plug.Conn.t()
7474
defp build_conn!(transport, method, request_target, headers, {secure?, peer_address}, opts) do
7575
adapter = Bandit.Adapter.init(self(), transport, method, headers, opts)
76-
scheme = determine_scheme(secure?, request_target)
76+
scheme = determine_scheme(secure?)
7777
version = Bandit.HTTPTransport.version(transport)
7878
{host, port} = determine_host_and_port!(scheme, version, request_target, headers)
7979
{path, query} = determine_path_and_query(request_target)
8080
uri = %URI{scheme: scheme, host: host, port: port, path: path, query: query}
8181
Plug.Conn.Adapter.conn({Bandit.Adapter, adapter}, method, uri, peer_address, headers)
8282
end
8383

84-
@spec determine_scheme(boolean(), request_target()) :: String.t() | nil
85-
defp determine_scheme(secure?, {scheme, _, _, _}) do
86-
case {secure?, scheme} do
87-
{true, nil} -> "https"
88-
{false, nil} -> "http"
89-
{_, scheme} -> scheme
90-
end
91-
end
84+
@spec determine_scheme(boolean()) :: String.t()
85+
defp determine_scheme(true), do: "https"
86+
defp determine_scheme(false), do: "http"
9287

9388
@spec determine_host_and_port!(binary(), atom(), request_target(), Plug.Conn.headers()) ::
9489
{Plug.Conn.host(), Plug.Conn.port_number()}

test/bandit/http1/protocol_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,11 +520,11 @@ defmodule HTTP1ProtocolTest do
520520
end
521521

522522
describe "absolute-form request target (RFC9112§3.2.2)" do
523-
test "uses request-line scheme even if it does not match the transport", context do
523+
test "uses transport scheme even if it does not match request-line scheme", context do
524524
client = SimpleHTTP1Client.tcp_client(context)
525525
SimpleHTTP1Client.send(client, "GET", "https://banana/echo_components")
526526
assert {:ok, "200 OK", _headers, body} = SimpleHTTP1Client.recv_reply(client)
527-
assert Jason.decode!(body)["scheme"] == "https"
527+
assert Jason.decode!(body)["scheme"] == "http"
528528
end
529529

530530
test "derives host from the URI, even if it differs from host header", context do

test/bandit/http2/protocol_test.exs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2649,7 +2649,7 @@ defmodule HTTP2ProtocolTest do
26492649
assert Jason.decode!(body)["scheme"] == "https"
26502650
end
26512651

2652-
test "uses :scheme even if it does not match transport", context do
2652+
test "uses transport even if it does not match :scheme", context do
26532653
socket = SimpleH2Client.setup_connection(context)
26542654

26552655
headers = [
@@ -2663,7 +2663,7 @@ defmodule HTTP2ProtocolTest do
26632663

26642664
assert SimpleH2Client.successful_response?(socket, 1, false)
26652665
{:ok, 1, true, body} = SimpleH2Client.recv_body(socket)
2666-
assert Jason.decode!(body)["scheme"] == "http"
2666+
assert Jason.decode!(body)["scheme"] == "https"
26672667
end
26682668

26692669
test "derives host from host header", context do
@@ -2940,7 +2940,7 @@ defmodule HTTP2ProtocolTest do
29402940
assert Jason.decode!(body)["scheme"] == "https"
29412941
end
29422942

2943-
test "uses :scheme even if it does not match transport", context do
2943+
test "uses transport even if it does not match :scheme", context do
29442944
socket = SimpleH2Client.setup_connection(context)
29452945

29462946
headers = [
@@ -2954,7 +2954,7 @@ defmodule HTTP2ProtocolTest do
29542954

29552955
assert SimpleH2Client.successful_response?(socket, 1, false)
29562956
{:ok, 1, true, body} = SimpleH2Client.recv_body(socket)
2957-
assert Jason.decode!(body)["scheme"] == "http"
2957+
assert Jason.decode!(body)["scheme"] == "https"
29582958
end
29592959

29602960
test "derives host from :authority header, even if it differs from host header", context do

0 commit comments

Comments
 (0)