From fb2cc8ae3e099bf1bcb62322cdad4aacf98287b0 Mon Sep 17 00:00:00 2001 From: Mariia Skripchenko <61115099+marychatte@users.noreply.github.com> Date: Tue, 3 Dec 2024 14:03:34 +0100 Subject: [PATCH] KTOR-7876 Fix Sink.writeText corrupts long streams for Jetty server --- .../src/io/ktor/utils/io/core/Strings.kt | 6 +----- .../server/jetty/jakarta/JettyEngineTest.kt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt b/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt index 9a1d694f7b9..8777cad734b 100644 --- a/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt +++ b/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt @@ -89,7 +89,7 @@ public fun Source.readTextExactCharacters(charactersCount: Int, charset: Charset } /** - * Writes [text] characters in range \[[fromIndex] .. [toIndex]) with the specified [charset] + * Writes [text] characters in range [fromIndex] .. [toIndex]) with the specified [charset] */ public fun Sink.writeText( text: CharSequence, @@ -97,10 +97,6 @@ public fun Sink.writeText( toIndex: Int = text.length, charset: Charset = Charsets.UTF_8 ) { - if (charset === Charsets.UTF_8) { - return writeString(text.toString(), fromIndex, toIndex) - } - charset.newEncoder().encodeToImpl(this, text, fromIndex, toIndex) } diff --git a/ktor-server/ktor-server-jetty-jakarta/jvm/test/io/ktor/tests/server/jetty/jakarta/JettyEngineTest.kt b/ktor-server/ktor-server-jetty-jakarta/jvm/test/io/ktor/tests/server/jetty/jakarta/JettyEngineTest.kt index a836c2c423d..a45bd6f41d1 100644 --- a/ktor-server/ktor-server-jetty-jakarta/jvm/test/io/ktor/tests/server/jetty/jakarta/JettyEngineTest.kt +++ b/ktor-server/ktor-server-jetty-jakarta/jvm/test/io/ktor/tests/server/jetty/jakarta/JettyEngineTest.kt @@ -10,6 +10,7 @@ import io.ktor.server.response.* import io.ktor.server.routing.* import io.ktor.server.servlet.jakarta.* import io.ktor.server.testing.suites.* +import io.ktor.utils.io.* import jakarta.servlet.http.* import org.eclipse.jetty.server.* import org.eclipse.jetty.server.handler.* @@ -55,6 +56,23 @@ class JettyHttpServerJvmTest : HttpServerJvmTestSuite