Package org.apache.coyote.http11
Class AbstractHttp11Protocol<S>
java.lang.Object
org.apache.coyote.AbstractProtocol<S>
org.apache.coyote.http11.AbstractHttp11Protocol<S>
- All Implemented Interfaces:
MBeanRegistration
,ProtocolHandler
- Direct Known Subclasses:
AbstractHttp11JsseProtocol
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.coyote.AbstractProtocol
AbstractProtocol.ConnectionHandler<S>, AbstractProtocol.RecycledProcessors
-
Field Summary
Fields inherited from class org.apache.coyote.AbstractProtocol
adapter, domain, mserver, oname, processorCache, rgOname
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addAllowedTrailerHeader
(String header) void
addSslHostConfig
(SSLHostConfig sslHostConfig) Add a new SSL configuration for a virtual host.void
addSslHostConfig
(SSLHostConfig sslHostConfig, boolean replace) Add a new SSL configuration for a virtual host.void
addUpgradeProtocol
(UpgradeProtocol upgradeProtocol) Add a new protocol for used by HTTP/1.1 upgrade or ALPN.protected Processor
Create and configure a new Processor instance for the current protocol implementation.protected Processor
createUpgradeProcessor
(SocketWrapperBase<?> socket, UpgradeToken upgradeToken) void
destroy()
Destroy the protocol (optional).Find all configured SSL virtual host configurations which will be used by SNI.Return all configured upgrade protocols.boolean
Deprecated.String[]
protected int
int
int
Specifies a different (usually longer) connection timeout during data upload.boolean
Get the flag that controls upload time-outs.protected AbstractEndpoint
<S, ?> int
int
int
int
int
int
Return the maximum size of the post which will be saved during FORM or CLIENT-CERT authentication.int
int
getNegotiatedProtocol
(String negotiatedName) Find a suitable handler for the protocol negotiated at the network layer.protected Pattern
getONameForUpgrade
(String upgradeProtocol) protected String
Obtain the name of the protocol, (Http, Ajp, etc.).boolean
Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded totrue
.Get the string form of the regular expression that defines the User agents which should be restricted to HTTP/1.0 support.protected Pattern
boolean
boolean
Should application provider values for the HTTP Server header be removed.getUpgradeGroupInfo
(String upgradeProtocol) getUpgradeProtocol
(String upgradedName) Find a suitable handler for the protocol upgraded name specified.boolean
boolean
void
init()
Initialise the protocol.boolean
boolean
isTrailerHeaderAllowed
(String headerName) void
reloadSslHostConfig
(String hostName) void
void
removeAllowedTrailerHeader
(String header) void
setAllowedTrailerHeaders
(String commaSeparatedHeaders) void
setAllowHostHeaderMismatch
(boolean allowHostHeaderMismatch) Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded tofalse
.void
setCompressibleMimeType
(String valueS) void
setCompression
(String compression) void
setCompressionMinSize
(int compressionMinSize) void
setConnectionUploadTimeout
(int timeout) Set the upload timeout.void
setContinueResponseTiming
(String continueResponseTiming) void
setDefaultSSLHostConfigName
(String defaultSSLHostConfigName) void
setDisableUploadTimeout
(boolean isDisabled) Set the flag to control whether a separate connection timeout is used during upload of a request body.void
setMaxExtensionSize
(int maxExtensionSize) void
setMaxHttpHeaderSize
(int valueI) void
setMaxHttpRequestHeaderSize
(int valueI) void
setMaxHttpResponseHeaderSize
(int valueI) void
setMaxKeepAliveRequests
(int mkar) Set the maximum number of Keep-Alive requests to allow.void
setMaxSavePostSize
(int maxSavePostSize) Set the maximum size of a POST which will be buffered during FORM or CLIENT-CERT authentication.void
setMaxSwallowSize
(int maxSwallowSize) void
setMaxTrailerSize
(int maxTrailerSize) void
setNoCompressionUserAgents
(String noCompressionUserAgents) void
setRejectIllegalHeader
(boolean rejectIllegalHeader) Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded totrue
.void
setRelaxedPathChars
(String relaxedPathChars) void
setRelaxedQueryChars
(String relaxedQueryChars) void
setRestrictedUserAgents
(String restrictedUserAgents) Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode).void
setSecure
(boolean b) void
Set the server header name.void
setServerRemoveAppProvidedValues
(boolean serverRemoveAppProvidedValues) void
setSSLEnabled
(boolean SSLEnabled) void
setUseKeepAliveResponseHeader
(boolean useKeepAliveResponseHeader) void
setUseSendfile
(boolean useSendfile) boolean
useCompression
(Request request, Response response) Methods inherited from class org.apache.coyote.AbstractProtocol
addWaitingProcessor, awaitConnectionsClose, closeServerSocketGraceful, getAcceptCount, getAcceptorThreadPriority, getAdapter, getAddress, getClientCertProvider, getConnectionCount, getConnectionLinger, getConnectionTimeout, getDomain, getExecutor, getGlobalRequestProcessorMBeanName, getHandler, getId, getKeepAliveTimeout, getLocalPort, getLog, getMaxConnections, getMaxHeaderCount, getMaxQueueSize, getMaxThreads, getMinSpareThreads, getName, getNameIndex, getNamePrefix, getObjectName, getPort, getPortOffset, getPortWithOffset, getProcessorCache, getProperty, getTcpNoDelay, getThreadPriority, getUtilityExecutor, getWaitingProcessorCount, isPaused, isSendfileSupported, pause, postDeregister, postRegister, preDeregister, preRegister, removeWaitingProcessor, resume, setAcceptCount, setAcceptorThreadPriority, setAdapter, setAddress, setClientCertProvider, setConnectionLinger, setConnectionTimeout, setExecutor, setHandler, setKeepAliveTimeout, setMaxConnections, setMaxHeaderCount, setMaxQueueSize, setMaxThreads, setMinSpareThreads, setPort, setPortOffset, setProcessorCache, setProperty, setTcpNoDelay, setThreadPriority, setUtilityExecutor, start, startAsyncTimeout, stop, stopAsyncTimeout
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.coyote.ProtocolHandler
getDesiredBufferSize
-
Field Details
-
sm
-
-
Constructor Details
-
AbstractHttp11Protocol
-
-
Method Details
-
init
Description copied from interface:ProtocolHandler
Initialise the protocol.- Specified by:
init
in interfaceProtocolHandler
- Overrides:
init
in classAbstractProtocol<S>
- Throws:
Exception
- If the protocol handler fails to initialise
-
destroy
Description copied from interface:ProtocolHandler
Destroy the protocol (optional).- Specified by:
destroy
in interfaceProtocolHandler
- Overrides:
destroy
in classAbstractProtocol<S>
- Throws:
Exception
- If the protocol handler fails to destroy
-
getProtocolName
Description copied from class:AbstractProtocol
Obtain the name of the protocol, (Http, Ajp, etc.). Used with JMX.- Specified by:
getProtocolName
in classAbstractProtocol<S>
- Returns:
- the protocol name
-
getEndpoint
Over-ridden here to make the method visible to nested classes.
- Overrides:
getEndpoint
in classAbstractProtocol<S>
-
getHttpParser
-
getContinueResponseTiming
-
setContinueResponseTiming
-
getContinueResponseTimingInternal
-
getUseKeepAliveResponseHeader
public boolean getUseKeepAliveResponseHeader() -
setUseKeepAliveResponseHeader
public void setUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader) -
getRelaxedPathChars
-
setRelaxedPathChars
-
getRelaxedQueryChars
-
setRelaxedQueryChars
-
getAllowHostHeaderMismatch
Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded tofalse
.Will Tomcat accept an HTTP 1.1 request where the host header does not agree with the host specified (if any) in the request line?- Returns:
true
if Tomcat will allow such requests, otherwisefalse
-
setAllowHostHeaderMismatch
Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded tofalse
.Will Tomcat accept an HTTP 1.1 request where the host header does not agree with the host specified (if any) in the request line?- Parameters:
allowHostHeaderMismatch
-true
to allow such requests,false
to reject them with a 400
-
getRejectIllegalHeader
Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded totrue
.If an HTTP request is received that contains an illegal header name or value (e.g. the header name is not a token) will the request be rejected (with a 400 response) or will the illegal header be ignored?- Returns:
true
if the request will be rejected orfalse
if the header will be ignored
-
setRejectIllegalHeader
Deprecated.This will removed in Tomcat 11 onwards whereallowHostHeaderMismatch
will be hard-coded totrue
.If an HTTP request is received that contains an illegal header name or value (e.g. the header name is not a token) should the request be rejected (with a 400 response) or should the illegal header be ignored?- Parameters:
rejectIllegalHeader
-true
to reject requests with illegal header names or values,false
to ignore the header
-
getMaxSavePostSize
public int getMaxSavePostSize()Return the maximum size of the post which will be saved during FORM or CLIENT-CERT authentication.- Returns:
- The size in bytes
-
setMaxSavePostSize
public void setMaxSavePostSize(int maxSavePostSize) Set the maximum size of a POST which will be buffered during FORM or CLIENT-CERT authentication. When a POST is received where the security constraints require a client certificate, the POST body needs to be buffered while an SSL handshake takes place to obtain the certificate. A similar buffering is required during FORM auth.- Parameters:
maxSavePostSize
- The maximum size POST body to buffer in bytes
-
getMaxHttpHeaderSize
public int getMaxHttpHeaderSize() -
setMaxHttpHeaderSize
public void setMaxHttpHeaderSize(int valueI) -
getMaxHttpRequestHeaderSize
public int getMaxHttpRequestHeaderSize() -
setMaxHttpRequestHeaderSize
public void setMaxHttpRequestHeaderSize(int valueI) -
getMaxHttpResponseHeaderSize
public int getMaxHttpResponseHeaderSize() -
setMaxHttpResponseHeaderSize
public void setMaxHttpResponseHeaderSize(int valueI) -
getConnectionUploadTimeout
public int getConnectionUploadTimeout()Specifies a different (usually longer) connection timeout during data upload. Default is 5 minutes as in Apache HTTPD server.- Returns:
- The timeout in milliseconds
-
setConnectionUploadTimeout
public void setConnectionUploadTimeout(int timeout) Set the upload timeout.- Parameters:
timeout
- Upload timeout in milliseconds
-
getDisableUploadTimeout
public boolean getDisableUploadTimeout()Get the flag that controls upload time-outs. If true, the connectionUploadTimeout will be ignored and the regular socket timeout will be used for the full duration of the connection.- Returns:
true
if the separate upload timeout is disabled
-
setDisableUploadTimeout
public void setDisableUploadTimeout(boolean isDisabled) Set the flag to control whether a separate connection timeout is used during upload of a request body.- Parameters:
isDisabled
-true
if the separate upload timeout should be disabled
-
setCompression
-
getCompression
-
getCompressionLevel
protected int getCompressionLevel() -
getNoCompressionUserAgents
-
getNoCompressionUserAgentsPattern
-
setNoCompressionUserAgents
-
getCompressibleMimeType
-
setCompressibleMimeType
-
getCompressibleMimeTypes
-
getCompressionMinSize
public int getCompressionMinSize() -
setCompressionMinSize
public void setCompressionMinSize(int compressionMinSize) -
useCompression
-
getRestrictedUserAgents
Get the string form of the regular expression that defines the User agents which should be restricted to HTTP/1.0 support.- Returns:
- The regular expression as a String
-
getRestrictedUserAgentsPattern
-
setRestrictedUserAgents
-
getServer
-
setServer
Set the server header name.- Parameters:
server
- The new value to use for the server header
-
getServerRemoveAppProvidedValues
public boolean getServerRemoveAppProvidedValues()Should application provider values for the HTTP Server header be removed. Note that ifserver
is set, any application provided value will be over-ridden.- Returns:
true
if application provided values should be removed, otherwisefalse
-
setServerRemoveAppProvidedValues
public void setServerRemoveAppProvidedValues(boolean serverRemoveAppProvidedValues) -
getMaxTrailerSize
public int getMaxTrailerSize() -
setMaxTrailerSize
public void setMaxTrailerSize(int maxTrailerSize) -
getMaxExtensionSize
public int getMaxExtensionSize() -
setMaxExtensionSize
public void setMaxExtensionSize(int maxExtensionSize) -
getMaxSwallowSize
public int getMaxSwallowSize() -
setMaxSwallowSize
public void setMaxSwallowSize(int maxSwallowSize) -
getSecure
public boolean getSecure() -
setSecure
public void setSecure(boolean b) -
setAllowedTrailerHeaders
-
getAllowedTrailerHeadersInternal
-
isTrailerHeaderAllowed
-
getAllowedTrailerHeaders
-
addAllowedTrailerHeader
-
removeAllowedTrailerHeader
-
addUpgradeProtocol
Description copied from interface:ProtocolHandler
Add a new protocol for used by HTTP/1.1 upgrade or ALPN.- Parameters:
upgradeProtocol
- the protocol
-
findUpgradeProtocols
Description copied from interface:ProtocolHandler
Return all configured upgrade protocols.- Returns:
- the protocols
-
getNegotiatedProtocol
Description copied from class:AbstractProtocol
Find a suitable handler for the protocol negotiated at the network layer.- Specified by:
getNegotiatedProtocol
in classAbstractProtocol<S>
- Parameters:
negotiatedName
- The name of the requested negotiated protocol.- Returns:
- The instance where
UpgradeProtocol.getAlpnName()
matches the requested protocol
-
getUpgradeProtocol
Description copied from class:AbstractProtocol
Find a suitable handler for the protocol upgraded name specified. This is used for direct connection protocol selection.- Specified by:
getUpgradeProtocol
in classAbstractProtocol<S>
- Parameters:
upgradedName
- The name of the requested negotiated protocol.- Returns:
- The instance where
UpgradeProtocol.getAlpnName()
matches the requested protocol
-
getUpgradeGroupInfo
-
getONameForUpgrade
-
isSSLEnabled
public boolean isSSLEnabled() -
setSSLEnabled
public void setSSLEnabled(boolean SSLEnabled) -
getUseSendfile
public boolean getUseSendfile() -
setUseSendfile
public void setUseSendfile(boolean useSendfile) -
getMaxKeepAliveRequests
public int getMaxKeepAliveRequests()- Returns:
- The maximum number of requests which can be performed over a keep-alive connection. The default is the same as for Apache HTTP Server (100).
-
setMaxKeepAliveRequests
public void setMaxKeepAliveRequests(int mkar) Set the maximum number of Keep-Alive requests to allow. This is to safeguard from DoS attacks. Setting to a negative value disables the limit.- Parameters:
mkar
- The new maximum number of Keep-Alive requests allowed
-
getDefaultSSLHostConfigName
-
setDefaultSSLHostConfigName
-
addSslHostConfig
Description copied from interface:ProtocolHandler
Add a new SSL configuration for a virtual host.- Parameters:
sslHostConfig
- the configuration
-
addSslHostConfig
Description copied from interface:ProtocolHandler
Add a new SSL configuration for a virtual host.- Parameters:
sslHostConfig
- the configurationreplace
- Iftrue
replacement of an existing configuration is permitted, otherwise any such attempted replacement will trigger an exception
-
findSslHostConfigs
Description copied from interface:ProtocolHandler
Find all configured SSL virtual host configurations which will be used by SNI.- Returns:
- the configurations
-
reloadSslHostConfigs
public void reloadSslHostConfigs() -
reloadSslHostConfig
-
createProcessor
Description copied from class:AbstractProtocol
Create and configure a new Processor instance for the current protocol implementation.- Specified by:
createProcessor
in classAbstractProtocol<S>
- Returns:
- A fully configured Processor instance that is ready to use
-
createUpgradeProcessor
- Specified by:
createUpgradeProcessor
in classAbstractProtocol<S>
-
allowHostHeaderMismatch
will be hard-coded tofalse
.