dns: fix resolution of uppercase host names, add test

This commit is contained in:
Michael Stapelberg 2019-08-07 18:18:51 +02:00
parent 9fe38edec0
commit 4cde5ec6fc
2 changed files with 21 additions and 2 deletions

View File

@ -273,8 +273,8 @@ func (s *Server) SetLeases(leases []dhcp4d.Lease) {
if rev, err := dns.ReverseAddr(l.Addr.String()); err == nil {
s.hostsByIP[rev] = l.Hostname
}
s.Mux.HandleFunc(lower+".", s.subnameHandler(l.Hostname))
s.Mux.HandleFunc(lower+"."+s.domain+".", s.subnameHandler(l.Hostname))
s.Mux.HandleFunc(lower+".", s.subnameHandler(lower))
s.Mux.HandleFunc(lower+"."+s.domain+".", s.subnameHandler(lower))
}
}

View File

@ -511,6 +511,25 @@ func resolveTestTarget(s *Server, name string, want net.IP) error {
// TODO: multiple questions
func TestUppercase(t *testing.T) {
s := NewServer("127.0.0.2:0", "lan")
s.SetLeases([]dhcp4d.Lease{
{
Hostname: "UPPERCASE",
Addr: net.IP{192, 168, 42, 23},
},
})
for _, casing := range []string{
"UPPERCASE",
"uppercase",
"upperCase",
} {
if err := resolveTestTarget(s, casing+".lan.", net.ParseIP("192.168.42.23")); err != nil {
t.Fatal(err)
}
}
}
func TestSubname(t *testing.T) {
r := &recorder{}
s := NewServer("127.0.0.2:0", "lan")