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 2019/04/15 17:00:13 UTC
[tomcat] branch master updated: Fix possible connection leak with
async
This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new cda8f02 Fix possible connection leak with async
cda8f02 is described below
commit cda8f02e7d2a24eb5eb28a2746c88bad9d4aa015
Author: remm <re...@apache.org>
AuthorDate: Mon Apr 15 18:59:59 2019 +0200
Fix possible connection leak with async
It is necessary to go back to the handler for connection cleanup at the
moment.
---
java/org/apache/coyote/http2/Http2AsyncParser.java | 14 ++++++--------
java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java | 2 +-
webapps/docs/changelog.xml | 3 +++
3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/java/org/apache/coyote/http2/Http2AsyncParser.java b/java/org/apache/coyote/http2/Http2AsyncParser.java
index d8f2767..448f3ce 100644
--- a/java/org/apache/coyote/http2/Http2AsyncParser.java
+++ b/java/org/apache/coyote/http2/Http2AsyncParser.java
@@ -31,16 +31,14 @@ import org.apache.tomcat.util.net.SocketWrapperBase.CompletionState;
class Http2AsyncParser extends Http2Parser {
private final SocketWrapperBase<?> socketWrapper;
- private final Http2AsyncUpgradeHandler upgradeHandler;
private Throwable error = null;
private final ByteBuffer header;
private final ByteBuffer framePaylod;
- 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;
header = ByteBuffer.allocate(9);
framePaylod = ByteBuffer.allocate(input.getMaxFrameSize());
}
@@ -228,7 +226,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);
+ socketWrapper.processSocket(SocketEvent.OPEN_READ, false);
}
}
@@ -236,11 +234,11 @@ class Http2AsyncParser extends Http2Parser {
public void failed(Throwable e, Void attachment) {
// Always a fatal IO error
error = e;
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("http2Parser.error", connectionId, Integer.valueOf(streamId), frameType), e);
+ }
if (state == null || state == CompletionState.DONE) {
- if (log.isDebugEnabled()) {
- log.debug(sm.getString("http2Parser.error", connectionId, Integer.valueOf(streamId), frameType), e);
- }
- upgradeHandler.upgradeDispatch(SocketEvent.ERROR);
+ socketWrapper.processSocket(SocketEvent.ERROR, true);
}
}
diff --git a/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java b/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
index f4559a3..de80eb1 100644
--- a/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
@@ -69,7 +69,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);
}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index bff8bea..ed16730 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -58,6 +58,9 @@
The <code>useAsyncIO</code> boolean attribute on the Connector element
value now defaults to <code>true</code>. (remm)
</fix>
+ <fix>
+ Possible HTTP/2 connection leak issue when using async. (remm)
+ </fix>
</changelog>
</subsection>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org