aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2022-11-21 13:19:12 +0100
committerLoïc Hoguin <[email protected]>2022-11-21 13:19:12 +0100
commit395490ea791cad34fd9130feb37eb145b16c1dde (patch)
tree33d1b26fda4e5f368aff212c9c14af429e48fcdb
parent8d51ab4e04168223b660f353b033eb3cffcee696 (diff)
downloadgun-395490ea791cad34fd9130feb37eb145b16c1dde.tar.gz
gun-395490ea791cad34fd9130feb37eb145b16c1dde.tar.bz2
gun-395490ea791cad34fd9130feb37eb145b16c1dde.zip
Enable send timeouts by default
When no TCP options are provided, Gun will enable send timeouts at 15s. The value was chosen large enough to be safe while still allowing Gun to detect send errors eventually. Different applications may need to tweak and lower this value.
-rw-r--r--doc/src/manual/gun.asciidoc4
-rw-r--r--src/gun.erl5
2 files changed, 7 insertions, 2 deletions
diff --git a/doc/src/manual/gun.asciidoc b/doc/src/manual/gun.asciidoc
index d130d62..9ad3e8e 100644
--- a/doc/src/manual/gun.asciidoc
+++ b/doc/src/manual/gun.asciidoc
@@ -354,9 +354,11 @@ supervise (true)::
Whether the Gun process should be started under the `gun_sup`
supervisor. Set to `false` to use your own supervisor.
-tcp_opts ([])::
+tcp_opts (DefaultOpts)::
TCP options used when establishing the connection.
+By default Gun enables send timeouts with the options
+`[{send_timeout, 15000}, {send_timeout_close, true}]`.
tls_handshake_timeout (infinity)::
diff --git a/src/gun.erl b/src/gun.erl
index bd19b7c..880a2ae 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -1022,7 +1022,10 @@ default_retry_fun(Retries, Opts) ->
domain_lookup(_, {retries, Retries, _}, State=#state{host=Host, port=Port, opts=Opts,
event_handler=EvHandler, event_handler_state=EvHandlerState0}) ->
- TransOpts = maps:get(tcp_opts, Opts, []),
+ TransOpts = maps:get(tcp_opts, Opts, [
+ {send_timeout, 15000},
+ {send_timeout_close, true}
+ ]),
DomainLookupTimeout = maps:get(domain_lookup_timeout, Opts, infinity),
DomainLookupEvent = #{
host => Host,