Remove public fields from PgConn
- Access TxStatus via method - Make Config private fixes #7
This commit is contained in:
+1
-1
@@ -31,7 +31,7 @@ const clientNonceLen = 18
|
|||||||
|
|
||||||
// Perform SCRAM authentication.
|
// Perform SCRAM authentication.
|
||||||
func (c *PgConn) scramAuth(serverAuthMechanisms []string) error {
|
func (c *PgConn) scramAuth(serverAuthMechanisms []string) error {
|
||||||
sc, err := newScramClient(serverAuthMechanisms, c.Config.Password)
|
sc, err := newScramClient(serverAuthMechanisms, c.config.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,10 +69,10 @@ type PgConn struct {
|
|||||||
pid uint32 // backend pid
|
pid uint32 // backend pid
|
||||||
secretKey uint32 // key to use to send a cancel query message to the server
|
secretKey uint32 // key to use to send a cancel query message to the server
|
||||||
parameterStatuses map[string]string // parameters that have been reported by the server
|
parameterStatuses map[string]string // parameters that have been reported by the server
|
||||||
TxStatus byte
|
txStatus byte
|
||||||
frontend Frontend
|
frontend Frontend
|
||||||
|
|
||||||
Config *Config
|
config *Config
|
||||||
|
|
||||||
status byte // One of connStatus* constants
|
status byte // One of connStatus* constants
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ func ConnectConfig(ctx context.Context, config *Config) (pgConn *PgConn, err err
|
|||||||
|
|
||||||
func connect(ctx context.Context, config *Config, fallbackConfig *FallbackConfig) (*PgConn, error) {
|
func connect(ctx context.Context, config *Config, fallbackConfig *FallbackConfig) (*PgConn, error) {
|
||||||
pgConn := new(PgConn)
|
pgConn := new(PgConn)
|
||||||
pgConn.Config = config
|
pgConn.config = config
|
||||||
pgConn.wbuf = make([]byte, 0, 1024)
|
pgConn.wbuf = make([]byte, 0, 1024)
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
@@ -261,9 +261,9 @@ func (pgConn *PgConn) rxAuthenticationX(msg *pgproto3.Authentication) (err error
|
|||||||
switch msg.Type {
|
switch msg.Type {
|
||||||
case pgproto3.AuthTypeOk:
|
case pgproto3.AuthTypeOk:
|
||||||
case pgproto3.AuthTypeCleartextPassword:
|
case pgproto3.AuthTypeCleartextPassword:
|
||||||
err = pgConn.txPasswordMessage(pgConn.Config.Password)
|
err = pgConn.txPasswordMessage(pgConn.config.Password)
|
||||||
case pgproto3.AuthTypeMD5Password:
|
case pgproto3.AuthTypeMD5Password:
|
||||||
digestedPassword := "md5" + hexMD5(hexMD5(pgConn.Config.Password+pgConn.Config.User)+string(msg.Salt[:]))
|
digestedPassword := "md5" + hexMD5(hexMD5(pgConn.config.Password+pgConn.config.User)+string(msg.Salt[:]))
|
||||||
err = pgConn.txPasswordMessage(digestedPassword)
|
err = pgConn.txPasswordMessage(digestedPassword)
|
||||||
case pgproto3.AuthTypeSASL:
|
case pgproto3.AuthTypeSASL:
|
||||||
err = pgConn.scramAuth(msg.SASLAuthMechanisms)
|
err = pgConn.scramAuth(msg.SASLAuthMechanisms)
|
||||||
@@ -390,7 +390,7 @@ func (pgConn *PgConn) receiveMessage() (pgproto3.BackendMessage, error) {
|
|||||||
|
|
||||||
switch msg := msg.(type) {
|
switch msg := msg.(type) {
|
||||||
case *pgproto3.ReadyForQuery:
|
case *pgproto3.ReadyForQuery:
|
||||||
pgConn.TxStatus = msg.TxStatus
|
pgConn.txStatus = msg.TxStatus
|
||||||
case *pgproto3.ParameterStatus:
|
case *pgproto3.ParameterStatus:
|
||||||
pgConn.parameterStatuses[msg.Name] = msg.Value
|
pgConn.parameterStatuses[msg.Name] = msg.Value
|
||||||
case *pgproto3.ErrorResponse:
|
case *pgproto3.ErrorResponse:
|
||||||
@@ -399,12 +399,12 @@ func (pgConn *PgConn) receiveMessage() (pgproto3.BackendMessage, error) {
|
|||||||
return nil, ErrorResponseToPgError(msg)
|
return nil, ErrorResponseToPgError(msg)
|
||||||
}
|
}
|
||||||
case *pgproto3.NoticeResponse:
|
case *pgproto3.NoticeResponse:
|
||||||
if pgConn.Config.OnNotice != nil {
|
if pgConn.config.OnNotice != nil {
|
||||||
pgConn.Config.OnNotice(pgConn, noticeResponseToNotice(msg))
|
pgConn.config.OnNotice(pgConn, noticeResponseToNotice(msg))
|
||||||
}
|
}
|
||||||
case *pgproto3.NotificationResponse:
|
case *pgproto3.NotificationResponse:
|
||||||
if pgConn.Config.OnNotification != nil {
|
if pgConn.config.OnNotification != nil {
|
||||||
pgConn.Config.OnNotification(pgConn, &Notification{PID: msg.PID, Channel: msg.Channel, Payload: msg.Payload})
|
pgConn.config.OnNotification(pgConn, &Notification{PID: msg.PID, Channel: msg.Channel, Payload: msg.Payload})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -421,6 +421,11 @@ func (pgConn *PgConn) PID() uint32 {
|
|||||||
return pgConn.pid
|
return pgConn.pid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TxStatus returns the current TxStatus as reported by the server.
|
||||||
|
func (pgConn *PgConn) TxStatus() byte {
|
||||||
|
return pgConn.txStatus
|
||||||
|
}
|
||||||
|
|
||||||
// SecretKey returns the backend secret key used to send a cancel query message to the server.
|
// SecretKey returns the backend secret key used to send a cancel query message to the server.
|
||||||
func (pgConn *PgConn) SecretKey() uint32 {
|
func (pgConn *PgConn) SecretKey() uint32 {
|
||||||
return pgConn.secretKey
|
return pgConn.secretKey
|
||||||
@@ -618,7 +623,7 @@ func (pgConn *PgConn) CancelRequest(ctx context.Context) error {
|
|||||||
// the connection config. This is important in high availability configurations where fallback connections may be
|
// the connection config. This is important in high availability configurations where fallback connections may be
|
||||||
// specified or DNS may be used to load balance.
|
// specified or DNS may be used to load balance.
|
||||||
serverAddr := pgConn.conn.RemoteAddr()
|
serverAddr := pgConn.conn.RemoteAddr()
|
||||||
cancelConn, err := pgConn.Config.DialFunc(ctx, serverAddr.Network(), serverAddr.String())
|
cancelConn, err := pgConn.config.DialFunc(ctx, serverAddr.Network(), serverAddr.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user