This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit a68294971e894aa81e172cceb6fb35410d6984f4 Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Dec 6 18:05:38 2022 +0000 Send setting to disable RFC 7540 settings by default --- java/org/apache/coyote/http2/ConnectionSettingsBase.java | 16 ++++++++++++++++ java/org/apache/coyote/http2/LocalStrings.properties | 1 + 2 files changed, 17 insertions(+) diff --git a/java/org/apache/coyote/http2/ConnectionSettingsBase.java b/java/org/apache/coyote/http2/ConnectionSettingsBase.java index ef4a20010a..bd880f669f 100644 --- a/java/org/apache/coyote/http2/ConnectionSettingsBase.java +++ b/java/org/apache/coyote/http2/ConnectionSettingsBase.java @@ -45,6 +45,9 @@ abstract class ConnectionSettingsBase<T extends Throwable> { static final int DEFAULT_MAX_FRAME_SIZE = MIN_MAX_FRAME_SIZE; static final long DEFAULT_MAX_HEADER_LIST_SIZE = 1 << 15; + // Defaults (defined by Tomcat) + static final long DEFAULT_NO_RFC7540_PRIORITIES = 1; + Map<Setting, Long> current = new ConcurrentHashMap<>(); Map<Setting, Long> pending = new ConcurrentHashMap<>(); @@ -58,6 +61,7 @@ abstract class ConnectionSettingsBase<T extends Throwable> { current.put(Setting.INITIAL_WINDOW_SIZE, Long.valueOf(DEFAULT_INITIAL_WINDOW_SIZE)); current.put(Setting.MAX_FRAME_SIZE, Long.valueOf(DEFAULT_MAX_FRAME_SIZE)); current.put(Setting.MAX_HEADER_LIST_SIZE, Long.valueOf(DEFAULT_MAX_HEADER_LIST_SIZE)); + current.put(Setting.NO_RFC7540_PRIORITIES, Long.valueOf(DEFAULT_NO_RFC7540_PRIORITIES)); } @@ -86,6 +90,9 @@ abstract class ConnectionSettingsBase<T extends Throwable> { case MAX_HEADER_LIST_SIZE: // No further validation required break; + case NO_RFC7540_PRIORITIES: + validateNoRfc7540Priorities(value); + break; case UNKNOWN: // Unrecognised. Ignore it. return; @@ -212,6 +219,15 @@ abstract class ConnectionSettingsBase<T extends Throwable> { } + private void validateNoRfc7540Priorities(long noRfc7540Priorities) throws T { + if (noRfc7540Priorities < 0 || noRfc7540Priorities > 1) { + String msg = sm.getString("connectionSettings.noRfc7540PrioritiesInvalid", + connectionId, Long.toString(noRfc7540Priorities)); + throwException(msg, Http2Error.PROTOCOL_ERROR); + } + } + + abstract void throwException(String msg, Http2Error error) throws T; abstract String getEndpointName(); diff --git a/java/org/apache/coyote/http2/LocalStrings.properties b/java/org/apache/coyote/http2/LocalStrings.properties index 8972c4fb6e..7587a86f33 100644 --- a/java/org/apache/coyote/http2/LocalStrings.properties +++ b/java/org/apache/coyote/http2/LocalStrings.properties @@ -26,6 +26,7 @@ connectionSettings.debug=Connection [{0}], Endpoint [{1}], Parameter type [{2}] connectionSettings.enablePushInvalid=Connection [{0}], The requested value for enable push [{1}] is not one of the permitted values (zero or one) connectionSettings.headerTableSizeLimit=Connection [{0}], Attempted to set a header table size of [{1}] but the limit is 16k connectionSettings.maxFrameSizeInvalid=Connection [{0}], The requested maximum frame size of [{1}] is outside the permitted range of [{2}] to [{3}] +connectionSettings.noRfc7540PrioritiesInvalid=Connection [{0}], The requested no RFC 7540 priorities setting [{1}] was not zero or one connectionSettings.unknown=Connection [{0}], An unknown setting with identifier [{1}] and value [{2}] was ignored connectionSettings.windowSizeTooBig=Connection [{0}], The requested window size of [{1}] is bigger than the maximum permitted value of [{2}] --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org