aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Bevemyr <[email protected]>2021-03-12 18:20:09 +0100
committerLoïc Hoguin <[email protected]>2022-03-08 14:04:22 +0100
commit56cbf3823331a56474248541987c9b9d13c452d4 (patch)
tree4550d2251b1439d682b0b3eb24304a10f9a3230d
parent7ed6d220176be60ace521a1a11a309f6537c0489 (diff)
downloadgun-56cbf3823331a56474248541987c9b9d13c452d4.tar.gz
gun-56cbf3823331a56474248541987c9b9d13c452d4.tar.bz2
gun-56cbf3823331a56474248541987c9b9d13c452d4.zip
Don't add default SNI if already set
-rw-r--r--src/gun.erl13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/gun.erl b/src/gun.erl
index 3ca65b7..42bd409 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -1104,10 +1104,15 @@ ensure_alpn_sni(Protocols0, TransOpts0, OriginHost) ->
%%
%% Normally only DNS hostnames are supported for SNI. However, the ssl
%% application itself allows any string through so we do the same.
- if
- is_list(OriginHost) -> [{server_name_indication, OriginHost}|TransOpts];
- is_atom(OriginHost) -> [{server_name_indication, atom_to_list(OriginHost)}|TransOpts];
- true -> TransOpts
+ %%
+ %% Only add SNI if not already present and OriginHost isn't an IP address.
+ case lists:keymember(server_name_indication, 1, TransOpts) of
+ false when is_list(OriginHost) ->
+ [{server_name_indication, OriginHost}|TransOpts];
+ false when is_atom(OriginHost) ->
+ [{server_name_indication, atom_to_list(OriginHost)}|TransOpts];
+ _ ->
+ TransOpts
end.
%% Normal TLS handshake.