Merge pull request #376 from awheeler/master

agent: Adding support for enabling the DNS truncate flag for UDP queries.
pull/378/head
Armon Dadgar 10 years ago
commit 365f7de415

@ -58,6 +58,13 @@ type DNSConfig struct {
// only the leader.
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
// accepted for a DNS lookup. This can be used with
// 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 {
result.DNSConfig.AllowStale = true
}
if b.DNSConfig.EnableTruncate {
result.DNSConfig.EnableTruncate = true
}
if b.DNSConfig.MaxStale != 0 {
result.DNSConfig.MaxStale = b.DNSConfig.MaxStale
}

@ -471,6 +471,10 @@ RPC:
// If the network is not TCP, restrict the number of responses
if network != "tcp" && len(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

@ -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
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.
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.

Loading…
Cancel
Save