From 5cb9ee768861f655edfa56dd320add097da9d73fcb0316ff88bebfa1f6f92654 Mon Sep 17 00:00:00 2001 From: Christophe Giboudeaux Date: Mon, 20 Jun 2022 13:46:21 +0000 Subject: [PATCH] Accepting request 983989 from home:Vogtinator:qt5.15 - Add patch to fix some HTTP/2 communication (boo#1200715, kde#455540): * 0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch OBS-URL: https://build.opensuse.org/request/show/983989 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt:5.15/libqt5-qtbase?expand=0&rev=37 --- ...er-useless-limit-on-the-number-of-st.patch | 75 +++++++++++++++++++ libqt5-qtbase.changes | 6 ++ libqt5-qtbase.spec | 3 +- 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch diff --git a/0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch b/0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch new file mode 100644 index 0000000..886a454 --- /dev/null +++ b/0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch @@ -0,0 +1,75 @@ +From ec68c541a72bde122a1ab5ba89f41b58c370537f Mon Sep 17 00:00:00 2001 +From: Timur Pocheptsov +Date: Mon, 14 Jun 2021 14:38:27 +0200 +Subject: [PATCH] H2: remove a rather useless limit on the number of streams +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +SETTINGS for max concurrect number of streams is 'one direction' - this +is how our peer conveys the possible number of streams _we_ can open, +not _them_. If they choose to have it unlimited - let it be so. + +It's possible to send 0 as maximum number, also, it's possible to +reduce the maximum compared to initial at some point - then I have +to avoid integer overflows. + +Pick-to: 6.2 +Pick-to: 6.1 +Pick-to: 5.15 +Fixes: QTBUG-94470 +Change-Id: Ia02247acbaedd70998a4cab02082ba10f45cf78c +Reviewed-by: Mårten Nordheim +Reviewed-by: Edward Welbourne +(cherry picked from commit 46940ca73791e87e2366b80ac2884b3bcce716ce) +--- + src/network/access/http2/http2protocol_p.h | 3 --- + src/network/access/qhttp2protocolhandler.cpp | 10 +++------- + 2 files changed, 3 insertions(+), 10 deletions(-) + +diff --git a/src/network/access/http2/http2protocol_p.h b/src/network/access/http2/http2protocol_p.h +index b0af5aa919..ed5f2bf561 100644 +--- a/src/network/access/http2/http2protocol_p.h ++++ b/src/network/access/http2/http2protocol_p.h +@@ -133,9 +133,6 @@ enum Http2PredefinedParameters + maxPayloadSize = (1 << 24) - 1, // HTTP/2 6.5.2 + + defaultSessionWindowSize = 65535, // HTTP/2 6.5.2 +- // Using 1000 (rather arbitrarily), just to +- // impose *some* upper limit: +- maxPeerConcurrentStreams = 1000, + maxConcurrentStreams = 100 // HTTP/2, 6.5.2 + }; + +diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp +index f513139304..21f1c91e29 100644 +--- a/src/network/access/qhttp2protocolhandler.cpp ++++ b/src/network/access/qhttp2protocolhandler.cpp +@@ -393,7 +393,8 @@ bool QHttp2ProtocolHandler::sendRequest() + initReplyFromPushPromise(message, key); + } + +- const auto streamsToUse = std::min(maxConcurrentStreams - activeStreams.size(), ++ const auto streamsToUse = std::min(maxConcurrentStreams > activeStreams.size() ++ ? maxConcurrentStreams - activeStreams.size() : 0, + requests.size()); + auto it = requests.begin(); + for (quint32 i = 0; i < streamsToUse; ++i) { +@@ -1084,13 +1085,8 @@ bool QHttp2ProtocolHandler::acceptSetting(Http2::Settings identifier, quint32 ne + QMetaObject::invokeMethod(this, "resumeSuspendedStreams", Qt::QueuedConnection); + } + +- if (identifier == Settings::MAX_CONCURRENT_STREAMS_ID) { +- if (newValue > maxPeerConcurrentStreams) { +- connectionError(PROTOCOL_ERROR, "SETTINGS invalid number of concurrent streams"); +- return false; +- } ++ if (identifier == Settings::MAX_CONCURRENT_STREAMS_ID) + maxConcurrentStreams = newValue; +- } + + if (identifier == Settings::MAX_FRAME_SIZE_ID) { + if (newValue < Http2::minPayloadLimit || newValue > Http2::maxPayloadSize) { +-- +2.36.1 + diff --git a/libqt5-qtbase.changes b/libqt5-qtbase.changes index 6af9063..e21a7b5 100644 --- a/libqt5-qtbase.changes +++ b/libqt5-qtbase.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Jun 20 12:59:16 UTC 2022 - Fabian Vogt + +- Add patch to fix some HTTP/2 communication (boo#1200715, kde#455540): + * 0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch + ------------------------------------------------------------------- Fri Apr 8 14:06:22 UTC 2022 - Martin Liška diff --git a/libqt5-qtbase.spec b/libqt5-qtbase.spec index 2197194..b840d39 100644 --- a/libqt5-qtbase.spec +++ b/libqt5-qtbase.spec @@ -46,7 +46,7 @@ Source2: macros.qt5 Source3: baselibs.conf Source4: qtlogging.ini Source99: libqt5-qtbase-rpmlintrc -# patches 0-1000 are openSUSE and/or non-upstream(able) patches # +# patches 0-999 are openSUSE and/or non-upstream(able) patches # Patch3: 0001-Revert-QMenu-hide-when-a-QWidgetAction-fires-the-tri.patch # Proposed: https://bugreports.qt.io/browse/QTBUG-88491 Patch4: 0001-Avoid-SIGABRT-on-platform-plugin-initialization-fail.patch @@ -64,6 +64,7 @@ Patch24: fix-fixqt4headers.patch # PATCH-FIX-OPENSUSE -- Mitigate -D_FORTIFY_SOURCE=3 issue starting with GCC 12 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105078) Patch25: mitigate-FORTIFY_SOURCE-3.patch # patches 1000-2000 and above from upstream 5.15 branch # +Patch1000: 0001-H2-remove-a-rather-useless-limit-on-the-number-of-st.patch # patches 2000-3000 and above from upstream qt6/dev branch # # Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/255384 Patch2001: 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch