From 7edc86feaf5dc280192fbd7bf2a0578cf89adaf0 Mon Sep 17 00:00:00 2001 From: goldenhawking Date: Fri, 15 Aug 2014 14:43:01 +0800 Subject: [PATCH] a bug caused by m_currentBlock.constData() has been fixed. the pointer returned by this method will be unavaliable when the block has been changed. --- FunctionalClientTest/maindialog.cpp | 3 ++- ZoomPipeline_FuncSvr/cluster/zp_clusternode.cpp | 3 ++- ZoomPipeline_FuncSvr/smartlink/st_clientnode_basetrans.cpp | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/FunctionalClientTest/maindialog.cpp b/FunctionalClientTest/maindialog.cpp index 136b904..796fb8c 100644 --- a/FunctionalClientTest/maindialog.cpp +++ b/FunctionalClientTest/maindialog.cpp @@ -335,7 +335,7 @@ int MainDialog::filter_message(QByteArray block, int offset) memcpy((void *)&m_currentHeader,headerptr,2); } - const char * ptrCurrData = m_currentBlock.constData(); + //Heart Beating if (m_currentHeader.Mark == 0xBEBE) { @@ -416,6 +416,7 @@ int MainDialog::filter_message(QByteArray block, int offset) } //end deal trans message else { + const char * ptrCurrData = m_currentBlock.constData(); displayMessage(tr("Client Send a unknown start Header %1 %2. Close client immediately.") .arg((int)(ptrCurrData[0])).arg((int)(ptrCurrData[1]))); m_currentMessageSize = 0; diff --git a/ZoomPipeline_FuncSvr/cluster/zp_clusternode.cpp b/ZoomPipeline_FuncSvr/cluster/zp_clusternode.cpp index 831a613..199ea4a 100644 --- a/ZoomPipeline_FuncSvr/cluster/zp_clusternode.cpp +++ b/ZoomPipeline_FuncSvr/cluster/zp_clusternode.cpp @@ -136,7 +136,7 @@ namespace ZP_Cluster{ memcpy((void *)&m_currentHeader,headerptr,2); } - const char * ptrCurrData = m_currentBlock.constData(); + if (m_currentHeader.Mark == 0x1234) //Valid Message { @@ -225,6 +225,7 @@ namespace ZP_Cluster{ } //end deal trans message else { + const char * ptrCurrData = m_currentBlock.constData(); emit evt_Message(this,tr("Client Send a unknown start Header %1 %2. Close client immediately.") .arg((int)(ptrCurrData[0])).arg((int)(ptrCurrData[1]))); m_currentMessageSize = 0; diff --git a/ZoomPipeline_FuncSvr/smartlink/st_clientnode_basetrans.cpp b/ZoomPipeline_FuncSvr/smartlink/st_clientnode_basetrans.cpp index af5dd6f..4979035 100644 --- a/ZoomPipeline_FuncSvr/smartlink/st_clientnode_basetrans.cpp +++ b/ZoomPipeline_FuncSvr/smartlink/st_clientnode_basetrans.cpp @@ -128,7 +128,7 @@ namespace ExampleServer{ memcpy((void *)&m_currentHeader,headerptr,2); } - const char * ptrCurrData = m_currentBlock.constData(); + //Heart Beating if (m_currentHeader.Mark == 0xBEBE) { @@ -148,7 +148,7 @@ namespace ExampleServer{ //Try to Get UUID Immediately if (m_bUUIDRecieved==false) { - EXAMPLE_HEARTBEATING * pHbMsg = (EXAMPLE_HEARTBEATING *)(ptrCurrData); + EXAMPLE_HEARTBEATING * pHbMsg = (EXAMPLE_HEARTBEATING *)(m_currentBlock.constData()); if (bIsValidUserId(pHbMsg->source_id)) { m_bUUIDRecieved = true; @@ -236,6 +236,7 @@ namespace ExampleServer{ } //end deal trans message else { + const char * ptrCurrData = m_currentBlock.constData(); emit evt_Message(this,tr("Client Send a unknown start Header %1 %2. Close client immediately.") .arg((int)(ptrCurrData[0])).arg((int)(ptrCurrData[1]))); m_currentMessageSize = 0; -- GitLab