summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2024-10-15 16:01:38 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2024-10-20 19:32:16 +0200
commit238f656d613fc100a8d17ccc980843b39c0056eb (patch)
tree7f410f893138b4a36551a52b298eedd6aa2ebff6 /src
parent195a35dbfb2453ae37d9541c82745c5795fe8b9c (diff)
Http2: Always return an error on error
Instead of returning a nullptr in a potential OOM case. Pick-to: 6.8 Change-Id: Ib438eaa7550d193cb1207a5d3e48a78b882fa56e Reviewed-by: Matthias Rauter <matthias.rauter@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/network/access/qhttp2connection.cpp9
-rw-r--r--src/network/access/qhttp2connection_p.h1
2 files changed, 8 insertions, 2 deletions
diff --git a/src/network/access/qhttp2connection.cpp b/src/network/access/qhttp2connection.cpp
index e39e772d4fa..b3b3526af68 100644
--- a/src/network/access/qhttp2connection.cpp
+++ b/src/network/access/qhttp2connection.cpp
@@ -878,8 +878,13 @@ QHttp2Connection::createStreamInternal()
const quint32 streamID = m_nextStreamID;
if (size_t(m_maxConcurrentStreams) <= size_t(numActiveLocalStreams()))
return { QHttp2Connection::CreateStreamError::MaxConcurrentStreamsReached };
- m_nextStreamID += 2;
- return { createStreamInternal_impl(streamID) };
+
+ if (QHttp2Stream *ptr = createStreamInternal_impl(streamID)) {
+ m_nextStreamID += 2;
+ return {ptr};
+ }
+ // Connection could be broken, we could've ran out of memory, we don't know
+ return { QHttp2Connection::CreateStreamError::UnknownError };
}
QHttp2Stream *QHttp2Connection::createStreamInternal_impl(quint32 streamID)
diff --git a/src/network/access/qhttp2connection_p.h b/src/network/access/qhttp2connection_p.h
index aa7f046cea6..025d403b80c 100644
--- a/src/network/access/qhttp2connection_p.h
+++ b/src/network/access/qhttp2connection_p.h
@@ -213,6 +213,7 @@ public:
MaxConcurrentStreamsReached,
StreamIdsExhausted,
ReceivedGOAWAY,
+ UnknownError,
};
Q_ENUM(CreateStreamError)