Adding support for enabling the DNS truncate flag for UDP queries.

This commit is contained in:
Alex Wheeler 2014-09-30 15:15:36 -04:00
parent 7fd1c9929d
commit 6cac440a8d
2 changed files with 14 additions and 0 deletions

View File

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

View File

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