From abf50f9c340b0517448a15953cd3346dca708c80 Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Thu, 25 Jul 2024 11:18:50 -0400 Subject: [PATCH] Don't allocate new error inside TaskLoop Libraries use errors.Is to catch this error. Allocating a new one inside internal breaks that --- errors.go | 8 ++++++-- internal/taskloop/taskloop.go | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/errors.go b/errors.go index e39c7cf..e9bfe07 100644 --- a/errors.go +++ b/errors.go @@ -3,7 +3,11 @@ package ice -import "errors" +import ( + "errors" + + "github.com/pion/ice/v3/internal/taskloop" +) var ( // ErrUnknownType indicates an error with Unknown info. @@ -36,7 +40,7 @@ var ( ErrProtoType = errors.New("invalid transport protocol type") // ErrClosed indicates the agent is closed - ErrClosed = errors.New("the agent is closed") + ErrClosed = taskloop.ErrClosed // ErrNoCandidatePairs indicates agent does not have a valid candidate pair ErrNoCandidatePairs = errors.New("no candidate pairs available") diff --git a/internal/taskloop/taskloop.go b/internal/taskloop/taskloop.go index 2e55dc3..b850ab4 100644 --- a/internal/taskloop/taskloop.go +++ b/internal/taskloop/taskloop.go @@ -13,8 +13,8 @@ import ( atomicx "github.com/pion/ice/v3/internal/atomic" ) -// errClosed indicates that the loop has been stopped -var errClosed = errors.New("the agent is closed") +// ErrClosed indicates that the loop has been stopped +var ErrClosed = errors.New("the agent is closed") type task struct { fn func(context.Context) @@ -68,7 +68,7 @@ func (l *Loop) Close() error { return err } - l.err.Store(errClosed) + l.err.Store(ErrClosed) close(l.done) <-l.taskLoopDone @@ -104,7 +104,7 @@ func (l *Loop) Done() <-chan struct{} { func (l *Loop) Err() error { select { case <-l.done: - return errClosed + return ErrClosed default: return nil }