Skip to content

Commit 8bca78c

Browse files
committed
fix raw path
when there is no path or trailing slash given we should only keep the rest of the query in the raw_path value. (ie not forcing a "/" at the beginning.
1 parent d75fbb1 commit 8bca78c

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/hackney_url.erl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,15 @@ parse_addr1(Addr, S) ->
160160
case binary:split(Addr, <<"?">>) of
161161
[_Addr] ->
162162
{Addr1, Fragment} = parse_fragment(Addr),
163-
parse_addr(Addr1, S#hackney_url{fragment = Fragment});
163+
RawPath = case Fragment of
164+
<<"">> -> <<"">>;
165+
_ -> << "#", Fragment/binary >>
166+
end,
167+
parse_addr(Addr1, S#hackney_url{raw_path=RawPath, fragment = Fragment});
164168
[Addr1, Query] ->
165169
{Query1, Fragment} = parse_fragment(Query),
166-
#hackney_url{raw_path = RawPath0 } = S,
167-
RawPath1 = << RawPath0/binary, "?", Query1/binary >>,
168-
parse_addr(Addr1, S#hackney_url{raw_path=RawPath1, qs=Query1, fragment=Fragment})
170+
RawPath = << "?", Query/binary >>,
171+
parse_addr(Addr1, S#hackney_url{raw_path=RawPath, qs=Query1, fragment=Fragment})
169172
end.
170173

171174
parse_addr(Addr, S) ->

test/hackney_url_tests.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ parse_url_test_() ->
173173
#hackney_url{transport =hackney_tcp,
174174
scheme = http,
175175
netloc = <<"www.example.com">>,
176-
raw_path = <<"/">>,
176+
raw_path = <<"">>,
177177
path = <<"/">>,
178178
qs = <<"">>,
179179
fragment = <<"">>,
@@ -186,7 +186,7 @@ parse_url_test_() ->
186186
#hackney_url{transport =hackney_tcp,
187187
scheme = http,
188188
netloc = <<"www.example.com">>,
189-
raw_path = <<"/?q=123">>,
189+
raw_path = <<"?q=123">>,
190190
path = <<"/">>,
191191
qs = <<"q=123">>,
192192
fragment = <<"">>,

0 commit comments

Comments
 (0)