From 55e23cb1fe18c6784b573a44bce4c798a1983c2f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 2 Aug 2019 13:17:59 -0700 Subject: [PATCH] doc/go1.13: mention confusion between keep-alive timeout and deadline Updates #31449 Change-Id: I4d7075b20cd8171bc792e40b388f4215264a3317 Reviewed-on: https://go-review.googlesource.com/c/go/+/188819 Reviewed-by: Filippo Valsorda --- doc/go1.13.html | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index c79a76f4b82363..34a2d5e0430f5f 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -707,6 +707,24 @@

Minor changes to the library

The new field ListenConfig.KeepAlive specifies the keep-alive period for network connections accepted by the listener. + If this field is 0 (the default) TCP keep-alives will be enabled. + To disable them, set it to a negative value. +

+

+ Note that the error returned from I/O on a connection that was + closed by a keep-alive timeout will have a + Timeout method that returns true if called. + This can make a keep-alive error difficult to distinguish from + an error returned due to a missed deadline as set by the + SetDeadline + method and similar methods. + Code that uses deadlines and checks for them with + the Timeout method or + with os.IsTimeout + may want to disable keep-alives, or + use errors.Is(syscall.ETIMEDOUT) (on Unix systems) + which will return true for a keep-alive timeout and false for a + deadline timeout.