Skip to content

Commit 94c52ab

Browse files
Rename downcase_request_headers to case_sensitive_headers
1 parent f4e787f commit 94c52ab

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

lib/mint/http1.ex

+10-3
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ defmodule Mint.HTTP1 do
9494
:transport,
9595
:mode,
9696
:scheme_as_string,
97-
:downcase_request_headers,
97+
:case_sensitive_headers,
9898
requests: :queue.new(),
9999
state: :closed,
100100
buffer: "",
@@ -119,6 +119,13 @@ defmodule Mint.HTTP1 do
119119
Same as `Mint.HTTP.connect/4`, but forces an HTTP/1 or HTTP/1.1 connection.
120120
121121
This function doesn't support proxying.
122+
123+
## Additional Options
124+
125+
* `:case_sensitive_headers` - (boolean) if set to true the case of the supplied
126+
headers in requests will be preserved. The default is to lowercase the headers
127+
because http/1.1 header names are not case-insensitive.
128+
122129
"""
123130
@spec connect(Types.scheme(), Types.address(), :inet.port_number(), keyword()) ::
124131
{:ok, t()} | {:error, Types.error()}
@@ -195,7 +202,7 @@ defmodule Mint.HTTP1 do
195202
scheme_as_string: Atom.to_string(scheme),
196203
state: :open,
197204
log: log?,
198-
downcase_request_headers: Keyword.get(opts, :downcase_request_headers, true)
205+
case_sensitive_headers: Keyword.get(opts, :case_sensitive_headers, false)
199206
}
200207

201208
{:ok, conn}
@@ -273,7 +280,7 @@ defmodule Mint.HTTP1 do
273280
Request.encode(
274281
method,
275282
path,
276-
Headers.to_raw_headers(headers, conn.downcase_request_headers),
283+
Headers.to_raw_headers(headers, conn.case_sensitive_headers),
277284
body
278285
),
279286
:ok <- transport.send(socket, iodata) do

lib/mint/http1/headers.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ defmodule Mint.HTTP1.Headers do
1111
end
1212

1313
@spec to_raw_headers([header()], boolean()) :: [raw_header()]
14-
def to_raw_headers(headers, downcase_headers) do
15-
if downcase_headers do
14+
def to_raw_headers(headers, case_sensitive_headers) do
15+
if case_sensitive_headers do
16+
Enum.map(headers, fn {name, _canonical_name, value} -> {name, value} end)
17+
else
1618
Enum.map(headers, fn {_name, canonical_name, value} ->
1719
{canonical_name, value}
1820
end)
19-
else
20-
Enum.map(headers, fn {name, _canonical_name, value} -> {name, value} end)
2121
end
2222
end
2323

test/mint/http1/conn_test.exs

+4-8
Original file line numberDiff line numberDiff line change
@@ -652,8 +652,7 @@ defmodule Mint.HTTP1Test do
652652
end
653653

654654
test "non lower case headers", %{port: port, server_ref: server_ref} do
655-
assert {:ok, conn} =
656-
HTTP1.connect(:http, "localhost", port, downcase_request_headers: false)
655+
assert {:ok, conn} = HTTP1.connect(:http, "localhost", port, case_sensitive_headers: true)
657656

658657
assert_receive {^server_ref, server_socket}
659658
body = "body"
@@ -684,8 +683,7 @@ defmodule Mint.HTTP1Test do
684683
end
685684

686685
test "non lower case headers using defaults", %{port: port, server_ref: server_ref} do
687-
assert {:ok, conn} =
688-
HTTP1.connect(:http, "localhost", port, downcase_request_headers: false)
686+
assert {:ok, conn} = HTTP1.connect(:http, "localhost", port, case_sensitive_headers: true)
689687

690688
assert_receive {^server_ref, server_socket}
691689
body = "body"
@@ -716,8 +714,7 @@ defmodule Mint.HTTP1Test do
716714
port: port,
717715
server_ref: server_ref
718716
} do
719-
assert {:ok, conn} =
720-
HTTP1.connect(:http, "localhost", port, downcase_request_headers: false)
717+
assert {:ok, conn} = HTTP1.connect(:http, "localhost", port, case_sensitive_headers: true)
721718

722719
assert_receive {^server_ref, server_socket}
723720

@@ -741,8 +738,7 @@ defmodule Mint.HTTP1Test do
741738
end
742739

743740
test "non lower case headers gzip encoding", %{port: port, server_ref: server_ref} do
744-
assert {:ok, conn} =
745-
HTTP1.connect(:http, "localhost", port, downcase_request_headers: false)
741+
assert {:ok, conn} = HTTP1.connect(:http, "localhost", port, case_sensitive_headers: true)
746742

747743
assert_receive {^server_ref, server_socket}
748744

0 commit comments

Comments
 (0)