feat(deps): update gradle app major dependencies (alpha) (major)
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| io.ktor:ktor-bom | 2.3.9 -> 3.3.2 |
||||
| com.aallam.openai:openai-client | 3.7.0 -> 4.0.1 |
||||
| build.buf:protovalidate | 0.2.0 -> 1.0.1 |
||||
| com.nimbusds:nimbus-jose-jwt | 9.37.3 -> 10.6 |
||||
| com.microsoft.sqlserver:mssql-jdbc | 12.6.1.jre11 -> 13.2.1.jre11 |
||||
| net.devh:grpc-server-spring-boot-starter | 2.15.0.RELEASE -> 3.1.0.RELEASE |
||||
| com.google.protobuf:protobuf-java-util (source) | 3.25.3 -> 4.33.1 |
||||
| org.flywaydb:flyway-core (source) | 10.10.0 -> 11.17.0 |
||||
| org.flywaydb:flyway-database-postgresql (source) | 10.10.0 -> 11.17.0 |
||||
| org.flywaydb.flyway | 10.10.0 -> 11.17.0 |
||||
| io.kotest:kotest-runner-junit5 | 5.8.1 -> 6.0.4 |
||||
| io.kotest:kotest-assertions-core-jvm | 5.8.1 -> 6.0.4 |
||||
| org.jetbrains.kotlin:kotlin-gradle-plugin (source) | 1.9.23 -> 2.2.21 |
||||
| org.jetbrains.kotlin.plugin.spring | 1.9.23 -> 2.2.21 |
||||
| org.jetbrains.kotlin.jvm | 1.9.23 -> 2.2.21 |
Release Notes
ktorio/ktor (io.ktor:ktor-bom)
v3.3.2
Published 5 November 2025
Improvements
- WebRTC Client. Remove redundant targets (KTOR-9062)
- Add Socks proxy support to Darwin engine (KTOR-8968)
- Java: Improve error message when SOCKS proxy is used (KTOR-2908)
Bugfixes
- HttpRequestRetry: SendCountExceedException when max retries is more than maxSendCount of HttpSend (KTOR-5850)
- Darwin: The
maxFrameSizeoption has no effect (KTOR-6963) - OpenAPI: StackOverflowError when a response object has property with @Contextual serializer (KTOR-8878)
- OpenAPI gen: missing KDoc fields (KTOR-9021)
- Server call.request.path() returns routing selectors in path (KTOR-7639)
- StaticContent doesn't allow siblings (KTOR-9012)
- HttpCache: FileStorage doesn't use given dispatcher for all file operations (KTOR-8832)
- Curl: SOCKS proxy doesn't work (KTOR-9008)
- Netty: java.lang.VerifyError is thrown on Android since 3.3.0 (KTOR-8916)
- Response body channel is canceled while the body is being saved when having HttpRequestRetry and onDownload (KTOR-8975)
- HttpCache: InvalidCacheStateException when varyKeys stored in files contain uppercase letters since 3.3.0 (KTOR-8970)
v3.3.1
Published 8 October 2025
Improvements
Bugfixes
- NumberFormatException when Content-Length header value contains null bytes (KTOR-4828)
- SerializationException: Serializer for class 'ClientSSESession' is not found when server responds with JSON (KTOR-7631)
- Netty: loadConfiguration missing enableHttp2 and enableH2c properties (KTOR-8898)
- Netty: EmbeddedServer.stop always blocks for twice of shutdownGracePeriod (KTOR-8770)
- shutdownGracePeriod is used instead of shutdownTimeout in EmbeddedServer.stop() (KTOR-8771)
- Support serving static resources within bootJar (KTOR-8592)
v3.3.0
Published 11 September 2025
Features
- Support for server side http2 without tls (h2c) (KTOR-4750)
- OpenAPI generation build extension preview (KTOR-8721)
- Serve static resources with caching headers and ETag based on sha256 of content (KTOR-6700)
- Jetty engine: Upgrade Jetty dependencies to the latest version 12 (KTOR-6734)
- Static content: Support a custom respond logic if the file is not found (KTOR-8496)
- Upgrade OkHttp to version 5.0.0 (KTOR-8652)
- WebRTC Client, Android + WASM (KTOR-7958)
Improvements
- SSE: Cannot read response body from SSEClientException (KTOR-8165)
- SSE: "SSEClientException: Content-Length mismatch" on saving response body in DefaultResponseValidation (KTOR-8753)
-
var Route.staticRootFolder: File?should be deprecated (KTOR-5836) - Add
image/bmpto the ContentType (KTOR-8735) - Add some missing image content types (KTOR-8624)
- Upgrade to Kotlin 2.2 (KTOR-8647)
- Bump Kotlin API level to 2.2 (KTOR-8637)
- CIO: The engine ignores system proxy settings (KTOR-5922)
Bugfixes
- Performance regression when using ContentEncoding and HttpRequestRetry since 3.2.0 (KTOR-8820)
- Big number of simultaneous outbound web socket connections leads to a coroutine deadlock (KTOR-8829)
- DI: JobCancellationException during cleanup (KTOR-8785)
- Autoreloading: JobCancellationException when app is reloaded in the debugger since 3.2.0 (KTOR-8810)
- HttpRedirect: The client is redirected when no Location header in response (KTOR-8697)
- SerializationException when Application.propertyOrNull() is called with type Map<String, Any?> (KTOR-8781)
- "Failed resolution of: Ljava/lang/management/ManagementFactory" on Android when JvmGcMetrics are initialized (KTOR-8714)
- HttpCache: all header values but first in HttpResponse.varyKeys() are ignored (KTOR-6402)
- HttpCache: plugin selects wrong cache entry when filtering Vary headers with different case (KTOR-7621)
- CountedByteWriteChannel: autoFlush of the source channel doesn't make the channel auto flushing (KTOR-8411)
v3.2.3
Published 29 July 2025
Improvements
- Server only accepts
yamlas the configuration file suffix (KTOR-8712) - JS / WASM error when process global is undefined (KTOR-8686)
- DI async duplicate resolution (KTOR-8681)
Bugfixes
- CIO: Expect 100-continue response is missing a final
\r\n(KTOR-8687) - Intermittent "ParserException: No colon in HTTP header" when parsing multipart request (KTOR-8523)
- Infinite loop in ByteReadChannel.readFully (KTOR-8682)
- ShutDownUrl: The server cannot shut down since 3.2.0 (KTOR-8674)
v3.2.2
Published 14 July 2025
Improvements
- SSE: Change the order of SSE field serialization: put
eventbeforedata(KTOR-8627)
Bugfixes
- CORS: server replies with the 405 status code on a preflight request when the plugin is installed in a route (KTOR-4499)
- Darwin: The Content-Encoding header is removed since 3.0.3 (KTOR-8526)
- JS/WASM: response doesn't contain the Content-Length header in a browser (KTOR-8377)
- StatusPages: response headers of OutgoingContent aren't available in the status handlers (KTOR-8232)
- testApplication: The
client.sse()acts like a REST call and not a stream in test environment (KTOR-7910) - Config deserialization - default properties problem (KTOR-8654)
- kotlinx.datetime is not available transitively in 3.2.1 (KTOR-8656)
- Request builder block overrides HTTP method in specific request builders (get, post, etc) (KTOR-8636)
v3.2.1
Published 3 July 2025
Improvements
- Replace kotlinx.datetime APIs with kotlin.time (KTOR-8635)
- Thymeleaf: null values in template model (KTOR-8559)
- Publish Javadoc as a maven artifact (KTOR-3962)
- Netty: Invalid hex byte with malformed query string (KTOR-2934)
Bugfixes
- "Space characters in SimpleName" error when executing R8 mergeExtDex task with 3.2.0 (KTOR-8583)
- ForwardedHeaders: the plugin does not handle parameters case-insensitively (KTOR-8622)
- Potential race condition in
socket.awaitClosed(hangs indefinitely) since 3.2.0 (KTOR-8618) - Module parameter type Application.() -> kotlin.Unit is not supported in 3.2.0 (KTOR-8602)
- OkHttp: java.net.ProtocolException when sending MultiPartFormDataContent with onUpload (KTOR-6790)
- OAuth2 authentication provider breaks form-urlencoded POST requests when receiving request body (KTOR-4420)
- 404 for a link in KDoc for io.ktor.server.plugins.contentnegotiation.ContentNegotiation (KTOR-8597)
- Ktor fails to boot with default jvminline argument (KTOR-8608)
- Flow invariant is violated since 3.2.0 (KTOR-8606)
- ResponseSent hook handler of the plugin installed into a route isn't executed when an exception is thrown from the route (KTOR-6794)
v3.2.0
Published 12 June 2025
Features
- Dependency injection Ktor extension (KTOR-8267)
- Support Version Catalog (KTOR-8162)
- Unix domain socket support at the Ktor Engine level (KTOR-4766)
- Allow suspend Ktor modules (KTOR-8005)
- Ability to use browser cookie storage (KTOR-539)
- Configuration file deserialization (KTOR-7874)
- HttpCache: Support evicting/clearing cache (KTOR-6653)
- File configuration for dependencies (KTOR-8304)
Improvements
- Excessive allocation of ApplicationConfig when loading multiple files from CLI (KTOR-8563)
- Linux curl engine doesn't work for simultaneous websocket and http request (KTOR-8259)
- ktor-network produces ProGuard warning (KTOR-8525)
- More overloads for StringValuesBuilder.appendAll (KTOR-8573)
- HttpClientCall: Deprecate
wrapWithContentandwrap(KTOR-8378) - Add a way to create an
ApplicationCallfor testing (KTOR-7607) - Configuration access API improvements (KTOR-8185)
- Application instance access in testApplication (KTOR-8215)
- The TestApplication client should be configurable and mutable (KTOR-8465)
- Support accessing resolved IP address on an instance of
io.ktor.network.sockets.InetSocketAddress(KTOR-8490) - Deprecate SaveBodyPlugin in favor of HttpClientCall.save (KTOR-8367)
- Obscure log message on server startup (KTOR-8519)
- Routing:
acceptshould return 406 if theAcceptheader isn't matched (KTOR-8416) - MicrometerMetrics: the
routelabel can exceed length limit (KTOR-7274) - Micrometer: Make route label configurable (KTOR-8183)
- Add more common ContentType values (KTOR-7108)
Bugfixes
- Logging/Darwin: IOException is thrown when detecting if body is a binary (KTOR-8581)
- Netty: NoSuchElementException or empty headers when responding with 204 (KTOR-8528)
- YAML configuration: NoSuchElementException when parameter is expanded with curly braces (KTOR-8575)
- ApplicationConfig: Most of the content is absent after merging configs (KTOR-8565)
- Android: "ProtocolException: TRACE does not support writing" when sending TRACE request (KTOR-8352)
- The "Content-Length: 0" header is added for GET requests sent to some servers (KTOR-6508)
- HttpRequestRetry: requests with some IOException's thrown by Java engine aren't retried (KTOR-6770)
- HttpCookies: Encoding of request cookies is not preserved in CookiesStorage (KTOR-8343)
- Url class mangles data URLs (KTOR-5708)
- SaveBodyPlugin: Logging plugin consumes response body (KTOR-6474)
- Config deserialization does not respect
testApplicationenvironment (KTOR-8436) - Resources: Exclude a parent from query params when it is an object (KTOR-8507)
- BearerAuthProvider does not clear token if refreshTokens returns null (KTOR-8470)
- Coroutines launched from RoutingContext are not cancelled upon server shutdown (KTOR-8338)
- Application job is not joined during shutdown (KTOR-8291)
- HttpCache: InvalidCacheStateException thrown when Vary header has different entries is overly severe (KTOR-8345)
- Fix socket channel close handling (KTOR-8201)
v3.1.3
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)
v3.1.2
Published 27 March 2025
Improvements
Bugfixes
- URL-safe base64 decoding problem (KTOR-8292)
- Auth: AuthTokenHolder.clearToken executed in the middle of an ongoing token update doesn't actually clear (KTOR-8312)
- Android: "Array has more than one element" error when starting a server with release build (KTOR-7298)
- WebSockets: extensions in sec-websocket-extensions header must be separated by comma (KTOR-6384)
- OkHttp: Cancelling of SSESession.incoming flow doesn't cancel connection (KTOR-8244)
v3.1.1
Published 24 February 2025
Improvements
- Logging: messages are printed per line with OkHttp logger format (KTOR-8218)
- WebSocket and SSE don't respect connection timeout set in the HttpTimeout plugin (KTOR-8206)
Bugfixes
- formData: implementation of copying Source is broken (KTOR-8210)
- Race condition when writing to a buffer leads to NPE inside CIOReaderKt.readFrom (KTOR-8105)
- TLS client: IOException while writing to a closed TLS socket since 3.0.0 (KTOR-7860)
- Exception thrown in onCallRespond makes the client wait for response indefinitely (KTOR-7139)
- HttpCache: Cache isn't updated when Vary header for 304 response matches but not equal to Vary for 200 response (KTOR-7104)
- OOM on SourceByteReadChannel for large input (KTOR-8190)
- ArrayIndexOutOfBounds kotlinx-io (KTOR-8096)
- NPE in readBuffer (KTOR-8086)
- JS/WASM fails with "IllegalStateException: Content-Length mismatch" on requesting gzipped content (KTOR-7934)
- Resources: a / route isn't resolved when there is a sibling
staticResources(KTOR-6671) - Server accepts \r without a following \n as a valid line terminator in chunked transfer encoding (KTOR-8015)
v3.1.0
Published 11 February 2025
Features
- Add reconnection in ClientSSESession (KTOR-6242)
- Add heartbeat to SSE (KTOR-7908)
- Add serialization for SSE (KTOR-7435)
- Support WebSockets in Curl engine (KTOR-5199)
- Support conversion between byte channel interfaces and kotlinx-io primitives (KTOR-7327)
- Support CIO server on WasmJS and JS targets (KTOR-865)
- Logging: Format log like OkHttp client does (KTOR-7806)
- Support static linking for curl on all platforms (KTOR-6754)
- Support ARM target in Ktor client with Kotlin/Native and Curl (KTOR-4570)
- Unix Domain Socket Support for Native Targets (KTOR-6960)
- Support receiving multipart data with Ktor client (KTOR-6632)
- Client CIO engine support for wasm-js and js (KTOR-7675)
- Support NodeJs target for ktor-network (KTOR-6004)
Improvements
- Auth: BasicAuthProvider caches credentials until process death (KTOR-7775)
- CallLogging: Unhelpful log output "Application started: ..." (KTOR-7797)
- Add operator contains to ContentType objects (KTOR-8145)
- Darwin: Ambiguous DarwinHttpRequestException for SSL Pinning failure (KTOR-6759)
- Introduce ServerSocket.port to simplify port access for the bound server (KTOR-8136)
- Java, Js, Darwin: Response header Sec-WebSocket-Protocol is missing (KTOR-6970)
- Fail to parse url: file:/path/to/file.txt (KTOR-6709)
- Auth: Make re-auth/refresh status codes configurable (KTOR-7644)
- Add media type for Yaml (KTOR-8064)
- Logging: HTTP method is logged with the class name (KTOR-8011)
- Uncaught cannot write to a channel errors from ws-pinger (KTOR-8008)
- Apache5 client: Upgrade HttpClient to 5.4 (KTOR-8080)
- Swagger: Add deepLinking configuration (KTOR-8074)
- Access to the configuration options of a HttpClient plugin to tweak or wrap them with additional logic (KTOR-7213)
- Don't publish internal test artifacts (KTOR-8058)
- Micrometer: Add UptimeMetrics to standard meterBinders (KTOR-8061)
- MicrometerMetrics: Do not write unknown HTTP method names to metrics (KTOR-7658)
- Update to Kotlin 2.1.0 (KTOR-7866)
- ByteWriteChannel is missing writeFloat()/readFloat() (KTOR-7651)
- Engine exclusion from clientTests is confusing (KTOR-7723)
- UrlBuilder: Support telephone scheme (KTOR-4816)
- Swagger UI: Missing Favicon while browsing the UI (KTOR-7893)
- ContentNegotiation client plugin: no way to opt out of Accept on a per-request basis (KTOR-7722)
-
receiveMultipartthrows IllegalStateException instead of UnsupportedMediaTypeException (KTOR-7470) - Implement a suspending version of EmbeddedServer.start(wait=true) (KTOR-7459)
- Allow to Disable Body Decompression on the Server for a specific call (KTOR-7679)
- UDPSocketBuilder missing
bindoverload withhostNameandport(KTOR-7663) - Make Url class @Serializable and JVM Serializable (KTOR-7620)
- Improve parsing of supported media types (MIME types) (KTOR-7586)
- Migrate to kotlin.AutoCloseable (KTOR-7606)
Bugfixes
- ByteChannel read issue on min > 1 (KTOR-8172)
- CIO Server Engine fails for requests with more than 64 headers (KTOR-8164)
- OutOfMemoryError when sending a large binary file through ByteReadChannel converted from InputStream (KTOR-6185)
- Native Windows tests failing due to port exhaustion (KTOR-7392)
- Unable to close socket with open read/write channels on Native (KTOR-8144)
- Jetty idleTimeout not working (KTOR-8138)
- Fix concurrent flush and close in the reader (KTOR-8133)
- Socket.accept doesn't throw an exception on closing a socket on Native (KTOR-8135)
- "AbortError: BodyStreamBuffer was aborted" error when canceling parent job (KTOR-7734)
- Race condition when writing to a buffer leads to NPE inside CIOReaderKt.readFrom (KTOR-8105)
- ArrayIndexOutOfBounds kotlinx-io (KTOR-8096)
- NPE in readBuffer (KTOR-8086)
- JS/WASM fails with "IllegalStateException: Content-Length mismatch" on requesting gzipped content (KTOR-7934)
- SessionStorage.read() is called for non-authenticated routes and static assets (KTOR-7194)
- Read mutipart upload regression from 2.x to 3.x (KTOR-8082)
- HttpRequestRetry: race condition for isClosedForRead leads to EOFException: Channel is already closed (KTOR-8051)
- ktor-client-curl artifacts aren’t published after EAP 1146 (KTOR-8091)
- DoubleReceive: NullPointerException caused by race condition (KTOR-8045)
- Uncaught ClosedWatchServiceException exception thrown by finalizer when closing the server (KTOR-7963)
- Curl: Error linking curl in linkDebugExecutableLinuxX64 on macOS (KTOR-6361)
- ktor-server-core: Test files are part of the distribution code (KTOR-8003)
- Windows: undefined symbols in linker when ktor-client-curl is used (KTOR-4307)
- SaveBodyPlugin: UninitializedPropertyAccessException when reading response body within receivePipeline (KTOR-7952)
v3.0.3
Published 18 December 2024
Bugfixes
- "Module not found" errors when executing browserProductionWebpack task since 3.0.2 (KTOR-7912)
- Darwin: "IllegalStateException: Content-Length mismatch" on requesting gzipped content (KTOR-7943)
- JS/WASM fails with "IllegalStateException: Content-Length mismatch" on requesting gzipped content (KTOR-7934)
- FormFieldLimit is overwritten by default arg (KTOR-7946)
- A Performance issue reading with ByteReadChannel.readUTF8LineTo request body (KTOR-7941)
- Installing HttpCache before ContentEncoding prevents response body to be decoded (KTOR-7830)
- TestApplication.stop() doesn't stop the application anymore (KTOR-7682)
- File is not commited after closing writeChannel() of the file (KTOR-7845)
v3.0.2
Published 3 December 2024
Bugfixes
- ServletResponseBody is corrupted due to the wrong offset (KTOR-7904)
- File is not commited after closing writeChannel() of the file (KTOR-7845)
- CIO: Response body truncated because read amount of bytes isn't compared against Content-Length (KTOR-7828)
- HttpCache: IndexOutOfBoundsException on malformed Cache-Control header (KTOR-7172)
- call.respondSource returns empty response but passes in tests (KTOR-7683)
- ByteReadChannel.{readShort/readInt/readLong} leads to infinite loop when required bytes distributed in flush and read buffers (KTOR-7746)
- Routing: ContentType.match doesn't match wildcard content types (KTOR-7278)
- Connections aren't released properly if there are multiple parallel connections to the same address (KTOR-7777)
-
FileItem.streamProvideris deprecated and doesn't have implementation (KTOR-7731) - MergedApplicationConfig.toMap replaces nested configs completely without merging (KTOR-7008)
- Digest Auth: Ktor 3.0.1 uses the wrong "nc" value to calculate digest (KTOR-7681)
- JS: "ReferenceError: require is not defined" when compiling to ES Module (KTOR-6158)
- Chunked transfer encoding failure not caught with retry (KTOR-7618)
- HttpCookies: IllegalArgumentException when server returns a raw cookie with not allowed characters (KTOR-7469)
- DefaultRequest: Content-Type header of default request is not overridable (KTOR-6946)
Improvements
- Support binary (Smile) encoding in JacksonConverter (KTOR-7726)
- ServiceLoader.load call is slow on Android (KTOR-7698)
v3.0.1
Published 29 October 2024
Bugfixes
- Remove space from the default client user agent (KTOR-7655)
-
Url.segmentsthrows on URLs with root path (KTOR-7625) - Digest Auth does not implement nc parameter correctly according to RFC 7616 (KTOR-4318)
- about:blank URL should be parsed correctly as about:blank (KTOR-7410)
- ByteReadChannel.{readShort/readInt/readLong} could lead to CPU-bound indefinite loop since 3.0.0 (KTOR-7571)
- CIO: Requests face connection timeouts when executed on the Android main dispatcher (KTOR-6803)
- receiveMultipart fails with "IOException: Failed to parse multipart" when content-type is capitalized (KTOR-7596)
Improvements
- WebSockets logging: The plugin calls toString() unnecessarily on transformed response body (KTOR-7623)
- INFO log message with all server interceptors on server startup (KTOR-7326)
- Digest auth:
usernameandcnonceparameters aren't surrounded with quotes (KTOR-7561) - ContentType.fromFilePath for newer file formats HEIC, AVIF, HEIF (KTOR-7536)
- Support missing native targets in ktor-serialization-kotlinx-xml (KTOR-7583)
v3.0.0
Published 9 October 2024
Bugfixes
- Darwin: The
maxFrameSizeoption has no effect (KTOR-6963) - KotlinReflectionInternalError (createClientPlugin) when running release APK on Android (KTOR-7479)
- Netty: UnsupportedOperationException is thrown when responding in CallSetup and CORS plugin is installed (KTOR-4433)
- MicrometerMetrics: Prometheus meter registry 1.13.0 generates configuration warning (KTOR-7035)
- Websockets/Auth: ProtocolException when requesting protected WebSockets endpoint (KTOR-7363)
- Data truncated in receiveParameters and receiveMultipart (KTOR-7201)
- The
pathSegmentsreturns empty strings for trailing slashes (KTOR-4402) - HttpRequestRetry: exponential delay doesn't work for delays <= 1 second (KTOR-7294)
- JS browser: "Error: HttpClientCall expected" on HTTP request when targeting es2015 (KTOR-6882)
- Incomplete write using io.ktor.util.cio.FileChannelsKt#writeChannel (KTOR-1618)
-
response.content.copyAndClose(targetFile.writeChannel())sometimes loses some bytes (KTOR-3003) - ByteWriteChannel.flush is not Waiting Until Flushing the Internal Buffer to the Destination (KTOR-3102)
- CORS check fails when the Origin header has a value without trailing slash (KTOR-5936)
- Closing socket and selector leaks descriptor on native (KTOR-7255)
- ConnectionUtilsNative leaks descriptors on error (KTOR-6977)
- withTimeout doesn't cancel socket connection on native (KTOR-5289)
- MockEngine: the ability to set dispatcher is removed (KTOR-6417)
Improvements
- Misleading
readBytesmethod name (KTOR-6596) - Remove reflection utils used only on JVM target from common source set (KTOR-7540)
- Weak security algorithm (MD5) in FileCacheStorage (KTOR-6589)
- Missing constants for AcceptEncoding (KTOR-6412)
- Add
respondFileoverload withPathparameters (KTOR-7202) - MalformedInputException confusingly is a Throwable but not an Exception (KTOR-7316)
- CSRF: The allowOrigin method enables the Origin Header validation (KTOR-6695)
- Auth: Drop marker interface requirements (KTOR-7323)
- Routing: Support accessing the request body in RouteSelector (KTOR-7084)
- Make Cookie class Serializable (KTOR-6258)
- Make the internal Route.swaggerUI method public (KTOR-6491)
- Ktor clients and servers should use Dispatchers.IO.limitedParallelism(...) wherever possible (KTOR-6462)
Features
- Support androidNative targets (KTOR-7289)
- Provide the API that simplifies disabling CORS for testing purposes (KTOR-3329)
- Add support for mingw to ktor-network in order to make server and client work on windows (KTOR-4080)
v2.3.13
Published 20 November 2024
Bugfixes
- CIO: Requests face connection timeouts when executed on the Android main dispatcher (KTOR-6803)
- io.ktor.util.TextKt.chomp doesn't work on strings with more than one character (KTOR-7209)
- "java.lang.IllegalArgumentException: Failed requirement." in SelectorManagerSupport (KTOR-2914)
- Backport fix for CVE-2024-49580 to Ktor 2 (KTOR-7727)
Improvements
- Replace custom withTimeout implementation using WeakTimeoutQueue with coroutines.withTimeout (KTOR-3658)
- Add watchosDeviceArm64 target (KTOR-6368)
v2.3.12
Published 20 June 2024
Bugfixes
- NoSuchMethodError when using coroutines 1.9.0-RC (KTOR-7054)
- Server: Content-Type header for static js, css and svg resources misses charset (KTOR-6655)
- Embedded Linux device without iso-8859-1 and UTF-16 cannot use ktor-network (KTOR-7016)
Improvements
- Update netty to 4.1.111.Final (KTOR-7094)
- Update netty due to CVE-2024-29025 (KTOR-7014)
- Update dependency on swagger (KTOR-7019)
v2.3.11
Published 8 May 2024
Bugfixes
- Test client ignores socket timeout (KTOR-6909)
v2.3.10
Published 8 April 2024
Bugfixes
- CallLogging, StatusPages: response logged twice when status handler is used (KTOR-6839)
- NodeJS WebSocket client sometimes drops a frame received immediately after handshake (KTOR-6883)
- IPv6 addresses are not supported in NettyConnectionPoint and CIOConnectionPoint (KTOR-5383)
- JS browser: "Maximum call stack size exceeded" on HTTP request when targeting es2015 (KTOR-6878)
- CIO: File upload fails with
NumberFormatExceptionwhen uploading file larger than INT_MAX bytes (~2.1 GiB) since 2.3.0 (KTOR-6851) - CallLogging: the plugin completely overrides MDC if at least one entry is configured (KTOR-6642)
- SSE plugin: Duplicated "Content-Type: text/event-stream" headers (KTOR-6735)
- CIO: "getSubjectAlternativeNames(...) must not be null" when IP-addresses are verified and no SAN in the certificate (KTOR-6746)
Improvements
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.