aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2025-03-26 17:28:16 +0100
committerLoïc Hoguin <[email protected]>2025-03-26 17:28:16 +0100
commit3eaa67dd8196821bbafe78daedaf86790fd123c6 (patch)
treed023fad273cc44fd17e23eff9f5a05e50bcd9b87 /src
parentf5dc8d3bafcf7976aa32cb9253542522f50cd51d (diff)
downloadgun-3eaa67dd8196821bbafe78daedaf86790fd123c6.tar.gz
gun-3eaa67dd8196821bbafe78daedaf86790fd123c6.tar.bz2
gun-3eaa67dd8196821bbafe78daedaf86790fd123c6.zip
Default the origin authority to "localhost" for unix sockets
Otherwise garbage gets sent.
Diffstat (limited to 'src')
-rw-r--r--src/gun.erl14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gun.erl b/src/gun.erl
index 8fb326d..085e47f 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -1016,6 +1016,18 @@ start_link(Owner, Host, Port, Opts) ->
init({Owner, Host, Port, Opts}) ->
Retry = maps:get(retry, Opts, 5),
OriginTransport = maps:get(transport, Opts, default_transport(Port)),
+ %% When Unix Domain Sockets are used we set
+ %% the origin authority to "localhost" by default.
+ {OriginHost, OriginPort} = case Host of
+ {local, _} ->
+ OriginPort0 = case OriginTransport of
+ tcp -> 80;
+ _ -> 443
+ end,
+ {<<"localhost">>, OriginPort0};
+ _ ->
+ {Host, Port}
+ end,
%% The OriginScheme is not really http when we connect to socks/raw.
%% This is corrected in the gun:info/1 and gun:stream_info/2 functions where applicable.
{OriginScheme, Transport} = case OriginTransport of
@@ -1037,7 +1049,7 @@ init({Owner, Host, Port, Opts}) ->
CookieStore = maps:get(cookie_store, Opts, undefined),
State = #state{owner=Owner, status={up, OwnerRef},
host=Host, port=Port, origin_scheme=OriginScheme,
- origin_host=Host, origin_port=Port, opts=Opts,
+ origin_host=OriginHost, origin_port=OriginPort, opts=Opts,
transport=Transport, messages=Transport:messages(),
event_handler=EvHandler, event_handler_state=EvHandlerState,
cookie_store=CookieStore},