Merge pull request #376 from awheeler/master
agent: Adding support for enabling the DNS truncate flag for UDP queries.
This commit is contained in:
commit
ccc63d6110
|
@ -58,6 +58,13 @@ type DNSConfig struct {
|
||||||
// only the leader.
|
// only the leader.
|
||||||
AllowStale bool `mapstructure:"allow_stale"`
|
AllowStale bool `mapstructure:"allow_stale"`
|
||||||
|
|
||||||
|
// EnableTruncate is used to enable setting the truncate
|
||||||
|
// flag for UDP DNS queries. This allows unmodified
|
||||||
|
// clients to re-query the consul server using TCP
|
||||||
|
// when the total number of records exceeds the number
|
||||||
|
// returned by default for UDP.
|
||||||
|
EnableTruncate bool `mapstructure:"enable_truncate"`
|
||||||
|
|
||||||
// MaxStale is used to bound how stale of a result is
|
// MaxStale is used to bound how stale of a result is
|
||||||
// accepted for a DNS lookup. This can be used with
|
// accepted for a DNS lookup. This can be used with
|
||||||
// AllowStale to limit how old of a value is served up.
|
// AllowStale to limit how old of a value is served up.
|
||||||
|
@ -688,6 +695,9 @@ func MergeConfig(a, b *Config) *Config {
|
||||||
if b.DNSConfig.AllowStale {
|
if b.DNSConfig.AllowStale {
|
||||||
result.DNSConfig.AllowStale = true
|
result.DNSConfig.AllowStale = true
|
||||||
}
|
}
|
||||||
|
if b.DNSConfig.EnableTruncate {
|
||||||
|
result.DNSConfig.EnableTruncate = true
|
||||||
|
}
|
||||||
if b.DNSConfig.MaxStale != 0 {
|
if b.DNSConfig.MaxStale != 0 {
|
||||||
result.DNSConfig.MaxStale = b.DNSConfig.MaxStale
|
result.DNSConfig.MaxStale = b.DNSConfig.MaxStale
|
||||||
}
|
}
|
||||||
|
|
|
@ -471,6 +471,10 @@ RPC:
|
||||||
// If the network is not TCP, restrict the number of responses
|
// If the network is not TCP, restrict the number of responses
|
||||||
if network != "tcp" && len(out.Nodes) > maxServiceResponses {
|
if network != "tcp" && len(out.Nodes) > maxServiceResponses {
|
||||||
out.Nodes = out.Nodes[:maxServiceResponses]
|
out.Nodes = out.Nodes[:maxServiceResponses]
|
||||||
|
// Flag that there are more records to return in the UDP response
|
||||||
|
if d.config.EnableTruncate == true {
|
||||||
|
resp.Truncated = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add various responses depending on the request
|
// Add various responses depending on the request
|
||||||
|
|
|
@ -266,6 +266,10 @@ definitions support being updated during a reload.
|
||||||
there is no specific policy available for a service. By default, all services are served
|
there is no specific policy available for a service. By default, all services are served
|
||||||
with a 0 TTL value. Setting this enables DNS caching.
|
with a 0 TTL value. Setting this enables DNS caching.
|
||||||
|
|
||||||
|
* `enable_truncate` - If set to true, a UDP DNS query that would return more than 3 records
|
||||||
|
will set the truncated flag, indicating to clients that they should re-query using TCP to
|
||||||
|
get the full set of records.
|
||||||
|
|
||||||
* `domain` - By default, Consul responds to DNS queries in the "consul." domain.
|
* `domain` - By default, Consul responds to DNS queries in the "consul." domain.
|
||||||
This flag can be used to change that domain. All queries in this domain are assumed
|
This flag can be used to change that domain. All queries in this domain are assumed
|
||||||
to be handled by Consul, and will not be recursively resolved.
|
to be handled by Consul, and will not be recursively resolved.
|
||||||
|
|
Loading…
Reference in New Issue