aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorØystein Heskestad <oystein.heskestad@qt.io>2021-06-21 08:53:10 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-25 12:35:23 +0000
commitb333a1f317527a45f8aa15f72b3896a0fc0b000a (patch)
tree44e8c229cc77a4f76dc41db7cdbb564470783afb
parentf24c55f26ecbca4388bf1a5af308e347c6480707 (diff)
Clear frame before emitting signals to prevent duplicating messages
[ChangeLog] Clear frame before emitting signals to prevent duplicating messages Fixes: QTBUG-87279 Change-Id: Iab296f443943eeec3b2a0fbb4f79c5abb2605ca7 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit d196801706821a890bda8b22508c2957a50eff25) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/websockets/qwebsocketdataprocessor.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/websockets/qwebsocketdataprocessor.cpp b/src/websockets/qwebsocketdataprocessor.cpp
index e1319c6..b02fa08 100644
--- a/src/websockets/qwebsocketdataprocessor.cpp
+++ b/src/websockets/qwebsocketdataprocessor.cpp
@@ -198,6 +198,7 @@ bool QWebSocketDataProcessor::process(QIODevice *pIoDevice)
return true;
}
+ bool isFinalFrame = frame.isFinalFrame();
if (m_opCode == QWebSocketProtocol::OpCodeText) {
QString frameTxt = m_decoder(frame.payload());
if (Q_UNLIKELY(m_decoder.hasError())) {
@@ -207,14 +208,17 @@ bool QWebSocketDataProcessor::process(QIODevice *pIoDevice)
return true;
} else {
m_textMessage.append(frameTxt);
- Q_EMIT textFrameReceived(frameTxt, frame.isFinalFrame());
+ frame.clear();
+ Q_EMIT textFrameReceived(frameTxt, isFinalFrame);
}
} else {
m_binaryMessage.append(frame.payload());
- Q_EMIT binaryFrameReceived(frame.payload(), frame.isFinalFrame());
+ QByteArray payload = frame.payload();
+ frame.clear();
+ Q_EMIT binaryFrameReceived(payload, isFinalFrame);
}
- if (frame.isFinalFrame()) {
+ if (isFinalFrame) {
isDone = true;
if (m_opCode == QWebSocketProtocol::OpCodeText) {
const QString textMessage(m_textMessage);