# Class AbstractHttp11Protocol<S>

java.lang.Object
org.apache.coyote.AbstractProtocol<S>
org.apache.coyote.http11.AbstractHttp11Protocol<S>

Type Parameters:
  `S` - The socket type

All Implemented Interfaces:
  `MBeanRegistration, ProtocolHandler`

Direct Known Subclasses:
  `Http11Nio2Protocol, Http11NioProtocol`

public abstract class AbstractHttp11Protocol<S> extends AbstractProtocol<S>
Base implementation of the HTTP/1.1 and HTTP/1.0 protocols.

## Nested Class Summary

### Nested classes/interfaces inherited from class AbstractProtocol

`AbstractProtocol.ConnectionHandler<S>, AbstractProtocol.RecycledProcessors`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final StringManager`
`sm`
The StringManager for this package.

### Fields inherited from class AbstractProtocol

`adapter, domain, mserver, oname, processorCache, rgOname`

## Constructor Summary

Constructors
Constructor
Description
`AbstractHttp11Protocol(AbstractEndpoint<S,?> endpoint)`
Construct a specific instance of this protocol handler.

## Method Summary

Modifier and Type
Method
Description
`void`
`addAllowedTrailerHeader(String header)`
Add a header name to the set of allowed trailer headers.
`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.
`boolean`
`checkSni(String sniHostName, String protocolHostName)`
Check the SNI hostname.
`protected Processor`
`createProcessor()`
Create and configure a new Processor instance for the current protocol implementation.
`protected Processor`
`createUpgradeProcessor(SocketWrapperBase<?> socket, UpgradeToken upgradeToken)`
Create and configure a new Processor instance for upgrade connections.
`void`
`destroy()`
Destroys the protocol handler.
`SSLHostConfig[]`
`findSslHostConfigs()`
Find all configured SSL virtual host configurations which will be used by SNI.
`UpgradeProtocol[]`
`findUpgradeProtocols()`
Return all configured upgrade protocols.
`String`
`getAllowedTrailerHeaders()`
Get the list of allowed trailer headers as a comma-separated string.
`protected Set<String>`
`getAllowedTrailerHeadersInternal()`
Get the set of allowed trailer header names.
`String`
`getCompressibleMimeType()`
Get the MIME types that may be subject to compression.
`String[]`
`getCompressibleMimeTypes()`
Get the MIME types that may be subject to compression as an array.
`String`
`getCompression()`
Get the compression setting.
`protected int`
`getCompressionLevel()`
Get the compression level.
`int`
`getCompressionMinSize()`
Get the minimum response size for compression to be applied.
`int`
`getConnectionUploadTimeout()`
Specifies a different (usually longer) connection timeout during data upload.
`String`
`getContinueResponseTiming()`
Get the setting for how responses to 100-Continue requests will be sent.
`ContinueResponseTiming`
`getContinueResponseTimingInternal()`
Get the continue response timing setting as an enum value.
`String`
`getDefaultSSLHostConfigName()`
Get the default SSL host configuration name.
`boolean`
`getDisableUploadTimeout()`
Get the flag that controls upload time-outs.
`protected AbstractEndpoint<S,?>`
`getEndpoint()`
Gets the endpoint.
`HttpParser`
`getHttpParser()`
Get the HttpParser used to parse relaxed characters.
`int`
`getMaxExtensionSize()`
Get the maximum size of extension information in chunked encoding.
`int`
`getMaxHttpHeaderSize()`
Get the maximum size of the HTTP message header.
`int`
`getMaxHttpRequestHeaderSize()`
Get the maximum size of the HTTP request message header.
`int`
`getMaxHttpResponseHeaderSize()`
Get the maximum size of the HTTP response message header.
`int`
`getMaxKeepAliveRequests()`
Get the maximum number of requests which can be performed over a keep-alive connection.
`int`
`getMaxSavePostSize()`
Return the maximum size of the post which will be saved during FORM or CLIENT-CERT authentication.
`int`
`getMaxSwallowSize()`
Get the maximum amount of request body to swallow.
`int`
`getMaxTrailerSize()`
Get the maximum size of trailing headers.
`UpgradeProtocol`
`getNegotiatedProtocol(String negotiatedName)`
Find a suitable handler for the protocol negotiated at the network layer.
`String`
`getNoCompressionEncodings()`
Get the content encodings that should not be used.
`String`
`getNoCompressionUserAgents()`
Get the list of user agents that should not use compression.
`protected Pattern`
`getNoCompressionUserAgentsPattern()`
Get the pattern of user agents that should not use compression.
`ObjectName`
`getONameForUpgrade(String upgradeProtocol)`
Get the ObjectName for the MBean of the specified upgrade protocol.
`protected String`
`getProtocolName()`
Obtain the name of the protocol, (Http, Ajp, etc.).
`String`
`getRelaxedPathChars()`
Get the set of characters allowed in a URL path.
`String`
`getRelaxedQueryChars()`
Get the set of characters allowed in a URL query string.
`String`
`getRestrictedUserAgents()`
Get the string form of the regular expression that defines the User agents which should be restricted to HTTP/1.0 support.
`protected Pattern`
`getRestrictedUserAgentsPattern()`
Get the pattern of user agents that should be restricted to HTTP/1.0.
`boolean`
`getSecure()`
Get the flag indicating if this protocol is treated as secure.
`String`
`getServer()`
Get the value of the Server response header.
`boolean`
`getServerRemoveAppProvidedValues()`
Should application provider values for the HTTP Server header be removed.
`int`
`getSniParseLimit()`
Get the SNI parse limit.
`String`
`getSslImplementationName()`
Get the name of the SSL implementation.
`protected String`
`getSslImplementationShortName()`
Get the short name of the SSL implementation.
`UpgradeGroupInfo`
`getUpgradeGroupInfo(String upgradeProtocol)`
Get the upgrade group info for the specified upgrade protocol.
`UpgradeProtocol`
`getUpgradeProtocol(String upgradedName)`
Find a suitable handler for the protocol upgraded name specified.
`boolean`
`getUseKeepAliveResponseHeader()`
Get the flag that controls whether the Keep-Alive response header will be used.
`boolean`
`getUseSendfile()`
Check if sendfile is enabled for this connector.
`void`
`init()`
Initializes the protocol handler.
`boolean`
`isSSLEnabled()`
Check if SSL is enabled on this connector.
`boolean`
`isTrailerHeaderAllowed(String headerName)`
Check if a header name is in the set of allowed trailer headers.
`void`
`reloadSslHostConfig(String hostName)`
Reload the SSL host configuration for the specified host.
`void`
`reloadSslHostConfigs()`
Reload all SSL host configurations.
`void`
`removeAllowedTrailerHeader(String header)`
Remove a header name from the set of allowed trailer headers.
`void`
`setAllowedTrailerHeaders(String commaSeparatedHeaders)`
Set the names of headers that are allowed to be sent via a trailer when using chunked encoding.
`void`
`setCompressibleMimeType(String valueS)`
Set the MIME types that may be subject to compression.
`void`
`setCompression(String compression)`
Set the compression setting.
`void`
`setCompressionMinSize(int compressionMinSize)`
Set the minimum response size for compression to be applied.
`void`
`setConnectionUploadTimeout(int timeout)`
Set the upload timeout.
`void`
`setContinueResponseTiming(String continueResponseTiming)`
Set the setting for how responses to 100-Continue requests will be sent.
`void`
`setDefaultSSLHostConfigName(String defaultSSLHostConfigName)`
Set the default SSL host configuration name.
`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)`
Set the maximum size of extension information in chunked encoding.
`void`
`setMaxHttpHeaderSize(int valueI)`
Set the maximum size of the HTTP message header.
`void`
`setMaxHttpRequestHeaderSize(int valueI)`
Set the maximum size of the HTTP request message header.
`void`
`setMaxHttpResponseHeaderSize(int valueI)`
Set the maximum size of the HTTP response message header.
`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)`
Set the maximum amount of request body to swallow.
`void`
`setMaxTrailerSize(int maxTrailerSize)`
Set the maximum size of trailing headers.
`void`
`setNoCompressionEncodings(String encodings)`
Set the content encodings that should not be used.
`void`
`setNoCompressionUserAgents(String noCompressionUserAgents)`
Set the list of user agents that should not use compression.
`void`
`setRelaxedPathChars(String relaxedPathChars)`
Set the set of characters allowed in a URL path.
`void`
`setRelaxedQueryChars(String relaxedQueryChars)`
Set the set of characters allowed in a URL query string.
`void`
`setRestrictedUserAgents(String restrictedUserAgents)`
Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode).
`void`
`setSecure(boolean b)`
Set the flag indicating if this protocol is treated as secure.
`void`
`setServer(String server)`
Set the server header name.
`void`
`setServerRemoveAppProvidedValues(boolean serverRemoveAppProvidedValues)`
Set whether application provider values for the HTTP Server header should be removed.
`void`
`setSniParseLimit(int sniParseLimit)`
Set the SNI parse limit.
`void`
`setSSLEnabled(boolean SSLEnabled)`
Set whether SSL is enabled on this connector.
`void`
`setSslImplementationName(String s)`
Set the name of the SSL implementation.
`void`
`setUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader)`
Set the flag that controls whether the Keep-Alive response header will be used.
`void`
`setUseSendfile(boolean useSendfile)`
Set whether sendfile is enabled for this connector.
`boolean`
`useCompression(Request request, Response response)`
Check if compression should be used for the specified request/response.

### Methods inherited from class 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 Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface ProtocolHandler

`getDesiredBufferSize`

## Field Details

### sm

protected static final StringManager sm
The StringManager for this package.

## Constructor Details

### AbstractHttp11Protocol

public AbstractHttp11Protocol(AbstractEndpoint<S,?> endpoint)
Construct a specific instance of this protocol handler.

Parameters:
  `endpoint` - Endpoint on which to accept connections

## Method Details

### init

public void init() throws Exception
Description copied from class: `AbstractProtocol`
Initializes the protocol handler.

Specified by:
  `init` in interface `ProtocolHandler`
Overrides:
  `init` in class `AbstractProtocol<S>`
Throws:
  `Exception` - if initialization fails

### destroy

public void destroy() throws Exception
Description copied from class: `AbstractProtocol`
Destroys the protocol handler.

Specified by:
  `destroy` in interface `ProtocolHandler`
Overrides:
  `destroy` in class `AbstractProtocol<S>`
Throws:
  `Exception` - if destroy fails

### getProtocolName

protected String getProtocolName()
Description copied from class: `AbstractProtocol`
Obtain the name of the protocol, (Http, Ajp, etc.). Used with JMX.

Specified by:
  `getProtocolName` in class `AbstractProtocol<S>`
Returns:
  the protocol name

### getEndpoint

protected AbstractEndpoint<S,?> getEndpoint()
Gets the endpoint.

Over-ridden here to make the method visible to nested classes.

Overrides:
  `getEndpoint` in class `AbstractProtocol<S>`
Returns:
  the endpoint

### getHttpParser

public HttpParser getHttpParser()
Get the HttpParser used to parse relaxed characters.

Returns:
  the HttpParser

### getContinueResponseTiming

public String getContinueResponseTiming()
Get the setting for how responses to 100-Continue requests will be sent.

Returns:
  The current continue response timing setting

### setContinueResponseTiming

public void setContinueResponseTiming(String continueResponseTiming)
Set the setting for how responses to 100-Continue requests will be sent.

Parameters:
  `continueResponseTiming` - The new continue response timing setting

### getContinueResponseTimingInternal

public ContinueResponseTiming getContinueResponseTimingInternal()
Get the continue response timing setting as an enum value.

Returns:
  The continue response timing

### getUseKeepAliveResponseHeader

public boolean getUseKeepAliveResponseHeader()
Get the flag that controls whether the Keep-Alive response header will be used.

Returns:
  `true` if the Keep-Alive response header will be used

### setUseKeepAliveResponseHeader

public void setUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader)
Set the flag that controls whether the Keep-Alive response header will be used.

Parameters:
  `useKeepAliveResponseHeader` - `true` if the Keep-Alive response header should be used

### getRelaxedPathChars

public String getRelaxedPathChars()
Get the set of characters allowed in a URL path.

Returns:
  The allowed path characters

### setRelaxedPathChars

public void setRelaxedPathChars(String relaxedPathChars)
Set the set of characters allowed in a URL path.

Parameters:
  `relaxedPathChars` - The allowed path characters

### getRelaxedQueryChars

public String getRelaxedQueryChars()
Get the set of characters allowed in a URL query string.

Returns:
  The allowed query characters

### setRelaxedQueryChars

public void setRelaxedQueryChars(String relaxedQueryChars)
Set the set of characters allowed in a URL query string.

Parameters:
  `relaxedQueryChars` - The allowed query characters

### 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()
Get the maximum size of the HTTP message header.

Returns:
  The maximum size of the HTTP message header in bytes

### setMaxHttpHeaderSize

public void setMaxHttpHeaderSize(int valueI)
Set the maximum size of the HTTP message header.

Parameters:
  `valueI` - The maximum size of the HTTP message header in bytes

### getMaxHttpRequestHeaderSize

public int getMaxHttpRequestHeaderSize()
Get the maximum size of the HTTP request message header.

Returns:
  The maximum size of the HTTP request message header in bytes

### setMaxHttpRequestHeaderSize

public void setMaxHttpRequestHeaderSize(int valueI)
Set the maximum size of the HTTP request message header.

Parameters:
  `valueI` - The maximum size of the HTTP request message header in bytes

### getMaxHttpResponseHeaderSize

public int getMaxHttpResponseHeaderSize()
Get the maximum size of the HTTP response message header.

Returns:
  The maximum size of the HTTP response message header in bytes

### setMaxHttpResponseHeaderSize

public void setMaxHttpResponseHeaderSize(int valueI)
Set the maximum size of the HTTP response message header.

Parameters:
  `valueI` - The maximum size of the HTTP response message header in bytes

### 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

public void setCompression(String compression)
Set the compression setting.

Parameters:
  `compression` - The compression setting

### getCompression

public String getCompression()
Get the compression setting.

Returns:
  The compression setting

### getCompressionLevel

protected int getCompressionLevel()
Get the compression level.

Returns:
  The compression level

### getNoCompressionUserAgents

public String getNoCompressionUserAgents()
Get the list of user agents that should not use compression.

Returns:
  The user agents that should not use compression

### getNoCompressionUserAgentsPattern

protected Pattern getNoCompressionUserAgentsPattern()
Get the pattern of user agents that should not use compression.

Returns:
  The pattern of user agents that should not use compression

### setNoCompressionUserAgents

public void setNoCompressionUserAgents(String noCompressionUserAgents)
Set the list of user agents that should not use compression.

Parameters:
  `noCompressionUserAgents` - The user agents that should not use compression

### getCompressibleMimeType

public String getCompressibleMimeType()
Get the MIME types that may be subject to compression.

Returns:
  The MIME types that may be subject to compression

### setCompressibleMimeType

public void setCompressibleMimeType(String valueS)
Set the MIME types that may be subject to compression.

Parameters:
  `valueS` - The MIME types that may be subject to compression

### getCompressibleMimeTypes

public String[] getCompressibleMimeTypes()
Get the MIME types that may be subject to compression as an array.

Returns:
  The MIME types that may be subject to compression

### getCompressionMinSize

public int getCompressionMinSize()
Get the minimum response size for compression to be applied.

Returns:
  The minimum response size in bytes

### setCompressionMinSize

public void setCompressionMinSize(int compressionMinSize)
Set the minimum response size for compression to be applied.

Parameters:
  `compressionMinSize` - The minimum response size in bytes

### getNoCompressionEncodings

public String getNoCompressionEncodings()
Get the content encodings that should not be used.

Returns:
  The content encodings that should not be used

### setNoCompressionEncodings

public void setNoCompressionEncodings(String encodings)
Set the content encodings that should not be used.

Parameters:
  `encodings` - The content encodings that should not be used

### useCompression

public boolean useCompression(Request request, Response response)
Check if compression should be used for the specified request/response.

Parameters:
  `request` - The HTTP request
  `response` - The HTTP response
Returns:
  `true` if compression should be used

### getRestrictedUserAgents

public String 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

protected Pattern getRestrictedUserAgentsPattern()
Get the pattern of user agents that should be restricted to HTTP/1.0.

Returns:
  The pattern of user agents that should be restricted to HTTP/1.0

### setRestrictedUserAgents

public void setRestrictedUserAgents(String restrictedUserAgents)
Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode). Regular expression as supported by `Pattern`.

Parameters:
  `restrictedUserAgents` - The regular expression as supported by `Pattern` for the user agents

### getServer

public String getServer()
Get the value of the Server response header.

Returns:
  The value of the Server response header

### setServer

public void setServer(String server)
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 if `server` is set, any application provided value will be over-ridden.

Returns:
  `true` if application provided values should be removed, otherwise `false`

### setServerRemoveAppProvidedValues

public void setServerRemoveAppProvidedValues(boolean serverRemoveAppProvidedValues)
Set whether application provider values for the HTTP Server header should be removed.

Parameters:
  `serverRemoveAppProvidedValues` - `true` if application provided values should be removed

### getMaxTrailerSize

public int getMaxTrailerSize()
Get the maximum size of trailing headers.

Returns:
  The maximum size of trailing headers in bytes

### setMaxTrailerSize

public void setMaxTrailerSize(int maxTrailerSize)
Set the maximum size of trailing headers.

Parameters:
  `maxTrailerSize` - The maximum size of trailing headers in bytes

### getMaxExtensionSize

public int getMaxExtensionSize()
Get the maximum size of extension information in chunked encoding.

Returns:
  The maximum size of extension information in bytes

### setMaxExtensionSize

public void setMaxExtensionSize(int maxExtensionSize)
Set the maximum size of extension information in chunked encoding.

Parameters:
  `maxExtensionSize` - The maximum size of extension information in bytes

### getMaxSwallowSize

public int getMaxSwallowSize()
Get the maximum amount of request body to swallow.

Returns:
  The maximum amount of request body to swallow in bytes

### setMaxSwallowSize

public void setMaxSwallowSize(int maxSwallowSize)
Set the maximum amount of request body to swallow.

Parameters:
  `maxSwallowSize` - The maximum amount of request body to swallow in bytes

### getSecure

public boolean getSecure()
Get the flag indicating if this protocol is treated as secure.

Returns:
  `true` if this protocol is treated as secure

### setSecure

public void setSecure(boolean b)
Set the flag indicating if this protocol is treated as secure.

Parameters:
  `b` - `true` if this protocol is treated as secure

### setAllowedTrailerHeaders

public void setAllowedTrailerHeaders(String commaSeparatedHeaders)
Set the names of headers that are allowed to be sent via a trailer when using chunked encoding.

Parameters:
  `commaSeparatedHeaders` - Comma separated list of header names

### getAllowedTrailerHeadersInternal

protected Set<String> getAllowedTrailerHeadersInternal()
Get the set of allowed trailer header names.

Returns:
  The set of allowed trailer header names

### isTrailerHeaderAllowed

public boolean isTrailerHeaderAllowed(String headerName)
Check if a header name is in the set of allowed trailer headers.

Parameters:
  `headerName` - The header name to check
Returns:
  `true` if the header is allowed as a trailer header

### getAllowedTrailerHeaders

public String getAllowedTrailerHeaders()
Get the list of allowed trailer headers as a comma-separated string.

Returns:
  The allowed trailer headers as a comma-separated string

### addAllowedTrailerHeader

public void addAllowedTrailerHeader(String header)
Add a header name to the set of allowed trailer headers.

Parameters:
  `header` - The header name to add

### removeAllowedTrailerHeader

public void removeAllowedTrailerHeader(String header)
Remove a header name from the set of allowed trailer headers.

Parameters:
  `header` - The header name to remove

### addUpgradeProtocol

public void addUpgradeProtocol(UpgradeProtocol upgradeProtocol)
Description copied from interface: `ProtocolHandler`
Add a new protocol for used by HTTP/1.1 upgrade or ALPN.

Parameters:
  `upgradeProtocol` - the protocol

### findUpgradeProtocols

public UpgradeProtocol[] findUpgradeProtocols()
Description copied from interface: `ProtocolHandler`
Return all configured upgrade protocols.

Returns:
  the protocols

### getNegotiatedProtocol

public UpgradeProtocol getNegotiatedProtocol(String negotiatedName)
Description copied from class: `AbstractProtocol`
Find a suitable handler for the protocol negotiated at the network layer.

Specified by:
  `getNegotiatedProtocol` in class `AbstractProtocol<S>`
Parameters:
  `negotiatedName` - The name of the requested negotiated protocol.
Returns:
  The instance where `UpgradeProtocol.getAlpnName()` matches the requested protocol

### getUpgradeProtocol

public UpgradeProtocol getUpgradeProtocol(String upgradedName)
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 class `AbstractProtocol<S>`
Parameters:
  `upgradedName` - The name of the requested negotiated protocol.
Returns:
  The instance where `UpgradeProtocol.getAlpnName()` matches the requested protocol

### getUpgradeGroupInfo

public UpgradeGroupInfo getUpgradeGroupInfo(String upgradeProtocol)
Get the upgrade group info for the specified upgrade protocol.

Parameters:
  `upgradeProtocol` - The upgrade protocol name
Returns:
  The upgrade group info for the specified protocol

### getONameForUpgrade

public ObjectName getONameForUpgrade(String upgradeProtocol)
Get the ObjectName for the MBean of the specified upgrade protocol.

Parameters:
  `upgradeProtocol` - The upgrade protocol name
Returns:
  The ObjectName for the upgrade protocol MBean, or `null`

### isSSLEnabled

public boolean isSSLEnabled()
Check if SSL is enabled on this connector.

Returns:
  `true` if SSL is enabled

### setSSLEnabled

public void setSSLEnabled(boolean SSLEnabled)
Set whether SSL is enabled on this connector.

Parameters:
  `SSLEnabled` - `true` if SSL is enabled

### getUseSendfile

public boolean getUseSendfile()
Check if sendfile is enabled for this connector.

Returns:
  `true` if sendfile is enabled

### setUseSendfile

public void setUseSendfile(boolean useSendfile)
Set whether sendfile is enabled for this connector.

Parameters:
  `useSendfile` - `true` if sendfile is enabled

### getMaxKeepAliveRequests

public int getMaxKeepAliveRequests()
Get 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).

Returns:
  The maximum number of requests which can be performed over a keep-alive connection

### 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

public String getDefaultSSLHostConfigName()
Get the default SSL host configuration name.

Returns:
  The default SSL host configuration name

### setDefaultSSLHostConfigName

public void setDefaultSSLHostConfigName(String defaultSSLHostConfigName)
Set the default SSL host configuration name.

Parameters:
  `defaultSSLHostConfigName` - The default SSL host configuration name

### addSslHostConfig

public void addSslHostConfig(SSLHostConfig sslHostConfig)
Description copied from interface: `ProtocolHandler`
Add a new SSL configuration for a virtual host.

Parameters:
  `sslHostConfig` - the configuration

### addSslHostConfig

public void addSslHostConfig(SSLHostConfig sslHostConfig, boolean replace)
Description copied from interface: `ProtocolHandler`
Add a new SSL configuration for a virtual host.

Parameters:
  `sslHostConfig` - the configuration
  `replace` - If `true` replacement of an existing configuration is permitted, otherwise any such attempted replacement will trigger an exception

### findSslHostConfigs

public SSLHostConfig[] 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()
Reload all SSL host configurations.

### reloadSslHostConfig

public void reloadSslHostConfig(String hostName)
Reload the SSL host configuration for the specified host.

Parameters:
  `hostName` - The host name to reload

### getSslImplementationShortName

protected String getSslImplementationShortName()
Get the short name of the SSL implementation.

Returns:
  The short name of the SSL implementation

### getSslImplementationName

public String getSslImplementationName()
Get the name of the SSL implementation.

Returns:
  The name of the SSL implementation

### setSslImplementationName

public void setSslImplementationName(String s)
Set the name of the SSL implementation.

Parameters:
  `s` - The name of the SSL implementation

### getSniParseLimit

public int getSniParseLimit()
Get the SNI parse limit.

Returns:
  The SNI parse limit

### setSniParseLimit

public void setSniParseLimit(int sniParseLimit)
Set the SNI parse limit.

Parameters:
  `sniParseLimit` - The SNI parse limit

### checkSni

public boolean checkSni(String sniHostName, String protocolHostName)
Check the SNI hostname.

Parameters:
  `sniHostName` - The SNI hostname
  `protocolHostName` - The protocol hostname
Returns:
  `true` if the SNI check passes

### createProcessor

protected Processor createProcessor()
Description copied from class: `AbstractProtocol`
Create and configure a new Processor instance for the current protocol implementation.

Specified by:
  `createProcessor` in class `AbstractProtocol<S>`
Returns:
  A fully configured Processor instance that is ready to use

### createUpgradeProcessor

protected Processor createUpgradeProcessor(SocketWrapperBase<?> socket, UpgradeToken upgradeToken)
Description copied from class: `AbstractProtocol`
Create and configure a new Processor instance for upgrade connections.

Specified by:
  `createUpgradeProcessor` in class `AbstractProtocol<S>`
Parameters:
  `socket` - The socket for the upgrade connection
  `upgradeToken` - The upgrade token containing upgrade information
Returns:
  A fully configured Processor instance that is ready to use