aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2020-10-07 11:44:54 +0200
committerLoïc Hoguin <[email protected]>2020-10-07 11:47:02 +0200
commit556645d8d73b1de8ba453ee2fba2bc659a7962f6 (patch)
tree20e580ff53a4e294e96fbf4a3f38b48d2c71a809
parent7d3dffd15c7d773cf48ba493ce733125ebbc9a31 (diff)
downloadgun-556645d8d73b1de8ba453ee2fba2bc659a7962f6.tar.gz
gun-556645d8d73b1de8ba453ee2fba2bc659a7962f6.tar.bz2
gun-556645d8d73b1de8ba453ee2fba2bc659a7962f6.zip
Default keepalive to infinity for all protocols
For HTTP/2 some servers are not fond of receiving pings, especially if there's no stream at the time. (particularly gRPC servers). This is an odd decision for sure. Rather than trying to accomodate for their logic the ping is no longer sent by default. For Websocket sending a ping is a new feature in Gun 2.0 so I'm just being conservative there.
-rw-r--r--doc/src/manual/gun.asciidoc6
-rw-r--r--src/gun_http2.erl2
-rw-r--r--src/gun_ws.erl2
3 files changed, 5 insertions, 5 deletions
diff --git a/doc/src/manual/gun.asciidoc b/doc/src/manual/gun.asciidoc
index a2d51f6..8cf46cc 100644
--- a/doc/src/manual/gun.asciidoc
+++ b/doc/src/manual/gun.asciidoc
@@ -241,7 +241,7 @@ flow - see below::
The initial flow control value for all HTTP/2 streams.
By default flow control is disabled.
-keepalive (5000)::
+keepalive (infinity)::
Time between pings in milliseconds.
@@ -514,7 +514,7 @@ flow - see below::
The initial flow control value for the Websocket connection.
By default flow control is disabled.
-keepalive (5000)::
+keepalive (infinity)::
Time between pings in milliseconds.
@@ -559,7 +559,7 @@ when receiving a ping.
lowercased as well.
* *2.0*: Function `gun:headers/4,5` introduced.
* *2.0*: The `keepalive` option is now set to `infinity` by
- default for the HTTP/1.1 protocol, disabling it.
+ default for all protocols. This means it is disabled.
* *2.0*: Websocket options `keepalive` and `silence_pings` introduced.
* *1.3*: Add the CONNECT destination's `protocols` option and
deprecate the previously introduced `protocol` option.
diff --git a/src/gun_http2.erl b/src/gun_http2.erl
index 7677076..e2aeb4a 100644
--- a/src/gun_http2.erl
+++ b/src/gun_http2.erl
@@ -164,7 +164,7 @@ do_check_options([Opt={Name, _}|Opts]) ->
name() -> http2.
opts_name() -> http2_opts.
has_keepalive() -> true.
-default_keepalive() -> 5000.
+default_keepalive() -> infinity.
init(_ReplyTo, Socket, Transport, Opts0) ->
%% We have different defaults than the protocol in order
diff --git a/src/gun_ws.erl b/src/gun_ws.erl
index 8be93e8..f59c19c 100644
--- a/src/gun_ws.erl
+++ b/src/gun_ws.erl
@@ -91,7 +91,7 @@ do_check_options([Opt|_]) ->
name() -> ws.
opts_name() -> ws_opts.
has_keepalive() -> true.
-default_keepalive() -> 5000.
+default_keepalive() -> infinity.
init(ReplyTo, Socket, Transport, #{stream_ref := StreamRef, headers := Headers,
extensions := Extensions, flow := InitialFlow, handler := Handler, opts := Opts}) ->