diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 06758080b43..5eeb9841af0 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -20,7 +20,7 @@ repositories { } } -val ktor_version = "3.0.0-rc-2-eap-1091" +val ktor_version = "3.0.1-eap-1114" dependencies { val kotlin_version = libs.versions.kotlin.get() diff --git a/buildSrc/src/main/kotlin/test/server/TestTcpServer.kt b/buildSrc/src/main/kotlin/test/server/TestTcpServer.kt index 4f434ed3a78..1f293efdcdb 100644 --- a/buildSrc/src/main/kotlin/test/server/TestTcpServer.kt +++ b/buildSrc/src/main/kotlin/test/server/TestTcpServer.kt @@ -16,31 +16,36 @@ internal class TestTcpServer(val port: Int, handler: suspend (Socket) -> Unit) : override val coroutineContext: CoroutineContext init { - val server = aSocket(selector).tcp().bind(port = port) + var server: ServerSocket? = null coroutineContext = GlobalScope.launch { + server = aSocket(selector).tcp().bind(port = port) while (isActive) { val socket = try { - server.accept() + server?.accept() } catch (cause: Throwable) { println("Test server is fail to accept: $cause") cause.printStackTrace() continue } - try { - socket.use { handler(it) } - } catch (cause: Throwable) { - println("Exception in tcp server: $cause") - cause.printStackTrace() + launch { + try { + socket?.use { handler(it) } + } catch (cause: Throwable) { + println("Exception in tcp server: $cause") + cause.printStackTrace() + } } } }.apply { invokeOnCompletion { - server.close() + server?.close() } } } - override fun close() { coroutineContext.cancel() } + override fun close() { + coroutineContext.cancel() + } } diff --git a/buildSrc/src/main/kotlin/test/server/tests/Content.kt b/buildSrc/src/main/kotlin/test/server/tests/Content.kt index 6dfa29d22a4..c0af3a20485 100644 --- a/buildSrc/src/main/kotlin/test/server/tests/Content.kt +++ b/buildSrc/src/main/kotlin/test/server/tests/Content.kt @@ -7,6 +7,7 @@ package test.server.tests import io.ktor.http.* import io.ktor.http.content.* import io.ktor.server.application.* +import io.ktor.server.http.content.file import io.ktor.server.request.* import io.ktor.server.response.* import io.ktor.server.routing.* @@ -88,13 +89,9 @@ internal fun Application.contentTestServer() { call.respondText(response.toString()) } put("/file-upload") { - val parts = call.receiveMultipart().readAllParts() if (call.request.headers[HttpHeaders.ContentLength] == null) error("Content length is missing") - if (parts.size != 1) call.fail("Invalid form size: $parts") - - val file = parts.first() as? PartData.FileItem ?: call.fail("Invalid item") - + val file = call.receiveMultipart().readPart() as? PartData.FileItem ?: call.fail("Invalid item") if (4 != file.headers[HttpHeaders.ContentLength]?.toInt()) call.fail("Size is missing") val value = file.provider().readInt()