diff options
author | Øystein Heskestad <oystein.heskestad@qt.io> | 2021-06-21 08:53:10 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-25 12:35:23 +0000 |
commit | b333a1f317527a45f8aa15f72b3896a0fc0b000a (patch) | |
tree | 44e8c229cc77a4f76dc41db7cdbb564470783afb | |
parent | f24c55f26ecbca4388bf1a5af308e347c6480707 (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.cpp | 10 |
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); |