diff --git a/api/envoy/api/v2/route/route.proto b/api/envoy/api/v2/route/route.proto index 2d2b56ae67d80..f0bda5fd8ace6 100644 --- a/api/envoy/api/v2/route/route.proto +++ b/api/envoy/api/v2/route/route.proto @@ -574,8 +574,7 @@ message RouteAction { // fires, the stream is terminated with a 408 Request Timeout error code if no // upstream response header has been received, otherwise a stream reset // occurs. - google.protobuf.Duration idle_timeout = 24 - [(validate.rules).duration.gt = {}, (gogoproto.stdduration) = true]; + google.protobuf.Duration idle_timeout = 24 [(gogoproto.stdduration) = true]; // Indicates that the route has a retry policy. Note that if this is set, // it'll take precedence over the virtual host level retry policy entirely diff --git a/test/common/router/config_impl_test.cc b/test/common/router/config_impl_test.cc index f17562c6e3e2b..dc2eaf2f178e6 100644 --- a/test/common/router/config_impl_test.cc +++ b/test/common/router/config_impl_test.cc @@ -5036,8 +5036,10 @@ name: ZeroIdleTimeout idle_timeout: 0s )EOF"; - EXPECT_THROW_WITH_REGEX(parseRouteConfigurationFromV2Yaml(ZeroIdleTimeout), EnvoyException, - "value must be greater than \" \"0s"); + TestConfigImpl config(parseRouteConfigurationFromV2Yaml(ZeroIdleTimeout), factory_context_, true); + Http::TestHeaderMapImpl headers = genRedirectHeaders("idle.lyft.com", "/regex", true, false); + const RouteEntry* route_entry = config.route(headers, 0)->routeEntry(); + EXPECT_EQ(0, route_entry->idleTimeout().value().count()); } TEST_F(RouteConfigurationV2, ExplicitIdleTimeout) {