From: Russ Cox Date: Wed, 5 Oct 2016 03:58:42 +0000 (-0400) Subject: context: make DeadlineExceeded implement net.Error X-Git-Tag: go1.8beta1~1024 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f69991c17d9dea88e927643e4b7fdc43ad789ac3;p=gostls13.git context: make DeadlineExceeded implement net.Error It already implemented the Timeout method, but implementing the full net.Error is more convenient. Fixes #14238 (again). Change-Id: Ia87f897f0f35bcb49865e2355964049227951ca6 Reviewed-on: https://go-review.googlesource.com/30370 Run-TryBot: Russ Cox Reviewed-by: Ian Lance Taylor Reviewed-by: Brad Fitzpatrick --- diff --git a/src/context/context.go b/src/context/context.go index 41a5cefef9..54ad49a721 100644 --- a/src/context/context.go +++ b/src/context/context.go @@ -159,9 +159,9 @@ var DeadlineExceeded error = deadlineExceededError{} type deadlineExceededError struct{} -func (deadlineExceededError) Error() string { return "context deadline exceeded" } - -func (deadlineExceededError) Timeout() bool { return true } +func (deadlineExceededError) Error() string { return "context deadline exceeded" } +func (deadlineExceededError) Timeout() bool { return true } +func (deadlineExceededError) Temporary() bool { return true } // An emptyCtx is never canceled, has no values, and has no deadline. It is not // struct{}, since vars of this type must have distinct addresses. diff --git a/src/context/net_test.go b/src/context/net_test.go new file mode 100644 index 0000000000..a007689d36 --- /dev/null +++ b/src/context/net_test.go @@ -0,0 +1,21 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package context_test + +import ( + "context" + "net" + "testing" +) + +func TestDeadlineExceededIsNetError(t *testing.T) { + err, ok := context.DeadlineExceeded.(net.Error) + if !ok { + t.Fatal("DeadlineExceeded does not implement net.Error") + } + if !err.Timeout() || !err.Temporary() { + t.Fatalf("Timeout() = %v, Temporary() = %v, want true, true", err.Timeout(), err.Temporary()) + } +}