Skip to content

Commit 9c487b7

Browse files
committed
improve packets.go
1 parent 0c65ab7 commit 9c487b7

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

packets.go

+20-17
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ func (mc *mysqlConn) writePacket(data []byte) error {
117117
// Write packet
118118
if mc.writeTimeout > 0 {
119119
if err := mc.netConn.SetWriteDeadline(time.Now().Add(mc.writeTimeout)); err != nil {
120+
mc.log(err)
121+
mc.cleanup()
120122
return err
121123
}
122124
}
@@ -296,7 +298,7 @@ func (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string
296298
data, err := mc.buf.takeBuffer(pktLen + 4)
297299
if err != nil {
298300
// cannot take the buffer. Something must be wrong with the connection
299-
mc.cleanup() // Avoid repeated "busy buffer" errors.
301+
mc.cleanup()
300302
return err
301303
}
302304

@@ -515,32 +517,33 @@ func (mc *okHandler) readResultOK() error {
515517
}
516518

517519
// 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
519521
func (mc *okHandler) readResultSetHeaderPacket() (int, error) {
520522
// handleOkPacket replaces both values; other cases leave the values unchanged.
521523
mc.result.affectedRows = append(mc.result.affectedRows, 0)
522524
mc.result.insertIds = append(mc.result.insertIds, 0)
523525

524526
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+
}
530530

531-
case iERR:
532-
return 0, mc.conn().handleErrorPacket(data)
531+
switch data[0] {
532+
case iOK:
533+
return 0, mc.handleOkPacket(data)
533534

534-
case iLocalInFile:
535-
return 0, mc.handleInFileRequest(string(data[1:]))
536-
}
535+
case iERR:
536+
return 0, mc.conn().handleErrorPacket(data)
537537

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:]))
542540
}
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
544547
}
545548

546549
// Error Packet

0 commit comments

Comments
 (0)