Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Ignore unknown Http3Setting Identifier in Http3SettingsFrame - #360

Merged
normanmaurer merged 1 commit into
mainfrom
ignore
Feb 18, 2026
Merged

Ignore unknown Http3Setting Identifier in Http3SettingsFrame#360
normanmaurer merged 1 commit into
mainfrom
ignore

Conversation

@normanmaurer

Copy link
Copy Markdown
Member

  • Ignore unknown HTTP/3 SETTINGS identifiers

    • Updated parsing logic to skip unknown settings identifiers:

      java // When Non-Standard/Unknown settings identifier present - Ignore if (Http3SettingIdentifier.fromId(key) == null) { return value; }

    • Unknown settings are no longer stored in Http3Settings.

    • Fully aligns with HTTP/3 specification behaviour.

  • Effectively deprecates the old direct-settings behavior introduced/fixed in PR #15835.

  • Added missing HTTP/3 error codes

    • Implemented the remaining H3 error codes defined in the RFC.
    • Ensures accurate error propagation and complete protocol support.
  • Added SETTINGS_H3_DATAGRAM (0x33)

    • Introduced the identifier:

      java SETTINGS_H3_DATAGRAM(0x33)

    • Added proper handling in both encoder and decoder paths.

  • Added unit tests

    • Tests covering:

      • Ignoring unknown setting identifiers
      • Correct handling of SETTINGS_H3_DATAGRAM
      • Verification of newly added error codes
      • Ensuring unknown settings do not appear in Http3Settings

  • Netty now correctly ignores unknown HTTP/3 settings, as required by the specification.
  • Http3Settings no longer stores invalid or non-standard identifiers.
  • Full support for SETTINGS_H3_DATAGRAM (0x33).
  • Complete coverage of HTTP/3 error codes.
  • Added unit tests ensure long-term correctness.
  • Behaviour from PR #15835 is effectively superseded and corrected.

Fixes #15908 Port of netty/netty#15909

* According to the spec
https://www.rfc-editor.org/rfc/rfc9114.html#section-7.2.4-9 , endpoints
**must ignore unknown settings identifiers**. Netty’s previous behavior
incorrectly **stored** unknown settings values, which contradicts RFC
behaviour.
* A **HTTP/3 error code** was missing - H3_DATAGRAM_ERROR
* The **SETTINGS_H3_DATAGRAM (0x33)** identifier was not added.
* Prior behaviour fixed in
[https://github.com/netty/netty/pull/15835](https://github.com/netty/netty/pull/15835)
still allowed direct injection of unsupported settings; this PR
effectively deprecates that direct-settings behaviour completely.

---

* [x] **Ignore unknown HTTP/3 SETTINGS identifiers**

  * Updated parsing logic to skip unknown settings identifiers:

    ```java
    // When Non-Standard/Unknown settings identifier present - Ignore
    if (Http3SettingIdentifier.fromId(key) == null) {
        return value;
    }
    ```

  * Unknown settings are **no longer stored** in `Http3Settings`.

  * Fully aligns with HTTP/3 specification behaviour.

* Effectively **deprecates the old direct-settings behavior**
introduced/fixed in PR #15835.

* [x] **Added missing HTTP/3 error codes**

  * Implemented the remaining H3 error codes defined in the RFC.
  * Ensures accurate error propagation and complete protocol support.

* [x] **Added `SETTINGS_H3_DATAGRAM (0x33)`**

  * Introduced the identifier:

    ```java
    SETTINGS_H3_DATAGRAM(0x33)
    ```

  * Added proper handling in both encoder and decoder paths.

* [x] **Added unit tests**

  * Tests covering:

    * Ignoring unknown setting identifiers
    * Correct handling of `SETTINGS_H3_DATAGRAM`
    * Verification of newly added error codes
    * Ensuring unknown settings do **not** appear in `Http3Settings`

---

* [x] Netty now **correctly ignores unknown HTTP/3 settings**, as
required by the specification.
* [x] `Http3Settings` no longer stores invalid or non-standard
identifiers.
* [x] Full support for **`SETTINGS_H3_DATAGRAM (0x33)`**.
* [x] Complete coverage of **HTTP/3 error codes**.
* [x] Added unit tests ensure long-term correctness.
* [x] Behaviour from PR #15835 is effectively superseded and corrected.

Fixes #[15908](netty/netty#15908)
Port of netty/netty#15909
@normanmaurer normanmaurer added this to the 0.0.31.Final milestone Feb 18, 2026
@normanmaurer
normanmaurer merged commit d98bffe into main Feb 18, 2026
5 checks passed
@normanmaurer
normanmaurer deleted the ignore branch February 18, 2026 15:56
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant