You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/10/23 13:32:06 UTC
[tomcat] branch 8.5.x updated: Refactor Processor creation
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push:
new 117f44c Refactor Processor creation
117f44c is described below
commit 117f44cc6907d96884d6d215a7bacdccefc2067d
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 23 15:31:43 2019 +0200
Refactor Processor creation
Better align processor creation with 9.0.x and to prepare for
back-porting of compression changes.
---
.../coyote/http11/AbstractHttp11Protocol.java | 10 ++---
java/org/apache/coyote/http11/Http11Processor.java | 44 +++++++++-------------
2 files changed, 22 insertions(+), 32 deletions(-)
diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
index 86ecd1a..0310a0e 100644
--- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
+++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
@@ -348,6 +348,9 @@ public abstract class AbstractHttp11Protocol<S> extends AbstractProtocol<S> {
allowedTrailerHeaders.removeAll(toRemove);
}
}
+ protected Set<String> getAllowedTrailerHeadersInternal() {
+ return allowedTrailerHeaders;
+ }
public String getAllowedTrailerHeaders() {
// Chances of a size change between these lines are small enough that a
// sync is unnecessary.
@@ -870,14 +873,9 @@ public abstract class AbstractHttp11Protocol<S> extends AbstractProtocol<S> {
// ------------------------------------------------------------- Common code
- @SuppressWarnings("deprecation")
@Override
protected Processor createProcessor() {
- Http11Processor processor = new Http11Processor(getMaxHttpHeaderSize(),
- getAllowHostHeaderMismatch(), getRejectIllegalHeaderName(), getEndpoint(),
- getMaxTrailerSize(), allowedTrailerHeaders, getMaxExtensionSize(),
- getMaxSwallowSize(), httpUpgradeProtocols, getSendReasonPhrase(),
- relaxedPathChars, relaxedQueryChars);
+ Http11Processor processor = new Http11Processor(this, getEndpoint());
processor.setAdapter(getAdapter());
processor.setMaxKeepAliveRequests(getMaxKeepAliveRequests());
processor.setConnectionUploadTimeout(getConnectionUploadTimeout());
diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java
index f6de5f1..b922d61 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -21,7 +21,6 @@ import java.io.InterruptedIOException;
import java.nio.ByteBuffer;
import java.util.HashSet;
import java.util.Locale;
-import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
@@ -73,6 +72,9 @@ public class Http11Processor extends AbstractProcessor {
private static final StringManager sm = StringManager.getManager(Http11Processor.class);
+ private final AbstractHttp11Protocol<?> protocol;
+
+
/**
* Input.
*/
@@ -214,37 +216,30 @@ public class Http11Processor extends AbstractProcessor {
protected SendfileDataBase sendfileData = null;
- /**
- * UpgradeProtocol information
- */
- private final Map<String,UpgradeProtocol> httpUpgradeProtocols;
-
- private final boolean allowHostHeaderMismatch;
-
-
- public Http11Processor(int maxHttpHeaderSize, boolean allowHostHeaderMismatch,
- boolean rejectIllegalHeaderName, AbstractEndpoint<?> endpoint, int maxTrailerSize,
- Set<String> allowedTrailerHeaders, int maxExtensionSize, int maxSwallowSize,
- Map<String,UpgradeProtocol> httpUpgradeProtocols, boolean sendReasonPhrase,
- String relaxedPathChars, String relaxedQueryChars) {
-
+ @SuppressWarnings("deprecation")
+ public Http11Processor(AbstractHttp11Protocol<?> protocol, AbstractEndpoint<?> endpoint) {
super(endpoint);
+ this.protocol = protocol;
- httpParser = new HttpParser(relaxedPathChars, relaxedQueryChars);
+ httpParser = new HttpParser(protocol.getRelaxedPathChars(),
+ protocol.getRelaxedQueryChars());
- inputBuffer = new Http11InputBuffer(request, maxHttpHeaderSize, rejectIllegalHeaderName, httpParser);
+ inputBuffer = new Http11InputBuffer(request, protocol.getMaxHttpHeaderSize(),
+ protocol.getRejectIllegalHeaderName(), httpParser);
request.setInputBuffer(inputBuffer);
- outputBuffer = new Http11OutputBuffer(response, maxHttpHeaderSize, sendReasonPhrase);
+ outputBuffer = new Http11OutputBuffer(response, protocol.getMaxHttpHeaderSize(),
+ protocol.getSendReasonPhrase());
response.setOutputBuffer(outputBuffer);
// Create and add the identity filters.
- inputBuffer.addFilter(new IdentityInputFilter(maxSwallowSize));
+ inputBuffer.addFilter(new IdentityInputFilter(protocol.getMaxSwallowSize()));
outputBuffer.addFilter(new IdentityOutputFilter());
// Create and add the chunked filters.
- inputBuffer.addFilter(new ChunkedInputFilter(maxTrailerSize, allowedTrailerHeaders,
- maxExtensionSize, maxSwallowSize));
+ inputBuffer.addFilter(new ChunkedInputFilter(protocol.getMaxTrailerSize(),
+ protocol.getAllowedTrailerHeadersInternal(), protocol.getMaxExtensionSize(),
+ protocol.getMaxSwallowSize()));
outputBuffer.addFilter(new ChunkedOutputFilter());
// Create and add the void filters.
@@ -259,9 +254,6 @@ public class Http11Processor extends AbstractProcessor {
outputBuffer.addFilter(new GzipOutputFilter());
pluggableFilterIndex = inputBuffer.getFilters().length;
-
- this.httpUpgradeProtocols = httpUpgradeProtocols;
- this.allowHostHeaderMismatch = allowHostHeaderMismatch;
}
@@ -705,7 +697,7 @@ public class Http11Processor extends AbstractProcessor {
// Check the protocol
String requestedProtocol = request.getHeader("Upgrade");
- UpgradeProtocol upgradeProtocol = httpUpgradeProtocols.get(requestedProtocol);
+ UpgradeProtocol upgradeProtocol = protocol.getUpgradeProtocol(requestedProtocol);
if (upgradeProtocol != null) {
if (upgradeProtocol.accept(request)) {
// TODO Figure out how to handle request bodies at this
@@ -1062,7 +1054,7 @@ public class Http11Processor extends AbstractProcessor {
// the Host header
if (!hostValueMB.getByteChunk().equals(
uriB, uriBCStart + pos, slashPos - pos)) {
- if (allowHostHeaderMismatch) {
+ if (protocol.getAllowHostHeaderMismatch()) {
// The requirements of RFC 2616 are being
// applied. If the host header and the request
// line do not agree, the request line takes
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org