54 lines
2.7 KiB
Diff
54 lines
2.7 KiB
Diff
|
|
From 172977f04a5215128f1e278a688983dcd230f399 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Mark Thomas <markt@apache.org>
|
||
|
|
Date: Fri, 26 Jun 2020 12:49:50 +0100
|
||
|
|
Subject: [PATCH] Ensure HTTP/1.1 processor is recycled after a direct h2c
|
||
|
|
connection
|
||
|
|
|
||
|
|
---
|
||
|
|
java/org/apache/coyote/AbstractProtocol.java | 9 ++++++---
|
||
|
|
webapps/docs/changelog.xml | 4 ++++
|
||
|
|
2 files changed, 10 insertions(+), 3 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/java/org/apache/coyote/AbstractProtocol.java b/java/org/apache/coyote/AbstractProtocol.java
|
||
|
|
index cb326dc12e..5bc2212549 100644
|
||
|
|
--- a/java/org/apache/coyote/AbstractProtocol.java
|
||
|
|
+++ b/java/org/apache/coyote/AbstractProtocol.java
|
||
|
|
@@ -772,8 +772,10 @@ public SocketState process(SocketWrapperBase<S> wrapper, SocketEvent status) {
|
||
|
|
// Assume direct HTTP/2 connection
|
||
|
|
UpgradeProtocol upgradeProtocol = getProtocol().getUpgradeProtocol("h2c");
|
||
|
|
if (upgradeProtocol != null) {
|
||
|
|
- processor = upgradeProtocol.getProcessor(
|
||
|
|
- wrapper, getProtocol().getAdapter());
|
||
|
|
+ // Release the Http11 processor to be re-used
|
||
|
|
+ release(processor);
|
||
|
|
+ // Create the upgrade processor
|
||
|
|
+ processor = upgradeProtocol.getProcessor(wrapper, getProtocol().getAdapter());
|
||
|
|
wrapper.unRead(leftOverInput);
|
||
|
|
// Associate with the processor with the connection
|
||
|
|
connections.put(socket, processor);
|
||
|
|
@@ -785,7 +785,8 @@ public SocketState process(SocketWrapperBase<S> wrapper, SocketEvent status) {
|
||
|
|
"abstractConnectionHandler.negotiatedProcessor.fail",
|
||
|
|
"h2c"));
|
||
|
|
}
|
||
|
|
- return SocketState.CLOSED;
|
||
|
|
+ // Exit loop and trigger appropriate clean-up
|
||
|
|
+ state = SocketState.CLOSED;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
HttpUpgradeHandler httpUpgradeHandler = upgradeToken.getHttpUpgradeHandler();
|
||
|
|
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
|
||
|
|
index 5665df4..60cd317 100644
|
||
|
|
--- a/webapps/docs/changelog.xml
|
||
|
|
+++ b/webapps/docs/changelog.xml
|
||
|
|
@@ -232,6 +236,10 @@
|
||
|
|
<fix>
|
||
|
|
Avoid unnecessary processing of async timeouts. (markt)
|
||
|
|
</fix>
|
||
|
|
+ <fix>
|
||
|
|
+ Ensure that the HTTP/1.1 processor is correctly recycled when a direct
|
||
|
|
+ connection to h2c is made. (markt)
|
||
|
|
+ </fix>
|
||
|
|
</changelog>
|
||
|
|
</subsection>
|
||
|
|
<subsection name="Jasper">
|