Use protocol from resolved config entry, not gateway service

This commit is contained in:
Kyle Havlovitz 2022-07-12 16:09:35 -07:00
parent 54d8fe9032
commit 0ac7de3bae
2 changed files with 16 additions and 8 deletions

View File

@ -642,9 +642,8 @@ func TestConfigSnapshotTerminatingGatewayHTTP2(t testing.T) *ConfigSnapshot {
Result: &structs.IndexedGatewayServices{
Services: []*structs.GatewayService{
{
Service: web,
CAFile: "ca.cert.pem",
Protocol: "http2",
Service: web,
CAFile: "ca.cert.pem",
},
},
},
@ -703,9 +702,8 @@ func TestConfigSnapshotTerminatingGatewaySubsetsHTTP2(t testing.T) *ConfigSnapsh
Result: &structs.IndexedGatewayServices{
Services: []*structs.GatewayService{
{
Service: web,
CAFile: "ca.cert.pem",
Protocol: "http2",
Service: web,
CAFile: "ca.cert.pem",
},
},
},

View File

@ -425,8 +425,18 @@ func (s *ResourceGenerator) makeGatewayServiceClusters(
}
clusters = append(clusters, cluster)
gatewaySvc, ok := cfgSnap.TerminatingGateway.GatewayServices[svc]
isHTTP2 := ok && (gatewaySvc.Protocol == "http2" || gatewaySvc.Protocol == "grpc")
svcConfig, ok := cfgSnap.TerminatingGateway.ServiceConfigs[svc]
isHTTP2 := false
if ok {
upstreamCfg, err := structs.ParseUpstreamConfig(svcConfig.ProxyConfig)
if err != nil {
// Don't hard fail on a config typo, just warn. The parse func returns
// default config if there is an error so it's safe to continue.
s.Logger.Warn("failed to parse", "upstream", svc, "error", err)
}
isHTTP2 = upstreamCfg.Protocol == "http2" || upstreamCfg.Protocol == "grpc"
}
if isHTTP2 {
if err := s.setHttp2ProtocolOptions(cluster); err != nil {
return nil, err