|
|
|
@ -173,11 +173,21 @@ func MergeServiceConfig(defaults *structs.ServiceConfigResponse, service *struct
|
|
|
|
|
us.MeshGateway.Mode = remoteCfg.MeshGateway.Mode
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
preMergeProtocol, found := us.Config["protocol"]
|
|
|
|
|
// Merge in everything else that is read from the map
|
|
|
|
|
if err := mergo.Merge(&us.Config, remoteCfg.Config); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Reset the protocol to its pre-merged version for peering upstreams.
|
|
|
|
|
if us.DestinationPeer != "" {
|
|
|
|
|
if found {
|
|
|
|
|
us.Config["protocol"] = preMergeProtocol
|
|
|
|
|
} else {
|
|
|
|
|
delete(us.Config, "protocol")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Delete the mesh gateway key from opaque config since this is the value that was resolved from
|
|
|
|
|
// the servers and NOT the final merged value for this upstream.
|
|
|
|
|
// Note that we use the "mesh_gateway" key and not other variants like "MeshGateway" because
|
|
|
|
|