Releases: ktorio/ktor
Releases · ktorio/ktor
1.5.2 Release
1.5.2
Published 25 Feb 2021
- Fixed Dokka building for master (KTOR-2206)
- Fixed native build on linux machine (KTOR-2200)
- Fixed docker doc is incorrect / does not work (KTOR-2179)
- Fixed crash with Firebase Performance in iOS (KTOR-642)
- Fixed Ktor Client CIO engine Jvm ignores Cipher suites with key strength more than 128 bits. (KTOR-1914)
- Fixed mandatory Path Segment parameter can be empty, if no explicit route with trailing / is defined (KTOR-2054)
- Fixed flaky ClientSocketTest.testSelfConnect[jvm] (KTOR-2060)
- Switch JS Fetch API to Standard Library (org.w3c.fetch.*) (KTOR-1460)
- Fixed CIO server always start on "0.0.0.0" - does not respect "connector" configuration (KTOR-334)
- Fixed server/netty: IllegalReferenceCountException (KTOR-1801)
- Fixed digest authentication: cannot successfully pass authentication using curl or web browser (KTOR-1466)
- Fixed HTTP Client exception is masked by JobCancellationException with Ktor 1.5.0 (KTOR-1967)
- Fixed changing
requestTimeoutMillis
in config of HttpTimeout feature doesn't change the CIO's timeout (KTOR-2000) - Fixed test a POST with MultiPart using TestApplicationEngine does not success or fail (KTOR-345)
- Fixed default Headers feature adds duplicated Server header (KTOR-1976)
- Fixed custom response validation is not running when default is disabled (KTOR-2007)
- Fixed session cookie with very long max age duration (KTOR-692)
1.5.1
Published 27 Jan 2021
- Circular reference for SocketException and StackOverflowError when using SLF4J logger (KTOR-1080)
- start.ktor.io - Incorrect import for websockets for ktor 1.2.4 (KTOR-274)
- Unable to catch socket exceptions (KTOR-1166)
- Support explicit WebSocket session close (KTOR-340)
- ktor-client-apache: thread stuck in ByteBufferChannel.readRemainingSuspend (KTOR-1463)
- Logging tests fails due to floating log entries (KTOR-1870)
- Adding existing dropwizard metrics registry to Ktor (KTOR-1798)
- Exception kotlinx.serialization.SerializationException: Class 'ArrayList' is not registered for polymorphic serialization in the scope of 'Collection' in 1.5.0 (KTOR-1795)
- Prevent double quotes on header params (KTOR-1797)
- Post request shows empty body after upgrading v1.3.2 (KTOR-426)
- CIO native selector doesn't select new descriptors (KTOR-1856)
- Client logging docs don't mention all required dependencies (KTOR-280)
- Out of date self-signed-certificate documentation (KTOR-272)
- ClosedReceiveChannelException when making request with CIO engine using a proxy to https (KTOR-1458)
- Incorrect encoding function used for URL path by URLBuilder (KTOR-1543)
- A single slash gets ignored for defining a route, but 1.5 requires them due to KTOR-372 (KTOR-1615)
- Wrong shadow plugin version in Fat JAR docs (KTOR-1359)
- ktor server documentation is returning 404 (KTOR-1602)
- CORS doesn't reject bad headers (KTOR-1662)
- OkHTTP client engine tries to close the connection twice during the closing handshake (KTOR-1374)
- Dispatcher is closing earlier than client (KTOR-1661)
- Server losing channel exceptions at receive (KTOR-1590)
- Request parameters should have name (KTOR-378)
- Status-code must be 3-digit (KTOR-370)
- Connect request sends wrong status line (KTOR-1612)
- Response channel is always cancelled with Logging feature (KTOR-1598)
- Java client logging tests are fluky (KTOR-1599)
- HttpTimeoutTest.testConnect are flaky (KTOR-1583)
- Jetty: requests to resources, that doesn't respond with HTTP/2, lead to unexpected behaviour (KTOR-874)
- "Unfinished workers detected" using client on native (KTOR-1220)
- HttpTimeout.testSocketTimeoutWriteFail is flaky (KTOR-1584)
- Reserved characters in path is not encoded (KTOR-570)
- testTimeoutCancelsWhenParentScopeCancels is flaky (KTOR-1585)
- Java client freeze (KTOR-1567)
- CallLoggingTest is flaky (KTOR-1582)
- Missing dependency information the Authentication and Authorization topic (KTOR-1575)
- "Using a Self-Signed Certificate" docs provide wrong dependency for 1.3.x (KTOR-21)
- "Testing Http Client" docs page contains artifact name with -native suffix (KTOR-1006)
- Custom JSON mapping with Jackson (KTOR-603)
- Serialization for client section does not explain how to use it (KTOR-999)
- Add information about required artifacts to the WebSockets topic (KTOR-1532)
- Missing dependency information the Client Auth topic (KTOR-1533)
- New documentation lacks artifacts information for Gradle and Maven (KTOR-1167)
- ResponseException is no longer serializable starting from 1.4.0 (breaking change) (KTOR-1552)
- Upgrade kotlin to 1.4.21 (KTOR-1637)
1.5.0
Published 22 Dec 2020
- Fixed crash when sending large responses in 1.4.2 (KTOR-1369)
- Introduced URLBuilder function to append paths (KTOR-403)
- Allowed
OkHttpConfig
to configureWebSocket.Factory
(KTOR-951) - Get client certificate information from request (KTOR-424)
- Fixed quoting
Content-Disposition
additional parameters (KTOR-455) - Support Java HTTP Client (KTOR-348)
- Serializing collections of different element types (KTOR-1163)
- Introduced Netty
tcpKeepAlive
option (KTOR-368) - Implemented development mode for Ktor (KTOR-1184)
- Implemented proper unhandled exception handling strategy (KTOR-835)
- Added OAuth feature config to avoid Dropbox issue (KTOR-715)
- Fixed trailing slashes handling in routing (KTOR-372)
- Added CIO client proxy tunneling support (KTOR-1458)
- Supported Sealed Classes inside Session-Objects (KTOR-826)
- Fixed code autoreload (KTOR-664)
- Added response text to the message of
ResponseException
and derived
exceptions (KTOR-844) - Added ability to send cookies with
HttpRequestBuilder
(KTOR-926) - Added warning to HTTP/2 push API (KTOR-1329)
- Fixed parsing Authorization header diagnostics (KTOR-1406)
- Fixed CORS character encoding issue (KTOR-1370)
- Added CORS
anyHeader
in feature configuration (KTOR-977,
KTOR-1263) - Added curl engine option sslVerify (KTOR-1093)
- Fixed client response validation in some cases (KTOR-1412)
- Introduced support for pre-compresed files (KTOR-1447)
- Fixed Apache client engine sometimes hits an unrecoverable socket timeout when using
ChannelWriterContent (KTOR-1149) - Fixed typo
val socketTimeout
inCIOEngineConfig
cause it's a property in the
config (KTOR-1240) - Added excludeSuffix to HttpsRedirect feature (KTOR-1197)
- Fixed CIO client connectRetryAttempts = 0 handling (KTOR-1125)
- Added option to use specific alias from keystore in CIO TLSConfigBuilder JVM
(KTOR-941)
1.4.3
Published 1 Dec 2020
- Client: URL encode / escaping is wrong (KTOR-341)
- HTTP/2 push fails with netty engine (KTOR-800)
- Request headers exceeding expected threshold are not handled correctly (KTOR-905)
- iOS client fails with CoroutinesInternalError when Logging is used (KTOR-924)
- Experimental API and compatibility guarantees (KTOR-1035)
- CIO: client engine exceptions are both logged and thrown (KTOR-1127)
- Timeout feature: android engine throws Java's SocketTimeoutException instead of ConnectTimeoutException (KTOR-1229)
- Input.readTextExactBytes(n) on empty input different behavior per platform (KTOR-1235)
- HttpRedirect feature alters Location header value (KTOR-1236)
- Wrong pool is used to release
IOBuffer
afterByteChannelSequential.copyTo
from static initialized instance. (KTOR-1237) - CIO Engine's HttpClient may fail when trying to send large size binary data. (KTOR-1247)
ByteBufferChannel.readRemaining
doesn't read whole channel (KTOR-1268)- Cannot receive content via jackson negotiator since 1.4.2 (KTOR-1286)
- ktor-io: JVM shared function decrease performance starting from 1.4.0 (KTOR-1290)
- Sessions + SSL (Netty) (KTOR-1292)
- Netty HTTP/2 HEAD response hangs (KTOR-1298)
- Using blocking primitives on this dispatcher is not allowed. Consider using async channel instead or use blocking primitives in withContext(Dispatchers.IO) instead. (KTOR-1305)
- "Wrong HEX escape": gracefully handle invalid URLs (KTOR-1308)
- Add build parameter to build ktor with JVM IR compiler (KTOR-1336)
- Update kotlin to 1.4.20 (KTOR-1346)
- Fix configuration if project without VPN and cache (KTOR-1347)
- Client: NPE in FormDataContentKt -> Input.copyTo (KTOR-1349)
- Upgrade Netty to 4.1.54.Final (KTOR-1363)
- Handle failure in reading request body (KTOR-1367)
- Remove copyTo usage from ServerPipeline (KTOR-1381)
1.4.3 Release
- Client: URL encode / escaping is wrong (KTOR-341)
- HTTP/2 push fails with netty engine (KTOR-800)
- Request headers exceeding expected threshold are not handled correctly (KTOR-905)
- iOS client fails with CoroutinesInternalError when Logging is used (KTOR-924)
- Experimental API and compatibility guarantees (KTOR-1035)
- CIO: client engine exceptions are both logged and thrown (KTOR-1127)
- Timeout feature: android engine throws Java's SocketTimeoutException instead of ConnectTimeoutException (KTOR-1229)
- Input.readTextExactBytes(n) on empty input different behavior per platform (KTOR-1235)
- HttpRedirect feature alters Location header value (KTOR-1236)
- Wrong pool is used to release
IOBuffer
afterByteChannelSequential.copyTo
from static initialized instance. (KTOR-1237) - CIO Engine's HttpClient may fail when trying to send large size binary data. (KTOR-1247)
ByteBufferChannel.readRemaining
doesn't read whole channel (KTOR-1268)- Cannot receive content via jackson negotiator since 1.4.2 (KTOR-1286)
- ktor-io: JVM shared function decrease performance starting from 1.4.0 (KTOR-1290)
- Sessions + SSL (Netty) (KTOR-1292)
- Netty HTTP/2 HEAD response hangs (KTOR-1298)
- Using blocking primitives on this dispatcher is not allowed. Consider using async channel instead or use blocking primitives in withContext(Dispatchers.IO) instead. (KTOR-1305)
- "Wrong HEX escape": gracefully handle invalid URLs (KTOR-1308)
- Add build parameter to build ktor with JVM IR compiler (KTOR-1336)
- Update kotlin to 1.4.20 (KTOR-1346)
- Fix configuration if project without VPN and cache (KTOR-1347)
- Client: NPE in FormDataContentKt -> Input.copyTo (KTOR-1349)
- Upgrade Netty to 4.1.54.Final (KTOR-1363)
- Handle failure in reading request body (KTOR-1367)
- Remove copyTo usage from ServerPipeline (KTOR-1381)
1.4.2 Release
Please see Change Log on Ktor site
1.4.1
- OkHttp: Can't reuse same HttpRequestBuilder for different network clients (KTOR-949)
- Empty body in response using macosX64 target (KTOR-479)
- Native: InvalidMutabilityException creating HttpClient (KTOR-915)
- MultiPartData.readAllParts() throws java.io.IOException when multipart list is empty (KTOR-767)
- kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen io(.ktor.client.request.HttpRequestPipeline (KTOR-693)
- "FreezingException: freezing of InvokeOnCompletion has failed" using native-mt coroutines (KTOR-973)
- kotlin.native.concurrent.InvalidMutabilityException with 1.3.3-native-mt (KTOR-497)
- Parser Exception in header with character code 1 not allowed (KTOR-860)
- Calling HttpStatement#toString more than once throws IllegalArgumentException (KTOR-1005)
- Wrong session id get stuck at clients (KTOR-1007)
- Exception after WebSocketSession.close() invocation. (KTOR-847)
- Error Ktor running on background thread on iOS (KTOR-499)
- HttpClient can only be used on the main thread for native targets (KTOR-491)
- Ignore content length when transfer encoding is chunked for CIO server (KTOR-1036)
- ConcurrentList.increaseCapacity() throws ArrayIndexOutOfBoundsException (KTOR-1034)
- Ktor 1.3.1 Fails File Upload with MalformedInputException (KTOR-391)
- Update library versions, fix config after release (KTOR-1027)
- Fix parsing urls with trailing spaces (KTOR-886)
- 1.4.0: breaking change by making response nullable in ResponseException (KTOR-916)
- Netty: Not started servers leak resources (KTOR-939)
- Ktor websocket client passes configured max frame as timeout millis (KTOR-923)
- Routing: get matcher has higher priority than param matcher on the same level (KTOR-792)
- Confusing log message about failed session lookup (KTOR-776)
- Implement runtime check of using
native-mt
coroutines (KTOR-956) - Http parse security issue (KTOR-841)
- Bumped versions:
- kotlinx.coroutines 1.3.9-native-mt-2
- kotlinx.serialization 1.0.0-RC2
- kotlin 1.4.10
1.4.0
Published 18 Aug 2020
- Upgrade to kotlin 1.4.0
- Add native platform support for CIO client (#2021)
- Prevent access Tomcat servletRequest after recycling
- Fix verbose IO exception logging
- Fix client cookies remove
- Fix suspend tests for digest provider
- Add deprecation to BasicAuth feature
- Add client.get operator for features
- Add client websocket feature config
- iOS Certificate Pinning (#1750)
- Add originHost support in browser
- Fix client logging issues with POST body
- Prevent CURL multi-handle double close
- Add content-type header to default transformers
- Fix report for multiple failed engines in native
- Use window.location.origin as default host in URLBuilder
- Prevent Empty Cookie addition (#2008)
- Fix executor service termination in okhttp (#1860)
- Verify sending Content-Type and custom object body via POST (#1897)
- Fix ByteBufferPool recycle (#2016)
- Update jetty version
- Fix CIO exception logged twice
- Change exception type for long strings in readUtf8Line
- Fix uri field in digest auth header to include query params (#1992)
- Fix empty multipart post
- Move the default test server to CIO
- Fix webpack warning about ktor-client-core critical dependency
- Fix missing qop in DigestAuthProvider (Issue #1974)
- Handle " in different position cases
- Fix parsing of quoted header parameter value
- Fix saved call early completion
- Fix tests with empty json check
- Fix sending blank ContentType in Apache engine
- Parse blank content type to Any
- Fixed serialization of empty body (#1952)
- JsonFeature: Fixed header behavior and made it more flexible (#1927)
- Fix max-age header to use '=' instead f ':'. (#1769)
- Add contextual serialization support
- Introduce non-suspend api for writing
- fix memory alignment check (#1742)
- JetBrains Toolbox icon (#1805)
- Apache should use existing approach when merging headers (#1919)
- Fix conditional headers behaviour (Fix #1849).
- Change IosHttpRequestException parent to improve usability
- OAuth2: Added option to pass params in URL (#1847)
- Fix doubling host
- Enhanced handling of statusCode for AndroidEngine (#1852)
- Fix deserialization issue in client (Fix #1800).
- GitHub issue/pr links in IDEA Git log (#1806)
- Fix log channel is not closed for ByteArrayContent (#1808)
- Use comma to divide headers (Fix #1765).
- HTTP Client tracing using Stetho Android library.
- Fix static content resolution for directories inside Jar (#1777).
- Improve WebSocket routing API (Fix #1075).
- Implemented cookies encoding with their own encoding and added test cases for this
- Fix URI support (#1755)
- Fix OkHttp WebSocket close reason completion (#1363).
- Fix package directive; Add unimported cfnetwork constants
- Fix client.join to wait engine close
- Verify receive from response in exception
- Update okhttp version to 4.4.0
- Cleanup iOS proxy configuration
- Fix WebSocketTest.testMaxSize
- Fix UTF8 parsing (#1718).
1.3.2
Published 12 Mar 2020
- Introduced iOS streaming response support
- Provided challenge handler in iOS client configuration
- Improved JsonFeature configuration DSL (#1472)
- Simplified server kotlinx.serialization config
- Recovered
HttpRequestBuilder.takeFrom
function (#1626) - Allowed to configure default cookies asynchronously
- Exposed server
LocationInfo
and added location resolve functions (#1657) - Introduced function for async writing to server response channel (#1703)
- Added an option to filter logged calls for ktor-client-logging
- Fixed iOS client timeouts
- Fixed iOS crash
- Fixed 100% CPU Apache Ktor Http Client #1018 (#1689)
- Fixed missing client response logging
- Fixed CIO server local address detection (#1663)
- Fix server request origin to provide header's host and port when available
- Fixed random missing feature errors caused by concurrency at startup (#1694)
- Fixed
Set-Cookie
header parser in iOS and JS - Fixed client multiple redirects with relative path (#1704)
- Fixed unwrapping cancellation exceptions in client (#1482)
- Fixed missed preconfigured
OkHttpClient
inOkHttpEngine
(#1646) - Fixed websocket to complete closeReason on disconnection (#1275).
- Fixed websocket sending CloseReason(1009) when frame is too big
- Fixed websocket pinger logging
- Fixed maxFrameSize for chunked frames
- Fixed URL scheme parser (#1614)
- Fixed platform detection in
PlatformUtils.IS_NODE
andPlatformUtils.IS_BROWSER
(#1675) - Fixed
Short.highByte
- Fixed consumeEachBufferRange (#1693)
- Fixed httpclient gzip decoding failure (#1189)
- Fixed
InputStream
wrapper forInput
- Bumped versions:
- Kotlin 1.3.70
- kotlinx.coroutines 1.3.4
- kotlinx.serialization 0.20.0
- kotlinx.html 0.7.1
- dropwizard 4.1.2
- slf4j 1.7.30
- mustache 0.9.6
- pebble 3.1.2
- webjars 0.43
- jackson 2.10.2
1.3.1
Published 5 Feb 2020
- Introduced experimental client timeout feature
- Fixed OkHttp leaking threads
- Fix decoding UTF8 lines (#1323)
- Fixed websocket close sequence (#1262, #1571, #1427)
- Reduced number of redundant exceptions logged in jetty server
- Fixed text decoder in js client under nodejs
- Fixed NSUrlSession memory leak (#1420)
- Make server feature throw
BadContentTypeFormatException
to get status 400 - Reverted accidentally removed client
LocalFileContent
- Removed User-Agent header in browser (to avoid CORS-related issues)
- Fixed request body with
Input
- Improved native clients performance
- Fixed native and js client cancellation issues
- Fixed file descriptor leak in Jetty server (#1589)
- Fixed server sessions and cache related iseues (#1591)
- Upgraded JWT/JWKS versions
- Upgraded Netty version
- Fixed multiple server jwt auth providers processing (#1586)
- Fixed Auth retry logic (#1051)
- Fixed ApplicationRequest.remoteHost to not report "unknown"
- Fixed corrupted headers in CIO client and server on Android
- Improved server cancellation handling
1.3.0
14 Jan 2020
- ktor client proxy support
- Introduced
HttpStatement
and deprecated potentially dangerous resource-leaking client API - Eliminated kotlinx.io dependency
- Fixed server identity compression handling: keep original content length
- Fixed handling GET requests with body (#1302)
- Fixed curl request with empty body
- Added iOS url session configuration
- Fixed CIO engine no longer sends port in "Host" header (#1295)
- Add INTRINSIC value to TLS signature algorithms
- Introduced ability to send string in request body
- Improved client and server typeOf support with kotlinx.serialization
- Gradle 5.4.1+ with newer metadata (metadata 1.0)
- Improved exceptions handling in client and server on Android
- Added missing TLS parameters and relaxed TLS parsing to ignore unsupported features
- Improved session diagnostics (#1368)
- Fixed
hookRequests
in test engine (#1300) - Deprecate java.time related API and related cleanup (for future kotlin.time support)
- Restricted CIO HTTP headers parser
- Introduced header name and value validation
- Fixed must-revalidate on the request side in ktor client (#1406)
- Fixed OkHttp client resource cleanup on close
- Added watchos/tvos native targets
- Fixed content truncation at native and JS targets
- Fixed server's
If-Range
header parsing to avoid crash at date parsing (#1377) - Fixed server's conditional headers processing
- Reduced required JDK version for
DefaultHeaders
server feature - Fixed client hanging due to exception in response pipeline
- Replaced HttpClientJvmEngine to HttpClientEngineBase that is now common for all platforms (affects only custom client engines)
- Fixed hierarchy of execution and call contexts in clients that allows to properly handle request lifetime using execution context.
- Optimize JS module import time (#1464)
- Upgraded versions of Netty, Jetty and Tomcat implementations
- Added Pebble template engine (#1374)
- Introduced localPort route that is always tied to actual socket port (#1392)
- Fixed cookie expiration date parsing (#1390)
- Server authentication feature's phases are now public (#1160)
- Fixed auth header resending after redirect (#1467)
- TCP half-close made optional for CIO client engine and disabled by default.
- Apache client random timeouts fixed
- Fixed locale-dependant code (#1491)
- Fixed unclosed websocket channels if cancelled too early
- TCP half-close made optional for CIO client engine and disabled by default. (#1456)
- Improved ktor-client-mock engine to be thread safe (#1505)
- Fixed client cookies logging (#1506)
- Fixed multiple application stop events in test engine (#1498)
- Fixed CIO ActorSelectorManager to not spin due to cancelled keys (affects both CIO client and server)
- Made default auth validate functions fail to force users to implement them
- Introduced test client instance in the test server
- Fixed various server and client engines to return
null
for missing headers rather than empty list - Introduced support for json structures in client and server (#1519)
- Introduced ktor-server-core binary compatibility tracking
- kotlinx.coroutines 1.3.3
Migration guide: https://ktor.io/quickstart/migration/1.3.0.html