This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 74c27390405e1b57a7a0e34d24bd8df75bb1ceb7 Author: Mark Thomas <ma...@apache.org> AuthorDate: Mon Sep 13 17:28:10 2021 +0100 Revert "Remove clear whole backlog shortcut" This reverts commit dbd137f142385fe2db21f72a04e8a9a789f92ae3. --- .../apache/coyote/http2/Http2UpgradeHandler.java | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index ebd79b6..b45dad0 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -1024,19 +1024,27 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH private synchronized Set<AbstractStream> releaseBackLog(int increment) { Set<AbstractStream> result = new HashSet<>(); - - int leftToAllocate = allocate(this, increment); - for (AbstractStream stream : backLogStreams) { - int allocation = stream.getUnusedAllocation(); - if (allocation > 0) { - backLogSize -= allocation; - if (!stream.isNotifyInProgress()) { - result.add(stream); - stream.startNotify(); + if (backLogSize < increment) { + // Can clear the whole backlog + result.addAll(backLogStreams); + backLogStreams.clear(); + backLogSize = 0; + } else { + int leftToAllocate = increment; + while (leftToAllocate > 0) { + leftToAllocate = allocate(this, leftToAllocate); + } + for (AbstractStream stream : backLogStreams) { + int allocation = stream.getUnusedAllocation(); + if (allocation > 0) { + backLogSize -= allocation; + if (!stream.isNotifyInProgress()) { + result.add(stream); + stream.startNotify(); + } } } } - return result; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org