RFR: 8347167: Implementation in com.sun.net.httpserver.Headers.normalize() can be improved
Volkan Yazici
vyazici at openjdk.org
Mon Nov 17 16:06:58 UTC 2025
On Mon, 15 Sep 2025 02:50:27 GMT, Josiah Noel <duke at openjdk.org> wrote:
> Following the direction outlined in the net-dev discussion, I've updated the `com.sun.net.httpserver.Headers.normalize()` method to no longer allocate a superfluous char array when the header is already normalized.
Inspired from your changes, I've put together [this patch](https://github.com/user-attachments/files/23579262/headerNormalize.patch) containing following changes:
- Ventilate and document `Headers::normalize`
- Convert the method to `private static`
- Extend tests
- Add a benchmark
@SentryMan, unless you have remarks/objections, would you mind applying the patch, please?
For the record, we internally discussed two other related issues:
- The inconsistency between `Headers::getFirst` and `Headers::keySet::get`
- Switching from the first-letter-in-upper-case normalization form to all-lower-case – This would ease the cognitive load, simplify the implementation (i.e. maintainability & efficiency gains), match the RFC recommendations:
> "Field names MUST be converted to lowercase when constructing an HTTP/2 message." – [RFC 9113: HTTP/2 > 8. Expressing HTTP Semantics in HTTP/2 > 8.2. HTTP Fields](https://www.rfc-editor.org/rfc/rfc9113#section-8.2)
But this might break certain applications relying on the existing behaviour.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27276#issuecomment-3540930536
More information about the net-dev
mailing list