diff options
author | Loïc Hoguin <[email protected]> | 2025-03-26 17:28:16 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2025-03-26 17:28:16 +0100 |
commit | 3eaa67dd8196821bbafe78daedaf86790fd123c6 (patch) | |
tree | d023fad273cc44fd17e23eff9f5a05e50bcd9b87 /src | |
parent | f5dc8d3bafcf7976aa32cb9253542522f50cd51d (diff) | |
download | gun-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.erl | 14 |
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}, |