diff --git a/internal/dns/dns.go b/internal/dns/dns.go index 76e948c..12eac48 100644 --- a/internal/dns/dns.go +++ b/internal/dns/dns.go @@ -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)) } } diff --git a/internal/dns/dns_test.go b/internal/dns/dns_test.go index 8924491..4153b19 100644 --- a/internal/dns/dns_test.go +++ b/internal/dns/dns_test.go @@ -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")