From 8b058cfbcec5dc3002ddd6cedc7070ff946b2257 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 9 Aug 2019 13:48:34 -0700 Subject: [PATCH] net: document that a keep-alive failure also returns a timeout Updates #31449 Change-Id: I76490c5e83eb2f7ba529b387a57ba088428aece5 Reviewed-on: https://go-review.googlesource.com/c/go/+/189757 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Filippo Valsorda --- src/net/net.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/net/net.go b/src/net/net.go index 4ed40237a8..38c6b99637 100644 --- a/src/net/net.go +++ b/src/net/net.go @@ -146,6 +146,13 @@ type Conn interface { // the deadline after successful Read or Write calls. // // A zero value for t means I/O operations will not time out. + // + // Note that if a TCP connection has keep-alive turned on, + // which is the default unless overridden by Dialer.KeepAlive + // or ListenConfig.KeepAlive, then a keep-alive failure may + // also return a timeout error. On Unix systems a keep-alive + // failure on I/O can be detected using + // errors.Is(err, syscall.ETIMEDOUT). SetDeadline(t time.Time) error // SetReadDeadline sets the deadline for future Read calls -- 2.48.1