io.undertow

## Class UndertowOptions

- java.lang.Object
- - io.undertow.UndertowOptions

    public class UndertowOptions
    extends Object

Author:
  Stuart Douglas

### Field Summary

Fields
`static org.xnio.Option<String>` `AJP_ALLOWED_REQUEST_ATTRIBUTES_PATTERN` The AJP protocol itself supports the passing of arbitrary request attributes.
`static org.xnio.Option<Boolean>` `ALLOW_ENCODED_SLASH` If a request comes in with encoded / characters (i.e.
`static org.xnio.Option<Boolean>` `ALLOW_EQUALS_IN_COOKIE_VALUE` If this is true then Undertow will allow non-escaped equals characters in unquoted cookie values.
`static org.xnio.Option<Boolean>` `ALLOW_UNESCAPED_CHARACTERS_IN_URL`
`static org.xnio.Option<Boolean>` `ALLOW_UNKNOWN_PROTOCOLS` If unknown protocols should be allowed.
`static org.xnio.Option<Boolean>` `ALWAYS_SET_DATE` If this is true then a Date header will be added to all responses.
`static org.xnio.Option<Boolean>` `ALWAYS_SET_KEEP_ALIVE` If this is true then a Connection: keep-alive header will be added to responses, even when it is not strictly required by the specification.
`static org.xnio.Option<Boolean>` `BUFFER_PIPELINED_DATA` If we should buffer pipelined requests.
`static org.xnio.Option<Boolean>` `DECODE_URL` If this is true then the parser will decode the URL and query parameters using the selected character encoding (UTF-8 by default).
`static boolean` `DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION`
`static int` `DEFAULT_HTTP_HEADERS_CACHE_SIZE`
`static int` `DEFAULT_MAX_BUFFERED_REQUEST_SIZE`
`static int` `DEFAULT_MAX_CACHED_HEADER_SIZE`
`static long` `DEFAULT_MAX_ENTITY_SIZE` We do not have a default upload limit
`static int` `DEFAULT_MAX_HEADER_SIZE` The default size we allow for the HTTP header.
`static int` `DEFAULT_MAX_HEADERS`
`static int` `DEFAULT_MAX_PARAMETERS`
`static int` `DEFAULT_READ_TIMEOUT` The default read timeout to be used by read operations that absolutely require a timeout.
`static org.xnio.Option<Boolean>` `ENABLE_CONNECTOR_STATISTICS` Deprecated.
`static org.xnio.Option<Boolean>` `ENABLE_HTTP2` If we should attempt to use HTTP2 for HTTPS connections.
`static org.xnio.Option<Boolean>` `ENABLE_RFC6265_COOKIE_VALIDATION` If this is true then Undertow will enable RFC6265 compliant cookie validation for Set-Cookie header instead of legacy backward compatible behavior.
`static org.xnio.Option<Boolean>` `ENABLE_SPDY` Deprecated.
`static org.xnio.Option<Boolean>` `ENABLE_STATISTICS` If connector level statistics should be enabled.
`static org.xnio.Option<String>` `ENDPOINT_IDENTIFICATION_ALGORITHM` The endpoint identification algorithm.
`static org.xnio.Option<Integer>` `HTTP_HEADERS_CACHE_SIZE` The maximum number of headers that are cached per connection.
`static org.xnio.Option<Integer>` `HTTP2_HUFFMAN_CACHE_SIZE` Undertow keeps a LRU cache of common huffman encodings.
`static org.xnio.Option<Integer>` `HTTP2_PADDING_SIZE` The maximum amount of padding to send in a HTTP/2 frame.
`static org.xnio.Option<Boolean>` `HTTP2_SETTINGS_ENABLE_PUSH` If push should be enabled for this connection.
`static org.xnio.Option<Integer>` `HTTP2_SETTINGS_HEADER_TABLE_SIZE` The size of the header table that is used in the encoder
`static int` `HTTP2_SETTINGS_HEADER_TABLE_SIZE_DEFAULT`
`static org.xnio.Option<Integer>` `HTTP2_SETTINGS_INITIAL_WINDOW_SIZE`
`static org.xnio.Option<Integer>` `HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS` The maximum number of concurrent
`static org.xnio.Option<Integer>` `HTTP2_SETTINGS_MAX_FRAME_SIZE`
`static org.xnio.Option<Integer>` `HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE` Deprecated.
`static org.xnio.Option<Integer>` `IDLE_TIMEOUT` The idle timeout in milliseconds after which the channel will be closed.
`static org.xnio.Option<Integer>` `MAX_AJP_PACKET_SIZE` The maximum AJP packet size, default is 8192
`static org.xnio.Option<Integer>` `MAX_BUFFERED_REQUEST_SIZE` Maximum size of a buffered request, in bytes
`static org.xnio.Option<Integer>` `MAX_CACHED_HEADER_SIZE` The maximum size of a header name+value combo that is cached in the per connection cache.
`static org.xnio.Option<Integer>` `MAX_CONCURRENT_REQUESTS_PER_CONNECTION` The maximum number of concurrent requests that will be processed at a time.
`static org.xnio.Option<Integer>` `MAX_COOKIES` The maximum number of cookies that will be parsed.
`static org.xnio.Option<Long>` `MAX_ENTITY_SIZE` The default maximum size of the HTTP entity body.
`static org.xnio.Option<Integer>` `MAX_HEADER_SIZE` The maximum size in bytes of a http request header.
`static org.xnio.Option<Integer>` `MAX_HEADERS` The maximum number of headers that will be parsed.
`static org.xnio.Option<Integer>` `MAX_PARAMETERS` The maximum number of parameters that will be parsed.
`static org.xnio.Option<Integer>` `MAX_QUEUED_READ_BUFFERS` The maximum number of buffers that will be used before reads are paused in framed protocols.
`static org.xnio.Option<Long>` `MULTIPART_MAX_ENTITY_SIZE` The default maximum size of the HTTP entity body when using the mutiltipart parser.
`static org.xnio.Option<Integer>` `NO_REQUEST_TIMEOUT` The amount of time the connection can be idle with no current requests before it is closed;
`static org.xnio.Option<Integer>` `QUEUED_FRAMES_HIGH_WATER_MARK` The maximum numbers of frames that can be queued before reads are suspended.
`static org.xnio.Option<Integer>` `QUEUED_FRAMES_LOW_WATER_MARK` The point at which reads will resume again after hitting the high water mark Defaults to 10
`static org.xnio.Option<Boolean>` `RECORD_REQUEST_START_TIME` If this is true then Undertow will record the request start time, to allow for request time to be logged This has a small but measurable performance impact default is false
`static org.xnio.Option<Integer>` `REQUEST_PARSE_TIMEOUT` The maximum allowed time of reading HTTP request in milliseconds.
`static org.xnio.Option<Boolean>` `REQUIRE_HOST_HTTP11` If this is true then HTTP/1.1 requests will be failed if no host header is present.
`static org.xnio.Option<Integer>` `SHUTDOWN_TIMEOUT` The server shutdown timeout in milliseconds after which the executor will be forcefully shut down interrupting tasks which are still executing.
`static org.xnio.Option<String>` `SSL_SNI_HOSTNAME` This option forces `UndertowXnioSsl` to use a specific name as the `SNIHostName` for a client connection.
`static org.xnio.Option<Boolean>` `SSL_USER_CIPHER_SUITES_ORDER` If the SSLEngine should prefer the servers cipher version.
`static org.xnio.Option<String>` `URL_CHARSET` If this is true then the parser will decode the URL and query parameters using the selected character encoding (UTF-8 by default).

### Method Summary

### Methods inherited from class java.lang.Object

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

### Field Detail

#### DEFAULT_READ_TIMEOUT

    public static final int DEFAULT_READ_TIMEOUT

The default read timeout to be used by read operations that absolutely require a timeout. Used only when both READ_TIMEOUT and IDLE_TIMEOUT are not used.

See Also:
  Constant Field Values

#### MAX_HEADER_SIZE

    public static final org.xnio.Option<Integer> MAX_HEADER_SIZE

The maximum size in bytes of a http request header.

#### DEFAULT_MAX_HEADER_SIZE

    public static final int DEFAULT_MAX_HEADER_SIZE

The default size we allow for the HTTP header.

See Also:
  Constant Field Values

#### MAX_ENTITY_SIZE

    public static final org.xnio.Option<Long> MAX_ENTITY_SIZE

The default maximum size of the HTTP entity body.

#### MULTIPART_MAX_ENTITY_SIZE

    public static final org.xnio.Option<Long> MULTIPART_MAX_ENTITY_SIZE

The default maximum size of the HTTP entity body when using the mutiltipart parser. Generall this will be larger than `MAX_ENTITY_SIZE`. If this is not specified it will be the same as `MAX_ENTITY_SIZE`.

#### DEFAULT_MAX_ENTITY_SIZE

    public static final long DEFAULT_MAX_ENTITY_SIZE

We do not have a default upload limit

See Also:
  Constant Field Values

#### BUFFER_PIPELINED_DATA

    public static final org.xnio.Option<Boolean> BUFFER_PIPELINED_DATA

If we should buffer pipelined requests. Defaults to false.

#### IDLE_TIMEOUT

    public static final org.xnio.Option<Integer> IDLE_TIMEOUT

The idle timeout in milliseconds after which the channel will be closed. If the underlying channel already has a read or write timeout set the smaller of the two values will be used for read/write timeouts.

#### REQUEST_PARSE_TIMEOUT

    public static final org.xnio.Option<Integer> REQUEST_PARSE_TIMEOUT

The maximum allowed time of reading HTTP request in milliseconds. `-1` or missing value disables this functionality.

#### NO_REQUEST_TIMEOUT

    public static final org.xnio.Option<Integer> NO_REQUEST_TIMEOUT

The amount of time the connection can be idle with no current requests before it is closed;

#### DEFAULT_MAX_PARAMETERS

    public static final int DEFAULT_MAX_PARAMETERS

See Also:
  Constant Field Values

#### MAX_PARAMETERS

    public static final org.xnio.Option<Integer> MAX_PARAMETERS

The maximum number of parameters that will be parsed. This is used to protect against hash vulnerabilities.

This applies to both query parameters, and to POST data, but is not cumulative (i.e. you can potentially have max parameters * 2 total parameters).

Defaults to 1000

#### DEFAULT_MAX_HEADERS

    public static final int DEFAULT_MAX_HEADERS

See Also:
  Constant Field Values

#### MAX_HEADERS

    public static final org.xnio.Option<Integer> MAX_HEADERS

The maximum number of headers that will be parsed. This is used to protect against hash vulnerabilities.

Defaults to 200

#### MAX_COOKIES

    public static final org.xnio.Option<Integer> MAX_COOKIES

The maximum number of cookies that will be parsed. This is used to protect against hash vulnerabilities.

Defaults to 200

#### ALLOW_ENCODED_SLASH

    public static final org.xnio.Option<Boolean> ALLOW_ENCODED_SLASH

If a request comes in with encoded / characters (i.e. %2F), will these be decoded.

This can cause security problems if a front end proxy does not perform the same decoding, and as a result this is disabled by default.

Defaults to false See CVE-2007-0450

#### DECODE_URL

    public static final org.xnio.Option<Boolean> DECODE_URL

If this is true then the parser will decode the URL and query parameters using the selected character encoding (UTF-8 by default). If this is false they will not be decoded. This will allow a later handler to decode them into whatever charset is desired.

Defaults to true.

#### URL_CHARSET

    public static final org.xnio.Option<String> URL_CHARSET

If this is true then the parser will decode the URL and query parameters using the selected character encoding (UTF-8 by default). If this is false they will not be decoded. This will allow a later handler to decode them into whatever charset is desired.

Defaults to true.

#### ALWAYS_SET_KEEP_ALIVE

    public static final org.xnio.Option<Boolean> ALWAYS_SET_KEEP_ALIVE

If this is true then a Connection: keep-alive header will be added to responses, even when it is not strictly required by the specification.

Defaults to true

#### ALWAYS_SET_DATE

    public static final org.xnio.Option<Boolean> ALWAYS_SET_DATE

If this is true then a Date header will be added to all responses. The HTTP spec says this header should be added to all responses, unless the server does not have an accurate clock.

Defaults to true

#### MAX_BUFFERED_REQUEST_SIZE

    public static final org.xnio.Option<Integer> MAX_BUFFERED_REQUEST_SIZE

Maximum size of a buffered request, in bytes

Requests are not usually buffered, the most common case is when performing SSL renegotiation for a POST request, and the post data must be fully buffered in order to perform the renegotiation.

Defaults to 16384.

#### DEFAULT_MAX_BUFFERED_REQUEST_SIZE

    public static final int DEFAULT_MAX_BUFFERED_REQUEST_SIZE

See Also:
  Constant Field Values

#### RECORD_REQUEST_START_TIME

    public static final org.xnio.Option<Boolean> RECORD_REQUEST_START_TIME

If this is true then Undertow will record the request start time, to allow for request time to be logged This has a small but measurable performance impact default is false

#### ALLOW_EQUALS_IN_COOKIE_VALUE

    public static final org.xnio.Option<Boolean> ALLOW_EQUALS_IN_COOKIE_VALUE

If this is true then Undertow will allow non-escaped equals characters in unquoted cookie values.

Unquoted cookie values may not contain equals characters. If present the value ends before the equals sign. The remainder of the cookie value will be dropped.

default is false

#### ENABLE_RFC6265_COOKIE_VALIDATION

    public static final org.xnio.Option<Boolean> ENABLE_RFC6265_COOKIE_VALIDATION

If this is true then Undertow will enable RFC6265 compliant cookie validation for Set-Cookie header instead of legacy backward compatible behavior. default is false

#### DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION

    public static final boolean DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION

See Also:
  Constant Field Values

#### ENABLE_SPDY

    @Deprecated
    public static final org.xnio.Option<Boolean> ENABLE_SPDY

Deprecated.
If we should attempt to use SPDY for HTTPS connections. SPDY is no longer supported, use HTTP/2 instead

#### ENABLE_HTTP2

    public static final org.xnio.Option<Boolean> ENABLE_HTTP2

If we should attempt to use HTTP2 for HTTPS connections.

#### ENABLE_STATISTICS

    public static final org.xnio.Option<Boolean> ENABLE_STATISTICS

If connector level statistics should be enabled. This has a slight performance impact, but allows statistics such as bytes sent/recevied to be monitored. If this is passed to the client then client statistics will be enabled.

#### ENABLE_CONNECTOR_STATISTICS

    @Deprecated
    public static final org.xnio.Option<Boolean> ENABLE_CONNECTOR_STATISTICS

Deprecated.
If connector level statistics should be enabled. This has a slight performance impact, but allows statistics such as bytes sent/recevied to be monitored.

#### ALLOW_UNKNOWN_PROTOCOLS

    public static final org.xnio.Option<Boolean> ALLOW_UNKNOWN_PROTOCOLS

If unknown protocols should be allowed. The known protocols are: HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2.0 If this is false then requests that specify any other protocol will be rejected with a 400 Defaults to false

#### HTTP2_SETTINGS_HEADER_TABLE_SIZE

    public static final org.xnio.Option<Integer> HTTP2_SETTINGS_HEADER_TABLE_SIZE

The size of the header table that is used in the encoder

#### HTTP2_SETTINGS_HEADER_TABLE_SIZE_DEFAULT

    public static final int HTTP2_SETTINGS_HEADER_TABLE_SIZE_DEFAULT

See Also:
  Constant Field Values

#### HTTP2_SETTINGS_ENABLE_PUSH

    public static final org.xnio.Option<Boolean> HTTP2_SETTINGS_ENABLE_PUSH

If push should be enabled for this connection.

#### HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS

    public static final org.xnio.Option<Integer> HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS

The maximum number of concurrent

#### HTTP2_SETTINGS_INITIAL_WINDOW_SIZE

    public static final org.xnio.Option<Integer> HTTP2_SETTINGS_INITIAL_WINDOW_SIZE

#### HTTP2_SETTINGS_MAX_FRAME_SIZE

    public static final org.xnio.Option<Integer> HTTP2_SETTINGS_MAX_FRAME_SIZE

#### HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE

    @Deprecated
    public static final org.xnio.Option<Integer> HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE

Deprecated.
Deprecated, as it is effectively a duplicate of MAX_HEADER_SIZE

See Also:
  `MAX_HEADER_SIZE`

#### HTTP2_PADDING_SIZE

    public static final org.xnio.Option<Integer> HTTP2_PADDING_SIZE

The maximum amount of padding to send in a HTTP/2 frame. Actual amount will be randomly determined, defaults to Zero.

#### HTTP2_HUFFMAN_CACHE_SIZE

    public static final org.xnio.Option<Integer> HTTP2_HUFFMAN_CACHE_SIZE

Undertow keeps a LRU cache of common huffman encodings. This sets the maximum size, setting this to 0 will disable the caching.

#### MAX_CONCURRENT_REQUESTS_PER_CONNECTION

    public static final org.xnio.Option<Integer> MAX_CONCURRENT_REQUESTS_PER_CONNECTION

The maximum number of concurrent requests that will be processed at a time. This differs from max concurrent streams in that it is not sent to the remote client. If the number of pending requests exceeds this number then requests will be queued, the difference between this and max concurrent streams determines the maximum number of requests that will be queued. Queued requests are processed by a priority queue, rather than a FIFO based queue, using HTTP2 stream priority. If this number is smaller than or equal to zero then max concurrent streams determines the maximum number of streams that can be run.

#### MAX_QUEUED_READ_BUFFERS

    public static final org.xnio.Option<Integer> MAX_QUEUED_READ_BUFFERS

The maximum number of buffers that will be used before reads are paused in framed protocols. Defaults to 10

#### MAX_AJP_PACKET_SIZE

    public static final org.xnio.Option<Integer> MAX_AJP_PACKET_SIZE

The maximum AJP packet size, default is 8192

#### REQUIRE_HOST_HTTP11

    public static final org.xnio.Option<Boolean> REQUIRE_HOST_HTTP11

If this is true then HTTP/1.1 requests will be failed if no host header is present.

#### DEFAULT_MAX_CACHED_HEADER_SIZE

    public static final int DEFAULT_MAX_CACHED_HEADER_SIZE

See Also:
  Constant Field Values

#### MAX_CACHED_HEADER_SIZE

    public static final org.xnio.Option<Integer> MAX_CACHED_HEADER_SIZE

The maximum size of a header name+value combo that is cached in the per connection cache. Defaults to 150

#### DEFAULT_HTTP_HEADERS_CACHE_SIZE

    public static final int DEFAULT_HTTP_HEADERS_CACHE_SIZE

See Also:
  Constant Field Values

#### HTTP_HEADERS_CACHE_SIZE

    public static final org.xnio.Option<Integer> HTTP_HEADERS_CACHE_SIZE

The maximum number of headers that are cached per connection. Defaults to 15. If this is set to zero the cache is disabled.

#### SSL_USER_CIPHER_SUITES_ORDER

    public static final org.xnio.Option<Boolean> SSL_USER_CIPHER_SUITES_ORDER

If the SSLEngine should prefer the servers cipher version. Only applicable on JDK8+.

#### SSL_SNI_HOSTNAME

    public static final org.xnio.Option<String> SSL_SNI_HOSTNAME

This option forces `UndertowXnioSsl` to use a specific name as the `SNIHostName` for a client connection. If the option is not set, the URL hostname is used when available (for URLs that do not use the IP address). The option can be useful when connecting via IP but want to set a SNI hostname value.

#### ALLOW_UNESCAPED_CHARACTERS_IN_URL

    public static final org.xnio.Option<Boolean> ALLOW_UNESCAPED_CHARACTERS_IN_URL

#### SHUTDOWN_TIMEOUT

    public static final org.xnio.Option<Integer> SHUTDOWN_TIMEOUT

The server shutdown timeout in milliseconds after which the executor will be forcefully shut down interrupting tasks which are still executing. There is no timeout by default.

#### ENDPOINT_IDENTIFICATION_ALGORITHM

    public static final org.xnio.Option<String> ENDPOINT_IDENTIFICATION_ALGORITHM

The endpoint identification algorithm.

See Also:
  `SSLParameters.setEndpointIdentificationAlgorithm(String)`

#### QUEUED_FRAMES_HIGH_WATER_MARK

    public static final org.xnio.Option<Integer> QUEUED_FRAMES_HIGH_WATER_MARK

The maximum numbers of frames that can be queued before reads are suspended. Once this number is hit then reads will not be resumed until `QUEUED_FRAMES_LOW_WATER_MARK` is hit. Defaults to 50

#### QUEUED_FRAMES_LOW_WATER_MARK

    public static final org.xnio.Option<Integer> QUEUED_FRAMES_LOW_WATER_MARK

The point at which reads will resume again after hitting the high water mark Defaults to 10

#### AJP_ALLOWED_REQUEST_ATTRIBUTES_PATTERN

    public static final org.xnio.Option<String> AJP_ALLOWED_REQUEST_ATTRIBUTES_PATTERN

The AJP protocol itself supports the passing of arbitrary request attributes. The reverse proxy passes various information to the AJP connector using request attributes through AJP protocol. Unrecognised request attributes will be ignored unless the entire attribute name matches this regular expression. If not specified, the default value is null.