diff --git a/session-dealer/mysql/session.go b/session-dealer/mysql/session.go index 99f6a96..418c263 100644 --- a/session-dealer/mysql/session.go +++ b/session-dealer/mysql/session.go @@ -12,17 +12,17 @@ import ( ) type MysqlSession struct { - connectionID *string - visitUser *string - visitDB *string - clientHost *string - clientPort int - serverIP *string - serverPort int - stmtBeginTime int64 + connectionID *string + visitUser *string + visitDB *string + clientHost *string + clientPort int + serverIP *string + serverPort int + stmtBeginTime int64 // packageOffset int64 - beginSeqID int64 - endSeqID int64 + beginSeqID int64 + endSeqID int64 coverRanges *coverRanges expectReceiveSize int expectSendSize int @@ -59,7 +59,7 @@ func NewMysqlSession( queryPieceReceiver: receiver, closeConn: make(chan bool, 1), expectReceiveSize: -1, - coverRanges: NewCoverRanges(), + coverRanges: NewCoverRanges(), ignoreAckID: -1, sendSize: 0, pkgCacheLock: sync.Mutex{}, @@ -100,7 +100,7 @@ func (ms *MysqlSession) resetBeginTime() { } func (ms *MysqlSession) readFromServer(bytes []byte) { - if ms.expectSendSize < 1 { + if ms.expectSendSize < 1 && len(bytes) > 4 { ms.expectSendSize = extractMysqlPayloadSize(bytes[:4]) contents := bytes[4:] if ms.prepareInfo != nil && contents[0] == 0 { @@ -115,7 +115,7 @@ func (ms *MysqlSession) checkFinish() bool { } checkNode := ms.coverRanges.head.next - if checkNode.end - checkNode.begin == int64(len(ms.cachedStmtBytes)) { + if checkNode.end-checkNode.begin == int64(len(ms.cachedStmtBytes)) { return true } @@ -160,7 +160,6 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) { ms.beginSeqID = seqID ms.endSeqID = seqID - if int64(ms.expectReceiveSize) < int64(len(contents)) { log.Warnf("receive invalid mysql packet") return @@ -192,7 +191,7 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) { if seqOffset+contentSize > int64(len(ms.cachedStmtBytes)) { // not in a normal mysql packet log.Debugf("receive an unexpect packet") - ms.clear() + ms.clear() return } @@ -204,7 +203,6 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) { // ms.expectReceiveSize = ms.expectReceiveSize - int(contentSize) } - func (ms *MysqlSession) GenerateQueryPiece() (qp model.QueryPiece) { defer ms.clear()