Skip to content

Commit 06b17e6

Browse files
committed
closed is now just bool flag.
1 parent 66fa137 commit 06b17e6

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

connection.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ package mysql
1010

1111
import (
1212
"database/sql/driver"
13-
"errors"
1413
"io"
1514
"net"
1615
"strconv"
@@ -46,7 +45,7 @@ type mysqlConn struct {
4645
finished chan<- struct{}
4746

4847
mu sync.Mutex // guards following fields
49-
closed error // set non-nil when conn is closed, before closech is closed
48+
closed bool // set true when conn is closed, before closech is closed
5049
canceledErr error // set non-nil if conn is canceled
5150
}
5251

@@ -99,7 +98,7 @@ func (mc *mysqlConn) Close() (err error) {
9998
err = mc.writeCommandPacket(comQuit)
10099
}
101100

102-
mc.cleanup(errors.New("mysql: connection is closed"))
101+
mc.cleanup()
103102

104103
return
105104
}
@@ -108,19 +107,16 @@ func (mc *mysqlConn) Close() (err error) {
108107
// function after successfully authentication, call Close instead. This function
109108
// is called before auth or on auth failure because MySQL will have already
110109
// closed the network connection.
111-
func (mc *mysqlConn) cleanup(err error) {
112-
if err == nil {
113-
panic("nil error")
114-
}
110+
func (mc *mysqlConn) cleanup() {
115111
mc.mu.Lock()
116112
defer mc.mu.Unlock()
117113

118-
if mc.closed != nil {
114+
if mc.closed {
119115
return
120116
}
121117

122118
// Makes cleanup idempotent
123-
mc.closed = err
119+
mc.closed = true
124120
close(mc.closech)
125121
if mc.netConn == nil {
126122
return
@@ -133,7 +129,7 @@ func (mc *mysqlConn) cleanup(err error) {
133129
func (mc *mysqlConn) isBroken() bool {
134130
mc.mu.Lock()
135131
defer mc.mu.Unlock()
136-
return mc.closed != nil
132+
return mc.closed
137133
}
138134

139135
func (mc *mysqlConn) Prepare(query string) (driver.Stmt, error) {
@@ -426,7 +422,7 @@ func (mc *mysqlConn) cancel(err error) {
426422
mc.mu.Lock()
427423
mc.canceledErr = err
428424
mc.mu.Unlock()
429-
mc.cleanup(errors.New("mysql: query canceled"))
425+
mc.cleanup()
430426
}
431427

432428
// canceled returns non-nil if the connection was closed due to context cancelation.

driver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,13 @@ func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
9999
// Reading Handshake Initialization Packet
100100
cipher, err := mc.readInitPacket()
101101
if err != nil {
102-
mc.cleanup(err)
102+
mc.cleanup()
103103
return nil, err
104104
}
105105

106106
// Send Client Authentication Packet
107107
if err = mc.writeAuthPacket(cipher); err != nil {
108-
mc.cleanup(err)
108+
mc.cleanup()
109109
return nil, err
110110
}
111111

@@ -114,7 +114,7 @@ func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
114114
// Authentication failed and MySQL has already closed the connection
115115
// (https://dev.mysql.com/doc/internals/en/authentication-fails.html).
116116
// Do not send COM_QUIT, just cleanup and return the error.
117-
mc.cleanup(err)
117+
mc.cleanup()
118118
return nil, err
119119
}
120120

packets.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,13 @@ func (mc *mysqlConn) writePacket(data []byte) error {
131131

132132
// Handle error
133133
if err == nil { // n != len(data)
134-
mc.cleanup(ErrMalformPkt)
134+
mc.cleanup()
135135
errLog.Print(ErrMalformPkt)
136136
} else {
137137
if cerr := mc.canceled(); cerr != nil {
138138
return cerr
139139
}
140-
mc.cleanup(err)
140+
mc.cleanup()
141141
errLog.Print(err)
142142
}
143143
return driver.ErrBadConn

0 commit comments

Comments
 (0)