ktorio/ktor (io.ktor:ktor-client-cio)
### [`v2.3.11`](https://togithub.com/ktorio/ktor/releases/tag/2.3.11)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.10...2.3.11)
> Published 8 May 2024
##### Bugfixes
- Test client ignores socket timeout ([KTOR-6909](https://youtrack.jetbrains.com/issue/KTOR-6909))
### [`v2.3.10`](https://togithub.com/ktorio/ktor/releases/tag/2.3.10)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.9...2.3.10)
> Published 8 April 2024
##### Bugfixes
- CallLogging, StatusPages: response logged twice when status handler is used ([KTOR-6839](https://youtrack.jetbrains.com/issue/KTOR-6839))
- NodeJS WebSocket client sometimes drops a frame received immediately after handshake ([KTOR-6883](https://youtrack.jetbrains.com/issue/KTOR-6883))
- IPv6 addresses are not supported in NettyConnectionPoint and CIOConnectionPoint ([KTOR-5383](https://youtrack.jetbrains.com/issue/KTOR-5383))
- JS browser: "Maximum call stack size exceeded" on HTTP request when targeting es2015 ([KTOR-6878](https://youtrack.jetbrains.com/issue/KTOR-6878))
- CIO: File upload fails with `NumberFormatException` when uploading file larger than INT_MAX bytes (~2.1 GiB) since 2.3.0 ([KTOR-6851](https://youtrack.jetbrains.com/issue/KTOR-6851))
- CallLogging: the plugin completely overrides MDC if at least one entry is configured ([KTOR-6642](https://youtrack.jetbrains.com/issue/KTOR-6642))
- SSE plugin: Duplicated "Content-Type: text/event-stream" headers ([KTOR-6735](https://youtrack.jetbrains.com/issue/KTOR-6735))
- CIO: "getSubjectAlternativeNames(...) must not be null" when IP-addresses are verified and no SAN in the certificate ([KTOR-6746](https://youtrack.jetbrains.com/issue/KTOR-6746))
##### Improvements
- Inconsistent behavior of Netty and rest engines by returning null or empty string for query parameters without values ([KTOR-6850](https://youtrack.jetbrains.com/issue/KTOR-6850))
- Android: no logs are present in Logcat with `Logger.ANDROID` ([KTOR-1219](https://youtrack.jetbrains.com/issue/KTOR-1219))
### [`v2.3.9`](https://togithub.com/ktorio/ktor/releases/tag/2.3.9)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.8...2.3.9)
> Published 4 March 2024
##### Improvements
- Allow to set secure cookie even with http scheme ([KTOR-3159](https://youtrack.jetbrains.com/issue/KTOR-3159))
##### Bugfixes
- ContentNegotiation: the plugin appends duplicated MIME type to Accept header ([KTOR-6684](https://youtrack.jetbrains.com/issue/KTOR-6684))
### [`v2.3.8`](https://togithub.com/ktorio/ktor/releases/tag/2.3.8)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.7...2.3.8)
> Published 31 January 2024
##### Bugfixes
- "KeyStoreException: JKS not found" exception on Android when configuring secure connection ([KTOR-6720](https://youtrack.jetbrains.com/issue/KTOR-6720))
- `URLBuilder` crashes on React Native platforms ([KTOR-6576](https://youtrack.jetbrains.com/issue/KTOR-6576))
- CIO: Unable to perform WebSocket upgrade when Content-Type header is sent in the request ([KTOR-6366](https://youtrack.jetbrains.com/issue/KTOR-6366))
- ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching ([KTOR-6420](https://youtrack.jetbrains.com/issue/KTOR-6420))
- High Native Server Memory Usage ([KTOR-6321](https://youtrack.jetbrains.com/issue/KTOR-6321))
- Server ContentNegotiation no longer allows multiple decoders for one Content-Type ([KTOR-5410](https://youtrack.jetbrains.com/issue/KTOR-5410))
- Logging plugin blocks response body streaming when level is BODY ([KTOR-6482](https://youtrack.jetbrains.com/issue/KTOR-6482))
- WebSockets: Confusing error message when server doesn't respond with Upgrade ([KTOR-6397](https://youtrack.jetbrains.com/issue/KTOR-6397))
- {...} (tailcard) does not match URLs ending with '/' ([KTOR-2121](https://youtrack.jetbrains.com/issue/KTOR-2121))
- HttpCache: NumberFormatException for cache-control with max age more than Int.MAX_VALUE ([KTOR-6505](https://youtrack.jetbrains.com/issue/KTOR-6505))
- CORS: `allowHost` without the second argument doesn't allow the secure host ([KTOR-6494](https://youtrack.jetbrains.com/issue/KTOR-6494))
- "ReferenceError: 'self' is not defined" when using URLBuilder in a custom JS engine ([KTOR-5978](https://youtrack.jetbrains.com/issue/KTOR-5978))
- MDC diagnostic value is changed during logging of the request ([KTOR-6528](https://youtrack.jetbrains.com/issue/KTOR-6528))
- WebSocket doesn't get terminated when runBlocking is used ([KTOR-6664](https://youtrack.jetbrains.com/issue/KTOR-6664))
- CIO: "getSubjectAlternativeNames(...) must not be null" error on Android when using CA without SAN since 2.3.5 ([KTOR-6396](https://youtrack.jetbrains.com/issue/KTOR-6396))
- RequestConnectionPoint should implement toString() ([KTOR-6577](https://youtrack.jetbrains.com/issue/KTOR-6577))
### [`v2.3.7`](https://togithub.com/ktorio/ktor/releases/tag/2.3.7)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.6...2.3.7)
> Published 7 December 2023
##### Bugfixes
- Server ContentNegotiation no longer allows multiple decoders for one Content-Type ([KTOR-5410](https://youtrack.jetbrains.com/issue/KTOR-5410/Server-ContentNegotiation-no-longer-allows-multiple-decoders-for-one-Content-Type))
- High Native Server Memory Usage ([KTOR-6321](https://youtrack.jetbrains.com/issue/KTOR-6321/High-Native-Server-Memory-Usage))
- WebSockets: Confusing error message when server doesn't respond with Upgrade ([KTOR-6397](https://youtrack.jetbrains.com/issue/KTOR-6397/WebSockets-Confusing-error-message-when-server-doesnt-respond-with-Upgrade))
- ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching ([KTOR-6420](https://youtrack.jetbrains.com/issue/KTOR-6420))
### [`v2.3.6`](https://togithub.com/ktorio/ktor/releases/tag/2.3.6)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.5...2.3.6)
> Published 7 November 2023
##### Bugfixes
- Resolved connectors job does not complete in TestApplicationEngine ([KTOR-6411](https://youtrack.jetbrains.com/issue/KTOR-6411))
- Darwin: Even a coroutine Job is canceled network load keeps high ([KTOR-6243](https://youtrack.jetbrains.com/issue/KTOR-6243))
- Darwin: EOFException when sending multipart data using Ktor 2.3.4 ([KTOR-6281](https://youtrack.jetbrains.com/issue/KTOR-6281))
- Ktor JS client unconfigurable logging in node ([KTOR-6275](https://youtrack.jetbrains.com/issue/KTOR-6275))
- CIO: getEngineHeaderValues() returns duplicated values ([KTOR-6352](https://youtrack.jetbrains.com/issue/KTOR-6352))
- "Server sent a subprotocol but none was requested" when using Node WebSockets ([KTOR-4001](https://youtrack.jetbrains.com/issue/KTOR-4001))
- YAML properties with literal value null cannot be read since 2.3.1 ([KTOR-6357](https://youtrack.jetbrains.com/issue/KTOR-6357))
- AndroidClientEngine cannot handle content length that exceeds Int range ([KTOR-6344](https://youtrack.jetbrains.com/issue/KTOR-6344))
- Client unable to make subsequent requests after the network disconnection and connection when ResponseObserver is installed ([KTOR-6252](https://youtrack.jetbrains.com/issue/KTOR-6252))
- Outdated Gradle jib plubin does not support application/vnd.oci.image.index.v1+json media type ([KTOR-6280](https://youtrack.jetbrains.com/issue/KTOR-6280))
- KTor 2.3.5 Kotlin 1.9.x upgrade is a breaking change ([KTOR-6354](https://youtrack.jetbrains.com/issue/KTOR-6354))
- WebSockets (CIO): Connection Failure Due to Lowercase 'upgrade' in 'Connection: upgrade' Header ([KTOR-6388](https://youtrack.jetbrains.com/issue/KTOR-6388))
- WinHttp: ArrayIndexOutOfBoundsException when sending WS frame with empty body ([KTOR-6394](https://youtrack.jetbrains.com/issue/KTOR-6394))
- Update dependency com.auth0:jwks-rsa to v0.22.1
### [`v2.3.5`](https://togithub.com/ktorio/ktor/releases/tag/2.3.5)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.4...2.3.5)
> Published 5 October 2023
##### Bugfixes
- 300+ ktor-client-java threads eat up lots of memory ([KTOR-6292](https://youtrack.jetbrains.com/issue/KTOR-6292))
- Apache5 engine limits concurrent requests to individual route to 5 ([KTOR-6221](https://youtrack.jetbrains.com/issue/KTOR-6221))
- DarwinClientEngine WebSocket rejects all received pongs ([KTOR-5540](https://youtrack.jetbrains.com/issue/KTOR-5540))
### [`v2.3.4`](https://togithub.com/ktorio/ktor/releases/tag/2.3.4)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.3...2.3.4)
> Published 31 August 2023
##### Bugfixes
- The "charset=UTF-8" part is automatically added to the `application/json` Content-Type ([KTOR-6183](https://youtrack.jetbrains.com/issue/KTOR-6183))
- MicrometerMetricsConfig default registry leaks coroutine ([KTOR-6178](https://youtrack.jetbrains.com/issue/KTOR-6178))
- Darwin: App hangs when sending a huge MultiPart request without access to network ([KTOR-6147](https://youtrack.jetbrains.com/issue/KTOR-6147))
- NPE in JavaClientEngine body() call ([KTOR-6190](https://youtrack.jetbrains.com/issue/KTOR-6190))
- Digest Auth: algorithm isn't specified in the Authorization header ([KTOR-3391](https://youtrack.jetbrains.com/issue/KTOR-3391))
- Confusing NoTransformationFoundException ([KTOR-6064](https://youtrack.jetbrains.com/issue/KTOR-6064))
- Cookie name-value pairs should be separated by a semicolon instead of a comma ([KTOR-5868](https://youtrack.jetbrains.com/issue/KTOR-5868))
### [`v2.3.3`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#233)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.2...2.3.3)
> Published 1 August 2023
##### Bugfixes
- java.util.zip.DataFormatException after enabling permessage-deflate ([KTOR-5979](https://youtrack.jetbrains.com/issue/KTOR-5979))
- DelegatingTestingClientEngine fails when ContentNegotiation with protobuf is installed and empty body ([KTOR-6125](https://youtrack.jetbrains.com/issue/KTOR-6125))
- KtorServlet does not support yaml configuration ([KTOR-6108](https://youtrack.jetbrains.com/issue/KTOR-6108))
- CIO ConnectionFactory leaks on cancellation ([KTOR-6127](https://youtrack.jetbrains.com/issue/KTOR-6127))
- staticFiles responds twice if both index and defaultPath are set ([KTOR-6120](https://youtrack.jetbrains.com/issue/KTOR-6120))
- Uncaught Kotlin exception: kotlin.IllegalArgumentException: Failed to open iconv for charset UTF-8 with error code 22 ([KTOR-5980](https://youtrack.jetbrains.com/issue/KTOR-5980))
- Not compatible with kotlinx-html 0.9.1 ([KTOR-6124](https://youtrack.jetbrains.com/issue/KTOR-6124))
- "Test engine is already completed" error while establishing Websockets connection ([KTOR-6057](https://youtrack.jetbrains.com/issue/KTOR-6057))
- s-maxage is not used, even if `HttpCache.Config.isShared` is true ([KTOR-6087](https://youtrack.jetbrains.com/issue/KTOR-6087))
- Cache returns null when vary header set different ways whatever it has same values ([KTOR-6081](https://youtrack.jetbrains.com/issue/KTOR-6081))
- DefaultRequest: a cookie appears twice in the request header when sending a request with another cookie ([KTOR-5619](https://youtrack.jetbrains.com/issue/KTOR-5619))
##### Improvements
- Drop linuxArm64 publication from ktor-client-curl ([KTOR-6154](https://youtrack.jetbrains.com/issue/KTOR-6154))
- Client: Target linuxArm64 ([KTOR-872](https://youtrack.jetbrains.com/issue/KTOR-872))
- Server: Target linuxArm64 ([KTOR-5753](https://youtrack.jetbrains.com/issue/KTOR-5753))
- Add system property to disable automatic installation of runtime shutdown hook ([KTOR-6070](https://youtrack.jetbrains.com/issue/KTOR-6070))
### [`v2.3.2`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#232)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.1...2.3.2)
> Published 28 June 2023
##### Bugfixes
- Linking release build leads to compilation error with coroutines of version 1.7.0-Beta ([KTOR-5728](https://youtrack.jetbrains.com/issue/KTOR-5728))
- MapApplicationConfig removes deeply nested properties when converting to a map ([KTOR-6013](https://youtrack.jetbrains.com/issue/KTOR-6013))
- Cache returns null when vary header has more fields in the cached response ([KTOR-6001](https://youtrack.jetbrains.com/issue/KTOR-6001))
- ContentType of a response body isn't set inside OkHttp's interceptor when a form request is sent ([KTOR-5971](https://youtrack.jetbrains.com/issue/KTOR-5971))
##### Improvements
- Update Kotlin to 1.8.22 ([KTOR-6053](https://youtrack.jetbrains.com/issue/KTOR-6053))
- The error message is not helpful when authenticating with a bearer header with a colon ([KTOR-5409](https://youtrack.jetbrains.com/issue/KTOR-5409))
### [`v2.3.1`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#231)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.0...2.3.1)
> Published 31 May 2023
##### Bugfixes
- AndroidClientEngine: the engine double-parses query parameters before sending a request ([KTOR-5814](https://youtrack.jetbrains.com/issue/KTOR-5814))
- Flaky tests in WinHttp engine ([KTOR-5946](https://youtrack.jetbrains.com/issue/KTOR-5946))
- Electron/Node.js detection doesn't work correctly ([KTOR-5906](https://youtrack.jetbrains.com/issue/KTOR-5906))
- Curl sometimes fails with `API function called from within callback` ([KTOR-5918](https://youtrack.jetbrains.com/issue/KTOR-5918))
- Bearer auth token refresh hangs after prior refresh threw an exception ([KTOR-5879](https://youtrack.jetbrains.com/issue/KTOR-5879))
- HOCON: "No configuration setting found for key" error after merging ([KTOR-5895](https://youtrack.jetbrains.com/issue/KTOR-5895))
- Ktor Client Unable to Stream Responses in Javascript ([KTOR-5867](https://youtrack.jetbrains.com/issue/KTOR-5867))
- Darwin engine does not support streaming of request body ([KTOR-5899](https://youtrack.jetbrains.com/issue/KTOR-5899))
- The Logging plugin doesn't log full kotlinx deserialization errors ([KTOR-5421](https://youtrack.jetbrains.com/issue/KTOR-5421))
- XForwardedHeaders should set `remoteAddress` in addition to `remoteHost` ([KTOR-5786](https://youtrack.jetbrains.com/issue/KTOR-5786))
- Sessions: Set-Cookie is added on every api request ([KTOR-912](https://youtrack.jetbrains.com/issue/KTOR-912))
- RateLimitters for every request key live in memory forever ([KTOR-5872](https://youtrack.jetbrains.com/issue/KTOR-5872))
- Significant delay between getting a part and starting reading from its provider for multipart/form-data requests ([KTOR-5248](https://youtrack.jetbrains.com/issue/KTOR-5248))
- getTimeMillis has seconds precision on native ([KTOR-5878](https://youtrack.jetbrains.com/issue/KTOR-5878))
- A coroutine closed due to cancellation is considered by the JsWebSocketSession to be closed on failure ([KTOR-2932](https://youtrack.jetbrains.com/issue/KTOR-2932))
- WebSockets: requests to a non-existing route cause server to lock up after responding with 404 (potential DOS) ([KTOR-5829](https://youtrack.jetbrains.com/issue/KTOR-5829))
- testApplication: NPE when test server doesn't reply with an HTTP upgrade ([KTOR-5815](https://youtrack.jetbrains.com/issue/KTOR-5815))
- GMTDate timestamp doesn't reflect timezone when created using `Calendar.toDate` method ([KTOR-5813](https://youtrack.jetbrains.com/issue/KTOR-5813))
##### Improvements
- Warn when the RateLimit plugin installed after the routing ([KTOR-5915](https://youtrack.jetbrains.com/issue/KTOR-5915))
- Allow access to RateLimiters related to call ([KTOR-5876](https://youtrack.jetbrains.com/issue/KTOR-5876))
- Multipart: Support not writing a temporary file for binary data ([KTOR-5864](https://youtrack.jetbrains.com/issue/KTOR-5864))
- Make System Property to Set outgoingToBeProcessed Size for WebSockets ([KTOR-5855](https://youtrack.jetbrains.com/issue/KTOR-5855))
- Support optional properties in YAML ([KTOR-5796](https://youtrack.jetbrains.com/issue/KTOR-5796))
- YAML config does not support reading variables from itself ([KTOR-5797](https://youtrack.jetbrains.com/issue/KTOR-5797))
### [`v2.3.0`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#230)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.2.4...2.3.0)
> Published 19 April 2023
##### Features
- Support loading multiple configuration files ([KTOR-5658](https://youtrack.jetbrains.com/issue/KTOR-5658))
- Static files filters or something similar to mod_rewrite ([KTOR-818](https://youtrack.jetbrains.com/issue/KTOR-818))
- Built-in support for HEAD requests for static files ([KTOR-4052](https://youtrack.jetbrains.com/issue/KTOR-4052))
- Ability to set Content-Type of static resource ([KTOR-2312](https://youtrack.jetbrains.com/issue/KTOR-2312))
- Support regex patterns in routing ([KTOR-5110](https://youtrack.jetbrains.com/issue/KTOR-5110))
- Support Flow in ktor-serialization ([KTOR-3788](https://youtrack.jetbrains.com/issue/KTOR-3788))
- Upgrade Client Apache Engine Version to use Apache 5 ([KTOR-4547](https://youtrack.jetbrains.com/issue/KTOR-4547))
- Support for CURLOPT_CAINFO and CURLOPT_CAPATH in ktor-client-curl ([KTOR-5614](https://youtrack.jetbrains.com/issue/KTOR-5614))
- Allow passing multiple acceptable content types to accept route selector ([KTOR-419](https://youtrack.jetbrains.com/issue/KTOR-419))
- Support `100 Continue` ([KTOR-829](https://youtrack.jetbrains.com/issue/KTOR-829))
##### Improvements
- The '425 Too Early' status code is missing in the HttpStatusCode enum ([KTOR-4673](https://youtrack.jetbrains.com/issue/KTOR-4673))
- Feature request: SO_REUSEADDR option for embedded server ([KTOR-5529](https://youtrack.jetbrains.com/issue/KTOR-5529))
- Add opportunity to pass type info into WebSockets serializing methods ([KTOR-5740](https://youtrack.jetbrains.com/issue/KTOR-5740))
- Ktor JS websocket client unconfigurable logging ([KTOR-5456](https://youtrack.jetbrains.com/issue/KTOR-5456))
- Update JTE to 2.3.0 ([KTOR-5698](https://youtrack.jetbrains.com/issue/KTOR-5698))
- Update Kotlin to 1.8.10 ([KTOR-5544](https://youtrack.jetbrains.com/issue/KTOR-5544))
- Migrate to the new Kotlin JS IR backend ([KTOR-5543](https://youtrack.jetbrains.com/issue/KTOR-5543))
- Prefer Node instead of browser behavior ([KTOR-5650](https://youtrack.jetbrains.com/issue/KTOR-5650))
- Update reported dependencies ([KTOR-5662](https://youtrack.jetbrains.com/issue/KTOR-5662))
- AutoHead should dispose response body ([KTOR-5684](https://youtrack.jetbrains.com/issue/KTOR-5684))
- Add `append(String, List)` overload to `FormBuilder` ([KTOR-5493](https://youtrack.jetbrains.com/issue/KTOR-5493))
- Support serving static files from resources in GraalVM native image ([KTOR-5580](https://youtrack.jetbrains.com/issue/KTOR-5580))
- Comparable HttpStatusCode ([KTOR-5629](https://youtrack.jetbrains.com/issue/KTOR-5629))
- Support preCompressed with resources ([KTOR-2677](https://youtrack.jetbrains.com/issue/KTOR-2677))
- Add shutdown configuration for engine in stop method ([KTOR-5560](https://youtrack.jetbrains.com/issue/KTOR-5560))
- Logging: Add filter/sanitization of sensitive headers ([KTOR-5523](https://youtrack.jetbrains.com/issue/KTOR-5523))
- Add resource route builders accepting typed body as second parameter ([KTOR-5589](https://youtrack.jetbrains.com/issue/KTOR-5589))
- CallLogging: add config to avoid logging static file request ([KTOR-5474](https://youtrack.jetbrains.com/issue/KTOR-5474))
- Update Tomcat to 10 ([KTOR-5266](https://youtrack.jetbrains.com/issue/KTOR-5266))
- Update Jetty to version 11 ([KTOR-5267](https://youtrack.jetbrains.com/issue/KTOR-5267))
- Update Parameters and Headers DSL to be consistent with stdlib ([KTOR-627](https://youtrack.jetbrains.com/issue/KTOR-627))
- Consider quoting `Boolean` during construction of multipart requests ([KTOR-5405](https://youtrack.jetbrains.com/issue/KTOR-5405))
- Simplify Static Content Plugin ([KTOR-5265](https://youtrack.jetbrains.com/issue/KTOR-5265))
##### Bugfixes
- Websockets: connection should be failed immediately when no continuation frame goes after a fragmented text frame ([KTOR-5018](https://youtrack.jetbrains.com/issue/KTOR-5018))
- Websockets: Connection should be failed immediately, since all data frames after the initial data frame must have opcode 0 ([KTOR-5014](https://youtrack.jetbrains.com/issue/KTOR-5014))
- Websockets: Connection should fail immediately (1002/Protocol Error) when control frame has a payload with more than 125 octets ([KTOR-5006](https://youtrack.jetbrains.com/issue/KTOR-5006))
- Java engine: Websockets client sends two PONG frames for each PING frame from a server ([KTOR-5653](https://youtrack.jetbrains.com/issue/KTOR-5653))
- Websockets: Erroneous trace log about expired websocket pings ([KTOR-5672](https://youtrack.jetbrains.com/issue/KTOR-5672))
- DarwinClientEngine: a request deadlocks on macOS since 2.2.2 ([KTOR-5502](https://youtrack.jetbrains.com/issue/KTOR-5502))
- Requests don't match in nested Regex Routing ([KTOR-5750](https://youtrack.jetbrains.com/issue/KTOR-5750))
- IllegalArgumentException in Regex Routing ([KTOR-5748](https://youtrack.jetbrains.com/issue/KTOR-5748))
- Unneeded escaping in Regex Routing isn't processed ([KTOR-5746](https://youtrack.jetbrains.com/issue/KTOR-5746))
- Native: Read from a closed socket doesn't throw an exception ([KTOR-5093](https://youtrack.jetbrains.com/issue/KTOR-5093))
- Reading response of HEAD request breaks when Content-Length > 0 ([KTOR-5699](https://youtrack.jetbrains.com/issue/KTOR-5699))
- "Serializer for class 'Any' is not found" error when responding with Any type since Ktor 2.2.4 ([KTOR-5687](https://youtrack.jetbrains.com/issue/KTOR-5687))
- BearerAuthProvider: Token is being refreshed multiple times when queued call finishes with 401 after refresh token succeeds ([KTOR-5681](https://youtrack.jetbrains.com/issue/KTOR-5681))
- CIO: nmap crashes server with "SocketException: Invalid argument" error ([KTOR-5636](https://youtrack.jetbrains.com/issue/KTOR-5636))
- DigestAuthProvider: realm sent from the server doesn't participate in the computation of `response` ([KTOR-4514](https://youtrack.jetbrains.com/issue/KTOR-4514))
- OAuth2: "JsonObject is not a JsonPrimitive" error when server replies with nested JSON object on a token request ([KTOR-5669](https://youtrack.jetbrains.com/issue/KTOR-5669))
- CallLogging: logs caused by an exception are suppressed when mdc provider is configured ([KTOR-5665](https://youtrack.jetbrains.com/issue/KTOR-5665))
- Metrics: ClassCastException when the DropwizardMetrics plugin is installed after the MicrometerMetrics plugin ([KTOR-5595](https://youtrack.jetbrains.com/issue/KTOR-5595))
- ByteBufferChannel throws exception when HttpCache, ContentEncoding and onDownload are used ([KTOR-5532](https://youtrack.jetbrains.com/issue/KTOR-5532))
- runBlocking in TestApplicationEngine loses coroutineContext ([KTOR-5525](https://youtrack.jetbrains.com/issue/KTOR-5525))
- Incorrect handling of private cache directive in HttpCachePlugin ([KTOR-5570](https://youtrack.jetbrains.com/issue/KTOR-5570))
- The default implementation of challengeFunction is empty, causing no session users to access protected resources ([KTOR-5467](https://youtrack.jetbrains.com/issue/KTOR-5467))
- Wrong ContentType for .mjs files ([KTOR-5533](https://youtrack.jetbrains.com/issue/KTOR-5533))
- Non-standard `Content-Type` headers for static files ([KTOR-5311](https://youtrack.jetbrains.com/issue/KTOR-5311))
- CIO: Client fails to parse response without Content-Length, Connection headers and chunked transfer encoding ([KTOR-5327](https://youtrack.jetbrains.com/issue/KTOR-5327))
- Conflict between `ContentNegotiation` and `Mustache` plugins ([KTOR-5337](https://youtrack.jetbrains.com/issue/KTOR-5337))
### [`v2.2.4`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#224)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.2.3...2.2.4)
> Published 28 February 2023
##### Bugfixes
- Connect timeout is not respected when using the HttpRequestRetry plugin ([KTOR-5466](https://youtrack.jetbrains.com/issue/KTOR-5466))
- URLs with underscore fail to parse correctly in HTTP client request ([KTOR-5591](https://youtrack.jetbrains.com/issue/KTOR-5591))
- Routing: Wrong content-type results in 405 instead of 415 status code with two routes ([KTOR-5535](https://youtrack.jetbrains.com/issue/KTOR-5535))
- Compressing the response will result in unexpected ERROR log output after processing in the StatusPages ([KTOR-5510](https://youtrack.jetbrains.com/issue/KTOR-5510))
- Javadoc for Resources.kt cannot be compiled ([KTOR-5492](https://youtrack.jetbrains.com/issue/KTOR-5492))
- ContentNegotiation: The "charset=UTF-8" part is added for the Content-Type header ([KTOR-3799](https://youtrack.jetbrains.com/issue/KTOR-3799))
- kotlinx.serialization.SerializationException is lost for the classes that have generic type parameters ([KTOR-5448](https://youtrack.jetbrains.com/issue/KTOR-5448))
- OkHttp: Cancelling while writing to ByteWriteChannel when overriding WriteChannelContent causes propagation of CancellationException to a caller ([KTOR-5518](https://youtrack.jetbrains.com/issue/KTOR-5518))
### [`v2.2.3`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#223)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.2.2...2.2.3)
> Published 31 January 2023
##### Improvements
- ContentNegotiation: "Skipping because the type is ignored" log message is unclear ([KTOR-5479](https://youtrack.jetbrains.com/issue/KTOR-5479))
- Make OAuth2 functionality multiplatform ([KTOR-1144](https://youtrack.jetbrains.com/issue/KTOR-1144))
- Log HTTP request time ([KTOR-1250](https://youtrack.jetbrains.com/issue/KTOR-1250))
- Add Client Plugins Trace Logging ([KTOR-5264](https://youtrack.jetbrains.com/issue/KTOR-5264))
##### Bugfixes
- FileStorage throws java.io.FileNotFoundException (File name too long) when request path is long ([KTOR-5443](https://youtrack.jetbrains.com/issue/KTOR-5443))
- HttpRequestRetry retries on FileNotFoundException thrown by FileStorage ([KTOR-5444](https://youtrack.jetbrains.com/issue/KTOR-5444))
- DropwizardMetricsPlugin logs status code incorrectly when is used together with StatusPages plugin ([KTOR-5420](https://youtrack.jetbrains.com/issue/KTOR-5420))
- Server ContentNegotiation no longer allows multiple decoders for one Content-Type ([KTOR-5410](https://youtrack.jetbrains.com/issue/KTOR-5410))
- Multipart File doesn't upload whole file, throws "Unexpected EOF: expected 4096 more bytes" for larger files ([KTOR-3455](https://youtrack.jetbrains.com/issue/KTOR-3455))
- Netty: Unable to set the `tcpKeepAlive` ([KTOR-5370](https://youtrack.jetbrains.com/issue/KTOR-5370))
- HOCON: CLI parameters don't override custom array properties since 2.1.0 ([KTOR-5100](https://youtrack.jetbrains.com/issue/KTOR-5100))
### [`v2.2.2`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#222)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.2.1...2.2.2)
> Published 3 January 2023
##### Improvements
- Resource annotation should be MetaSerializable ([KTOR-5397](https://youtrack.jetbrains.com/issue/KTOR-5397))
- The swaggerUI method is too restrictive and cannot be called inside a route ([KTOR-5307](https://youtrack.jetbrains.com/issue/KTOR-5307))
- Engine shutdown grace period and timeout are not configurable ([KTOR-5359](https://youtrack.jetbrains.com/issue/KTOR-5359))
- Allow specifying immutable in CacheControl ([KTOR-3757](https://youtrack.jetbrains.com/issue/KTOR-3757))
##### Bugfixes
- Server cannot be started with the Swagger plugin ([KTOR-5308](https://youtrack.jetbrains.com/issue/KTOR-5308))
- Regression in 2.2.1: Got EOF but at least 0 bytes were expected ([5372](https://youtrack.jetbrains.com/issue/KTOR-5372))
- HttpRequestRetry: Memory leak of coroutines objects when using the plugin ([KTOR-5099](https://youtrack.jetbrains.com/issue/KTOR-5099))
- iOS unit test deadlocks with DarwinClientEngine ([KTOR-5332](https://youtrack.jetbrains.com/issue/KTOR-5332))
- Gzip encoding: IllegalStateException: Expected 112, actual 113 ([KTOR-5300](https://youtrack.jetbrains.com/issue/KTOR-5300))
- Netty, HSTS: UnsupportedOperationException is thrown when the server responds before HSTS plugin ([KTOR-5276](https://youtrack.jetbrains.com/issue/KTOR-5276))
### [`v2.2.1`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#221)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.2.0...2.2.1)
> Published 7 December 2022
The critical error `java.lang.NoClassDefFoundError: kotlinx/atomicfu/AtomicFU` in the 2.2.0 release is fixed
### [`v2.2.0`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#220)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.1.3...2.2.0)
> Published 7 December 2022
- Intergate Swagger UI Hosting as Ktor Feature ([KTOR-774](https://youtrack.jetbrains.com/issue/KTOR-774))
- New plugins API for client ([KTOR-5161](https://youtrack.jetbrains.com/issue/KTOR-5161))
- Rate-Limit Support on Server ([KTOR-1196](https://youtrack.jetbrains.com/issue/KTOR-1196))
- Make sessions plugin multiplatform ([KTOR-4960](https://youtrack.jetbrains.com/issue/KTOR-4960))
- Add the ability to access the route inside a route-scoped plugin ([KTOR-5112](https://youtrack.jetbrains.com/issue/KTOR-5112))
- Add a method that returns a list of child routes recursively ([KTOR-581](https://youtrack.jetbrains.com/issue/KTOR-581))
- Support Default Value for missing Env Variables in YAML ([KTOR-5283](https://youtrack.jetbrains.com/issue/KTOR-5283))
- Netty: ApplicationStarted event is fired before the server starts accepting connections ([KTOR-4259](https://youtrack.jetbrains.com/issue/KTOR-4259))
- parseAuthorizationHeader throws ParseException on header value with multiple challenges ([KTOR-5216](https://youtrack.jetbrains.com/issue/KTOR-5216))
- ByteChannel exception: Got EOF but at least 1 byte were expected ([KTOR-5252](https://youtrack.jetbrains.com/issue/KTOR-5252))
- Application data in OAuth State parameter ([KTOR-5225](https://youtrack.jetbrains.com/issue/KTOR-5225))
- NativePRNGNonBlocking is not found, fallback to SHA1PRNG ([KTOR-668](https://youtrack.jetbrains.com/issue/KTOR-668))
- Not calling call.respond() at server results in 404 for the client ([KTOR-721](https://youtrack.jetbrains.com/issue/KTOR-721))
- Restoring thread context elements when directly resuming to parent is broken ([KTOR-2644](https://youtrack.jetbrains.com/issue/KTOR-2644))
- Out of the box ContentConverter for Protobuf ([KTOR-763](https://youtrack.jetbrains.com/issue/KTOR-763))
- Darwin: response is never returned when usePreconfiguredSession is used ([KTOR-5134](https://youtrack.jetbrains.com/issue/KTOR-5134))
- List.merge() should have reversed priority ([KTOR-5208](https://youtrack.jetbrains.com/issue/KTOR-5208))
- Allow nested authentications to be combined using AND ([KTOR-5021](https://youtrack.jetbrains.com/issue/KTOR-5021))
- The swaggerUI plugin should be placed in the io.ktor.server.plugins.swagger package ([KTOR-5192](https://youtrack.jetbrains.com/issue/KTOR-5192))
- CORS Plugin should log reason for returning 403 Forbidden errors ([KTOR-4236](https://youtrack.jetbrains.com/issue/KTOR-4236))
- The default path to an OpenAPI specification doesn't work for the 'openAPI' plugin ([KTOR-5193](https://youtrack.jetbrains.com/issue/KTOR-5193))
- JWT: JWTPayloadHolder.getListClaim() throws NPE when specified claim is absent ([KTOR-5098](https://youtrack.jetbrains.com/issue/KTOR-5098))
- Logging: the plugin instantiates the default logger even when a custom one is provided ([KTOR-5186](https://youtrack.jetbrains.com/issue/KTOR-5186))
- Java client engine doesn't handle HttpTimeout.INFINITE_TIMEOUT_MS properly ([KTOR-2814](https://youtrack.jetbrains.com/issue/KTOR-2814))
- SessionTransportTransformerMessageAuthentication: Comparison of digests fails when there is a space in a value ([KTOR-5168](https://youtrack.jetbrains.com/issue/KTOR-5168))
- Support serving OpenAPI from resources ([KTOR-5150](https://youtrack.jetbrains.com/issue/KTOR-5150))
- Remove check for internal class in Select ([KTOR-5035](https://youtrack.jetbrains.com/issue/KTOR-5035))
- Persistent Client HttpCache ([KTOR-2579](https://youtrack.jetbrains.com/issue/KTOR-2579))
- Support native windows HTTP client ([KTOR-735](https://youtrack.jetbrains.com/issue/KTOR-735))
- Add Server BearerAuthenticationProvider ([KTOR-5118](https://youtrack.jetbrains.com/issue/KTOR-5118))
- Merged config: "Property \*.size not found" error when calling `configList` method on an array property ([KTOR-5143](https://youtrack.jetbrains.com/issue/KTOR-5143))
- "POSIX error 56: Socket is already connected" error when a socket is connection-mode on Darwin targets ([KTOR-4877](https://youtrack.jetbrains.com/issue/KTOR-4877))
- StatusPages can't handle errors in HTML template ([KTOR-5107](https://youtrack.jetbrains.com/issue/KTOR-5107))
- HttpRequestRetry: Memory leak of coroutines objects when using the plugin ([KTOR-5099](https://youtrack.jetbrains.com/issue/KTOR-5099))
- CallLogging and CallId: exceptions thrown in WriteChannelContent.writeTo are swallowed ([KTOR-4954](https://youtrack.jetbrains.com/issue/KTOR-4954))
- Temp files generated by multipart upload are not cleared in case of exception or cancellation ([KTOR-5051](https://youtrack.jetbrains.com/issue/KTOR-5051))
- Websockets, Darwin: trusting a certificate via `handleChallenge` doesn't work for Websockets connections ([KTOR-5094](https://youtrack.jetbrains.com/issue/KTOR-5094))
- Digest auth: Support returning any objects which implement Principal interface ([KTOR-5059](https://youtrack.jetbrains.com/issue/KTOR-5059))
- Add Debug Logging to Default Transformers ([KTOR-4529](https://youtrack.jetbrains.com/issue/KTOR-4529))
- No way getting client's source address from IP packet ([KTOR-2501](https://youtrack.jetbrains.com/issue/KTOR-2501))
- Add Env Variable to Change Log Level on Native Server ([KTOR-4998](https://youtrack.jetbrains.com/issue/KTOR-4998))
- Add Debug Logging for Ktor Plugins and Routing ([KTOR-4510](https://youtrack.jetbrains.com/issue/KTOR-4510))
- Add Debug Logging to ContentNegotiation ([KTOR-4518](https://youtrack.jetbrains.com/issue/KTOR-4518))
- Add Debug Logging to Routing ([KTOR-4524](https://youtrack.jetbrains.com/issue/KTOR-4524))
- Add Debug Logging to Auth Plugin ([KTOR-4519](https://youtrack.jetbrains.com/issue/KTOR-4519))
- Add Debug Logging to Status Pages Plugin ([KTOR-4527](https://youtrack.jetbrains.com/issue/KTOR-4527))
- Add Debug Logging to PartialContent Plugin ([KTOR-4525](https://youtrack.jetbrains.com/issue/KTOR-4525))
- Add Debug Logging to Sessions Plugin ([KTOR-4526](https://youtrack.jetbrains.com/issue/KTOR-4526))
- Add Debug Logging to Call Id ([KTOR-4520](https://youtrack.jetbrains.com/issue/KTOR-4520))
- Add Debug Logging to WebSockets Plugin ([KTOR-4528](https://youtrack.jetbrains.com/issue/KTOR-4528))
- Add Debug Logging to Double Receive Plugin ([KTOR-4530](https://youtrack.jetbrains.com/issue/KTOR-4530))
- Add Debug Logging to Compression Plugin ([KTOR-4521](https://youtrack.jetbrains.com/issue/KTOR-4521))
- Make certificate generation helpers more flexible ([KTOR-5023](https://youtrack.jetbrains.com/issue/KTOR-5023))
- Jackson converter: Support requests with Content-Length header ([KTOR-4904](https://youtrack.jetbrains.com/issue/KTOR-4904))
- Add a way to get a client's port ([KTOR-430](https://youtrack.jetbrains.com/issue/KTOR-430))
- Retry and timeout client plugins don't work together ([KTOR-4652](https://youtrack.jetbrains.com/issue/KTOR-4652))
- Server Session - Switch to Kotlinx serialization ([KTOR-2572](https://youtrack.jetbrains.com/issue/KTOR-2572))
- ApplicationCall.respondRedirect should have overload for Url ([KTOR-1538](https://youtrack.jetbrains.com/issue/KTOR-1538))
- Make API to Use Configuration in Application Plugins ([KTOR-4533](https://youtrack.jetbrains.com/issue/KTOR-4533))
- Way to block use of TLS 1.0/1.1 when using Ktor/Netty ([KTOR-4587](https://youtrack.jetbrains.com/issue/KTOR-4587))
- testApplication: application initialization block isn't eagerly called ([KTOR-4819](https://youtrack.jetbrains.com/issue/KTOR-4819))
- testApplication: test server lifecycle management ([KTOR-4773](https://youtrack.jetbrains.com/issue/KTOR-4773))
- The beginning character of encodedPath field(Url class) is wrong when relative path ([KTOR-621](https://youtrack.jetbrains.com/issue/KTOR-621))
- Unable to access userPrincipal of servletRequest in ktor-server-servlet ([KTOR-4784](https://youtrack.jetbrains.com/issue/KTOR-4784))
- When unable to get JWKS, JWTAuth swallows the underlying exception and only logs the last message ([KTOR-636](https://youtrack.jetbrains.com/issue/KTOR-636))
- CIO Server generates wrong URL for OAuth URL provider using Locations ([KTOR-2143](https://youtrack.jetbrains.com/issue/KTOR-2143))
- Inconsistency among server engines when determining port/host of an incoming request ([KTOR-4141](https://youtrack.jetbrains.com/issue/KTOR-4141))
- Update Versions of Dependencies ([KTOR-5293](https://youtrack.jetbrains.com/issue/KTOR-5293))
### [`v2.1.3`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#213)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.1.2...2.1.3)
> Published 26 October 2022
- JS: window.location.origin returns null when executed in iframe via srcdoc attribute ([KTOR-4993](https://youtrack.jetbrains.com/issue/KTOR-4993))
- SensitivityWatchEventModifier - Move the reflection call of this modifier out from the Ktor Core ([KTOR-1647](https://youtrack.jetbrains.com/issue/KTOR-1647))
- "java.lang.IllegalArgumentException: Failed requirement." in SelectorManagerSupport ([KTOR-2914](https://youtrack.jetbrains.com/issue/KTOR-2914))
- HOCON: CLI parameters don't override custom properties since 2.1.0 ([KTOR-5000](https://youtrack.jetbrains.com/issue/KTOR-5000))
- Websockets timeout doesn't cause a close of a connection ([KTOR-3504](https://youtrack.jetbrains.com/issue/KTOR-3504))
- DefaultHeaders: a header is duplicated in a StatusPages's handler ([KTOR-4990](https://youtrack.jetbrains.com/issue/KTOR-4990))
- Websockets: timeout doesn't cause closing of incoming and outgoing channels ([KTOR-2430](https://youtrack.jetbrains.com/issue/KTOR-2430))
- RFC 3986 recommendation for encoding URI is NOT followed ([KTOR-993](https://youtrack.jetbrains.com/issue/KTOR-993))
- Cookies: Invalid encoding of cookies' values since 1.4.0 ([KTOR-917](https://youtrack.jetbrains.com/issue/KTOR-917))
- ByteReadChannel is unable to read files with long lines ([KTOR-2588](https://youtrack.jetbrains.com/issue/KTOR-2588))
- WebSocketDeflateExtension configureProtocols always failed with stackOverflow ([KTOR-4916](https://youtrack.jetbrains.com/issue/KTOR-4916))
- Update Kotlin to 1.7.20 ([KTOR-4963](https://youtrack.jetbrains.com/issue/KTOR-4963))
- Netty HTTP/2: response headers contain ":status" header and that leads to IllegalHeaderNameException in the ConditionalHeaders plugin ([KTOR-4943](https://youtrack.jetbrains.com/issue/KTOR-4943))
- Maven: ktor-server-test-host-jvm causes dependency error starting from Ktor 2.0.3 ([KTOR-4900](https://youtrack.jetbrains.com/issue/KTOR-4900))
- Autoreloading: "Flow invariant is violated" error since Ktor 2.0.3 ([KTOR-4926](https://youtrack.jetbrains.com/issue/KTOR-4926))
- Autoreloading: ClassCastException when retrieving plugins in testApplication ([KTOR-4729](https://youtrack.jetbrains.com/issue/KTOR-4729))
- CIO engine has wrong doc for request timeout ([KTOR-4941](https://youtrack.jetbrains.com/issue/KTOR-4941))
- CIO: A request through a proxy server results in 403 from Cloudflare ([KTOR-4925](https://youtrack.jetbrains.com/issue/KTOR-4925))
### [`v2.1.2`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#212)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.1.1...2.1.2)
> Published 29 September 2022
- HttpCacheEntry ignoring Request Cache-Control directives ([KTOR-4894](https://youtrack.jetbrains.com/issue/KTOR-4894))
- testApplication does not handle port and connectors ([KTOR-4875](https://youtrack.jetbrains.com/issue/KTOR-4875))
- Native: Wrong status code when requesting with DELETE method and body ([KTOR-3566](https://youtrack.jetbrains.com/issue/KTOR-3566))
- Default host address 0.0.0.0 isn't reachable on Windows ([KTOR-4834](https://youtrack.jetbrains.com/issue/KTOR-4834))
- TestApplicationEngine error handling is inconsistent with DefaultEnginePipeline, breaking clients ([KTOR-4009](https://youtrack.jetbrains.com/issue/KTOR-4009))
- Routing: Wrong content-type results in 400 Bad Request instead of 415 Unsupported Media type ([KTOR-4849](https://youtrack.jetbrains.com/issue/KTOR-4849))
### [`v2.1.1`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#211)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.1.0...2.1.1)
> Published 6 September 2022
- CIO: responses are received with a huge delay on JVM Windows (due to reverse DNS lookup internally) ([KTOR-4827](https://youtrack.jetbrains.com/issue/KTOR-4827))
- Netty HTTP/2 not working ([KTOR-578](https://youtrack.jetbrains.com/issue/KTOR-578))
- HTTP/2 push fails with Netty engine ([KTOR-800](https://youtrack.jetbrains.com/issue/KTOR-800))
- HttpCookies: no space between cookie pairs ([KTOR-3854](https://youtrack.jetbrains.com/issue/KTOR-3854))
- Netty ALPN provider detection not working ([KTOR-4712](https://youtrack.jetbrains.com/issue/KTOR-4712))
- CIO: Connection reset by peer on MacOS ([KTOR-2036](https://youtrack.jetbrains.com/issue/KTOR-2036))
- CallLogging MDC with sessions: Application feature Sessions is not installed ([KTOR-550](https://youtrack.jetbrains.com/issue/KTOR-550))
- Deprecate Public API with Atomicfu Declarations ([KTOR-4774](https://youtrack.jetbrains.com/issue/KTOR-4774))
- Deprecate receiveOrNull because it's confusing ([KTOR-4772](https://youtrack.jetbrains.com/issue/KTOR-4772))
- Server ContentNegotiation Plugin doesn't check ignoredTypes for Request Body ([KTOR-4770](https://youtrack.jetbrains.com/issue/KTOR-4770))
- IllegalArgumentException is thrown when UnixSocketAddress.path is accessed on JVM (JDK 16+) ([KTOR-4695](https://youtrack.jetbrains.com/issue/KTOR-4695))
- WebSocketDeflateExtension not following RFC ([KTOR-4696](https://youtrack.jetbrains.com/issue/KTOR-4696))
- The parseWebSocketExtensions function behaves incorrectly ([KTOR-3189](https://youtrack.jetbrains.com/issue/KTOR-3189))
- Receive non-Nullable Type Throws NPE in Case of Failure ([KTOR-4771](https://youtrack.jetbrains.com/issue/KTOR-4771))
- Darwin: Symbol not found: *OBJC_CLASS*$\_NSURLSessionWebSocketMessage on iOS 12 ([KTOR-4159](https://youtrack.jetbrains.com/issue/KTOR-4159))
- Fix Merging Date Headers on the Client ([KTOR-4782](https://youtrack.jetbrains.com/issue/KTOR-4782))
- Replace exception in InputStreamAdapter and OutputStreamAdapter constructors with warning message If parking ([KTOR-4736](https://youtrack.jetbrains.com/issue/KTOR-4736))
- Clearing Session Cookie in Chrome 80+ with SameSite and Secure ([KTOR-437](https://youtrack.jetbrains.com/issue/KTOR-437))
- The `OutgoingContent.toByteArray()` stalls when used in combination with a `OutgoingContent.WriteChannelContent` ([KTOR-2126](https://youtrack.jetbrains.com/issue/KTOR-2126))
- Missing Content-Type header in a request ([KTOR-1407](https://youtrack.jetbrains.com/issue/KTOR-1407))
- Crash when making requests from browser inside of web worker ([KTOR-4715](https://youtrack.jetbrains.com/issue/KTOR-4715))
- An error occurs when there is a binary such as protobuf in the response body of error ([KTOR-1619](https://youtrack.jetbrains.com/issue/KTOR-1619))
- CallLogging configured MDC entries are not passed to StatusPages exception handlers ([KTOR-4193](https://youtrack.jetbrains.com/issue/KTOR-4193))
- LocalFileContent incorrectly relies on the last modification time of a file to check its existence ([KTOR-4707](https://youtrack.jetbrains.com/issue/KTOR-4707))
- Sessions: WSS in combination with Secure cookies throws IllegalArgumentException ([KTOR-4697](https://youtrack.jetbrains.com/issue/KTOR-4697))
- Json request failure with configured form authentication ([KTOR-678](https://youtrack.jetbrains.com/issue/KTOR-678))
### [`v2.1.0`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#210)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.0.3...2.1.0)
> Published 11 August 2022
- Add YAML Configuration Format Support ([KTOR-3572](https://youtrack.jetbrains.com/issue/KTOR-3572))
- Allow overriding HSTS settings per host ([KTOR-4578](https://youtrack.jetbrains.com/issue/KTOR-4578))
- CORS: Pattern matching for origin ([KTOR-316](https://youtrack.jetbrains.com/issue/KTOR-316))
- Darwin: Allow setting custom NSURLSession ([KTOR-583](https://youtrack.jetbrains.com/issue/KTOR-583))
- Support setting caching options on call ([KTOR-457](https://youtrack.jetbrains.com/issue/KTOR-457))
- Revert default behavior of string encoding for ContentNegotiation and JsonPlugin ([KTOR-4739](https://youtrack.jetbrains.com/issue/KTOR-4739))
- Make Content-Length header validation optional ([KTOR-4655](https://youtrack.jetbrains.com/issue/KTOR-4655))
- Client resources plugin miss builders for PATCH method ([KTOR-4658](https://youtrack.jetbrains.com/issue/KTOR-4658))
- The awaitSuspend method wakes up early in closed ByteChannelSequential ([KTOR-4597](https://youtrack.jetbrains.com/issue/KTOR-4597))
- HttpCache plugin does not support max-stale directive ([KTOR-4610](https://youtrack.jetbrains.com/issue/KTOR-4610))
- Incoming request body validation ([KTOR-503](https://youtrack.jetbrains.com/issue/KTOR-503))
- Client does not support sending or receiving json null value ([KTOR-745](https://youtrack.jetbrains.com/issue/KTOR-745))
- Jetty: Content Length exception when body size is greater than 4096 bytes ([KTOR-4622](https://youtrack.jetbrains.com/issue/KTOR-4622))
- Darwin: configureRequest doesn't actually configure a NSMutableURLRequest when HTTP request is made ([KTOR-4719](https://youtrack.jetbrains.com/issue/KTOR-4719))
- OAuth2: Allow sending extra parameters for authorization and access token requests ([KTOR-2128](https://youtrack.jetbrains.com/issue/KTOR-2128))
- Java engine: Allow configuring HTTP version ([KTOR-4609](https://youtrack.jetbrains.com/issue/KTOR-4609))
- ContentEncoding: body\() receives truncated array ([KTOR-4653](https://youtrack.jetbrains.com/issue/KTOR-4653))
- Support configuring Netty codec limits via application config ([KTOR-4636](https://youtrack.jetbrains.com/issue/KTOR-4636))
- \[OkHttp] StreamRequestBody should override isOneShot or allow multiple reads of request body ([KTOR-4637](https://youtrack.jetbrains.com/issue/KTOR-4637))
- OverridingClassLoader fails to delegate to parent for resources ([KTOR-4004](https://youtrack.jetbrains.com/issue/KTOR-4004))
- OkHttp and iOS: request with only-if-cache directive in Cache-Control header fails with 504 when match is stale ([KTOR-4127](https://youtrack.jetbrains.com/issue/KTOR-4127))
- Allow Pebble to use Accepted Language header for built-in i18n support ([KTOR-4593](https://youtrack.jetbrains.com/issue/KTOR-4593))
- Test engine can't handle concurrent requests ([KTOR-4572](https://youtrack.jetbrains.com/issue/KTOR-4572))
- Parameters of cloned UrlBuilder affect parameters of an original builder ([KTOR-4573](https://youtrack.jetbrains.com/issue/KTOR-4573))
- Reified type causes ApplicationCall.receive() throw UnsupportedOperationException ([KTOR-3715](https://youtrack.jetbrains.com/issue/KTOR-3715))
- ApplicationConfig lacks the ability to export a part of the config to a third-party library ([KTOR-4416](https://youtrack.jetbrains.com/issue/KTOR-4416))
- Path parameter doesn't get encoded in type safe requests ([KTOR-3953](https://youtrack.jetbrains.com/issue/KTOR-3953))
- Update Kotlin to 1.7.0 ([KTOR-4450](https://youtrack.jetbrains.com/issue/KTOR-4450))
- Bump jteVersion from 2.0.3 to 2.1.2 ([KTOR-4648](https://youtrack.jetbrains.com/issue/KTOR-4648))
### [`v2.0.3`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#203)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.0.2...2.0.3)
> Published 28 June 2022
- Development mode class loader leads to ClassCastException within a CouroutineScope ([KTOR-4164](https://youtrack.jetbrains.com/issue/KTOR-4164))
- Validate that the body of an incoming request is received completely ([KTOR-4379](https://youtrack.jetbrains.com/issue/KTOR-4379))
- UrlBuilder escapes fragment parameters ([KTOR-4412](https://youtrack.jetbrains.com/issue/KTOR-4412))
- CallLogging: JVM crashes when jansi checks whether a file descriptor refers to a terminal ([KTOR-3476](https://youtrack.jetbrains.com/issue/KTOR-3476))
- WebSocket client closes connection due to an HTTP request timeout ([KTOR-4419](https://youtrack.jetbrains.com/issue/KTOR-4419))
- \[JS client] Cannot change redirect policy by followRedirects=false ([KTOR-326](https://youtrack.jetbrains.com/issue/KTOR-326))
- CIO engine doesn't apply a request timeout from the `HttpTimeout` plugin ([KTOR-4473](https://youtrack.jetbrains.com/issue/KTOR-4473))
- CIO: Websockets request doesn't include query parameters ([KTOR-4390](https://youtrack.jetbrains.com/issue/KTOR-4390))
- Ignore SIGPIPE for server sockets ([KTOR-4474](https://youtrack.jetbrains.com/issue/KTOR-4474))
- Direct byte buffers are increased in size when server slowly processes request ([KTOR-4397](https://youtrack.jetbrains.com/issue/KTOR-4397))
- UDP responses are received with a huge delay on JVM Windows (due to reverse DNS lookup internally) ([KTOR-4423](https://youtrack.jetbrains.com/issue/KTOR-4423))
- "No instance for key AttributeKey: ApplicationPluginRegistry" when exception is thrown during the Call phase ([KTOR-4448](https://youtrack.jetbrains.com/issue/KTOR-4448))
- Non-decipherable exception "No result transformation found" ([KTOR-4287](https://youtrack.jetbrains.com/issue/KTOR-4287))
- Unable to set the Content-Type header in a request ([KTOR-620](https://youtrack.jetbrains.com/issue/KTOR-620))
- Update kotlinx.coroutines to 1.6.2 ([KTOR-4451](https://youtrack.jetbrains.com/issue/KTOR-4451))
- Support the HttpTimeout capability in the DelegatingTestClientEngine ([KTOR-4436](https://youtrack.jetbrains.com/issue/KTOR-4436))
- Limit the number of parallel running requests in Netty ([KTOR-4575](https://youtrack.jetbrains.com/issue/KTOR-4575))
- Resources plugin fails to process parameters of type UShort ([KTOR-4424](https://youtrack.jetbrains.com/issue/KTOR-4424))
- Resources plugin doesn't respect default values for Enum ([KTOR-4411](https://youtrack.jetbrains.com/issue/KTOR-4411))
- Invalid request line produced by CIO engine for URL with parameters and without path ([KTOR-4347](https://youtrack.jetbrains.com/issue/KTOR-4347))
- call.receiveText() tries to parse body as JSON when the ContentNegotiation plugin is installed ([KTOR-4426](https://youtrack.jetbrains.com/issue/KTOR-4426))
- Ignore ByteReadChannel as receive type in ContentNegotiation ([KTOR-4511](https://youtrack.jetbrains.com/issue/KTOR-4511))
- Setting body to TextContent leads to NPE when the ContentNegotiation plugin is installed ([KTOR-4383](https://youtrack.jetbrains.com/issue/KTOR-4383))
- submitFormWithBinaryData call leads to NPE when the ContentNegotiation plugin is installed ([KTOR-4269](https://youtrack.jetbrains.com/issue/KTOR-4269))
- ResponseConverter NPE when returning ByteArray with the ContentNegotiation plugin ([KTOR-4399](https://youtrack.jetbrains.com/issue/KTOR-4399))
### [`v2.0.2`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#202)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.0.1...2.0.2)
> Published 27 May 2022
- \[iOS] Prevent HttpClient from persisting cookies across requests ([KTOR-3748](https://youtrack.jetbrains.com/issue/KTOR-3748))
- Web feedback from "Creating HTTP APIs", https://ktor.io/docs/creating-http-apis.html ([KTOR-4380](https://youtrack.jetbrains.com/issue/KTOR-4380))
- When returning a String, content negotiation is ignored ([KTOR-662](https://youtrack.jetbrains.com/issue/KTOR-662))
- HttpResponse.bodyAsChannel should not be converted by ContentNegotiation ([KTOR-4341](https://youtrack.jetbrains.com/issue/KTOR-4341))
- Strings are not decoded when received as application/json ([KTOR-385](https://youtrack.jetbrains.com/issue/KTOR-385))
- Document how to enable/disable HTTP/2 for different client engines ([KTOR-4340](https://youtrack.jetbrains.com/issue/KTOR-4340))
- Revert Dokka to 1.6.10 due to Publication Freeze ([KTOR-4290](https://youtrack.jetbrains.com/issue/KTOR-4290))
- Document a new memory model in KMM tutorial ([KTOR-4354](https://youtrack.jetbrains.com/issue/KTOR-4354))
- Make client docs less JVM-centric ([KTOR-4351](https://youtrack.jetbrains.com/issue/KTOR-4351))
- Darwin engine: Client connection is closed after each request ([KTOR-4145](https://youtrack.jetbrains.com/issue/KTOR-4145))
- Ios: NullPointerException when query parameters contain cyrillic symbols in values ([KTOR-1858](https://youtrack.jetbrains.com/issue/KTOR-1858))
- A native application with the Darwin engine doesn't make a request ([KTOR-3900](https://youtrack.jetbrains.com/issue/KTOR-3900))
- Darwin and Kotlin/JS: "List has more than one element" error when header like Content-type is duplicated in a response ([KTOR-4105](https://youtrack.jetbrains.com/issue/KTOR-4105))
- Invalid response without error ([KTOR-369](https://youtrack.jetbrains.com/issue/KTOR-369))
- Invalid HTTP version should fail ([KTOR-380](https://youtrack.jetbrains.com/issue/KTOR-380))
- The colon after the host parameter requires a port ([KTOR-382](https://youtrack.jetbrains.com/issue/KTOR-382))
- Kotlin/Native: testApplication's client sometimes fails to receive ByteArray response from a route ([KTOR-4197](https://youtrack.jetbrains.com/issue/KTOR-4197))
- "Application started" is never printed ([KTOR-4319](https://youtrack.jetbrains.com/issue/KTOR-4319))
- Default request without explicit port sets port 80 for all requests ([KTOR-4281](https://youtrack.jetbrains.com/issue/KTOR-4281))
- Documentation about how to configure libcurl on Windows ([KTOR-3988](https://youtrack.jetbrains.com/issue/KTOR-3988))
- API Docs reference RFCs. Better to reference our own documentation ([KTOR-3764](https://youtrack.jetbrains.com/issue/KTOR-3764))
- UninitializedPropertyAccessException in the handleResponseExceptionWithRequest when request or response are accessed through ([KTOR-4230](https://youtrack.jetbrains.com/issue/KTOR-4230))HttpClientCall
- The original exception is swallowed by "No request transformation found" exception when request body is serializable object ([KTOR-4160](https://youtrack.jetbrains.com/issue/KTOR-4160))
- IncorrectDereferenceException when trying to create HttpClient from background thread on iOS ([KTOR-4263](https://youtrack.jetbrains.com/issue/KTOR-4263))
- JacksonWebsocketContentConverter.deserialize just doesn't work ([KTOR-4248](https://youtrack.jetbrains.com/issue/KTOR-4248))
- Documentation for migration of Authentication server plugin ([KTOR-4253](https://youtrack.jetbrains.com/issue/KTOR-4253))
- Add sample for the AuthenticationChecked hook ([KTOR-4278](https://youtrack.jetbrains.com/issue/KTOR-4278))
- Web feedback from "Docker", https://ktor.io/docs/docker.html ([KTOR-4282](https://youtrack.jetbrains.com/issue/KTOR-4282))
- Route's path parameters are empty when ApplicationCall.authentication is first accessed in a different ApplicationCall context ([KTOR-4250](https://youtrack.jetbrains.com/issue/KTOR-4250))
- Routes with tailcard should not count for specific http error codes ([KTOR-4280](https://youtrack.jetbrains.com/issue/KTOR-4280))
- Documentation for appending query parameters for URL in the DefaultRequest ([KTOR-4252](https://youtrack.jetbrains.com/issue/KTOR-4252))
- Routing returns 405 even for not completely matched paths ([KTOR-4267](https://youtrack.jetbrains.com/issue/KTOR-4267))
- Resources: builder methods return routes with PathSegmentConstantRouteSelector instead of HttpMethodRouteSelector ([KTOR-4239](https://youtrack.jetbrains.com/issue/KTOR-4239))
- Update Netty to 4.1.77.Final ([KTOR-4339](https://youtrack.jetbrains.com/issue/KTOR-4339))
- External services should use config from environment ([KTOR-4373](https://youtrack.jetbrains.com/issue/KTOR-4373))
- Update Jackson to 2.13.3 ([KTOR-4394](https://youtrack.jetbrains.com/issue/KTOR-4394))
### [`v2.0.1`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#201)
[Compare Source](https://togithub.com/ktorio/ktor/compare/2.0.0...2.0.1)
> Published 28 April 2022
- Fix URL representation ([KTOR-4241](https://youtrack.jetbrains.com/issue/KTOR-4241))
- embeddedServer for CIO and Netty inconsistency ([KTOR-755](https://youtrack.jetbrains.com/issue/KTOR-755))
- Update Coroutines to 1.6.1 ([KTOR-4240](https://youtrack.jetbrains.com/issue/KTOR-4240))
- Locations: Support trailing / ([KTOR-836](https://youtrack.jetbrains.com/issue/KTOR-836))
- Resources: Make `Route.handle` public ([KTOR-4200](https://youtrack.jetbrains.com/issue/KTOR-4200))
- Fix CURL flaky initialization ([KTOR-4223](https://youtrack.jetbrains.com/issue/KTOR-4223))
- Optimize Slow Native Tests ([KTOR
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 becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
1.6.8
->2.3.11
Release Notes
ktorio/ktor (io.ktor:ktor-client-cio)
### [`v2.3.11`](https://togithub.com/ktorio/ktor/releases/tag/2.3.11) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.10...2.3.11) > Published 8 May 2024 ##### Bugfixes - Test client ignores socket timeout ([KTOR-6909](https://youtrack.jetbrains.com/issue/KTOR-6909)) ### [`v2.3.10`](https://togithub.com/ktorio/ktor/releases/tag/2.3.10) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.9...2.3.10) > Published 8 April 2024 ##### Bugfixes - CallLogging, StatusPages: response logged twice when status handler is used ([KTOR-6839](https://youtrack.jetbrains.com/issue/KTOR-6839)) - NodeJS WebSocket client sometimes drops a frame received immediately after handshake ([KTOR-6883](https://youtrack.jetbrains.com/issue/KTOR-6883)) - IPv6 addresses are not supported in NettyConnectionPoint and CIOConnectionPoint ([KTOR-5383](https://youtrack.jetbrains.com/issue/KTOR-5383)) - JS browser: "Maximum call stack size exceeded" on HTTP request when targeting es2015 ([KTOR-6878](https://youtrack.jetbrains.com/issue/KTOR-6878)) - CIO: File upload fails with `NumberFormatException` when uploading file larger than INT_MAX bytes (~2.1 GiB) since 2.3.0 ([KTOR-6851](https://youtrack.jetbrains.com/issue/KTOR-6851)) - CallLogging: the plugin completely overrides MDC if at least one entry is configured ([KTOR-6642](https://youtrack.jetbrains.com/issue/KTOR-6642)) - SSE plugin: Duplicated "Content-Type: text/event-stream" headers ([KTOR-6735](https://youtrack.jetbrains.com/issue/KTOR-6735)) - CIO: "getSubjectAlternativeNames(...) must not be null" when IP-addresses are verified and no SAN in the certificate ([KTOR-6746](https://youtrack.jetbrains.com/issue/KTOR-6746)) ##### Improvements - Inconsistent behavior of Netty and rest engines by returning null or empty string for query parameters without values ([KTOR-6850](https://youtrack.jetbrains.com/issue/KTOR-6850)) - Android: no logs are present in Logcat with `Logger.ANDROID` ([KTOR-1219](https://youtrack.jetbrains.com/issue/KTOR-1219)) ### [`v2.3.9`](https://togithub.com/ktorio/ktor/releases/tag/2.3.9) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.8...2.3.9) > Published 4 March 2024 ##### Improvements - Allow to set secure cookie even with http scheme ([KTOR-3159](https://youtrack.jetbrains.com/issue/KTOR-3159)) ##### Bugfixes - ContentNegotiation: the plugin appends duplicated MIME type to Accept header ([KTOR-6684](https://youtrack.jetbrains.com/issue/KTOR-6684)) ### [`v2.3.8`](https://togithub.com/ktorio/ktor/releases/tag/2.3.8) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.7...2.3.8) > Published 31 January 2024 ##### Bugfixes - "KeyStoreException: JKS not found" exception on Android when configuring secure connection ([KTOR-6720](https://youtrack.jetbrains.com/issue/KTOR-6720)) - `URLBuilder` crashes on React Native platforms ([KTOR-6576](https://youtrack.jetbrains.com/issue/KTOR-6576)) - CIO: Unable to perform WebSocket upgrade when Content-Type header is sent in the request ([KTOR-6366](https://youtrack.jetbrains.com/issue/KTOR-6366)) - ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching ([KTOR-6420](https://youtrack.jetbrains.com/issue/KTOR-6420)) - High Native Server Memory Usage ([KTOR-6321](https://youtrack.jetbrains.com/issue/KTOR-6321)) - Server ContentNegotiation no longer allows multiple decoders for one Content-Type ([KTOR-5410](https://youtrack.jetbrains.com/issue/KTOR-5410)) - Logging plugin blocks response body streaming when level is BODY ([KTOR-6482](https://youtrack.jetbrains.com/issue/KTOR-6482)) - WebSockets: Confusing error message when server doesn't respond with Upgrade ([KTOR-6397](https://youtrack.jetbrains.com/issue/KTOR-6397)) - {...} (tailcard) does not match URLs ending with '/' ([KTOR-2121](https://youtrack.jetbrains.com/issue/KTOR-2121)) - HttpCache: NumberFormatException for cache-control with max age more than Int.MAX_VALUE ([KTOR-6505](https://youtrack.jetbrains.com/issue/KTOR-6505)) - CORS: `allowHost` without the second argument doesn't allow the secure host ([KTOR-6494](https://youtrack.jetbrains.com/issue/KTOR-6494)) - "ReferenceError: 'self' is not defined" when using URLBuilder in a custom JS engine ([KTOR-5978](https://youtrack.jetbrains.com/issue/KTOR-5978)) - MDC diagnostic value is changed during logging of the request ([KTOR-6528](https://youtrack.jetbrains.com/issue/KTOR-6528)) - WebSocket doesn't get terminated when runBlocking is used ([KTOR-6664](https://youtrack.jetbrains.com/issue/KTOR-6664)) - CIO: "getSubjectAlternativeNames(...) must not be null" error on Android when using CA without SAN since 2.3.5 ([KTOR-6396](https://youtrack.jetbrains.com/issue/KTOR-6396)) - RequestConnectionPoint should implement toString() ([KTOR-6577](https://youtrack.jetbrains.com/issue/KTOR-6577)) ### [`v2.3.7`](https://togithub.com/ktorio/ktor/releases/tag/2.3.7) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.6...2.3.7) > Published 7 December 2023 ##### Bugfixes - Server ContentNegotiation no longer allows multiple decoders for one Content-Type ([KTOR-5410](https://youtrack.jetbrains.com/issue/KTOR-5410/Server-ContentNegotiation-no-longer-allows-multiple-decoders-for-one-Content-Type)) - High Native Server Memory Usage ([KTOR-6321](https://youtrack.jetbrains.com/issue/KTOR-6321/High-Native-Server-Memory-Usage)) - WebSockets: Confusing error message when server doesn't respond with Upgrade ([KTOR-6397](https://youtrack.jetbrains.com/issue/KTOR-6397/WebSockets-Confusing-error-message-when-server-doesnt-respond-with-Upgrade)) - ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching ([KTOR-6420](https://youtrack.jetbrains.com/issue/KTOR-6420)) ### [`v2.3.6`](https://togithub.com/ktorio/ktor/releases/tag/2.3.6) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.5...2.3.6) > Published 7 November 2023 ##### Bugfixes - Resolved connectors job does not complete in TestApplicationEngine ([KTOR-6411](https://youtrack.jetbrains.com/issue/KTOR-6411)) - Darwin: Even a coroutine Job is canceled network load keeps high ([KTOR-6243](https://youtrack.jetbrains.com/issue/KTOR-6243)) - Darwin: EOFException when sending multipart data using Ktor 2.3.4 ([KTOR-6281](https://youtrack.jetbrains.com/issue/KTOR-6281)) - Ktor JS client unconfigurable logging in node ([KTOR-6275](https://youtrack.jetbrains.com/issue/KTOR-6275)) - CIO: getEngineHeaderValues() returns duplicated values ([KTOR-6352](https://youtrack.jetbrains.com/issue/KTOR-6352)) - "Server sent a subprotocol but none was requested" when using Node WebSockets ([KTOR-4001](https://youtrack.jetbrains.com/issue/KTOR-4001)) - YAML properties with literal value null cannot be read since 2.3.1 ([KTOR-6357](https://youtrack.jetbrains.com/issue/KTOR-6357)) - AndroidClientEngine cannot handle content length that exceeds Int range ([KTOR-6344](https://youtrack.jetbrains.com/issue/KTOR-6344)) - Client unable to make subsequent requests after the network disconnection and connection when ResponseObserver is installed ([KTOR-6252](https://youtrack.jetbrains.com/issue/KTOR-6252)) - Outdated Gradle jib plubin does not support application/vnd.oci.image.index.v1+json media type ([KTOR-6280](https://youtrack.jetbrains.com/issue/KTOR-6280)) - KTor 2.3.5 Kotlin 1.9.x upgrade is a breaking change ([KTOR-6354](https://youtrack.jetbrains.com/issue/KTOR-6354)) - WebSockets (CIO): Connection Failure Due to Lowercase 'upgrade' in 'Connection: upgrade' Header ([KTOR-6388](https://youtrack.jetbrains.com/issue/KTOR-6388)) - WinHttp: ArrayIndexOutOfBoundsException when sending WS frame with empty body ([KTOR-6394](https://youtrack.jetbrains.com/issue/KTOR-6394)) - Update dependency com.auth0:jwks-rsa to v0.22.1 ### [`v2.3.5`](https://togithub.com/ktorio/ktor/releases/tag/2.3.5) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.4...2.3.5) > Published 5 October 2023 ##### Bugfixes - 300+ ktor-client-java threads eat up lots of memory ([KTOR-6292](https://youtrack.jetbrains.com/issue/KTOR-6292)) - Apache5 engine limits concurrent requests to individual route to 5 ([KTOR-6221](https://youtrack.jetbrains.com/issue/KTOR-6221)) - DarwinClientEngine WebSocket rejects all received pongs ([KTOR-5540](https://youtrack.jetbrains.com/issue/KTOR-5540)) ### [`v2.3.4`](https://togithub.com/ktorio/ktor/releases/tag/2.3.4) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.3...2.3.4) > Published 31 August 2023 ##### Bugfixes - The "charset=UTF-8" part is automatically added to the `application/json` Content-Type ([KTOR-6183](https://youtrack.jetbrains.com/issue/KTOR-6183)) - MicrometerMetricsConfig default registry leaks coroutine ([KTOR-6178](https://youtrack.jetbrains.com/issue/KTOR-6178)) - Darwin: App hangs when sending a huge MultiPart request without access to network ([KTOR-6147](https://youtrack.jetbrains.com/issue/KTOR-6147)) - NPE in JavaClientEngine body() call ([KTOR-6190](https://youtrack.jetbrains.com/issue/KTOR-6190)) - Digest Auth: algorithm isn't specified in the Authorization header ([KTOR-3391](https://youtrack.jetbrains.com/issue/KTOR-3391)) - Confusing NoTransformationFoundException ([KTOR-6064](https://youtrack.jetbrains.com/issue/KTOR-6064)) - Cookie name-value pairs should be separated by a semicolon instead of a comma ([KTOR-5868](https://youtrack.jetbrains.com/issue/KTOR-5868)) ### [`v2.3.3`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#233) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.2...2.3.3) > Published 1 August 2023 ##### Bugfixes - java.util.zip.DataFormatException after enabling permessage-deflate ([KTOR-5979](https://youtrack.jetbrains.com/issue/KTOR-5979)) - DelegatingTestingClientEngine fails when ContentNegotiation with protobuf is installed and empty body ([KTOR-6125](https://youtrack.jetbrains.com/issue/KTOR-6125)) - KtorServlet does not support yaml configuration ([KTOR-6108](https://youtrack.jetbrains.com/issue/KTOR-6108)) - CIO ConnectionFactory leaks on cancellation ([KTOR-6127](https://youtrack.jetbrains.com/issue/KTOR-6127)) - staticFiles responds twice if both index and defaultPath are set ([KTOR-6120](https://youtrack.jetbrains.com/issue/KTOR-6120)) - Uncaught Kotlin exception: kotlin.IllegalArgumentException: Failed to open iconv for charset UTF-8 with error code 22 ([KTOR-5980](https://youtrack.jetbrains.com/issue/KTOR-5980)) - Not compatible with kotlinx-html 0.9.1 ([KTOR-6124](https://youtrack.jetbrains.com/issue/KTOR-6124)) - "Test engine is already completed" error while establishing Websockets connection ([KTOR-6057](https://youtrack.jetbrains.com/issue/KTOR-6057)) - s-maxage is not used, even if `HttpCache.Config.isShared` is true ([KTOR-6087](https://youtrack.jetbrains.com/issue/KTOR-6087)) - Cache returns null when vary header set different ways whatever it has same values ([KTOR-6081](https://youtrack.jetbrains.com/issue/KTOR-6081)) - DefaultRequest: a cookie appears twice in the request header when sending a request with another cookie ([KTOR-5619](https://youtrack.jetbrains.com/issue/KTOR-5619)) ##### Improvements - Drop linuxArm64 publication from ktor-client-curl ([KTOR-6154](https://youtrack.jetbrains.com/issue/KTOR-6154)) - Client: Target linuxArm64 ([KTOR-872](https://youtrack.jetbrains.com/issue/KTOR-872)) - Server: Target linuxArm64 ([KTOR-5753](https://youtrack.jetbrains.com/issue/KTOR-5753)) - Add system property to disable automatic installation of runtime shutdown hook ([KTOR-6070](https://youtrack.jetbrains.com/issue/KTOR-6070)) ### [`v2.3.2`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#232) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.1...2.3.2) > Published 28 June 2023 ##### Bugfixes - Linking release build leads to compilation error with coroutines of version 1.7.0-Beta ([KTOR-5728](https://youtrack.jetbrains.com/issue/KTOR-5728)) - MapApplicationConfig removes deeply nested properties when converting to a map ([KTOR-6013](https://youtrack.jetbrains.com/issue/KTOR-6013)) - Cache returns null when vary header has more fields in the cached response ([KTOR-6001](https://youtrack.jetbrains.com/issue/KTOR-6001)) - ContentType of a response body isn't set inside OkHttp's interceptor when a form request is sent ([KTOR-5971](https://youtrack.jetbrains.com/issue/KTOR-5971)) ##### Improvements - Update Kotlin to 1.8.22 ([KTOR-6053](https://youtrack.jetbrains.com/issue/KTOR-6053)) - The error message is not helpful when authenticating with a bearer header with a colon ([KTOR-5409](https://youtrack.jetbrains.com/issue/KTOR-5409)) ### [`v2.3.1`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#231) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.3.0...2.3.1) > Published 31 May 2023 ##### Bugfixes - AndroidClientEngine: the engine double-parses query parameters before sending a request ([KTOR-5814](https://youtrack.jetbrains.com/issue/KTOR-5814)) - Flaky tests in WinHttp engine ([KTOR-5946](https://youtrack.jetbrains.com/issue/KTOR-5946)) - Electron/Node.js detection doesn't work correctly ([KTOR-5906](https://youtrack.jetbrains.com/issue/KTOR-5906)) - Curl sometimes fails with `API function called from within callback` ([KTOR-5918](https://youtrack.jetbrains.com/issue/KTOR-5918)) - Bearer auth token refresh hangs after prior refresh threw an exception ([KTOR-5879](https://youtrack.jetbrains.com/issue/KTOR-5879)) - HOCON: "No configuration setting found for key" error after merging ([KTOR-5895](https://youtrack.jetbrains.com/issue/KTOR-5895)) - Ktor Client Unable to Stream Responses in Javascript ([KTOR-5867](https://youtrack.jetbrains.com/issue/KTOR-5867)) - Darwin engine does not support streaming of request body ([KTOR-5899](https://youtrack.jetbrains.com/issue/KTOR-5899)) - The Logging plugin doesn't log full kotlinx deserialization errors ([KTOR-5421](https://youtrack.jetbrains.com/issue/KTOR-5421)) - XForwardedHeaders should set `remoteAddress` in addition to `remoteHost` ([KTOR-5786](https://youtrack.jetbrains.com/issue/KTOR-5786)) - Sessions: Set-Cookie is added on every api request ([KTOR-912](https://youtrack.jetbrains.com/issue/KTOR-912)) - RateLimitters for every request key live in memory forever ([KTOR-5872](https://youtrack.jetbrains.com/issue/KTOR-5872)) - Significant delay between getting a part and starting reading from its provider for multipart/form-data requests ([KTOR-5248](https://youtrack.jetbrains.com/issue/KTOR-5248)) - getTimeMillis has seconds precision on native ([KTOR-5878](https://youtrack.jetbrains.com/issue/KTOR-5878)) - A coroutine closed due to cancellation is considered by the JsWebSocketSession to be closed on failure ([KTOR-2932](https://youtrack.jetbrains.com/issue/KTOR-2932)) - WebSockets: requests to a non-existing route cause server to lock up after responding with 404 (potential DOS) ([KTOR-5829](https://youtrack.jetbrains.com/issue/KTOR-5829)) - testApplication: NPE when test server doesn't reply with an HTTP upgrade ([KTOR-5815](https://youtrack.jetbrains.com/issue/KTOR-5815)) - GMTDate timestamp doesn't reflect timezone when created using `Calendar.toDate` method ([KTOR-5813](https://youtrack.jetbrains.com/issue/KTOR-5813)) ##### Improvements - Warn when the RateLimit plugin installed after the routing ([KTOR-5915](https://youtrack.jetbrains.com/issue/KTOR-5915)) - Allow access to RateLimiters related to call ([KTOR-5876](https://youtrack.jetbrains.com/issue/KTOR-5876)) - Multipart: Support not writing a temporary file for binary data ([KTOR-5864](https://youtrack.jetbrains.com/issue/KTOR-5864)) - Make System Property to Set outgoingToBeProcessed Size for WebSockets ([KTOR-5855](https://youtrack.jetbrains.com/issue/KTOR-5855)) - Support optional properties in YAML ([KTOR-5796](https://youtrack.jetbrains.com/issue/KTOR-5796)) - YAML config does not support reading variables from itself ([KTOR-5797](https://youtrack.jetbrains.com/issue/KTOR-5797)) ### [`v2.3.0`](https://togithub.com/ktorio/ktor/blob/HEAD/CHANGELOG.md#230) [Compare Source](https://togithub.com/ktorio/ktor/compare/2.2.4...2.3.0) > Published 19 April 2023 ##### Features - Support loading multiple configuration files ([KTOR-5658](https://youtrack.jetbrains.com/issue/KTOR-5658)) - Static files filters or something similar to mod_rewrite ([KTOR-818](https://youtrack.jetbrains.com/issue/KTOR-818)) - Built-in support for HEAD requests for static files ([KTOR-4052](https://youtrack.jetbrains.com/issue/KTOR-4052)) - Ability to set Content-Type of static resource ([KTOR-2312](https://youtrack.jetbrains.com/issue/KTOR-2312)) - Support regex patterns in routing ([KTOR-5110](https://youtrack.jetbrains.com/issue/KTOR-5110)) - Support Flow in ktor-serialization ([KTOR-3788](https://youtrack.jetbrains.com/issue/KTOR-3788)) - Upgrade Client Apache Engine Version to use Apache 5 ([KTOR-4547](https://youtrack.jetbrains.com/issue/KTOR-4547)) - Support for CURLOPT_CAINFO and CURLOPT_CAPATH in ktor-client-curl ([KTOR-5614](https://youtrack.jetbrains.com/issue/KTOR-5614)) - Allow passing multiple acceptable content types to accept route selector ([KTOR-419](https://youtrack.jetbrains.com/issue/KTOR-419)) - Support `100 Continue` ([KTOR-829](https://youtrack.jetbrains.com/issue/KTOR-829)) ##### Improvements - The '425 Too Early' status code is missing in the HttpStatusCode enum ([KTOR-4673](https://youtrack.jetbrains.com/issue/KTOR-4673)) - Feature request: SO_REUSEADDR option for embedded server ([KTOR-5529](https://youtrack.jetbrains.com/issue/KTOR-5529)) - Add opportunity to pass type info into WebSockets serializing methods ([KTOR-5740](https://youtrack.jetbrains.com/issue/KTOR-5740)) - Ktor JS websocket client unconfigurable logging ([KTOR-5456](https://youtrack.jetbrains.com/issue/KTOR-5456)) - Update JTE to 2.3.0 ([KTOR-5698](https://youtrack.jetbrains.com/issue/KTOR-5698)) - Update Kotlin to 1.8.10 ([KTOR-5544](https://youtrack.jetbrains.com/issue/KTOR-5544)) - Migrate to the new Kotlin JS IR backend ([KTOR-5543](https://youtrack.jetbrains.com/issue/KTOR-5543)) - Prefer Node instead of browser behavior ([KTOR-5650](https://youtrack.jetbrains.com/issue/KTOR-5650)) - Update reported dependencies ([KTOR-5662](https://youtrack.jetbrains.com/issue/KTOR-5662)) - AutoHead should dispose response body ([KTOR-5684](https://youtrack.jetbrains.com/issue/KTOR-5684)) - Add `append(String, ListConfiguration
📅 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 becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.