Skip to content

Commit 57a90e1

Browse files
committed
use existing target validation functions
1 parent ebb0134 commit 57a90e1

File tree

4 files changed

+7
-9
lines changed

4 files changed

+7
-9
lines changed

lib/mint/http1.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,7 @@ defmodule Mint.HTTP1 do
978978
# Percent-encoding is not case sensitive so we have to account for lowercase and uppercase.
979979
@hex_characters ~c"0123456789abcdefABCDEF"
980980

981+
defp validate_target(<<>> = empty_target), do: {:error, {:invalid_request_target, empty_target}}
981982
defp validate_target(target), do: validate_target(target, target)
982983

983984
defp validate_target(<<?%, char1, char2, rest::binary>>, original_target)

lib/mint/http1/request.ex

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ defmodule Mint.HTTP1.Request do
1717
end
1818

1919
defp encode_request_line(method, target) do
20-
validate_target!(target)
2120
[method, ?\s, target, " HTTP/1.1\r\n"]
2221
end
2322

@@ -46,9 +45,6 @@ defmodule Mint.HTTP1.Request do
4645
[Integer.to_string(length, 16), "\r\n", chunk, "\r\n"]
4746
end
4847

49-
defp validate_target!("" = target), do: throw({:mint, {:invalid_target, target}})
50-
defp validate_target!(_target), do: :ok
51-
5248
defp validate_header_name!(name) do
5349
_ =
5450
for <<char <- name>> do

test/mint/http1/integration_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,12 @@ defmodule Mint.HTTP1.IntegrationTest do
100100

101101
assert byte_size(merge_body(responses, request)) == 1024
102102
end
103+
104+
test "empty target" do
105+
{:ok, conn} = HTTP1.connect(:http, "localhost", 8080)
106+
assert {:error, _conn, %Mint.HTTPError{} = error} = HTTP1.request(conn, "GET", "", [], nil)
107+
assert Exception.message(error) == ~s|invalid request target: ""|
108+
end
103109
end
104110

105111
describe "twitter.com" do

test/mint/http1/request_test.exs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,6 @@ defmodule Mint.HTTP1.RequestTest do
4242
assert Request.encode("GET", "/", [{"foo", "bar\r\n"}], nil) ==
4343
{:error, {:invalid_header_value, "foo", "bar\r\n"}}
4444
end
45-
46-
test "empty target" do
47-
assert Request.encode("GET", "", [], nil) ==
48-
{:error, {:invalid_target, ""}}
49-
end
5045
end
5146

5247
describe "encode_chunk/1" do

0 commit comments

Comments
 (0)