check header
Test / testing (>=1.20, ubuntu-latest) (push) Waiting to run Details
Test / testing (1.19.13, ubuntu-latest) (push) Has been cancelled Details

This commit is contained in:
Akvicor 2024-03-12 00:16:47 +08:00
parent 83e1b54acc
commit 8c832fb584
1 changed files with 6 additions and 6 deletions

View File

@ -187,6 +187,12 @@ func (p *protocolPackage) isEncrypted() bool {
// 如果协议头标志(prefix)匹配不断从buf中取出数据填充到package结构体
// 如果buf中的数据出错无法正确提取package, 则返回(nil,true), 且已从buf中提取的数据不会退回buf
func parsePackage(buf *bytes.Buffer) (*protocolPackage, error) {
// 协议头标志不匹配删除未知数据寻找下一个package起始位置
if !bytes.Equal(prefix[:], buf.Bytes()[headOffsetPrefix:headOffsetPrefix+headLengthPrefix]) {
glog.Trace("[protocol_package] prefix does not match, need %v got %v", prefix, buf.Bytes()[headOffsetPrefix:headOffsetPrefix+headLengthPrefix])
nextPackageHead(buf)
return nil, fmt.Errorf("prefix does not match, need %v got %v", prefix, buf.Bytes()[headOffsetPrefix:headOffsetPrefix+headLengthPrefix])
}
// 判断package的版本
// 暂时只处理VERSION版本的package
if buf.Len() < headOffsetVersion+headLengthVersion {
@ -205,12 +211,6 @@ func parsePackage(buf *bytes.Buffer) (*protocolPackage, error) {
}
head := make([]byte, packageHeadSize)
copy(head, buf.Bytes()[:packageHeadSize])
// 协议头标志不匹配删除未知数据寻找下一个package起始位置
if !bytes.Equal(prefix[:], head[headOffsetPrefix:headOffsetPrefix+headLengthPrefix]) {
glog.Trace("[protocol_package] prefix does not match, need %v got %v", prefix, head[headOffsetPrefix:headOffsetPrefix+headLengthPrefix])
nextPackageHead(buf)
return nil, fmt.Errorf("prefix does not match, need %v got %v", prefix, head[headOffsetPrefix:headOffsetPrefix+headLengthPrefix])
}
// 检查head是否完整删除未知数据寻找下一个package起始位置
headChecksum := util.BytesSliceToUInt32(head[headOffsetCRC32Checksum : headOffsetCRC32Checksum+headLengthCRC32Checksum])
headCrc32 := util.NewCRC32().FromBytes(head[headOffsetNeedCheck:]).Value()