Class AbstractHttp11Protocol<S>

    • Constructor Detail

      • AbstractHttp11Protocol

        public AbstractHttp11Protocol​(AbstractEndpoint<S,​?> endpoint)
    • Method Detail

      • init

        public void init()
                  throws java.lang.Exception
        Description copied from interface: ProtocolHandler
        Initialise the protocol.
        Specified by:
        init in interface ProtocolHandler
        Overrides:
        init in class AbstractProtocol<S>
        Throws:
        java.lang.Exception - If the protocol handler fails to initialise
      • destroy

        public void destroy()
                     throws java.lang.Exception
        Description copied from interface: ProtocolHandler
        Destroy the protocol (optional).
        Specified by:
        destroy in interface ProtocolHandler
        Overrides:
        destroy in class AbstractProtocol<S>
        Throws:
        java.lang.Exception - If the protocol handler fails to destroy
      • getProtocolName

        protected java.lang.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
      • getContinueResponseTiming

        public java.lang.String getContinueResponseTiming()
      • setContinueResponseTiming

        public void setContinueResponseTiming​(java.lang.String continueResponseTiming)
      • getUseKeepAliveResponseHeader

        public boolean getUseKeepAliveResponseHeader()
      • setUseKeepAliveResponseHeader

        public void setUseKeepAliveResponseHeader​(boolean useKeepAliveResponseHeader)
      • getRelaxedPathChars

        public java.lang.String getRelaxedPathChars()
      • setRelaxedPathChars

        public void setRelaxedPathChars​(java.lang.String relaxedPathChars)
      • getRelaxedQueryChars

        public java.lang.String getRelaxedQueryChars()
      • setRelaxedQueryChars

        public void setRelaxedQueryChars​(java.lang.String relaxedQueryChars)
      • getAllowHostHeaderMismatch

        public boolean getAllowHostHeaderMismatch()
        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, otherwise false
      • setAllowHostHeaderMismatch

        public void setAllowHostHeaderMismatch​(boolean allowHostHeaderMismatch)
        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

        public boolean getRejectIllegalHeader()
        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 or false if the header will be ignored
      • setRejectIllegalHeader

        public void setRejectIllegalHeader​(boolean rejectIllegalHeader)
        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

        public void setCompression​(java.lang.String compression)
      • getCompression

        public java.lang.String getCompression()
      • getCompressionLevel

        protected int getCompressionLevel()
      • getNoCompressionUserAgents

        public java.lang.String getNoCompressionUserAgents()
      • getNoCompressionUserAgentsPattern

        protected java.util.regex.Pattern getNoCompressionUserAgentsPattern()
      • setNoCompressionUserAgents

        public void setNoCompressionUserAgents​(java.lang.String noCompressionUserAgents)
      • getCompressibleMimeType

        public java.lang.String getCompressibleMimeType()
      • setCompressibleMimeType

        public void setCompressibleMimeType​(java.lang.String valueS)
      • getCompressibleMimeTypes

        public java.lang.String[] getCompressibleMimeTypes()
      • getCompressionMinSize

        public int getCompressionMinSize()
      • setCompressionMinSize

        public void setCompressionMinSize​(int compressionMinSize)
      • useCompression

        public boolean useCompression​(Request request,
                                      Response response)
      • getRestrictedUserAgents

        public java.lang.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 java.util.regex.Pattern getRestrictedUserAgentsPattern()
      • setRestrictedUserAgents

        public void setRestrictedUserAgents​(java.lang.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 e.g. "gorilla|desesplorer|tigrus"
      • getServer

        public java.lang.String getServer()
      • setServer

        public void setServer​(java.lang.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)
      • 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

        public void setAllowedTrailerHeaders​(java.lang.String commaSeparatedHeaders)
      • getAllowedTrailerHeadersInternal

        protected java.util.Set<java.lang.String> getAllowedTrailerHeadersInternal()
      • isTrailerHeaderAllowed

        public boolean isTrailerHeaderAllowed​(java.lang.String headerName)
      • getAllowedTrailerHeaders

        public java.lang.String getAllowedTrailerHeaders()
      • addAllowedTrailerHeader

        public void addAllowedTrailerHeader​(java.lang.String header)
      • removeAllowedTrailerHeader

        public void removeAllowedTrailerHeader​(java.lang.String header)
      • 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
      • getUpgradeProtocol

        public UpgradeProtocol getUpgradeProtocol​(java.lang.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​(java.lang.String upgradeProtocol)
      • getONameForUpgrade

        public javax.management.ObjectName getONameForUpgrade​(java.lang.String upgradeProtocol)
      • 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

        public java.lang.String getDefaultSSLHostConfigName()
      • setDefaultSSLHostConfigName

        public void setDefaultSSLHostConfigName​(java.lang.String defaultSSLHostConfigName)
      • addSslHostConfig

        public void addSslHostConfig​(SSLHostConfig sslHostConfig)
        Description copied from interface: ProtocolHandler
        Add a new SSL configuration for a virtual host.
        Parameters:
        sslHostConfig - the configuration
      • 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()
      • reloadSslHostConfig

        public void reloadSslHostConfig​(java.lang.String hostName)
      • 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