mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
Fix hixi76_location/5 when transport is tcp and port is 443
I know it is unlikely to use plain TCP on port 443, where SSL is usually used, but a bug is still a bug, and as such it should be fixed. Now the port will be probably appended to the location when port 443 is used without SSL.
This commit is contained in:
parent
97460a5993
commit
237b468f42
1 changed files with 10 additions and 6 deletions
|
@ -420,19 +420,21 @@ hixie76_key_to_integer(Key) ->
|
|||
-> binary().
|
||||
hixie76_location(Protocol, Host, Port, Path, <<>>) ->
|
||||
<< (hixie76_location_protocol(Protocol))/binary, "://", Host/binary,
|
||||
(hixie76_location_port(ssl, Port))/binary, Path/binary>>;
|
||||
(hixie76_location_port(Protocol, Port))/binary, Path/binary>>;
|
||||
hixie76_location(Protocol, Host, Port, Path, QS) ->
|
||||
<< (hixie76_location_protocol(Protocol))/binary, "://", Host/binary,
|
||||
(hixie76_location_port(ssl, Port))/binary, Path/binary, "?", QS/binary >>.
|
||||
(hixie76_location_port(Protocol, Port))/binary, Path/binary, "?", QS/binary >>.
|
||||
|
||||
-spec hixie76_location_protocol(atom()) -> binary().
|
||||
hixie76_location_protocol(ssl) -> <<"wss">>;
|
||||
hixie76_location_protocol(_) -> <<"ws">>.
|
||||
|
||||
%% @todo We should add a secure/0 function to transports
|
||||
%% instead of relying on their name.
|
||||
-spec hixie76_location_port(atom(), inet:ip_port()) -> binary().
|
||||
hixie76_location_port(ssl, 443) ->
|
||||
<<>>;
|
||||
hixie76_location_port(_, 80) ->
|
||||
hixie76_location_port(tcp, 80) ->
|
||||
<<>>;
|
||||
hixie76_location_port(_, Port) ->
|
||||
<<":", (list_to_binary(integer_to_list(Port)))/binary>>.
|
||||
|
@ -459,11 +461,13 @@ hybi_payload_length(N) ->
|
|||
|
||||
hixie76_location_test() ->
|
||||
?assertEqual(<<"ws://localhost/path">>,
|
||||
hixie76_location(other, <<"localhost">>, 80, <<"/path">>, <<>>)),
|
||||
hixie76_location(tcp, <<"localhost">>, 80, <<"/path">>, <<>>)),
|
||||
?assertEqual(<<"ws://localhost:443/path">>,
|
||||
hixie76_location(tcp, <<"localhost">>, 443, <<"/path">>, <<>>)),
|
||||
?assertEqual(<<"ws://localhost:8080/path">>,
|
||||
hixie76_location(other, <<"localhost">>, 8080, <<"/path">>, <<>>)),
|
||||
hixie76_location(tcp, <<"localhost">>, 8080, <<"/path">>, <<>>)),
|
||||
?assertEqual(<<"ws://localhost:8080/path?dummy=2785">>,
|
||||
hixie76_location(other, <<"localhost">>, 8080, <<"/path">>, <<"dummy=2785">>)),
|
||||
hixie76_location(tcp, <<"localhost">>, 8080, <<"/path">>, <<"dummy=2785">>)),
|
||||
?assertEqual(<<"wss://localhost/path">>,
|
||||
hixie76_location(ssl, <<"localhost">>, 443, <<"/path">>, <<>>)),
|
||||
?assertEqual(<<"wss://localhost:8443/path">>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue