From ad883b78ac157de2a798f34f7f7ae0a81cf0203d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Tue, 15 Oct 2024 16:01:38 +0200 Subject: [PATCH] Http2: Always return an error on error Instead of returning a nullptr in a potential OOM case. Change-Id: Ib438eaa7550d193cb1207a5d3e48a78b882fa56e Reviewed-by: Matthias Rauter (cherry picked from commit 238f656d613fc100a8d17ccc980843b39c0056eb) Reviewed-by: Qt Cherry-pick Bot --- src/network/access/qhttp2connection.cpp | 9 +++++++-- src/network/access/qhttp2connection_p.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/network/access/qhttp2connection.cpp b/src/network/access/qhttp2connection.cpp index e425e5faea2..2839b3b0bde 100644 --- a/src/network/access/qhttp2connection.cpp +++ b/src/network/access/qhttp2connection.cpp @@ -859,8 +859,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 9c8470dda93..e75eb8169fe 100644 --- a/src/network/access/qhttp2connection_p.h +++ b/src/network/access/qhttp2connection_p.h @@ -212,6 +212,7 @@ public: MaxConcurrentStreamsReached, StreamIdsExhausted, ReceivedGOAWAY, + UnknownError, }; Q_ENUM(CreateStreamError)