Remove unnecessary DNS test entry

By using the startup callbacks, the DNS test entry is not needed to check that
the server is alive.
This commit is contained in:
Matt Good 2015-03-31 16:50:44 -07:00
parent f5d27daf63
commit 755522fa48
2 changed files with 1 additions and 68 deletions

View File

@ -15,8 +15,6 @@ import (
) )
const ( const (
testQuery = "_test.consul."
consulDomain = "consul."
maxServiceResponses = 3 // For UDP only maxServiceResponses = 3 // For UDP only
maxRecurseRecords = 3 maxRecurseRecords = 3
) )
@ -84,11 +82,8 @@ func NewDNSServer(agent *Agent, config *DNSConfig, logOutput io.Writer, domain s
// Register mux handler, for reverse lookup // Register mux handler, for reverse lookup
mux.HandleFunc("arpa.", srv.handlePtr) mux.HandleFunc("arpa.", srv.handlePtr)
// Register mux handlers, always handle "consul." // Register mux handlers
mux.HandleFunc(domain, srv.handleQuery) mux.HandleFunc(domain, srv.handleQuery)
if domain != consulDomain {
mux.HandleFunc(consulDomain, srv.handleTest)
}
if len(recursors) > 0 { if len(recursors) > 0 {
validatedRecursors := make([]string, len(recursors)) validatedRecursors := make([]string, len(recursors))
@ -224,12 +219,6 @@ func (d *DNSServer) handleQuery(resp dns.ResponseWriter, req *dns.Msg) {
d.logger.Printf("[DEBUG] dns: request for %v (%v)", q, time.Now().Sub(s)) d.logger.Printf("[DEBUG] dns: request for %v (%v)", q, time.Now().Sub(s))
}(time.Now()) }(time.Now())
// Check if this is potentially a test query
if q.Name == testQuery {
d.handleTest(resp, req)
return
}
// Switch to TCP if the client is // Switch to TCP if the client is
network := "udp" network := "udp"
if _, ok := resp.RemoteAddr().(*net.TCPAddr); ok { if _, ok := resp.RemoteAddr().(*net.TCPAddr); ok {
@ -256,34 +245,6 @@ func (d *DNSServer) handleQuery(resp dns.ResponseWriter, req *dns.Msg) {
} }
} }
// handleTest is used to handle DNS queries in the ".consul." domain
func (d *DNSServer) handleTest(resp dns.ResponseWriter, req *dns.Msg) {
q := req.Question[0]
defer func(s time.Time) {
d.logger.Printf("[DEBUG] dns: request for %v (%v)", q, time.Now().Sub(s))
}(time.Now())
if !(q.Qtype == dns.TypeANY || q.Qtype == dns.TypeTXT) {
return
}
if q.Name != testQuery {
return
}
// Always respond with TXT "ok"
m := new(dns.Msg)
m.SetReply(req)
m.Authoritative = true
m.RecursionAvailable = true
header := dns.RR_Header{Name: q.Name, Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 0}
txt := &dns.TXT{Hdr: header, Txt: []string{"ok"}}
m.Answer = append(m.Answer, txt)
d.addSOA(consulDomain, m)
if err := resp.WriteMsg(m); err != nil {
d.logger.Printf("[WARN] dns: failed to respond: %v", err)
}
}
// addSOA is used to add an SOA record to a message for the given domain // addSOA is used to add an SOA record to a message for the given domain
func (d *DNSServer) addSOA(domain string, msg *dns.Msg) { func (d *DNSServer) addSOA(domain string, msg *dns.Msg) {
soa := &dns.SOA{ soa := &dns.SOA{

View File

@ -39,34 +39,6 @@ func TestRecursorAddr(t *testing.T) {
} }
} }
func TestDNS_IsAlive(t *testing.T) {
dir, srv := makeDNSServer(t)
defer os.RemoveAll(dir)
defer srv.agent.Shutdown()
m := new(dns.Msg)
m.SetQuestion("_test.consul.", dns.TypeANY)
c := new(dns.Client)
addr, _ := srv.agent.config.ClientListener("", srv.agent.config.Ports.DNS)
in, _, err := c.Exchange(m, addr.String())
if err != nil {
t.Fatalf("err: %v", err)
}
if len(in.Answer) != 1 {
t.Fatalf("Bad: %#v", in)
}
txt, ok := in.Answer[0].(*dns.TXT)
if !ok {
t.Fatalf("Bad: %#v", in.Answer[0])
}
if txt.Txt[0] != "ok" {
t.Fatalf("Bad: %#v", in.Answer[0])
}
}
func TestDNS_NodeLookup(t *testing.T) { func TestDNS_NodeLookup(t *testing.T) {
dir, srv := makeDNSServer(t) dir, srv := makeDNSServer(t)
defer os.RemoveAll(dir) defer os.RemoveAll(dir)