Skip to content

Commit 42e7c5d

Browse files
authored
Add MAX_ENTITY_SIZE undertow option in http server config (#574)
1 parent fc7517a commit 42e7c5d

5 files changed

Lines changed: 19 additions & 4 deletions

File tree

http/http-server-common/src/main/java/ru/tinkoff/kora/http/server/common/HttpServerConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package ru.tinkoff.kora.http.server.common;
22

3+
import ru.tinkoff.kora.common.util.Size;
34
import ru.tinkoff.kora.config.common.annotation.ConfigValueExtractor;
45
import ru.tinkoff.kora.http.server.common.telemetry.HttpServerTelemetryConfig;
56

@@ -33,4 +34,8 @@ default Duration shutdownWait() {
3334
}
3435

3536
HttpServerTelemetryConfig telemetry();
37+
38+
default Size maxRequestBodySize() {
39+
return Size.of(256, Size.Type.MiB);
40+
}
3641
}

http/http-server-common/src/test/java/ru/tinkoff/kora/http/server/common/router/HttpServerHandlerProcessTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.junit.jupiter.params.provider.MethodSource;
77
import org.mockito.Mockito;
88
import ru.tinkoff.kora.application.graph.All;
9+
import ru.tinkoff.kora.common.util.Size;
910
import ru.tinkoff.kora.http.common.body.HttpBody;
1011
import ru.tinkoff.kora.http.common.body.HttpBodyInput;
1112
import ru.tinkoff.kora.http.common.header.HttpHeaders;
@@ -156,7 +157,8 @@ private HttpServerConfig config(boolean ignoreTrailingSlash) {
156157
new $HttpServerTelemetryConfig_HttpServerLoggingConfig_ConfigValueExtractor.HttpServerLoggingConfig_Defaults(),
157158
new $HttpServerTelemetryConfig_HttpServerMetricsConfig_ConfigValueExtractor.HttpServerMetricsConfig_Defaults(),
158159
new $HttpServerTelemetryConfig_HttpServerTracingConfig_ConfigValueExtractor.HttpServerTracingConfig_Defaults()
159-
)
160+
),
161+
Size.ofBytesBinary(1024)
160162
);
161163
}
162164

http/http-server-common/src/test/java/ru/tinkoff/kora/http/server/common/router/HttpServerHandlerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.assertj.core.api.Assertions;
44
import org.junit.jupiter.api.Test;
55
import org.mockito.Mockito;
6+
import ru.tinkoff.kora.common.util.Size;
67
import ru.tinkoff.kora.http.server.common.$HttpServerConfig_ConfigValueExtractor;
78
import ru.tinkoff.kora.http.server.common.HttpServerConfig;
89
import ru.tinkoff.kora.http.server.common.HttpServerResponse;
@@ -151,7 +152,9 @@ private HttpServerConfig config(boolean ignoreTrailingSlash) {
151152
new $HttpServerTelemetryConfig_HttpServerLoggingConfig_ConfigValueExtractor.HttpServerLoggingConfig_Defaults(),
152153
new $HttpServerTelemetryConfig_HttpServerMetricsConfig_ConfigValueExtractor.HttpServerMetricsConfig_Defaults(),
153154
new $HttpServerTelemetryConfig_HttpServerTracingConfig_ConfigValueExtractor.HttpServerTracingConfig_Defaults()
154-
));
155+
),
156+
Size.ofBytesBinary(1024)
157+
);
155158
}
156159

157160
private HttpServerRequestHandler handler(String method, String route) {

http/http-server-common/src/testFixtures/java/ru/tinkoff/kora/http/server/common/HttpServerTestKit.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import ru.tinkoff.kora.common.liveness.LivenessProbeFailure;
2121
import ru.tinkoff.kora.common.readiness.ReadinessProbe;
2222
import ru.tinkoff.kora.common.readiness.ReadinessProbeFailure;
23+
import ru.tinkoff.kora.common.util.Size;
2324
import ru.tinkoff.kora.http.common.body.HttpBody;
2425
import ru.tinkoff.kora.http.common.body.HttpBodyOutput;
2526
import ru.tinkoff.kora.http.common.header.HttpHeaders;
@@ -968,7 +969,8 @@ protected void startServer(boolean ignoreTrailingSlash, List<HttpServerIntercept
968969
new $HttpServerTelemetryConfig_HttpServerLoggingConfig_ConfigValueExtractor.HttpServerLoggingConfig_Defaults(),
969970
new $HttpServerTelemetryConfig_HttpServerMetricsConfig_ConfigValueExtractor.HttpServerMetricsConfig_Defaults(),
970971
new $HttpServerTelemetryConfig_HttpServerTracingConfig_ConfigValueExtractor.HttpServerTracingConfig_Defaults()
971-
)
972+
),
973+
Size.of(1, Size.Type.GiB)
972974
);
973975
var publicApiHandler = new HttpServerHandler(List.of(handlers), interceptors, config);
974976
this.httpServer = this.httpServer(valueOf(config), publicApiHandler, this.telemetry);

http/http-server-undertow/src/main/java/ru/tinkoff/kora/http/server/undertow/UndertowHttpServer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ru.tinkoff.kora.http.server.undertow;
22

33
import io.undertow.Undertow;
4+
import io.undertow.UndertowOptions;
45
import io.undertow.server.HttpHandler;
56
import io.undertow.server.HttpServerExchange;
67
import io.undertow.server.handlers.GracefulShutdownHandler;
@@ -113,7 +114,9 @@ private Undertow createServer() {
113114
.setWorker(this.xnioWorker)
114115
.setServerOption(Options.READ_TIMEOUT, ((int) config.socketReadTimeout().toMillis()))
115116
.setServerOption(Options.WRITE_TIMEOUT, ((int) config.socketWriteTimeout().toMillis()))
116-
.setServerOption(Options.KEEP_ALIVE, config.socketKeepAliveEnabled());
117+
.setServerOption(Options.KEEP_ALIVE, config.socketKeepAliveEnabled())
118+
.setServerOption(UndertowOptions.MAX_ENTITY_SIZE, config.maxRequestBodySize().toBytes())
119+
;
117120

118121
if (this.configurer != null) {
119122
undertow = this.configurer.configure(undertow);

0 commit comments

Comments
 (0)