Skip to content

Releases: ktorio/ktor

1.5.0

22 Dec 08:34
Compare
Choose a tag to compare

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 configure WebSocket.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 in CIOEngineConfig 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 after ByteChannelSequential.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

01 Dec 17:18
e28148d
Compare
Choose a tag to compare
  • 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 after ByteChannelSequential.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

10 Nov 14:44
Compare
Choose a tag to compare

1.4.1

24 Sep 16:48
@e5l e5l
Compare
Choose a tag to compare
  • 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

19 Aug 09:11
@e5l e5l
Compare
Choose a tag to compare

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

12 Mar 11:19
Compare
Choose a tag to compare

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 in OkHttpEngine (#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 and PlatformUtils.IS_BROWSER (#1675)
  • Fixed Short.highByte
  • Fixed consumeEachBufferRange (#1693)
  • Fixed httpclient gzip decoding failure (#1189)
  • Fixed InputStream wrapper for Input
  • 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

26 Feb 14:30
Compare
Choose a tag to compare

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 15:48
Compare
Choose a tag to compare

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

1.3.0-rc2

28 Dec 23:27
Compare
Choose a tag to compare
1.3.0-rc2 Pre-release
Pre-release
  • 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)
  • kotlinx.coroutines 1.3.3

1.3.0-rc

18 Dec 13:24
e0c021b
Compare
Choose a tag to compare
1.3.0-rc Pre-release
Pre-release
  • 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-dependat code (#1491)
  • Fixed unclosed websocket channels if cancelled too early
  • kotlinx.coroutines 1.3.3