fix bug of read to many bytes
This commit is contained in:
parent
f60f43046d
commit
f5b8337638
|
@ -12,17 +12,17 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type MysqlSession struct {
|
type MysqlSession struct {
|
||||||
connectionID *string
|
connectionID *string
|
||||||
visitUser *string
|
visitUser *string
|
||||||
visitDB *string
|
visitDB *string
|
||||||
clientHost *string
|
clientHost *string
|
||||||
clientPort int
|
clientPort int
|
||||||
serverIP *string
|
serverIP *string
|
||||||
serverPort int
|
serverPort int
|
||||||
stmtBeginTime int64
|
stmtBeginTime int64
|
||||||
// packageOffset int64
|
// packageOffset int64
|
||||||
beginSeqID int64
|
beginSeqID int64
|
||||||
endSeqID int64
|
endSeqID int64
|
||||||
coverRanges *coverRanges
|
coverRanges *coverRanges
|
||||||
expectReceiveSize int
|
expectReceiveSize int
|
||||||
expectSendSize int
|
expectSendSize int
|
||||||
|
@ -59,7 +59,7 @@ func NewMysqlSession(
|
||||||
queryPieceReceiver: receiver,
|
queryPieceReceiver: receiver,
|
||||||
closeConn: make(chan bool, 1),
|
closeConn: make(chan bool, 1),
|
||||||
expectReceiveSize: -1,
|
expectReceiveSize: -1,
|
||||||
coverRanges: NewCoverRanges(),
|
coverRanges: NewCoverRanges(),
|
||||||
ignoreAckID: -1,
|
ignoreAckID: -1,
|
||||||
sendSize: 0,
|
sendSize: 0,
|
||||||
pkgCacheLock: sync.Mutex{},
|
pkgCacheLock: sync.Mutex{},
|
||||||
|
@ -100,7 +100,7 @@ func (ms *MysqlSession) resetBeginTime() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MysqlSession) readFromServer(bytes []byte) {
|
func (ms *MysqlSession) readFromServer(bytes []byte) {
|
||||||
if ms.expectSendSize < 1 {
|
if ms.expectSendSize < 1 && len(bytes) > 4 {
|
||||||
ms.expectSendSize = extractMysqlPayloadSize(bytes[:4])
|
ms.expectSendSize = extractMysqlPayloadSize(bytes[:4])
|
||||||
contents := bytes[4:]
|
contents := bytes[4:]
|
||||||
if ms.prepareInfo != nil && contents[0] == 0 {
|
if ms.prepareInfo != nil && contents[0] == 0 {
|
||||||
|
@ -115,7 +115,7 @@ func (ms *MysqlSession) checkFinish() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
checkNode := ms.coverRanges.head.next
|
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
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +160,6 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) {
|
||||||
ms.beginSeqID = seqID
|
ms.beginSeqID = seqID
|
||||||
ms.endSeqID = seqID
|
ms.endSeqID = seqID
|
||||||
|
|
||||||
|
|
||||||
if int64(ms.expectReceiveSize) < int64(len(contents)) {
|
if int64(ms.expectReceiveSize) < int64(len(contents)) {
|
||||||
log.Warnf("receive invalid mysql packet")
|
log.Warnf("receive invalid mysql packet")
|
||||||
return
|
return
|
||||||
|
@ -192,7 +191,7 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) {
|
||||||
if seqOffset+contentSize > int64(len(ms.cachedStmtBytes)) {
|
if seqOffset+contentSize > int64(len(ms.cachedStmtBytes)) {
|
||||||
// not in a normal mysql packet
|
// not in a normal mysql packet
|
||||||
log.Debugf("receive an unexpect packet")
|
log.Debugf("receive an unexpect packet")
|
||||||
ms.clear()
|
ms.clear()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,7 +203,6 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) {
|
||||||
// ms.expectReceiveSize = ms.expectReceiveSize - int(contentSize)
|
// ms.expectReceiveSize = ms.expectReceiveSize - int(contentSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (ms *MysqlSession) GenerateQueryPiece() (qp model.QueryPiece) {
|
func (ms *MysqlSession) GenerateQueryPiece() (qp model.QueryPiece) {
|
||||||
defer ms.clear()
|
defer ms.clear()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue