mirror of
https://github.com/pomerium/pomerium.git
synced 2025-08-04 01:09:36 +02:00
tcp: prevent idle stream timeouts for TCP and Websocket routes (#1744)
This commit is contained in:
parent
00734243b3
commit
8d085547c5
2 changed files with 15 additions and 0 deletions
|
@ -192,6 +192,7 @@ func buildPolicyRoutes(options *config.Options, domain string) []*envoy_config_r
|
|||
requestHeadersToAdd := toEnvoyHeaders(policy.SetRequestHeaders)
|
||||
requestHeadersToRemove := getRequestHeadersToRemove(options, &policy)
|
||||
routeTimeout := getRouteTimeout(options, &policy)
|
||||
idleTimeout := getRouteIdleTimeout(&policy)
|
||||
prefixRewrite, regexRewrite := getRewriteOptions(&policy)
|
||||
|
||||
upgradeConfigs := []*envoy_config_route_v3.RouteAction_UpgradeConfig{
|
||||
|
@ -221,6 +222,7 @@ func buildPolicyRoutes(options *config.Options, domain string) []*envoy_config_r
|
|||
AutoHostRewrite: &wrappers.BoolValue{Value: !policy.PreserveHostHeader},
|
||||
},
|
||||
Timeout: routeTimeout,
|
||||
IdleTimeout: idleTimeout,
|
||||
PrefixRewrite: prefixRewrite,
|
||||
RegexRewrite: regexRewrite,
|
||||
}
|
||||
|
@ -334,6 +336,14 @@ func getRouteTimeout(options *config.Options, policy *config.Policy) *durationpb
|
|||
return routeTimeout
|
||||
}
|
||||
|
||||
func getRouteIdleTimeout(policy *config.Policy) *durationpb.Duration {
|
||||
var idleTimeout *durationpb.Duration
|
||||
if policy.AllowWebsockets || urlutil.IsTCP(policy.Source.URL) {
|
||||
idleTimeout = ptypes.DurationProto(0)
|
||||
}
|
||||
return idleTimeout
|
||||
}
|
||||
|
||||
func getRewriteOptions(policy *config.Policy) (prefixRewrite string, regexRewrite *envoy_type_matcher_v3.RegexMatchAndSubstitute) {
|
||||
if policy.PrefixRewrite != "" {
|
||||
prefixRewrite = policy.PrefixRewrite
|
||||
|
|
|
@ -300,6 +300,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
|
|||
"route": {
|
||||
"autoHostRewrite": false,
|
||||
"cluster": "policy-2",
|
||||
"idleTimeout": "0s",
|
||||
"timeout": "0s",
|
||||
"upgradeConfigs": [
|
||||
{ "enabled": true, "upgradeType": "websocket"},
|
||||
|
@ -431,6 +432,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
|
|||
"route": {
|
||||
"autoHostRewrite": false,
|
||||
"cluster": "policy-7",
|
||||
"idleTimeout": "0s",
|
||||
"timeout": "0s",
|
||||
"upgradeConfigs": [
|
||||
{ "enabled": true, "upgradeType": "websocket"},
|
||||
|
@ -455,6 +457,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
|
|||
"route": {
|
||||
"autoHostRewrite": false,
|
||||
"cluster": "policy-8",
|
||||
"idleTimeout": "0s",
|
||||
"timeout": "10s",
|
||||
"upgradeConfigs": [
|
||||
{ "enabled": true, "upgradeType": "websocket"},
|
||||
|
@ -501,6 +504,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
|
|||
"route": {
|
||||
"autoHostRewrite": true,
|
||||
"cluster": "policy-9",
|
||||
"idleTimeout": "0s",
|
||||
"timeout": "0s",
|
||||
"upgradeConfigs": [
|
||||
{ "enabled": false, "upgradeType": "websocket"},
|
||||
|
@ -526,6 +530,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
|
|||
"route": {
|
||||
"autoHostRewrite": true,
|
||||
"cluster": "policy-10",
|
||||
"idleTimeout": "0s",
|
||||
"timeout": "10s",
|
||||
"upgradeConfigs": [
|
||||
{ "enabled": false, "upgradeType": "websocket"},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue