diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-01-17 18:20:40 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-18 00:20:27 +0100 |
commit | aa66bb128b4d853c6de200bf374758025dcd94b2 (patch) | |
tree | 97489863843aacc053c88c117b9203a6c30f5058 /src/websockets/qwebsocket_p.cpp | |
parent | 6c12e81e58b5e38c4d075cc6d7adaaaf01d80879 (diff) | |
download | qtwebsockets-aa66bb128b4d853c6de200bf374758025dcd94b2.tar.gz |
Add a few more const refs
In case of processPing we need to make a copy that potentially detaches
when masking is requested, but pings are < 125 bytes.
Before this code would copy the byte array in the same way much earlier.
Change-Id: If0592bb4b508eeb11fdbf05c4bb98b9679ed0549
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Diffstat (limited to 'src/websockets/qwebsocket_p.cpp')
-rw-r--r-- | src/websockets/qwebsocket_p.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp index 8505ddb..e00f209 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp @@ -440,14 +440,13 @@ void QWebSocketPrivate::open(const QUrl &url, bool mask) /*! \internal */ -void QWebSocketPrivate::ping(QByteArray payload) +void QWebSocketPrivate::ping(const QByteArray &payload) { - if (payload.length() > 125) - payload.truncate(125); + QByteArray payloadTruncated = payload.left(125); m_pingTimer.restart(); - QByteArray pingFrame = getFrameHeader(QWebSocketProtocol::OC_PING, payload.size(), + QByteArray pingFrame = getFrameHeader(QWebSocketProtocol::OC_PING, payloadTruncated.size(), 0 /*do not mask*/, true); - pingFrame.append(payload); + pingFrame.append(payloadTruncated); qint64 ret = writeFrame(pingFrame); Q_UNUSED(ret); } @@ -1024,7 +1023,7 @@ void QWebSocketPrivate::processData() /*! \internal */ -void QWebSocketPrivate::processPing(QByteArray data) +void QWebSocketPrivate::processPing(const QByteArray &data) { Q_ASSERT(m_pSocket); quint32 maskingKey = 0; @@ -1032,16 +1031,17 @@ void QWebSocketPrivate::processPing(QByteArray data) maskingKey = generateMaskingKey(); m_pSocket->write(getFrameHeader(QWebSocketProtocol::OC_PONG, data.size(), maskingKey, true)); if (data.size() > 0) { + QByteArray maskedData = data; if (m_mustMask) - QWebSocketProtocol::mask(&data, maskingKey); - m_pSocket->write(data); + QWebSocketProtocol::mask(&maskedData, maskingKey); + m_pSocket->write(maskedData); } } /*! \internal */ -void QWebSocketPrivate::processPong(QByteArray data) +void QWebSocketPrivate::processPong(const QByteArray &data) { Q_Q(QWebSocket); Q_EMIT q->pong(static_cast<quint64>(m_pingTimer.elapsed()), data); |