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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org