Bumps ktor from 3.6.0 to 3.6.1.
Updates io.ktor:ktor-server-core-jvm from 3.6.0 to 3.6.1
Release notes
Sourced from io.ktor:ktor-server-core-jvm's releases.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Changelog
Sourced from io.ktor:ktor-server-core-jvm's changelog.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Commits
26cc003Release 3.6.1 (#5970)b4fc04dKTOR-10035 Deliver the queued Close frame when the session fails (#5959)fbd2a80KTOR-10036 Keep the test host WebSocket client reading until the server close...516fe19KTOR-10037 Close the CIO connection when a response fails before writing any ...3954d0cKTOR-9938: Abort Apache5 exchanges when the response body is cancelleddbc9692KTOR-9969 Shut down native socket output inside the writer coroutine3ceecd7KTOR-9992 Fix CIO accept busy loop (#5961)bdfff2bKTOR-10023 Throw BadRequestException on malformed URL segments7378949KTOR-9986 Remove dot segments from relative redirect targets (#5939)c981394KTOR-9430 Fix test server stopping- Additional commits viewable in compare view
Updates io.ktor:ktor-server-request-validation from 3.6.0 to 3.6.1
Release notes
Sourced from io.ktor:ktor-server-request-validation's releases.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Changelog
Sourced from io.ktor:ktor-server-request-validation's changelog.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Commits
26cc003Release 3.6.1 (#5970)b4fc04dKTOR-10035 Deliver the queued Close frame when the session fails (#5959)fbd2a80KTOR-10036 Keep the test host WebSocket client reading until the server close...516fe19KTOR-10037 Close the CIO connection when a response fails before writing any ...3954d0cKTOR-9938: Abort Apache5 exchanges when the response body is cancelleddbc9692KTOR-9969 Shut down native socket output inside the writer coroutine3ceecd7KTOR-9992 Fix CIO accept busy loop (#5961)bdfff2bKTOR-10023 Throw BadRequestException on malformed URL segments7378949KTOR-9986 Remove dot segments from relative redirect targets (#5939)c981394KTOR-9430 Fix test server stopping- Additional commits viewable in compare view
Updates io.ktor:ktor-server-status-pages from 3.6.0 to 3.6.1
Release notes
Sourced from io.ktor:ktor-server-status-pages's releases.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Changelog
Sourced from io.ktor:ktor-server-status-pages's changelog.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Commits
26cc003Release 3.6.1 (#5970)b4fc04dKTOR-10035 Deliver the queued Close frame when the session fails (#5959)fbd2a80KTOR-10036 Keep the test host WebSocket client reading until the server close...516fe19KTOR-10037 Close the CIO connection when a response fails before writing any ...3954d0cKTOR-9938: Abort Apache5 exchanges when the response body is cancelleddbc9692KTOR-9969 Shut down native socket output inside the writer coroutine3ceecd7KTOR-9992 Fix CIO accept busy loop (#5961)bdfff2bKTOR-10023 Throw BadRequestException on malformed URL segments7378949KTOR-9986 Remove dot segments from relative redirect targets (#5939)c981394KTOR-9430 Fix test server stopping- Additional commits viewable in compare view
Updates io.ktor:ktor-server-content-negotiation from 3.6.0 to 3.6.1
Release notes
Sourced from io.ktor:ktor-server-content-negotiation's releases.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Changelog
Sourced from io.ktor:ktor-server-content-negotiation's changelog.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Commits
26cc003Release 3.6.1 (#5970)b4fc04dKTOR-10035 Deliver the queued Close frame when the session fails (#5959)fbd2a80KTOR-10036 Keep the test host WebSocket client reading until the server close...516fe19KTOR-10037 Close the CIO connection when a response fails before writing any ...3954d0cKTOR-9938: Abort Apache5 exchanges when the response body is cancelleddbc9692KTOR-9969 Shut down native socket output inside the writer coroutine3ceecd7KTOR-9992 Fix CIO accept busy loop (#5961)bdfff2bKTOR-10023 Throw BadRequestException on malformed URL segments7378949KTOR-9986 Remove dot segments from relative redirect targets (#5939)c981394KTOR-9430 Fix test server stopping- Additional commits viewable in compare view
Updates io.ktor:ktor-serialization-kotlinx-json from 3.6.0 to 3.6.1
Release notes
Sourced from io.ktor:ktor-serialization-kotlinx-json's releases.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Changelog
Sourced from io.ktor:ktor-serialization-kotlinx-json's changelog.
3.6.1
Published 29 October 2026
Improvements
- KTOR-10005 Native accepted TCP sockets do not enable TCP_NODELAY, unlike JVM
- KTOR-9966 Netty poor performance on delay calls
- KTOR-4206 The "com.typesafe.config.ConfigException$Missing" exception leaks from the typesafe config library when configuration is merged
Bugfixes
- KTOR-10037 CIO: keep-alive connection hangs when a response fails before writing any bytes
- KTOR-9969 Kotlin/Native CIO server occasionally closes an accepted connection with zero response bytes under CPU load
- KTOR-9974 CIO: close_notify is written concurrently with the last record, corrupting the TLS output and the kotlinx-io segment pool
- KTOR-9925 Resources: Constant sibling route loses to parameterized one when routes are split across separate authenticate blocks
- KTOR-9938 Apache5: streaming response hangs when the block returns before the body arrives
- KTOR-10023 Ktor 3.6.0 no longer throws BadRequestException for malformed paths
- KTOR-9986 HttpRedirect: a relative Location with dot segments is not normalized, so most engines send
..in the request path- KTOR-10085 ETags: Ignore If-Modified-Since when If-None-Match is present
- KTOR-9430 DI: resources are not cleaned up during testing with testApplication
- KTOR-7175 Ktor-client, connections leak
- KTOR-9848 Android: The Android engine crashes with Unbalanced enter/exit on response read cancellation
- KTOR-9994 Android engine closes RawSourceChannel on the main thread and crashes with NetworkOnMainThreadException
- KTOR-9959 Sockets: CIO writer busy-loops when a nonblocking write returns zero
- KTOR-9970 Java: Cancelling a request before response headers does not abort the HTTP exchange
- KTOR-10006 OpenAPI: Compiler crash on local variable using object expression
- KTOR-9972 Android: DiskReadViolation when KtorSimpleLogger is initialized during plugin execution
- KTOR-9985 OpenAPI compiler plugin duplicates unrelated schemas (FooDTO -> FooDTO2) after adding new routes
- KTOR-2348 DoubleReceive: recursive receive pipeline re-entry when receiving content in a receivePipeline interceptor
- KTOR-9968 Test engine streaming responses hang when over 1MB
- KTOR-9894 Netty + Compression: response leaked when the client disconnects before the body is written
- KTOR-9987 WebSockets: Netty sometimes closes socket before sending close frame
- KTOR-9943 HttpStatement.execute can hang when its block abandons a response body
- KTOR-9980 CallLogging: MDC entries leak stale thread-local values when provider returns null
- KTOR-9790 testApplication:
sseSession()never returns when the SSE route installs aheartbeat- KTOR-9884 Directories are returned as empty binaries when using nested jars
- KTOR-4245 Code snippet in Kdoc for DefaultRequest doesn't compile
- KTOR-10035 WebSocket drops the queued Close frame when the server session fails
- KTOR-10036 testApplication: WebSocket client stops reading before the servers Close reply arrives
Commits
26cc003Release 3.6.1 (#5970)b4fc04dKTOR-10035 Deliver the queued Close frame when the session fails (#5959)fbd2a80KTOR-10036 Keep the test host WebSocket client reading until the server close...516fe19KTOR-10037 Close the CIO connection when a response fails before writing any ...3954d0cKTOR-9938: Abort Apache5 exchanges when the response body is cancelleddbc9692KTOR-9969 Shut down native socket output inside the writer coroutine3ceecd7KTOR-9992 Fix CIO accept busy loop (#5961)bdfff2bKTOR-10023 Throw BadRequestException on malformed URL segments-
Description has been truncated