@@ -117,6 +117,8 @@ func (mc *mysqlConn) writePacket(data []byte) error {
117
117
// Write packet
118
118
if mc .writeTimeout > 0 {
119
119
if err := mc .netConn .SetWriteDeadline (time .Now ().Add (mc .writeTimeout )); err != nil {
120
+ mc .log (err )
121
+ mc .cleanup ()
120
122
return err
121
123
}
122
124
}
@@ -296,7 +298,7 @@ func (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string
296
298
data , err := mc .buf .takeBuffer (pktLen + 4 )
297
299
if err != nil {
298
300
// cannot take the buffer. Something must be wrong with the connection
299
- mc .cleanup () // Avoid repeated "busy buffer" errors.
301
+ mc .cleanup ()
300
302
return err
301
303
}
302
304
@@ -515,32 +517,33 @@ func (mc *okHandler) readResultOK() error {
515
517
}
516
518
517
519
// Result Set Header Packet
518
- // http ://dev.mysql.com/doc/internals/en/com-query-response .html#packet-ProtocolText::Resultset
520
+ // https ://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query_response .html
519
521
func (mc * okHandler ) readResultSetHeaderPacket () (int , error ) {
520
522
// handleOkPacket replaces both values; other cases leave the values unchanged.
521
523
mc .result .affectedRows = append (mc .result .affectedRows , 0 )
522
524
mc .result .insertIds = append (mc .result .insertIds , 0 )
523
525
524
526
data , err := mc .conn ().readPacket ()
525
- if err == nil {
526
- switch data [0 ] {
527
-
528
- case iOK :
529
- return 0 , mc .handleOkPacket (data )
527
+ if err != nil {
528
+ return 0 , err
529
+ }
530
530
531
- case iERR :
532
- return 0 , mc .conn ().handleErrorPacket (data )
531
+ switch data [0 ] {
532
+ case iOK :
533
+ return 0 , mc .handleOkPacket (data )
533
534
534
- case iLocalInFile :
535
- return 0 , mc .handleInFileRequest (string (data [1 :]))
536
- }
535
+ case iERR :
536
+ return 0 , mc .conn ().handleErrorPacket (data )
537
537
538
- // column count
539
- num , _ , _ := readLengthEncodedInteger (data )
540
- // ignore remaining data in the packet. see #1478.
541
- return int (num ), nil
538
+ case iLocalInFile :
539
+ return 0 , mc .handleInFileRequest (string (data [1 :]))
542
540
}
543
- return 0 , err
541
+
542
+ // column count
543
+ // https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query_response_text_resultset.html
544
+ num , _ , _ := readLengthEncodedInteger (data )
545
+ // ignore remaining data in the packet. see #1478.
546
+ return int (num ), nil
544
547
}
545
548
546
549
// Error Packet
0 commit comments