@@ -32,11 +32,11 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
32
32
// read packet header
33
33
data , err := mc .buf .readNext (4 )
34
34
if err != nil {
35
+ mc .close ()
35
36
if cerr := mc .canceled .Value (); cerr != nil {
36
37
return nil , cerr
37
38
}
38
39
mc .log (err )
39
- mc .Close ()
40
40
return nil , ErrInvalidConn
41
41
}
42
42
@@ -45,7 +45,7 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
45
45
46
46
// check packet sync [8 bit]
47
47
if data [3 ] != mc .sequence {
48
- mc .Close ()
48
+ mc .close ()
49
49
if data [3 ] > mc .sequence {
50
50
return nil , ErrPktSyncMul
51
51
}
@@ -59,7 +59,7 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
59
59
// there was no previous packet
60
60
if prevData == nil {
61
61
mc .log (ErrMalformPkt )
62
- mc .Close ()
62
+ mc .close ()
63
63
return nil , ErrInvalidConn
64
64
}
65
65
@@ -69,11 +69,11 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
69
69
// read packet body [pktLen bytes]
70
70
data , err = mc .buf .readNext (pktLen )
71
71
if err != nil {
72
+ mc .close ()
72
73
if cerr := mc .canceled .Value (); cerr != nil {
73
74
return nil , cerr
74
75
}
75
76
mc .log (err )
76
- mc .Close ()
77
77
return nil , ErrInvalidConn
78
78
}
79
79
@@ -125,10 +125,10 @@ func (mc *mysqlConn) writePacket(data []byte) error {
125
125
126
126
n , err := mc .netConn .Write (data [:4 + size ])
127
127
if err != nil {
128
+ mc .cleanup ()
128
129
if cerr := mc .canceled .Value (); cerr != nil {
129
130
return cerr
130
131
}
131
- mc .cleanup ()
132
132
if n == 0 && pktLen == len (data )- 4 {
133
133
// only for the first loop iteration when nothing was written yet
134
134
mc .log (err )
@@ -162,11 +162,6 @@ func (mc *mysqlConn) writePacket(data []byte) error {
162
162
func (mc * mysqlConn ) readHandshakePacket () (data []byte , plugin string , err error ) {
163
163
data , err = mc .readPacket ()
164
164
if err != nil {
165
- // for init we can rewrite this to ErrBadConn for sql.Driver to retry, since
166
- // in connection initialization we don't risk retrying non-idempotent actions.
167
- if err == ErrInvalidConn {
168
- return nil , "" , driver .ErrBadConn
169
- }
170
165
return
171
166
}
172
167
@@ -312,9 +307,8 @@ func (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string
312
307
// Calculate packet length and get buffer with that size
313
308
data , err := mc .buf .takeBuffer (pktLen + 4 )
314
309
if err != nil {
315
- // cannot take the buffer. Something must be wrong with the connection
316
- mc .log (err )
317
- return errBadConnNoWrite
310
+ mc .cleanup ()
311
+ return err
318
312
}
319
313
320
314
// ClientFlags [32 bit]
@@ -404,9 +398,8 @@ func (mc *mysqlConn) writeAuthSwitchPacket(authData []byte) error {
404
398
pktLen := 4 + len (authData )
405
399
data , err := mc .buf .takeBuffer (pktLen )
406
400
if err != nil {
407
- // cannot take the buffer. Something must be wrong with the connection
408
- mc .log (err )
409
- return errBadConnNoWrite
401
+ mc .cleanup ()
402
+ return err
410
403
}
411
404
412
405
// Add the auth data [EOF]
@@ -424,9 +417,7 @@ func (mc *mysqlConn) writeCommandPacket(command byte) error {
424
417
425
418
data , err := mc .buf .takeSmallBuffer (4 + 1 )
426
419
if err != nil {
427
- // cannot take the buffer. Something must be wrong with the connection
428
- mc .log (err )
429
- return errBadConnNoWrite
420
+ return err
430
421
}
431
422
432
423
// Add command byte
@@ -443,9 +434,7 @@ func (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) error {
443
434
pktLen := 1 + len (arg )
444
435
data , err := mc .buf .takeBuffer (pktLen + 4 )
445
436
if err != nil {
446
- // cannot take the buffer. Something must be wrong with the connection
447
- mc .log (err )
448
- return errBadConnNoWrite
437
+ return err
449
438
}
450
439
451
440
// Add command byte
@@ -464,9 +453,7 @@ func (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) error {
464
453
465
454
data , err := mc .buf .takeSmallBuffer (4 + 1 + 4 )
466
455
if err != nil {
467
- // cannot take the buffer. Something must be wrong with the connection
468
- mc .log (err )
469
- return errBadConnNoWrite
456
+ return err
470
457
}
471
458
472
459
// Add command byte
@@ -1007,9 +994,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
1007
994
// In this case the len(data) == cap(data) which is used to optimise the flow below.
1008
995
}
1009
996
if err != nil {
1010
- // cannot take the buffer. Something must be wrong with the connection
1011
- mc .log (err )
1012
- return errBadConnNoWrite
997
+ return err
1013
998
}
1014
999
1015
1000
// command [1 byte]
@@ -1207,8 +1192,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
1207
1192
if valuesCap != cap (paramValues ) {
1208
1193
data = append (data [:pos ], paramValues ... )
1209
1194
if err = mc .buf .store (data ); err != nil {
1210
- mc .log (err )
1211
- return errBadConnNoWrite
1195
+ return err
1212
1196
}
1213
1197
}
1214
1198
0 commit comments