You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2026/05/19 19:38:34 UTC
(tomcat) branch 11.0.x updated: Refactor for consistency
This is an automated email from the ASF dual-hosted git repository.
rmaucher pushed a commit to branch 11.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/11.0.x by this push:
new eb48a06389 Refactor for consistency
eb48a06389 is described below
commit eb48a06389710214b1f99d94d3e7ff7030ff1712
Author: remm <re...@apache.org>
AuthorDate: Tue May 19 21:37:11 2026 +0200
Refactor for consistency
Removes weird duplicate constructor parameter.
---
java/org/apache/coyote/http2/Http2AsyncParser.java | 36 +++++++++++++++-------
.../coyote/http2/Http2AsyncUpgradeHandler.java | 2 +-
2 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/java/org/apache/coyote/http2/Http2AsyncParser.java b/java/org/apache/coyote/http2/Http2AsyncParser.java
index e1c8170765..a54a31da45 100644
--- a/java/org/apache/coyote/http2/Http2AsyncParser.java
+++ b/java/org/apache/coyote/http2/Http2AsyncParser.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import jakarta.servlet.http.WebConnection;
import org.apache.coyote.ProtocolException;
+import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.SocketEvent;
import org.apache.tomcat.util.net.SocketWrapperBase;
import org.apache.tomcat.util.net.SocketWrapperBase.BlockingMode;
@@ -33,16 +34,15 @@ import org.apache.tomcat.util.net.SocketWrapperBase.CompletionState;
class Http2AsyncParser extends Http2Parser {
+ private final AsyncOutput output;
private final SocketWrapperBase<?> socketWrapper;
- private final Http2AsyncUpgradeHandler upgradeHandler;
private volatile Throwable error = null;
- Http2AsyncParser(String connectionId, Input input, Output output, SocketWrapperBase<?> socketWrapper,
- Http2AsyncUpgradeHandler upgradeHandler) {
+ Http2AsyncParser(String connectionId, Input input, Output output, SocketWrapperBase<?> socketWrapper) {
super(connectionId, input, output);
this.socketWrapper = socketWrapper;
socketWrapper.getSocketBufferHandler().expand(input.getMaxFrameSize());
- this.upgradeHandler = upgradeHandler;
+ this.output = (AsyncOutput) output;
}
@@ -121,13 +121,12 @@ class Http2AsyncParser extends Http2Parser {
socketWrapper.unRead(payload);
}
// Finish processing the connection
- upgradeHandler.processConnectionCallback(webConnection, stream);
+ output.processConnectionCallback(webConnection, stream);
} else {
- upgradeHandler
- .closeConnection(new ConnectionException(error.getMessage(), Http2Error.PROTOCOL_ERROR, error));
+ output.closeConnection(new ConnectionException(error.getMessage(), Http2Error.PROTOCOL_ERROR, error));
}
// Continue reading frames
- upgradeHandler.upgradeDispatch(SocketEvent.OPEN_READ);
+ output.upgradeDispatch(SocketEvent.OPEN_READ);
}
}
@@ -284,7 +283,7 @@ class Http2AsyncParser extends Http2Parser {
readUnknownFrame(streamId, frameTypeId, flags, payloadSize, payload);
}
}
- if (!upgradeHandler.isOverheadLimitExceeded()) {
+ if (!output.isOverheadLimitExceeded()) {
// See if there is a new 9 byte header and continue parsing if possible
if (payload.remaining() >= 9) {
int position = payload.position();
@@ -322,7 +321,7 @@ class Http2AsyncParser extends Http2Parser {
if (state == CompletionState.DONE) {
// The call was not completed inline, so must start reading new frames
// or process the stream exception
- upgradeHandler.upgradeDispatch(SocketEvent.OPEN_READ);
+ output.upgradeDispatch(SocketEvent.OPEN_READ);
}
}
@@ -334,10 +333,25 @@ class Http2AsyncParser extends Http2Parser {
log.debug(sm.getString("http2Parser.error", connectionId, Integer.valueOf(streamId), frameType), e);
}
if (state == null || state == CompletionState.DONE) {
- upgradeHandler.upgradeDispatch(SocketEvent.ERROR);
+ output.upgradeDispatch(SocketEvent.ERROR);
}
}
}
+ /**
+ * Interface that must be implemented to receive notifications from the parser as it processes incoming frames.
+ */
+ interface AsyncOutput extends Output {
+
+ boolean isOverheadLimitExceeded();
+
+ AbstractEndpoint.Handler.SocketState upgradeDispatch(SocketEvent status);
+
+ void closeConnection(Http2Exception ce);
+
+ void processConnectionCallback(WebConnection webConnection, Stream stream);
+
+ }
+
}
diff --git a/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java b/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
index 83b9adb6d7..77c3e4cf35 100644
--- a/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
@@ -94,7 +94,7 @@ public class Http2AsyncUpgradeHandler extends Http2UpgradeHandler {
@Override
protected Http2Parser getParser(String connectionId) {
- return new Http2AsyncParser(connectionId, this, this, socketWrapper, this);
+ return new Http2AsyncParser(connectionId, this, this, socketWrapper);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org