Use golang.org/x/xerrors
This commit is contained in:
+3
-3
@@ -17,13 +17,13 @@ import (
|
|||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/jackc/pgproto3/v2"
|
"github.com/jackc/pgproto3/v2"
|
||||||
"golang.org/x/crypto/pbkdf2"
|
"golang.org/x/crypto/pbkdf2"
|
||||||
"golang.org/x/text/secure/precis"
|
"golang.org/x/text/secure/precis"
|
||||||
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
const clientNonceLen = 18
|
const clientNonceLen = 18
|
||||||
@@ -181,12 +181,12 @@ func (sc *scramClient) recvServerFirstMessage(serverFirstMessage []byte) error {
|
|||||||
var err error
|
var err error
|
||||||
sc.salt, err = base64.StdEncoding.DecodeString(string(saltStr))
|
sc.salt, err = base64.StdEncoding.DecodeString(string(saltStr))
|
||||||
if err != nil {
|
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))
|
sc.iterations, err = strconv.Atoi(string(iterationsStr))
|
||||||
if err != nil || sc.iterations <= 0 {
|
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) {
|
if !bytes.HasPrefix(sc.clientAndServerNonce, sc.clientNonce) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/jackc/pgpassfile"
|
"github.com/jackc/pgpassfile"
|
||||||
"github.com/pkg/errors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AfterConnectFunc func(ctx context.Context, pgconn *PgConn) error
|
type AfterConnectFunc func(ctx context.Context, pgconn *PgConn) error
|
||||||
@@ -195,7 +195,7 @@ func ParseConfig(connString string) (*Config, error) {
|
|||||||
|
|
||||||
port, err := parsePort(portStr)
|
port, err := parsePort(portStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("invalid port: %v", settings["port"])
|
return nil, errors.Errorf("invalid port: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var tlsConfigs []*tls.Config
|
var tlsConfigs []*tls.Config
|
||||||
@@ -240,7 +240,7 @@ func ParseConfig(connString string) (*Config, error) {
|
|||||||
if settings["target_session_attrs"] == "read-write" {
|
if settings["target_session_attrs"] == "read-write" {
|
||||||
config.AfterConnectFunc = AfterConnectTargetSessionAttrsReadWrite
|
config.AfterConnectFunc = AfterConnectTargetSessionAttrsReadWrite
|
||||||
} else if settings["target_session_attrs"] != "any" {
|
} 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
|
return config, nil
|
||||||
@@ -409,11 +409,11 @@ func configTLS(settings map[string]string) ([]*tls.Config, error) {
|
|||||||
caPath := sslrootcert
|
caPath := sslrootcert
|
||||||
caCert, err := ioutil.ReadFile(caPath)
|
caCert, err := ioutil.ReadFile(caPath)
|
||||||
if err != nil {
|
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) {
|
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
|
tlsConfig.RootCAs = caCertPool
|
||||||
@@ -421,13 +421,13 @@ func configTLS(settings map[string]string) ([]*tls.Config, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sslcert != "" && sslkey == "") || (sslcert == "" && sslkey != "") {
|
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 != "" {
|
if sslcert != "" && sslkey != "" {
|
||||||
cert, err := tls.LoadX509KeyPair(sslcert, sslkey)
|
cert, err := tls.LoadX509KeyPair(sslcert, sslkey)
|
||||||
if err != nil {
|
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}
|
tlsConfig.Certificates = []tls.Certificate{cert}
|
||||||
|
|||||||
@@ -5,10 +5,11 @@ go 1.12
|
|||||||
require (
|
require (
|
||||||
github.com/jackc/pgio v1.0.0
|
github.com/jackc/pgio v1.0.0
|
||||||
github.com/jackc/pgpassfile 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/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190419041544-9b6a681f50bf
|
||||||
github.com/pkg/errors v0.8.1
|
github.com/pkg/errors v0.8.1
|
||||||
github.com/stretchr/testify v1.3.0
|
github.com/stretchr/testify v1.3.0
|
||||||
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a
|
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a
|
||||||
golang.org/x/text v0.3.0
|
golang.org/x/text v0.3.0
|
||||||
|
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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/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 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
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=
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ import (
|
|||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
"net"
|
"net"
|
||||||
@@ -18,6 +16,7 @@ import (
|
|||||||
|
|
||||||
"github.com/jackc/pgio"
|
"github.com/jackc/pgio"
|
||||||
"github.com/jackc/pgproto3/v2"
|
"github.com/jackc/pgproto3/v2"
|
||||||
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -232,7 +231,7 @@ func connect(ctx context.Context, config *Config, fallbackConfig *FallbackConfig
|
|||||||
err := config.AfterConnectFunc(ctx, pgConn)
|
err := config.AfterConnectFunc(ctx, pgConn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
pgConn.conn.Close()
|
pgConn.conn.Close()
|
||||||
return nil, fmt.Errorf("AfterConnectFunc: %v", err)
|
return nil, errors.Errorf("AfterConnectFunc: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pgConn, nil
|
return pgConn, nil
|
||||||
@@ -601,7 +600,7 @@ func (pgConn *PgConn) CancelRequest(ctx context.Context) error {
|
|||||||
|
|
||||||
_, err = cancelConn.Read(buf)
|
_, err = cancelConn.Read(buf)
|
||||||
if err != io.EOF {
|
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
|
return nil
|
||||||
@@ -757,7 +756,7 @@ func (pgConn *PgConn) execExtendedPrefix(ctx context.Context, paramValues [][]by
|
|||||||
result := &pgConn.resultReader
|
result := &pgConn.resultReader
|
||||||
|
|
||||||
if len(paramValues) > math.MaxUint16 {
|
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
|
result.closed = true
|
||||||
pgConn.unlock()
|
pgConn.unlock()
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user