From cd629965e6c1920f124691c4004507467fe2069c Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Sat, 20 Apr 2019 12:57:52 -0500 Subject: [PATCH] Use golang.org/x/xerrors --- auth_scram.go | 6 +++--- config.go | 14 +++++++------- go.mod | 3 ++- go.sum | 2 ++ pgconn.go | 9 ++++----- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/auth_scram.go b/auth_scram.go index 50fbff40..5baa680b 100644 --- a/auth_scram.go +++ b/auth_scram.go @@ -17,13 +17,13 @@ import ( "crypto/rand" "crypto/sha256" "encoding/base64" - "errors" "fmt" "strconv" "github.com/jackc/pgproto3/v2" "golang.org/x/crypto/pbkdf2" "golang.org/x/text/secure/precis" + errors "golang.org/x/xerrors" ) const clientNonceLen = 18 @@ -181,12 +181,12 @@ func (sc *scramClient) recvServerFirstMessage(serverFirstMessage []byte) error { var err error sc.salt, err = base64.StdEncoding.DecodeString(string(saltStr)) if err != nil { - return fmt.Errorf("invalid SCRAM salt received from server: %v", err) + return errors.Errorf("invalid SCRAM salt received from server: %w", err) } sc.iterations, err = strconv.Atoi(string(iterationsStr)) if err != nil || sc.iterations <= 0 { - return fmt.Errorf("invalid SCRAM iteration count received from server: %s", iterationsStr) + return errors.Errorf("invalid SCRAM iteration count received from server: %w", err) } if !bytes.HasPrefix(sc.clientAndServerNonce, sc.clientNonce) { diff --git a/config.go b/config.go index d392924c..c751cc0d 100644 --- a/config.go +++ b/config.go @@ -18,7 +18,7 @@ import ( "time" "github.com/jackc/pgpassfile" - "github.com/pkg/errors" + errors "golang.org/x/xerrors" ) type AfterConnectFunc func(ctx context.Context, pgconn *PgConn) error @@ -195,7 +195,7 @@ func ParseConfig(connString string) (*Config, error) { port, err := parsePort(portStr) if err != nil { - return nil, fmt.Errorf("invalid port: %v", settings["port"]) + return nil, errors.Errorf("invalid port: %w", err) } var tlsConfigs []*tls.Config @@ -240,7 +240,7 @@ func ParseConfig(connString string) (*Config, error) { if settings["target_session_attrs"] == "read-write" { config.AfterConnectFunc = AfterConnectTargetSessionAttrsReadWrite } else if settings["target_session_attrs"] != "any" { - return nil, fmt.Errorf("unknown target_session_attrs value %v", settings["target_session_attrs"]) + return nil, errors.Errorf("unknown target_session_attrs value: %v", settings["target_session_attrs"]) } return config, nil @@ -409,11 +409,11 @@ func configTLS(settings map[string]string) ([]*tls.Config, error) { caPath := sslrootcert caCert, err := ioutil.ReadFile(caPath) if err != nil { - return nil, errors.Wrapf(err, "unable to read CA file %q", caPath) + return nil, errors.Errorf("unable to read CA file: %w", err) } if !caCertPool.AppendCertsFromPEM(caCert) { - return nil, errors.Wrap(err, "unable to add CA to cert pool") + return nil, errors.Errorf("unable to add CA to cert pool: %w", err) } tlsConfig.RootCAs = caCertPool @@ -421,13 +421,13 @@ func configTLS(settings map[string]string) ([]*tls.Config, error) { } if (sslcert != "" && sslkey == "") || (sslcert == "" && sslkey != "") { - return nil, fmt.Errorf(`both "sslcert" and "sslkey" are required`) + return nil, errors.New(`both "sslcert" and "sslkey" are required`) } if sslcert != "" && sslkey != "" { cert, err := tls.LoadX509KeyPair(sslcert, sslkey) if err != nil { - return nil, errors.Wrap(err, "unable to read cert") + return nil, errors.Errorf("unable to read cert: %w", err) } tlsConfig.Certificates = []tls.Certificate{cert} diff --git a/go.mod b/go.mod index 232df737..dda76fe1 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,11 @@ go 1.12 require ( github.com/jackc/pgio v1.0.0 github.com/jackc/pgpassfile v1.0.0 - github.com/jackc/pgproto3 v1.1.0 + github.com/jackc/pgproto3 v1.1.0 // indirect github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190419041544-9b6a681f50bf github.com/pkg/errors v0.8.1 github.com/stretchr/testify v1.3.0 golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a golang.org/x/text v0.3.0 + golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373 ) diff --git a/go.sum b/go.sum index 8e0e2c9f..5a100ff0 100644 --- a/go.sum +++ b/go.sum @@ -22,3 +22,5 @@ golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaE golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373 h1:PPwnA7z1Pjf7XYaBP9GL1VAMZmcIWyFz7QCMSIIa3Bg= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pgconn.go b/pgconn.go index 4f3cdd66..14377beb 100644 --- a/pgconn.go +++ b/pgconn.go @@ -7,8 +7,6 @@ import ( "crypto/tls" "encoding/binary" "encoding/hex" - "errors" - "fmt" "io" "math" "net" @@ -18,6 +16,7 @@ import ( "github.com/jackc/pgio" "github.com/jackc/pgproto3/v2" + errors "golang.org/x/xerrors" ) const ( @@ -232,7 +231,7 @@ func connect(ctx context.Context, config *Config, fallbackConfig *FallbackConfig err := config.AfterConnectFunc(ctx, pgConn) if err != nil { pgConn.conn.Close() - return nil, fmt.Errorf("AfterConnectFunc: %v", err) + return nil, errors.Errorf("AfterConnectFunc: %v", err) } } return pgConn, nil @@ -601,7 +600,7 @@ func (pgConn *PgConn) CancelRequest(ctx context.Context) error { _, err = cancelConn.Read(buf) if err != io.EOF { - return fmt.Errorf("Server failed to close connection after cancel query request: %v", preferContextOverNetTimeoutError(ctx, err)) + return errors.Errorf("Server failed to close connection after cancel query request: %w", preferContextOverNetTimeoutError(ctx, err)) } return nil @@ -757,7 +756,7 @@ func (pgConn *PgConn) execExtendedPrefix(ctx context.Context, paramValues [][]by result := &pgConn.resultReader if len(paramValues) > math.MaxUint16 { - result.concludeCommand(nil, fmt.Errorf("extended protocol limited to %v parameters", math.MaxUint16)) + result.concludeCommand(nil, errors.Errorf("extended protocol limited to %v parameters", math.MaxUint16)) result.closed = true pgConn.unlock() return result