diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/client/ReactorNettyWebSocketClient.java b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/client/ReactorNettyWebSocketClient.java index d709a0208eb..85b37db1337 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/client/ReactorNettyWebSocketClient.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/client/ReactorNettyWebSocketClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ import org.springframework.util.StringUtils; import org.springframework.web.reactive.socket.HandshakeInfo; import org.springframework.web.reactive.socket.WebSocketHandler; import org.springframework.web.reactive.socket.WebSocketSession; +import org.springframework.web.reactive.socket.adapter.NettyWebSocketSessionSupport; import org.springframework.web.reactive.socket.adapter.ReactorNettyWebSocketSession; /** @@ -43,6 +44,7 @@ public class ReactorNettyWebSocketClient implements WebSocketClient { private static final Log logger = LogFactory.getLog(ReactorNettyWebSocketClient.class); + private int maxFramePayloadLength = NettyWebSocketSessionSupport.DEFAULT_FRAME_MAX_SIZE; private final HttpClient httpClient; @@ -63,7 +65,6 @@ public class ReactorNettyWebSocketClient implements WebSocketClient { this.httpClient = httpClient; } - /** * Return the configured {@link HttpClient}. */ @@ -71,6 +72,29 @@ public class ReactorNettyWebSocketClient implements WebSocketClient { return this.httpClient; } + /** + * Configure the maximum allowable frame payload length. Setting this value + * to your application's requirement may reduce denial of service attacks + * using long data frames. + *
Corresponds to the argument with the same name in the constructor of + * {@link io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory + * WebSocketServerHandshakerFactory} in Netty. + *
By default set to 65536 (64K).
+ * @param maxFramePayloadLength the max length for frames.
+ * @since 5.2
+ */
+ public void setMaxFramePayloadLength(int maxFramePayloadLength) {
+ this.maxFramePayloadLength = maxFramePayloadLength;
+ }
+
+ /**
+ * Return the configured {@link #setMaxFramePayloadLength(int) maxFramePayloadLength}.
+ * @since 5.2
+ */
+ public int getMaxFramePayloadLength() {
+ return maxFramePayloadLength;
+ }
+
@Override
public Mono