summaryrefslogtreecommitdiffstats
path: root/src/network/access/qhttp2protocolhandler.cpp
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2023-06-23 17:11:14 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2023-07-10 14:53:33 +0200
commit991053fdffe13143f4105ab45f2000d40188f3aa (patch)
treef8c918f2aae1b8dc655ddd79fde1b7e27f964e16 /src/network/access/qhttp2protocolhandler.cpp
parentf49e62e78267ac568c98a696258d87d7d3ccbb4e (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.cpp22
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) {