From 9b386127a091ff12229709b4a60ad6d4e8b05512 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 Pick-to: 6.7 Change-Id: I653b20c24c1429fe88d476beb1ca952aa1bbb320 Reviewed-by: MÃ¥rten Nordheim --- 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 ed2874c55a6..415f0cd9f52 100644 --- a/src/network/access/qhttp2connection.cpp +++ b/src/network/access/qhttp2connection.cpp @@ -793,8 +793,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 219e93cedc2..47049423890 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)