From eae108c9f072124d6b88bd79b3b2201d66e3f4b3 Mon Sep 17 00:00:00 2001 From: imtbkcat Date: Tue, 25 Dec 2018 19:11:13 +0800 Subject: [PATCH] remove magic number --- server/conn.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/server/conn.go b/server/conn.go index d8c9482753268..b9c1bc8feb1a5 100644 --- a/server/conn.go +++ b/server/conn.go @@ -259,13 +259,13 @@ func parseOldHandshakeResponseHeader(packet *handshakeResponse41, data []byte) ( packet.Capability = uint32(capability) // be compatible with Protocol::HandshakeResponse41 - packet.Capability = packet.Capability | 0x00000200 + packet.Capability = packet.Capability | mysql.ClientProtocol41 offset += 2 // skip max packet size offset += 3 // usa default CharsetID - packet.Collation = 33 + packet.Collation = mysql.CollationNames["utf8mb4_general_ci"] return offset, nil } @@ -294,7 +294,7 @@ func parseOldHandshakeResponseBody(packet *handshakeResponse41, data []byte, off offset += len(packet.Auth) + 1 } } else { - packet.Auth = data[offset:] + packet.Auth = data[offset : offset+bytes.IndexByte(data[offset:], 0)] offset += len(packet.Auth) + 1 } @@ -427,11 +427,15 @@ func (cc *clientConn) readOptionalSSLRequestAndHandshakeResponse() error { pos, err := parseHandshakeResponseHeader(&resp, data) if err != nil { - pos, err = parseOldHandshakeResponseHeader(&resp, data) - if err != nil { + if err == mysql.ErrMalformPacket { + pos, err = parseOldHandshakeResponseHeader(&resp, data) + if err != nil { + return errors.Trace(err) + } + isOldVersion = true + } else { return errors.Trace(err) } - isOldVersion = true } if (resp.Capability&mysql.ClientSSL > 0) && cc.server.tlsConfig != nil {