fix invalid packet
This commit is contained in:
parent
bb052b81dd
commit
44eaa27989
|
@ -794,15 +794,18 @@ void cliSend(SCliConn* pConn) {
|
||||||
int msgLen = transMsgLenFromCont(pMsg->contLen);
|
int msgLen = transMsgLenFromCont(pMsg->contLen);
|
||||||
STransMsgHead* pHead = transHeadFromCont(pMsg->pCont);
|
STransMsgHead* pHead = transHeadFromCont(pMsg->pCont);
|
||||||
|
|
||||||
pHead->ahandle = pCtx != NULL ? (uint64_t)pCtx->ahandle : 0;
|
if (pHead->comp == 0) {
|
||||||
pHead->noResp = REQUEST_NO_RESP(pMsg) ? 1 : 0;
|
pHead->ahandle = pCtx != NULL ? (uint64_t)pCtx->ahandle : 0;
|
||||||
pHead->persist = REQUEST_PERSIS_HANDLE(pMsg) ? 1 : 0;
|
pHead->noResp = REQUEST_NO_RESP(pMsg) ? 1 : 0;
|
||||||
pHead->msgType = pMsg->msgType;
|
pHead->persist = REQUEST_PERSIS_HANDLE(pMsg) ? 1 : 0;
|
||||||
pHead->msgLen = (int32_t)htonl((uint32_t)msgLen);
|
pHead->msgType = pMsg->msgType;
|
||||||
pHead->release = REQUEST_RELEASE_HANDLE(pCliMsg) ? 1 : 0;
|
pHead->msgLen = (int32_t)htonl((uint32_t)msgLen);
|
||||||
memcpy(pHead->user, pTransInst->user, strlen(pTransInst->user));
|
pHead->release = REQUEST_RELEASE_HANDLE(pCliMsg) ? 1 : 0;
|
||||||
pHead->traceId = pMsg->info.traceId;
|
memcpy(pHead->user, pTransInst->user, strlen(pTransInst->user));
|
||||||
pHead->magicNum = htonl(TRANS_MAGIC_NUM);
|
pHead->traceId = pMsg->info.traceId;
|
||||||
|
pHead->magicNum = htonl(TRANS_MAGIC_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
if (pHead->persist == 1) {
|
if (pHead->persist == 1) {
|
||||||
CONN_SET_PERSIST_BY_APP(pConn);
|
CONN_SET_PERSIST_BY_APP(pConn);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,21 +60,20 @@ int32_t transDecompressMsg(char** msg, int32_t len) {
|
||||||
STransMsgHead* pHead = (STransMsgHead*)(*msg);
|
STransMsgHead* pHead = (STransMsgHead*)(*msg);
|
||||||
if (pHead->comp == 0) return 0;
|
if (pHead->comp == 0) return 0;
|
||||||
|
|
||||||
char* pCont = transContFromHead(pHead);
|
char* pCont = transContFromHead(pHead);
|
||||||
|
|
||||||
STransCompMsg* pComp = (STransCompMsg*)pCont;
|
STransCompMsg* pComp = (STransCompMsg*)pCont;
|
||||||
int32_t oriLen = htonl(pComp->contLen);
|
int32_t oriLen = htonl(pComp->contLen);
|
||||||
|
|
||||||
char* buf = taosMemoryCalloc(1, oriLen + sizeof(STransMsgHead));
|
char* buf = taosMemoryCalloc(1, oriLen + sizeof(STransMsgHead));
|
||||||
STransMsgHead* pNewHead = (STransMsgHead*)buf;
|
STransMsgHead* pNewHead = (STransMsgHead*)buf;
|
||||||
|
int32_t decompLen = LZ4_decompress_safe(pCont + sizeof(STransCompMsg), pNewHead->content,
|
||||||
int32_t decompLen = LZ4_decompress_safe(pCont + sizeof(STransCompMsg), pNewHead->content,
|
len - sizeof(STransMsgHead) - sizeof(STransCompMsg), oriLen);
|
||||||
len - sizeof(STransMsgHead) - sizeof(STransCompMsg), oriLen);
|
|
||||||
memcpy((char*)pNewHead, (char*)pHead, sizeof(STransMsgHead));
|
memcpy((char*)pNewHead, (char*)pHead, sizeof(STransMsgHead));
|
||||||
|
|
||||||
pNewHead->msgLen = htonl(oriLen + sizeof(STransMsgHead));
|
pNewHead->msgLen = htonl(oriLen + sizeof(STransMsgHead));
|
||||||
|
|
||||||
taosMemoryFree(pHead);
|
taosMemoryFree(pHead);
|
||||||
|
|
||||||
*msg = buf;
|
*msg = buf;
|
||||||
if (decompLen != oriLen) {
|
if (decompLen != oriLen) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue