diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2023-06-23 17:11:14 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2023-07-10 14:53:33 +0200 |
commit | 991053fdffe13143f4105ab45f2000d40188f3aa (patch) | |
tree | f8c918f2aae1b8dc655ddd79fde1b7e27f964e16 /src/network/access/qhttp2protocolhandler.cpp | |
parent | f49e62e78267ac568c98a696258d87d7d3ccbb4e (diff) |
http2: use qAddOverflow instead of local function
Change-Id: Ice7f0f026353f5668a437cc35d9b21cde0a69182
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Konrad Kujawa <konrad.kujawa@qt.io>
Diffstat (limited to 'src/network/access/qhttp2protocolhandler.cpp')
-rw-r--r-- | src/network/access/qhttp2protocolhandler.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp index 6a55454ea7..f8b728a85e 100644 --- a/src/network/access/qhttp2protocolhandler.cpp +++ b/src/network/access/qhttp2protocolhandler.cpp @@ -120,13 +120,6 @@ QUrl urlkey_from_request(const QHttpNetworkRequest &request) return url; } -bool sum_will_overflow(qint32 windowSize, qint32 delta) -{ - if (windowSize > 0) - return std::numeric_limits<qint32>::max() - windowSize < delta; - return std::numeric_limits<qint32>::min() - windowSize > delta; -} - }// Unnamed namespace // Since we anyway end up having this in every function definition: @@ -884,9 +877,10 @@ void QHttp2ProtocolHandler::handleWINDOW_UPDATE() const auto streamID = inboundFrame.streamID(); if (streamID == Http2::connectionStreamID) { - if (!valid || sum_will_overflow(sessionSendWindowSize, delta)) + qint32 sum = 0; + if (!valid || qAddOverflow(sessionSendWindowSize, qint32(delta), &sum)) return connectionError(PROTOCOL_ERROR, "WINDOW_UPDATE invalid delta"); - sessionSendWindowSize += delta; + sessionSendWindowSize = sum; } else { auto it = activeStreams.find(streamID); if (it == activeStreams.end()) { @@ -894,7 +888,8 @@ void QHttp2ProtocolHandler::handleWINDOW_UPDATE() return; } Stream &stream = it.value(); - if (!valid || sum_will_overflow(stream.sendWindow, delta)) { + qint32 sum = 0; + if (!valid || qAddOverflow(stream.sendWindow, qint32(delta), &sum)) { finishStreamWithError(stream, QNetworkReply::ProtocolFailure, "invalid WINDOW_UPDATE delta"_L1); sendRST_STREAM(streamID, PROTOCOL_ERROR); @@ -902,7 +897,7 @@ void QHttp2ProtocolHandler::handleWINDOW_UPDATE() deleteActiveStream(streamID); return; } - stream.sendWindow += delta; + stream.sendWindow = sum; } // Since we're in _q_receiveReply at the moment, let's first handle other @@ -1033,11 +1028,12 @@ bool QHttp2ProtocolHandler::acceptSetting(Http2::Settings identifier, quint32 ne std::vector<quint32> brokenStreams; brokenStreams.reserve(activeStreams.size()); for (auto &stream : activeStreams) { - if (sum_will_overflow(stream.sendWindow, delta)) { + qint32 sum = 0; + if (qAddOverflow(stream.sendWindow, delta, &sum)) { brokenStreams.push_back(stream.streamID); continue; } - stream.sendWindow += delta; + stream.sendWindow = sum; } for (auto id : brokenStreams) { |