Skip to content

Conversation

@yawkat
Copy link
Member

@yawkat yawkat commented Dec 5, 2025

No description provided.

yawkat and others added 21 commits November 19, 2025 19:10
The standard netty multipart decoder is quite buggy. A new API is available at https://github.com/netty-contrib/codec-multipart . That implementation also has compatible drop-in replacement for the old netty APIs.

This PR checks whether the new implementation is available on the classpath, and if so, uses that instead of standard netty. There is also a config option to enable "quirks" that restore various bugs of the old implementation for compatibility.

This is experimental and undocumented because the new API is in alpha. I've added it to 4.10 to let people resolve long-standing issues with form data parsing.
* Add support for less buggy multipart decoder
The standard netty multipart decoder is quite buggy. A new API is available at https://github.com/netty-contrib/codec-multipart . That implementation also has compatible drop-in replacement for the old netty APIs.

This PR checks whether the new implementation is available on the classpath, and if so, uses that instead of standard netty. There is also a config option to enable "quirks" that restore various bugs of the old implementation for compatibility.

This is experimental and undocumented because the new API is in alpha. I've added it to 4.10 to let people resolve long-standing issues with form data parsing.

* handle new exception types

* handle new exception types v2

* fix dealloc0
)

Description

This PR adds configurable maxHeaderListSize property to HTTP client configuration for HTTP2.

    Added maxHeaderListSize configuration property with getter/setter methods.
    Updated Http2FrameCodec instantiation to use the configurable header list size.

Considerations

    Can be configured via micronaut.http.client.http2.max-header-list-size property.
# Conflicts:
#	buffer-netty/src/main/java/io/micronaut/buffer/netty/NettyReadBufferFactory.java
#	core/src/main/java/io/micronaut/core/execution/ImperativeExecutionFlowImpl.java
#	core/src/main/java/io/micronaut/core/io/buffer/ReadBufferFactory.java
#	http-netty/src/main/java/io/micronaut/http/netty/body/AvailableNettyByteBody.java
#	http-server-netty/src/main/java/io/micronaut/http/server/netty/NettyHttpRequest.java
#	http-server-netty/src/main/java/io/micronaut/http/server/netty/binders/NettyPartUploadAnnotationBinder.java
#	http-server-netty/src/main/java/io/micronaut/http/server/netty/configuration/NettyHttpServerConfiguration.java
#	http-server-netty/src/main/java/io/micronaut/http/server/netty/multipart/MultipartBodyArgumentBinder.java
#	http/src/main/java/io/micronaut/http/BasicHttpAttributes.java
#	http/src/main/java/io/micronaut/http/multipart/StreamingFileUpload.java
# Conflicts:
#	gradle.properties
#	http-server-netty/build.gradle.kts
#	http-server-netty/src/main/java/io/micronaut/http/server/netty/configuration/NettyHttpServerConfiguration.java
# Conflicts:
#	core/src/main/java/io/micronaut/core/io/buffer/NioReadBuffer.java
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.

4 participants