Browse Source

Support server.connection-timeout for Netty server

pull/15692/head
ayudovin 7 years ago committed by Brian Clozel
parent
commit
e9588ca04b
  1. 17
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java

17
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java

@ -16,6 +16,10 @@ @@ -16,6 +16,10 @@
package org.springframework.boot.autoconfigure.web.embedded;
import java.time.Duration;
import io.netty.channel.ChannelOption;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.cloud.CloudPlatform;
import org.springframework.boot.context.properties.PropertyMapper;
@ -31,6 +35,7 @@ import org.springframework.util.unit.DataSize; @@ -31,6 +35,7 @@ import org.springframework.util.unit.DataSize;
*
* @author Brian Clozel
* @author Chentao Qu
* @author Artsiom Yudovin
* @since 2.1.0
*/
public class NettyWebServerFactoryCustomizer
@ -60,6 +65,10 @@ public class NettyWebServerFactoryCustomizer @@ -60,6 +65,10 @@ public class NettyWebServerFactoryCustomizer
.asInt(DataSize::toBytes)
.to((maxHttpRequestHeaderSize) -> customizeMaxHttpHeaderSize(factory,
maxHttpRequestHeaderSize));
propertyMapper.from(this.serverProperties::getConnectionTimeout).whenNonNull()
.asInt(Duration::toMillis)
.to((duration) -> customizeConnectionTimeOut(factory, duration));
}
private boolean getOrDeduceUseForwardHeaders(ServerProperties serverProperties,
@ -78,4 +87,12 @@ public class NettyWebServerFactoryCustomizer @@ -78,4 +87,12 @@ public class NettyWebServerFactoryCustomizer
.maxHeaderSize(maxHttpHeaderSize)));
}
private void customizeConnectionTimeOut(NettyReactiveWebServerFactory factory,
int duration) {
factory.addServerCustomizers((NettyServerCustomizer) (httpServer) -> httpServer
.tcpConfiguration((tcpServer) -> tcpServer
.bootstrap((serverBootstrap) -> serverBootstrap.childOption(
ChannelOption.CONNECT_TIMEOUT_MILLIS, duration))));
}
}

Loading…
Cancel
Save