Skip to content

Commit 4fd2282

Browse files
authored
KTOR-8082 Add formFieldLimit system property (#4617)
1 parent fb57b18 commit 4fd2282

File tree

7 files changed

+28
-7
lines changed

7 files changed

+28
-7
lines changed

ktor-server/ktor-server-core/api/ktor-server-core.api

+1-1
Original file line numberDiff line numberDiff line change
@@ -1000,11 +1000,11 @@ public final class io/ktor/server/plugins/UnsupportedMediaTypeException : io/kto
10001000
}
10011001

10021002
public final class io/ktor/server/request/ApplicationReceiveFunctionsJvmKt {
1003+
public static final fun getDEFAULT_FORM_FIELD_LIMIT ()J
10031004
public static final fun receiveStream (Lio/ktor/server/application/ApplicationCall;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
10041005
}
10051006

10061007
public final class io/ktor/server/request/ApplicationReceiveFunctionsKt {
1007-
public static final field DEFAULT_FORM_FIELD_MAX_SIZE J
10081008
public static final fun getFormFieldLimit (Lio/ktor/server/application/ApplicationCall;)J
10091009
public static final fun receive (Lio/ktor/server/application/ApplicationCall;Lio/ktor/util/reflect/TypeInfo;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
10101010
public static final fun receive (Lio/ktor/server/application/ApplicationCall;Lkotlin/reflect/KClass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;

ktor-server/ktor-server-core/api/ktor-server-core.klib.api

+2-3
Original file line numberDiff line numberDiff line change
@@ -1602,9 +1602,6 @@ final object io.ktor.server.routing/TrailingSlashRouteSelector : io.ktor.server.
16021602
final suspend fun evaluate(io.ktor.server.routing/RoutingResolveContext, kotlin/Int): io.ktor.server.routing/RouteSelectorEvaluation // io.ktor.server.routing/TrailingSlashRouteSelector.evaluate|evaluate(io.ktor.server.routing.RoutingResolveContext;kotlin.Int){}[0]
16031603
}
16041604

1605-
final const val io.ktor.server.request/DEFAULT_FORM_FIELD_MAX_SIZE // io.ktor.server.request/DEFAULT_FORM_FIELD_MAX_SIZE|{}DEFAULT_FORM_FIELD_MAX_SIZE[0]
1606-
final fun <get-DEFAULT_FORM_FIELD_MAX_SIZE>(): kotlin/Long // io.ktor.server.request/DEFAULT_FORM_FIELD_MAX_SIZE.<get-DEFAULT_FORM_FIELD_MAX_SIZE>|<get-DEFAULT_FORM_FIELD_MAX_SIZE>(){}[0]
1607-
16081605
final val io.ktor.server.application/ApplicationStarted // io.ktor.server.application/ApplicationStarted|{}ApplicationStarted[0]
16091606
final fun <get-ApplicationStarted>(): io.ktor.events/EventDefinition<io.ktor.server.application/Application> // io.ktor.server.application/ApplicationStarted.<get-ApplicationStarted>|<get-ApplicationStarted>(){}[0]
16101607
final val io.ktor.server.application/ApplicationStarting // io.ktor.server.application/ApplicationStarting|{}ApplicationStarting[0]
@@ -1649,6 +1646,8 @@ final val io.ktor.server.plugins/mutableOriginConnectionPoint // io.ktor.server.
16491646
final fun (io.ktor.server.application/ApplicationCall).<get-mutableOriginConnectionPoint>(): io.ktor.server.plugins/MutableOriginConnectionPoint // io.ktor.server.plugins/mutableOriginConnectionPoint.<get-mutableOriginConnectionPoint>|<get-mutableOriginConnectionPoint>@io.ktor.server.application.ApplicationCall(){}[0]
16501647
final val io.ktor.server.plugins/origin // io.ktor.server.plugins/origin|@io.ktor.server.request.ApplicationRequest{}origin[0]
16511648
final fun (io.ktor.server.request/ApplicationRequest).<get-origin>(): io.ktor.http/RequestConnectionPoint // io.ktor.server.plugins/origin.<get-origin>|<get-origin>@io.ktor.server.request.ApplicationRequest(){}[0]
1649+
final val io.ktor.server.request/DEFAULT_FORM_FIELD_LIMIT // io.ktor.server.request/DEFAULT_FORM_FIELD_LIMIT|{}DEFAULT_FORM_FIELD_LIMIT[0]
1650+
final fun <get-DEFAULT_FORM_FIELD_LIMIT>(): kotlin/Long // io.ktor.server.request/DEFAULT_FORM_FIELD_LIMIT.<get-DEFAULT_FORM_FIELD_LIMIT>|<get-DEFAULT_FORM_FIELD_LIMIT>(){}[0]
16521651
final val io.ktor.server.request/httpMethod // io.ktor.server.request/httpMethod|@io.ktor.server.request.ApplicationRequest{}httpMethod[0]
16531652
final fun (io.ktor.server.request/ApplicationRequest).<get-httpMethod>(): io.ktor.http/HttpMethod // io.ktor.server.request/httpMethod.<get-httpMethod>|<get-httpMethod>@io.ktor.server.request.ApplicationRequest(){}[0]
16541653
final val io.ktor.server.request/httpVersion // io.ktor.server.request/httpVersion|@io.ktor.server.request.ApplicationRequest{}httpVersion[0]

ktor-server/ktor-server-core/common/src/io/ktor/server/request/ApplicationReceiveFunctions.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import kotlin.reflect.*
2020
private val FORM_FIELD_LIMIT = AttributeKey<Long>("FormFieldLimit")
2121

2222
@PublishedApi
23-
internal const val DEFAULT_FORM_FIELD_MAX_SIZE: Long = 50 * 1024 * 1024
23+
internal expect val DEFAULT_FORM_FIELD_LIMIT: Long
2424

2525
/**
2626
* A pipeline for processing incoming content.
@@ -176,7 +176,7 @@ public suspend inline fun ApplicationCall.receiveChannel(): ByteReadChannel = re
176176
*/
177177
public var ApplicationCall.formFieldLimit: Long
178178
get() {
179-
return attributes.getOrNull(FORM_FIELD_LIMIT) ?: DEFAULT_FORM_FIELD_MAX_SIZE
179+
return attributes.getOrNull(FORM_FIELD_LIMIT) ?: DEFAULT_FORM_FIELD_LIMIT
180180
}
181181
set(value) {
182182
attributes.put(FORM_FIELD_LIMIT, value)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* Copyright 2014-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package io.ktor.server.request
6+
7+
@PublishedApi
8+
internal actual val DEFAULT_FORM_FIELD_LIMIT: Long
9+
get() = 50 * 1024 * 1024L

ktor-server/ktor-server-core/jvm/src/io/ktor/server/engine/DefaultTransformJvm.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ internal actual fun PipelineContext<*, PipelineCall>.multiPartData(rc: ByteReadC
4545
rc,
4646
contentType,
4747
contentLength,
48-
call.formFieldLimit
48+
formFieldLimit = call.formFieldLimit
4949
)
5050
} catch (_: UnsupportedMediaTypeExceptionCIO) {
5151
throw UnsupportedMediaTypeException(ContentType.parse(contentType))

ktor-server/ktor-server-core/jvm/src/io/ktor/server/request/ApplicationReceiveFunctionsJvm.kt

+4
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ import java.io.*
1414
*/
1515
@Suppress("NOTHING_TO_INLINE")
1616
public suspend inline fun ApplicationCall.receiveStream(): InputStream = receive()
17+
18+
@PublishedApi
19+
internal actual val DEFAULT_FORM_FIELD_LIMIT: Long
20+
get() = System.getProperty("io.ktor.server.request.formFieldLimit")?.toLongOrNull() ?: (50 * 1024 * 1024L)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* Copyright 2014-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package io.ktor.server.request
6+
7+
@PublishedApi
8+
internal actual val DEFAULT_FORM_FIELD_LIMIT: Long
9+
get() = 50 * 1024 * 1024L

0 commit comments

Comments
 (0)