Hristijan
11/20/2025, 3:27 PMLG
11/20/2025, 11:40 PMdorche
11/21/2025, 7:32 PMio.ktor.utils.io.ClosedByteChannelException on our client. More details in threadFlorian
11/21/2025, 10:07 PMoperationId is empty for every route. Does the plugin not have an option to set the operationId or what would be the intended way to set it?CLOVIS
11/22/2025, 2:35 PMio.ktor.utils.io.ConcurrentIOException: Concurrent read attempts on Native but not on the JVM, running the same code.
Are there platform-specific limitations around this? Am I just lucky on the JVM? It is possible to programmatically detect if this is allowed or not on the current platform?CLOVIS
11/22/2025, 2:49 PMwhile (currentCoroutineContext().isActive) {
select {
// …
async {
readChannel.awaitContent(4 * 4) // standard message header size
}.onAwait { isActive ->
// …
}
}
}
Maybe that's not the correct way to use a ByteReadChannel in a select expression?Nathan Fallet
11/23/2025, 6:31 PMHoratio Thomas
11/24/2025, 8:26 AMAlina Dolgikh [JB]
maximilianosorich
11/26/2025, 12:04 PMrouting {
staticResources("/", "files")
}
When I call directly in the browser it works, but when I do:
curl -I <http://example.com/sitemap.xml>
The response is:
HTTP/1.1 404 Not Found
Content-Length: 853
Content-Type: text/html; charset=UTF-8
I suppose this content is from the Status Pages plugin:
install(StatusPages) {
statusFile(HttpStatusCode.NotFound, filePattern = "error#.html")
}
I have tried the same with curl in localhost with same results.
Is this normal behaviour?Vivek Modi
11/27/2025, 8:41 PMFlorian
11/27/2025, 11:13 PM/api/v1/..., /api/v2/..., but without lot's of duplicate code?Hristijan
11/28/2025, 1:04 AMTobias Grether
11/28/2025, 10:23 AMRey (Kingg22)
12/01/2025, 3:38 AMkrzysztof
12/01/2025, 9:53 PMreactormonk
12/02/2025, 10:57 AMTak Wai Wang
12/03/2025, 11:58 AMJulius Babies
12/03/2025, 4:29 PMUpgrade: tcp header when starting an exec-Instance without detaching and I want to be. able to write into that stream as stdin. Is it possible to get the ByteWriteChannel of the connection in the .execute { ... }-Block?
If not, I could imagine this channel being exposed as a function that requires you to OptIn.
client.socket.preparePost("/exec/$execId/start") {
contentType(ContentType.Application.Json)
setBody(StartExecInstanceResponse(detach = false))
}.execute { response ->
response.rawInput // would return the ByteWriteChannel for this request
}MrPowerGamerBR
12/04/2025, 1:38 AMHost header with the Java engine (while it does work with the CIO engine) https://youtrack.jetbrains.com/issue/KTOR-9158/Cannot-override-the-Host-header-with-the-Java-client-engineTak Wai Wang
12/04/2025, 10:18 AMjava.nio.channels.CancelledKeyException: null at java.base/sun.nio.ch.SelectionKeyImpl.ensureValid(Unknown Source) at java.base/sun.nio.ch.SelectionKeyImpl.interestOps(Unknown Source) at org.apache.hc.core5.reactor.IOSessionImpl.setEvent(IOSessionImpl.java:172) at org.apache.hc.core5.reactor.IOSessionImpl.enqueue(IOSessionImpl.java:115) at org.apache.hc.core5.reactor.ssl.SSLIOSession.enqueue(SSLIOSession.java:775) at org.apache.hc.core5.reactor.InternalDataChannel.enqueue(InternalDataChannel.java:286) at org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder.lambda$build$2(HttpAsyncClientBuilder.java:1077) at org.apache.hc.core5.reactor.SingleCoreIOReactor.initiateSessionShutdown(SingleCoreIOReactor.java:155) at org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:115) at org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:92) at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44) at java.base/java.lang.Thread.run(Unknown Source)
is it anyway to close the apache5 with Ktor DI?Nathan Fallet
12/04/2025, 6:10 PMHristijan
12/08/2025, 4:55 PMChristopher Mederos
12/10/2025, 2:12 AMrouting {
get("/data") {
val combinedData = coroutineScope {
val dataOneDeferred = async { clientOne.get("data") }
val dataTwoDeferred = async { clientTwo.get("data") }
return@coroutineScope dataOneDeferred.await() + dataTwoDeferred.await()
}
call.respond(combinedData)
}
}Leo N
12/10/2025, 9:24 AMhttp.route tag and our Grafana dashboards started to go crazy.
Anybody else notice some different behavior in metrics when moving to Ktor 3?Dmytro Koval
12/10/2025, 11:38 AMSteyn Geldenhuys
12/12/2025, 12:53 PMurls but it only takes in a singular string. Also the comment above it references MDN that specifies this parameter as "single string or an array of strings".
We've been making multiple IceServer objects per URL that we are passing in, but shouldn't this then rather be a list of URLs instead? We're also wondering if there may be an advantage from a browser optimization point of view when passing in a list of URLs for one IceServer.
Here's the line in question:
https://github.com/ktorio/ktor/blob/6b3bad4b947d0a07c3a9887d2558c9400c3c49ac/ktor-[…]t/ktor-client-webrtc/common/src/io/ktor/client/webrtc/WebRtc.ktbrabo-hi
12/12/2025, 7:44 PMVivek Modi
12/15/2025, 2:01 PMStylianos Gakis
12/15/2025, 4:09 PMHttpClient().config
defaultRequest {
header(... add non-suspend headers here)
}
install(HttpSend)
}.apply {
plugin(HttpSend).intercept { request ->
execute(request.apply { header(... add suspend headers here) })
}
}