Releases: ktorio/ktor
Releases · ktorio/ktor
2.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
NumberFormatException
when 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
2.3.9
2.3.8
Published 31 January 2024
Bugfixes
- "KeyStoreException: JKS not found" exception on Android when configuring secure connection (KTOR-6720)
URLBuilder
crashes on React Native platforms (KTOR-6576)- CIO: Unable to perform WebSocket upgrade when Content-Type header is sent in the request (KTOR-6366)
- ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching (KTOR-6420)
- High Native Server Memory Usage (KTOR-6321)
- Server ContentNegotiation no longer allows multiple decoders for one Content-Type (KTOR-5410)
- Logging plugin blocks response body streaming when level is BODY (KTOR-6482)
- WebSockets: Confusing error message when server doesn't respond with Upgrade (KTOR-6397)
- {...} (tailcard) does not match URLs ending with '/' (KTOR-2121)
- HttpCache: NumberFormatException for cache-control with max age more than Int.MAX_VALUE (KTOR-6505)
- CORS:
allowHost
without the second argument doesn't allow the secure host (KTOR-6494) - "ReferenceError: 'self' is not defined" when using URLBuilder in a custom JS engine (KTOR-5978)
- MDC diagnostic value is changed during logging of the request (KTOR-6528)
- WebSocket doesn't get terminated when runBlocking is used (KTOR-6664)
- CIO: "getSubjectAlternativeNames(...) must not be null" error on Android when using CA without SAN since 2.3.5 (KTOR-6396)
- RequestConnectionPoint should implement toString() (KTOR-6577)
2.3.7
Published 7 December 2023
Bugfixes
- Server ContentNegotiation no longer allows multiple decoders for one Content-Type (KTOR-5410)
- High Native Server Memory Usage (KTOR-6321)
- WebSockets: Confusing error message when server doesn't respond with Upgrade (KTOR-6397)
- ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching (KTOR-6420)
3.0.0-beta-1
Published 23 November 2023
Bugfixes
- OkHttp: SSE client throws confusing "Unexpected error" on non 200 status (KTOR-6390)
- Logging plugin blocks response body streaming when level is BODY (KTOR-6482)
- HttpResponseValidator consumes HTTP response body (KTOR-4225)
- CIO: Unable to perform WebSocket upgrade when Content-Type header is sent in the request (KTOR-6366)
- ContentNegotiation: Adding charset to content type of JacksonConverter breaks request matching (KTOR-6420)
- DOS via OOM due to unbound request body size (KTOR-2682)
- AcceptAllCookiesStorage ignores cookie's max-age (KTOR-2023)
- Inconsistent behavior for different engines when exception is thrown in the writer of WriteChannelContent (KTOR-3266)
- Server doesn't send a response when a status code is passed to call.respond and the custom serializer throws an exception (KTOR-6150)
- contentLength() returns null on Android (KTOR-1540)
Improvements
- Kotlin/JS: Allow passing custom Agent (KTOR-5861)
- Update Kotlin to 1.9.0 (KTOR-6123)
- Update Kotlin to 1.9.20 (KTOR-6447)
- Deprecate Locations with Level.ERROR (KTOR-6029)
- HSTS plugin hard codes port 443 (KTOR-4168)
- API to use java.nio.Path as resources (KTOR-4275)
- Ability to serve static resources from a .zip file (KTOR-6385)
- Make DefaultHeaders plugin Kotlin native compatible (KTOR-6356)
- Disable compression for SSE requests (KTOR-6327)
- Drop http timeout for sse requests (KTOR-6312)
- Add deprecations for old IO API (KTOR-6036)
- Drop old deprecations (KTOR-6262)
- Drop actual modifier for Memory class in jvm for compatibility with K2 (KTOR-6006)
- Remove @Suppress("NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS") in preparation for Kotlin 2.0 (KTOR-5824)
- Migrate client plugins to new API (KTOR-6303)
- Jetty Server no idle timeout configuration possible (KTOR-6288)
- AttributeKey equality comparison breaks type safety (KTOR-6122)
- Darwin: Support accessing NSURLSessionDelegate (KTOR-5688)
- Remove writing multipart data to temp file (KTOR-5881)
- Netty: Allow listening only for HTTP/1.1 protocol SSL connections (KTOR-6098)
- Persistent Cookie Storage: Make Cookie.matches and Cookie.fillDefaults methods public (KTOR-6119)
- Decompressed response/request should unset Content-Encoding header (KTOR-6080)
- renderSetCookieHeader shouldn't ignore maxAge = 0 (KTOR-6007)
- Webjars plugin should include caching headers and ETag by default (KTOR-6073)
- SessionsConfig.cookie problem with reified type argument (KTOR-5905)
- Make LDAP Auth return generic Principal instead of UserIdPrincipal (KTOR-793)
- Logger name should be prefixed with io.ktor (KTOR-938)
Features
- Add Server-sent events (SSE) plugin for client and support for OkHttp engine (KTOR-505)
- Client support for SSE plugin (CIO, Apache, Java) (KTOR-5963)
- SSE plugin support in Js, Android, Curl, Darwin, WinHttp client engine (KTOR-6217)
- Add Server-sent events (SSE) plugin for server (KTOR-6172)
- Support UTF-8 BOM character (KTOR-5812)
- Support Compression of Request Body with ContentEncoding Client Plugin (KTOR-4502)
2.3.6
Published 7 November 2023
Bugfixes
- Resolved connectors job does not complete in TestApplicationEngine (KTOR-6411)
- Darwin: Even a coroutine Job is canceled network load keeps high (KTOR-6243)
- Darwin: EOFException when sending multipart data using Ktor 2.3.4 (KTOR-6281)
- Ktor JS client unconfigurable logging in node (KTOR-6275)
- CIO: getEngineHeaderValues() returns duplicated values (KTOR-6352)
- "Server sent a subprotocol but none was requested" when using Node WebSockets (KTOR-4001)
- YAML properties with literal value null cannot be read since 2.3.1 (KTOR-6357)
- AndroidClientEngine cannot handle content length that exceeds Int range (KTOR-6344)
- Client unable to make subsequent requests after the network disconnection and connection when ResponseObserver is installed (KTOR-6252)
- Outdated Gradle jib plubin does not support application/vnd.oci.image.index.v1+json media type (KTOR-6280)
- KTor 2.3.5 Kotlin 1.9.x upgrade is a breaking change (KTOR-6354)
- WebSockets (CIO): Connection Failure Due to Lowercase 'upgrade' in 'Connection: upgrade' Header (KTOR-6388)
- WinHttp: ArrayIndexOutOfBoundsException when sending WS frame with empty body (KTOR-6394)
- Update dependency com.auth0:jwks-rsa to v0.22.1
2.3.5
2.3.4
Published 31 August 2023
Bugfixes
- The "charset=UTF-8" part is automatically added to the
application/json
Content-Type (KTOR-6183) - MicrometerMetricsConfig default registry leaks coroutine (KTOR-6178)
- Darwin: App hangs when sending a huge MultiPart request without access to network (KTOR-6147)
- NPE in JavaClientEngine body() call (KTOR-6190)
- Digest Auth: algorithm isn't specified in the Authorization header (KTOR-3391)
- Confusing NoTransformationFoundException (KTOR-6064)
- Cookie name-value pairs should be separated by a semicolon instead of a comma (KTOR-5868)
2.3.3
Published 1 August 2023
Bugfixes
- java.util.zip.DataFormatException after enabling permessage-deflate (KTOR-5979)
- DelegatingTestingClientEngine fails when ContentNegotiation with protobuf is installed and empty body (KTOR-6125)
- KtorServlet does not support yaml configuration (KTOR-6108)
- CIO ConnectionFactory leaks on cancellation (KTOR-6127)
- staticFiles responds twice if both index and defaultPath are set (KTOR-6120)
- Uncaught Kotlin exception: kotlin.IllegalArgumentException: Failed to open iconv for charset UTF-8 with error code 22 (KTOR-5980)
- Not compatible with kotlinx-html 0.9.1 (KTOR-6124)
- "Test engine is already completed" error while establishing Websockets connection (KTOR-6057)
- s-maxage is not used, even if
HttpCache.Config.isShared
is true (KTOR-6087) - Cache returns null when vary header set different ways whatever it has same values (KTOR-6081)
- DefaultRequest: a cookie appears twice in the request header when sending a request with another cookie (KTOR-5619)
Improvements
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)
- MapApplicationConfig removes deeply nested properties when converting to a map (KTOR-6013)
- Cache returns null when vary header has more fields in the cached response (KTOR-6001)
- ContentType of a response body isn't set inside OkHttp's interceptor when a form request is sent (KTOR-5971)