Published 5 May 2025
Improvements
- Implement toString for staticContentRoute (KTOR-8451)
- Don't send Authorization header for requests marked with markAsRefreshTokenRequest (KTOR-8107)
- ByteChannel single-byte operations are slow (KTOR-8412)
- Receiving multipart without Content-Length is very slow (KTOR-8407)
- MicrometerMetrics: different path 404s requests can be abused to trigger OOM (KTOR-8276)
- Compression & Static Content: No Vary Header when serving a compressed resource (KTOR-8326)
- HttpTimeout: Reference to nonexistent INFINITE_TIMEOUT_MS in the exception message (KTOR-8358)
Bugfixes
- Websockets: Unable to send a frame when ktor-serialization-kotlinx-json-jvm dependency is defined in Maven build (KTOR-7662)
- OkHttp: Cancelling of SSE request job doesn't cancel the connection (KTOR-8409)
- OkHttp: Exceptions are not propagated to flow collectors (KTOR-7947)
- OOM in CountedByteReadChannel while copying from multipart/form-data part channel (KTOR-8317)
- Apache5: "ProtocolException: OPTIONS request must have Content-Type header" is thrown when body isn't set (KTOR-8318)
- Netty/Websockets: server processes hanging in CLOSE_WAIT state after many concurrent requests (KTOR-7965)
- Update JTE to the version supporting Kotlin 2.1.0 (KTOR-8030)