Skip to content

Releases: ktorio/ktor

2.0.2

30 May 06:25
@e5l e5l
Compare
Choose a tag to compare

Published 27 May 2022

  • [iOS] Prevent HttpClient from persisting cookies across requests (KTOR-3748)
  • Web feedback from "Creating HTTP APIs", https://ktor.io/docs/creating-http-apis.html (KTOR-4380)
  • When returning a String, content negotiation is ignored (KTOR-662)
  • HttpResponse.bodyAsChannel should not be converted by ContentNegotiation (KTOR-4341)
  • Strings are not decoded when received as application/json (KTOR-385)
  • Document how to enable/disable HTTP/2 for different client engines (KTOR-4340)
  • Revert Dokka to 1.6.10 due to Publication Freeze (KTOR-4290)
  • Document a new memory model in KMM tutorial (KTOR-4354)
  • Make client docs less JVM-centric (KTOR-4351)
  • Darwin engine: Client connection is closed after each request (KTOR-4145)
  • Ios: NullPointerException when query parameters contain cyrillic symbols in values (KTOR-1858)
  • A native application with the Darwin engine doesn't make a request (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)
  • Invalid response without error (KTOR-369)
  • Invalid HTTP version should fail (KTOR-380)
  • The colon after the host parameter requires a port (KTOR-382)
  • Kotlin/Native: testApplication's client sometimes fails to receive ByteArray response from a route (KTOR-4197)
  • "Application started" is never printed (KTOR-4319)
  • Default request without explicit port sets port 80 for all requests (KTOR-4281)
  • Documentation about how to configure libcurl on Windows (KTOR-3988)
  • API Docs reference RFCs. Better to reference our own documentation (KTOR-3764)
  • UninitializedPropertyAccessException in the handleResponseExceptionWithRequest when request or response are accessed through (KTOR-4230)HttpClientCall
  • The original exception is swallowed by "No request transformation found" exception when request body is serializable object (KTOR-4160)
  • IncorrectDereferenceException when trying to create HttpClient from background thread on iOS (KTOR-4263)
  • JacksonWebsocketContentConverter.deserialize just doesn't work (KTOR-4248)
  • Documentation for migration of Authentication server plugin (KTOR-4253)
  • Add sample for the AuthenticationChecked hook (KTOR-4278)
  • Web feedback from "Docker", https://ktor.io/docs/docker.html (KTOR-4282)
  • Route's path parameters are empty when ApplicationCall.authentication is first accessed in a different ApplicationCall context (KTOR-4250)
  • Routes with tailcard should not count for specific http error codes (KTOR-4280)
  • Documentation for appending query parameters for URL in the DefaultRequest (KTOR-4252)
  • Routing returns 405 even for not completely matched paths (KTOR-4267)
  • Resources: builder methods return routes with PathSegmentConstantRouteSelector instead of HttpMethodRouteSelector (KTOR-4239)
  • Update Netty to 4.1.77.Final (KTOR-4339)
  • External services should use config from environment (KTOR-4373)
  • Update Jackson to 2.13.3 (KTOR-4394)

2.0.1

28 Apr 15:52
4b32ce6
Compare
Choose a tag to compare

2.0.1

Published 28 April 2022

  • Fix URL representation (KTOR-4241)
  • embeddedServer for CIO and Netty inconsistency (KTOR-755)
  • Update Coroutines to 1.6.1 (KTOR-4240)
  • Locations: Support trailing / (KTOR-836)
  • Resources: Make Route.handle public (KTOR-4200)
  • Fix CURL flaky initialization (KTOR-4223)
  • Optimize Slow Native Tests (KTOR-4224)
  • Print Native Stacktrace on Timeout (KTOR-4198)
  • """IllegalStateException: Operation is already in progress"" when the readByte is called the second time after a timeout" (KTOR-4218)
  • Update Kotlin to 1.6.21 (KTOR-4221)
  • Update code for editing an article in the 'Interactive website' tutorial (KTOR-4227)
  • DefaultRequest: HTTPS protocol isn't set when using Ktor 2.0.0 (KTOR-4142)
  • DefaultRequest: host and port aren't used for a request (KTOR-4154)
  • A table with test methods should span the entire width of the dialog (KTOR-4064)
  • StatusPages plugin does not handle most specific exception in Ktor 2.0.0 (KTOR-4187)
  • Behaviour of ApplicationEngine start method not documented properly (KTOR-2271)
  • CORS plugin should be route scoped (KTOR-4157)
  • Raw Web Socket Connection Suspending Forever (KTOR-4166)
  • StatusPages: SerializationException isn't handled when CallID plugin is installed after StatusPages plugin (KTOR-4155)
  • HttpClient.wss defaults to port 80 instead of 443 (KTOR-4175)
  • Missing subject parameter in StatusPages status config method (KTOR-4191)
  • ConditionalHeaders cause the Last-Modified header appears twice in a response (2.0.0) (KTOR-4163)
  • DefaultHeaders: The Server header appears twice in a response (2.0.0) (KTOR-4152)
  • Testing: Resolving a substitution to a value in default config fails when custom HOCON config is used (KTOR-4130)
  • Combination of HttpCache and Logging plugins cause receiving incomplete response body for chunked replies (KTOR-3916)

2.0.0

11 Apr 10:44
Compare
Choose a tag to compare
  • Fix dokka version catalog generation
  • Update API docs for all plugins
  • Cleanup after migrating to version catalog
  • Update Kotlin to 1.6.20
  • Keep original content type when no registrations match
  • Fix body logging mixed with different request
  • Fix CIO client timeout
  • Migrate to version catalog
  • Support WebSockets in Darwin engine
  • Fix freeze with WriteChannelContent in test client
  • Use request timeout instead of socket timeout in Java client
  • Fix selector manager
  • Fix InvalidPathException in ApplicationEngineEnvironmentReloading.kt
  • Add native html builder support
  • Allow overriding dispatcher in MockEngine
  • Fix freeze in response observer
  • Fix allocation issues
  • CIO Native WebSockets
  • Change HttpClientCall fields visibility
  • Adjust CORS configuration names
  • Fix Deflater leak
  • Move ApplicationCallPlugin to companion object
  • Fix OAuth scopes encoded to %2B
  • Add more KtorDsl annotations
  • CORS allowHeadersPrefixed should ignore case
  • Remove mutex from call logging
  • Reuse most useful hooks
  • Use secure random for nonce generation
  • SinglePageApplication plugin returns 404 for non-existent paths
  • The "charset=UTF-8" part is added for the Content-Type header
  • Add jte template support
  • Fix contextual serializer with kotlinx
  • Add isNotEmpty() and size methods to PlaceholderList
  • Add call to CachingHeadersConfig.options callback
  • Fix MDC context in client response body logging
  • Rewrite Netty Engine
  • Add links to a migration guide
  • Bump actions/checkout from 2 to 3
  • Break infinite refresh token cycle on 401
  • Use conditional headers from response
  • Ktor client content encoding: do not decode empty body
  • Clarify the selector problem in the exception message
  • Introduce BaseApplicationPlugin
  • Introduce file cache; Prevent blocking when receiving conte…
  • handleResponseException should have access to request to provide valuable information in exceptions
  • Rename the 'io.ktor.resources.serialisation' package to '...serialization' for consistency
  • Bump micrometer-core from 1.7.5 to 1.8.3
  • Update slf4j to 1.7.36
  • Update node_fetch_version to 2.6.7, remove kotlin-js-store/yarn.lock from .gitignore
  • Replace specify pattern for JSON.stringify
  • Drop obsolete dependency; cleanup configuration
  • Clean up of the plugins API
  • Handle any generic failures in CIO and debugger flag
  • Migrate rest of the plugins
  • Clarify exception message
  • multipart/form-data requests: No way of streaming data asynchronously
  • Convert (X)ForwardedHeader to new API and rename plugin
  • Drop ApplicationReceiveRequest
  • Fixes invalidating cookies cache on every request
  • Support query and fragment in default request
  • Drop before and after from new plugins API
  • Add HTTPS Connector to TestApplicationEngine
  • Remove explicit JVM 8 target
  • Add auth from single provider if no WWW-Auth header is present
  • Support streaming of body in curl
  • Use global DslMarker
  • Fix SPA javadoc
  • Rewrite CallLogging, PartialContent, HttpsRedirect, WebJars, Metrics, CallId, ConditionalHeaders, Compression, Auto Head, DoubleReceive, Auth, FreeMarker, CORS, HSTS, ContentNegotiation, Sessions, XHttpMethodOverride, DefaultHeaders, Thymeleaf to new plugins API
  • Fix SinglePageApplicationTest
  • Remove single page plugin from ktor-server
  • Fix SinglePageApplicationTest after rebase
  • Support routing scoped plugins in hooks
  • Add Single Page Plugin
  • Bump metrics-core from 4.2.6 to 4.2.8
  • Bump metrics-jvm from 4.2.4 to 4.2.8
  • Drop ExperimentalTime
  • Status pages Fixes
  • Use UTF-8 as default charset for text and forms
  • Delete jvmAndNix in ktor-server
  • Update slf4j to 1.7.35
  • Fix NoClassDefFoundError on android in debugger detector
  • Disable response validation by default
  • Migrate server plugins to multiplatform
  • Flush unread bytes after readAvailable
  • Remove unnecessary command from Linux CONTRIBUTING.md setup instructions
  • Drop headerSizeHint
  • Update logback to 1.2.10
  • Fix routing is called for handled requests
  • Drop old native memory model
  • Add apiDump for DefaultHeader plugin changes
  • Fix webSocketSession method suspends indefinitely on connection error
  • Add defaults to stop method
  • Change version to snapshot
  • Fix double slash when appending segments
  • Support java modules
  • Retry-after header value should be in seconds
  • Fixed appendIfNameAbsent and appendIfNameAndValueAbsent
  • Fix receiving streaming body breaks client
  • Fix sockets on Android
  • Use DEFAULT_COMPRESSION for java.util.zip.Deflater
  • Fix binary compatibility with jdk8
  • Fix curl configuration
  • Update Dokka to 1.6.10 and remove ZipException workaround for JS files
  • Returning Thymeleaf fragments from Routes
  • Add protocol support to testApplication
  • Add option to choose value for X-Forwarded-* and Forwarded headers

1.6.8

15 Mar 11:38
@e5l e5l
Compare
Choose a tag to compare
  • Update Gradle to 7.4
  • Update Kotlin to 1.6.10
  • Migrate gradle to version catalog
  • Update logback version to 1.2.11 (KTOR-3935)
  • Update atomicfu to 0.17.1
  • Update netty to 4.1.74.Final
  • Update netty-tcnative to 2.0.45.Final
  • Update jetty to 9.4.45.v20220203
  • Update tomcat to 9.0.59
  • Update apache to 4.1.5
  • Update okhttp to 4.9.3
  • Update gson to 2.9.0
  • Update jackson 2.13.1
  • Update slf4j to 1.7.36
  • Update node-fetch to 2.6.7
  • Update js ws package to 8.5.0
  • Revert wrong check to prevent anyHost with allowCredentials (KTOR-2872)

2.0.0-beta-1

23 Dec 11:27
@e5l e5l
Compare
Choose a tag to compare
  • EAP Naming: main-number conflicts with dependencies (KTOR-2724)
  • ktor.io/learn typo (KTOR-3563)
  • Multiple messages around upgrading to new version (KTOR-3494)
  • Deploy Ktor application to docker topic contains hard coded project name (KTOR-2852)
  • Improvements for Docker sample in documentation (KTOR-3294)
  • "io.ktor.serializaion.gson" - package naming in 2.0 (KTOR-3527)
  • Drop client.get Operator Because of Ambiguity with get(URL) (KTOR-3487)
  • Option "Add imports for Ktor modules automatically" doesn't work (KTOR-3226)
  • Migrations are unavailable (KTOR-3570)
  • AttributeKey instance is identified by its identity instead of its name (KTOR-3538)
  • Fix Log Size for Java 11 Windows Build (KTOR-3535)
  • ByteChannelSequential freezes after closing due to race condition (KTOR-2776)
  • Apple Arm: 'Resolving NPM dependencies using yarn' returns 139 (KTOR-3561)
  • Change log level from INFO to ERROR for tests only (KTOR-3466)
  • Responding without contentLength freezes on CIO native (KTOR-3492)
  • webSocketSession freeze every time (KTOR-3460)
  • Exceptions are Swallowed in HttpClient.wss block (KTOR-3461)
  • Support receiving headers before sending body in CIO client engine (KTOR-3491)
  • [netty] Headers are only flushed after first byte is written (KTOR-3364)
  • Fix testErrorHandling with JS (KTOR-3510)
  • Build and test on Apple Silicon Arm (KTOR-3248)
  • Fix old metadata publication (KTOR-3469)
  • Remove checking body transformation from ContentNegotation (KTOR-3272)
  • Ktor-Utils references a Java API not supported by Android (KTOR-3426)
  • With test application should load environment from the application.conf (KTOR-2794)
  • Inconsistent TestApplicationRequest and Client HttpRequestBuilder API's (KTOR-1246)
  • Server features instead of client in the client install block (KTOR-3412)
  • Using proguard and CallLogging feature causes JVM crashes (KTOR-3345)
  • ContentNegotiation is missing in the plugins completion window (KTOR-3411)
  • Code Snippets use Groovy in build files as opposed to default Kotlin option for Wizard (KTOR-2190)
  • IJ locked after attempt to create new run config in a dialog (KTOR-3385)
  • ContentNegotiation plugins don't accept null-responses from ContentConverts (KTOR-3346)
  • High CPU consumption/Lock after project opening in org.jetbrains.kotlin.storage.getValue ; org.jetbrains.kotlin.idea.caches.resolve.IdeaResolverForProject (KTOR-3337)
  • Update Ktor Plugin Description (KTOR-3388)
  • Project Generated with eap-256 has Errors in Imports (KTOR-3397)
  • Update non-generic samples to 2.0 (KTOR-3285)
  • Simplify plugin descriptions in wizard, remove empty options (KTOR-3386)
  • Bearer Authentication: Queue requests until refresh of tokens is completed (KTOR-3325)
  • Article about storing sensitive data and accessing it in application.conf (KTOR-3340)
  • Android: Failed resolution of: Ljava/nio/file/Paths using API 25 and lower (KTOR-3269)
  • IDE action to migrate to 2.0.0 (KTOR-3225)
  • Passing port 0 to start server on random port doesn't publish correct port to log (KTOR-3288)
  • XForwardedHeaderSupport is installed late in the pipeline (KTOR-731)
  • Error in 2.0 doc/sample for HttpClient retry (KTOR-3303)
  • Cyclic dependency issue in latest 2.0 (main branch) (KTOR-3240)
  • An error occurred when running a sample with the configured XML serializer (KTOR-3286)
  • respondOutputStream behind nginx fails (KTOR-346)
  • ProxyConfig.type checking for DIRECT instead of SOCKS (KTOR-1733)
  • Freeze the screen when I create routes (KTOR-3004)
  • httpMethod is not affected by X-Http-Method-Override (in opposite to docs) (KTOR-404)
  • Client: DefaultRequest apply defaults before request builder (KTOR-2877)
  • KDoc: HttpRequestBuilder.header actually appends header value, does not set it (KTOR-2492)
  • TLS relared tests are failing on CI (KTOR-3224)
  • Jackson: receiveOrNull crashes with an exception when sending empty content (KTOR-727)
  • Content Negotiation: Gson: Should be able to return 400 for badly formatted request. (KTOR-373)
  • Jackson-backed ApplicationCall.receive does not throw ContentTransformationException (KTOR-614)
  • Remove Obsolete Check Cast from SuspendFunctionGun (KTOR-3178)
  • Support 2.0.0 in IDE (KTOR-3196)
  • Client HttpCache feature is not documented (KTOR-1279)
  • Update server dependencies and imports in docs for 2.0.0 (KTOR-3150)
  • Prioritize text found in feature titles over descriptions (KTOR-2488)
  • SerializationException when serializing request body object of generic class type (KTOR-1019)
  • The 'Create test for Ktor module' intention actions changes files from other modules for a multimodule Gradle project (KTOR-3062)
  • Wizard Plugin listing strange link (KTOR-2882)
  • Nothing happens when no test routes is selected when generating Ktor test for module (KTOR-3095)
  • The 'Create test for Ktor module' intention action doesn't create any tests if routes are defined inside the extension function (KTOR-3079)
  • Allow using the client itself inside Auth plugin in the refreshTokens lambda. (KTOR-2977)
  • ADE at io.ktor.ide.plugins.add.KtorMarketplacePluginsUpdater.checkForUpdates (KTOR-3076)
  • Ktor Client JS: request to /example requests http://localhost/example (KTOR-453)
  • URLBuilder: Move Default Values to build() function (KTOR-1345)
  • Impossible to modify response headers (KTOR-2822)
  • Missing Locations params result in 404 instead of 400 (KTOR-447)
  • Should return 405 when route exists but not for given method instead of 404 (KTOR-737)
  • Fix 2.0.0 branch compilation (KTOR-2603)
  • Query of pre-signed URL has been altered after decode and re-encode process (KTOR-778)
  • ApplicationCall.locationOrNull raises error (KTOR-1684)
  • Make body nullable for request builder (KTOR-1400)
  • Provide better support for Ktor clients (KTOR-883)
  • Retry on HttpCode or network error (KTOR-572)
  • HttpRequestRetry in KTOR 2.0 should allow for request altering between retries (KTOR-3544)
  • HttpCookies: parse / in the name ...
Read more

1.6.7 Release

08 Dec 09:55
@e5l e5l
Compare
Choose a tag to compare

Published 6 December 2021

  • Explicitly specify jdk version for building (KTOR-3358)
  • Make URL constructor public again (KTOR-3514)

1.6.6 Release

29 Nov 09:35
@e5l e5l
Compare
Choose a tag to compare
  • Some Netty EngineMain properties are not set (KTOR-3464)
  • Session cookie with BASE64 encoding fails to set correct cookie (KTOR-524)
  • corsCheckRequestHeaders false (KTOR-445)
  • DropwizardMetrics does not append baseName to the 'per endpoint'-metrics (KTOR-2527)
  • Cookies that added to request got removed if HttpCookies plugin is installed (KTOR-3105)
  • Development mode isn't taken into account for subroutes (KTOR-3316)
  • URL port should be in 0..65535 (KTOR-3314)
  • Basic auth not sending second request (KTOR-3472)
  • Update Kotlin to 1.6.0 (KTOR-3422)

1.6.5 Release

02 Nov 15:12
7f9cb16
Compare
Choose a tag to compare
  • Bump kotlin from 1.5.30 to 1.5.31
  • Bump tomcat from 9.0.48 to 9.0.54
  • Bump logback from 1.2.3 to 1.2.6
  • Bump slf4j from 1.7.30 to 1.7.32
  • Bump gson from 2.8.6 to 2.8.9
  • Bump okhttp from 4.6.0 to 4.9.2
  • Bump jackson from 2.12.3 to 2.13.0
  • Bump mockk from 1.10.6 to 1.12.0
  • Add Apple Silicon targets (KTOR-3082)
  • Fix HttpCookies feature overwriting request cookies (KTOR-3105)
  • Change EAP version scheme (KTOR-3319)
  • Update Netty to 4.1.69.Final (KTOR-472)
  • Allow wildcard origins for CORS requests (KTOR-316)
  • Add a host check for illegal symbols (KTOR-384)
  • Add check to prevent anyHost with allowCredentials (KTOR-2872)
  • Bump metrics-core from 4.2.3 to 4.2.4
  • Bump webjars-locator-core from 0.47 to 0.48
  • Bump metrics-jvm from 4.2.3 to 4.2.4
  • Fix ProxyType.SOCKS being mapped to Proxy.Type.DIRECT
  • fix grammar (KTOR-3237)
  • Bump micrometer-core from 1.7.4 to 1.7.5
  • Ignore flaky testTimeoutPriority (KTOR-3243)
  • Fix npe if static file not found (KTOR-2811)
  • Fix flaky timeoutPriorityTest (KTOR-3243)
  • Fill Content-Length for PartialContent (KTOR-308)
  • Change default log-level to INFO (KTOR-806)
  • Use require from the stdlib instead of internal require (KTOR-2626)

1.6.4 Release

01 Oct 09:15
832b70c
Compare
Choose a tag to compare

1.6.4

Published 30 September 2021

  • [Auth] [Interceptors] Phase Phase('Challenge') was not registered for this pipeline (KTOR-3156)
  • insertPhaseBefore and insertPhaseAfter lead to different order (KTOR-438)
  • Ktor 1.6.3 crashes on restart due to java.lang.ClassNotFoundException: Didn't find class "java.nio.file.WatchService" on Android 24 (KTOR-3166)
  • GraalVM binary using CIO fails on start "Module function cannot be found" (KTOR-2987)
  • Logging in Shutdown thread looks not informative (KTOR-3175)
  • Installed Closeable features not closed when closing HttpClient (KTOR-3116)
  • Explain method(HttpMethod.Options) in docs for CORS (KTOR-2913)
  • ContentType.parse("text/html qqq") must fail with error (KTOR-3080)
  • Update JSON topics using code snippets from the 'codeSnippets' project (KTOR-2955)
  • Could not find artifact org.jetbrains.kotlinx:kotlinx-html-jvm:pom:0.7.2 (KTOR-2481)
  • Update the 'Modules' topic (KTOR-1861)
  • Native engines tests are not run outside of the ktor-client-tests module (KTOR-3069)
  • MultiPartData.readAllParts throws IOException when the epilogue is omitted (KTOR-3173)
  • Update Kotlin and Coroutines Versions (KTOR-3103)

1.6.3

26 Aug 08:03
@e5l e5l
Compare
Choose a tag to compare
  • Auth Feature: token refresh works only on main thread in Kotlin/Native (KTOR-3055)
  • FUS report mixes up feature id and feature version (KTOR-3067)
  • SessionTrackerById - doesn't remove invalid session id (KTOR-2584)
  • Bearer Token is Not Initialized after Clean (KTOR-3008)
  • ktor does not support semicolon query parameter in Netty Engine (KTOR-2991)
  • HOCON config not resolved in ServletApplicationEngine (KTOR-3020)
  • Deploy WAR on Tomcat (KTOR-2867)
  • The wizard missing the Pebble plugin (KTOR-2922)
  • Wizard: Creating a project without sample code creates Application.configureRouting without routing (KTOR-2581)
  • The 'Create Run Configuration automatically' option name is cropped (KTOR-2898)
  • InvalidMutabilityException when using withContext and SavedHttpCall (KTOR-2033)
  • Reuse Package Search to add dependencies for Ktor Features in Plugin (KTOR-2433)
  • Server: TLSConfigBuilder.addKeyStore: store.getCertificateChain could return null(KTOR-3047)