]> Cypherpunks repositories - gostls13.git/commit
net: enable TCP keepalives by default
authorCarlo Alberto Ferraris <cafxx@strayorange.com>
Sun, 15 Apr 2018 02:34:19 +0000 (11:34 +0900)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 3 Dec 2018 16:36:46 +0000 (16:36 +0000)
commit5bd7e9c54f946eec95d32762e7e9e1222504bfc1
tree829af0feb5345416ae5eaa663de8ed6d7742367c
parent1adbb2bb9b256907eaf3f012d7f818765e6e2a2b
net: enable TCP keepalives by default

This is just the first step in attempting to make all network connection have
timeouts as a "safe default". TCP keepalives only protect against certain
classes of network and host issues (e.g. server/OS crash), but do nothing
against application-level issues (e.g. an application that accepts connections
but then fails to serve requests).

The actual keep-alive duration (15s) is chosen to cause broken connections
to be closed after 2~3 minutes (depending on the OS, see #23549 for details).
We don't make the actual default value part of the public API for a number of
reasons:
- because it's not very useful by itself: as discussed in #23549 the actual
  "timeout" after which the connection is torn down is duration*(KEEPCNT+1),
  and we use the OS-wide value for KEEPCNT because there's currently no way
  to set it from Go.
- because it may change in the future: if users need to rely on a specific
  value they should explicitly set this value instead of relying on the default.

Fixes #23459

Change-Id: I348c03be97588d5001e6de0f377e7a93b51957fd
Reviewed-on: https://go-review.googlesource.com/c/107196
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/net/dial.go
src/net/dial_test.go
src/net/hook.go