From 69d7ed5cda49a3744324e7486ccfc6f655cfafb4 Mon Sep 17 00:00:00 2001 From: Dan Kegel Date: Mon, 18 Apr 2022 13:12:54 -0700 Subject: [PATCH] os: define ErrDeadlineExceeded; fixes go 1.18 compile error in net/http, #2782 --- src/os/errors.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/os/errors.go b/src/os/errors.go index fc8693eb..36e3c55e 100644 --- a/src/os/errors.go +++ b/src/os/errors.go @@ -18,6 +18,24 @@ var ( ErrExist = errors.New("file exists") ) +// The following code is copied from the official implementation. +// src/internal/poll/fd.go + +// ErrDeadlineExceeded is returned for an expired deadline. +// This is exported by the os package as os.ErrDeadlineExceeded. +var ErrDeadlineExceeded error = &DeadlineExceededError{} + +// DeadlineExceededError is returned for an expired deadline. +type DeadlineExceededError struct{} + +// Implement the net.Error interface. +// The string is "i/o timeout" because that is what was returned +// by earlier Go versions. Changing it may break programs that +// match on error strings. +func (e *DeadlineExceededError) Error() string { return "i/o timeout" } +func (e *DeadlineExceededError) Timeout() bool { return true } +func (e *DeadlineExceededError) Temporary() bool { return true } + // The following code is copied from the official implementation. // https://github.com/golang/go/blob/4ce6a8e89668b87dce67e2f55802903d6eb9110a/src/os/error.go#L65-L104