Skip to content

Match HTTP/2 content-encoding with AsciiString constants instead of toLowerCase#2207

Merged
hyperxpro merged 1 commit into
mainfrom
http2-decompressor-ascii-match
Jun 21, 2026
Merged

Match HTTP/2 content-encoding with AsciiString constants instead of toLowerCase#2207
hyperxpro merged 1 commit into
mainfrom
http2-decompressor-ascii-match

Conversation

@hyperxpro

Copy link
Copy Markdown
Member

Motivation:

The HTTP/2 content decompressor matched the content-encoding header by calling toString().toLowerCase(Locale.ROOT) on every response, allocating a String per response just to test for gzip/deflate.

Modification:

Match case-insensitively in place with AsciiString.containsIgnoreCase against the HttpHeaderValues.GZIP/DEFLATE constants, and use the HttpHeaderNames constants for the header get/remove. AsciiString case-folding is ASCII-only, so it also removes the Turkish-locale concern the Locale.ROOT call guarded against.

Result:

No per-response String allocation when checking content-encoding; the gzip/deflate activation set is unchanged (br/zstd still pass through), with new tests covering the case-insensitive and substring matches.

@hyperxpro hyperxpro merged commit 01f9e53 into main Jun 21, 2026
29 of 30 checks passed
@hyperxpro hyperxpro deleted the http2-decompressor-ascii-match branch June 21, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant