From b71a4b9a2f208d2477481501f1fa8777184985e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Heskestad?= Date: Thu, 14 Mar 2024 14:58:18 +0100 Subject: [PATCH] QHttpConnection: Create new streams returns error when ids are exhausted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CreateStream returns a new error code, StreamIdsExhausted, when next stream id counter exceeds max stream id instead of assert. Task-number: QTBUG-122375 Change-Id: I653b20c24c1429fe88d476beb1ca952aa1bbb320 Reviewed-by: MÃ¥rten Nordheim (cherry picked from commit 9b386127a091ff12229709b4a60ad6d4e8b05512) Reviewed-by: Qt Cherry-pick Bot --- src/network/access/qhttp2connection.cpp | 3 ++- src/network/access/qhttp2connection_p.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/network/access/qhttp2connection.cpp b/src/network/access/qhttp2connection.cpp index 01adc6ad487..64e10724fa7 100644 --- a/src/network/access/qhttp2connection.cpp +++ b/src/network/access/qhttp2connection.cpp @@ -540,8 +540,9 @@ QHttp2Connection *QHttp2Connection::createDirectServerConnection(QIODevice *sock QH2Expected QHttp2Connection::createStream() { - Q_ASSERT(m_nextStreamID <= lastValidStreamID); Q_ASSERT(m_connectionType == Type::Client); // This overload is just for clients + if (m_nextStreamID > lastValidStreamID) + return { QHttp2Connection::CreateStreamError::StreamIdsExhausted }; return createStreamInternal(); } diff --git a/src/network/access/qhttp2connection_p.h b/src/network/access/qhttp2connection_p.h index 6733468bfae..5d525537e58 100644 --- a/src/network/access/qhttp2connection_p.h +++ b/src/network/access/qhttp2connection_p.h @@ -193,6 +193,7 @@ class Q_NETWORK_EXPORT QHttp2Connection : public QObject public: enum class CreateStreamError { MaxConcurrentStreamsReached, + StreamIdsExhausted, ReceivedGOAWAY, }; Q_ENUM(CreateStreamError)