Releases: ktorio/ktor
Releases · ktorio/ktor
2.0.2
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
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
- 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
andappendIfNameAndValueAbsent
- 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
- 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
- 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 withget(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
toERROR
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 throwContentTransformationException
(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 ...
1.6.7 Release
1.6.6 Release
- 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
- 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
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
- 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
withoutrouting
(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)