From 46009ac902e2256a2675e6e7057d384f6fdc222d Mon Sep 17 00:00:00 2001 From: Thomas Hallgren Date: Mon, 14 Feb 2022 16:44:21 +0100 Subject: [PATCH] transport: Add an Unwrap method to ConnectionError (#5148) --- internal/transport/transport.go | 6 ++++++ internal/transport/transport_test.go | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/internal/transport/transport.go b/internal/transport/transport.go index d3bf65b2bdf..0c43efaa649 100644 --- a/internal/transport/transport.go +++ b/internal/transport/transport.go @@ -741,6 +741,12 @@ func (e ConnectionError) Origin() error { return e.err } +// Unwrap returns the original error of this connection error or nil when the +// origin is nil. +func (e ConnectionError) Unwrap() error { + return e.err +} + var ( // ErrConnClosing indicates that the transport is closing. ErrConnClosing = connectionErrorf(true, nil, "transport is closing") diff --git a/internal/transport/transport_test.go b/internal/transport/transport_test.go index 34536c9c325..1fc2d217acb 100644 --- a/internal/transport/transport_test.go +++ b/internal/transport/transport_test.go @@ -27,6 +27,7 @@ import ( "io" "math" "net" + "os" "runtime" "strconv" "strings" @@ -2404,3 +2405,10 @@ func (s) TestClientDecodeHeaderStatusErr(t *testing.T) { }) } } + +func TestConnectionError_Unwrap(t *testing.T) { + err := connectionErrorf(false, os.ErrNotExist, "unwrap me") + if !errors.Is(err, os.ErrNotExist) { + t.Error("ConnectionError does not unwrap") + } +}