refactor(sessionresolver): adapt to changing network conditions (#238)
* feat(sessionresolver): try many and use what works * fix(sessionresolver): make sure we can use quic * fix: the config struct is unnecessary * fix: make kvstore optional * feat: write simple integration test * feat: start adding tests * feat: continue writing tests * fix(sessionresolver): add more unit tests * fix(sessionresolver): finish adding tests * refactor(sessionresolver): changes after code review
This commit is contained in:
parent
12e1164940
commit
034db78f94
19 changed files with 1260 additions and 66 deletions
23
internal/engine/internal/sessionresolver/errwrapper.go
Normal file
23
internal/engine/internal/sessionresolver/errwrapper.go
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
package sessionresolver
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// errwrapper wraps an error to include the URL of the
|
||||
// resolver that we're currently using.
|
||||
type errwrapper struct {
|
||||
error
|
||||
URL string
|
||||
}
|
||||
|
||||
// Error implements error.Error.
|
||||
func (ew *errwrapper) Error() string {
|
||||
return fmt.Sprintf("<%s> %s", ew.URL, ew.error.Error())
|
||||
}
|
||||
|
||||
// Is allows consumers to query for the type of the underlying error.
|
||||
func (ew *errwrapper) Is(target error) bool {
|
||||
return errors.Is(ew.error, target)
|
||||
}
|
||||
Loading…
Reference in a new issue