diff --git a/server.go b/server.go index a33668d..11b3976 100644 --- a/server.go +++ b/server.go @@ -269,8 +269,6 @@ func (s *Server) handleQuestion(q dns.Question) (multicastRecs, unicastRecs []dn // sendResponse is used to send a response packet func (s *Server) sendResponse(resp *dns.Msg, from net.Addr, unicast bool) error { - // TODO(reddaly): Respect the unicast argument, and allow sending responses - // over multicast. buf, err := resp.Pack() if err != nil { return err @@ -278,10 +276,17 @@ func (s *Server) sendResponse(resp *dns.Msg, from net.Addr, unicast bool) error // Determine the socket to send from addr := from.(*net.UDPAddr) + if addr.IP.To4() != nil { + if !unicast { + addr.IP = net.ParseIP(ipv4mdns) + } _, err = s.ipv4List.WriteToUDP(buf, addr) return err } else { + if !unicast { + addr.IP = net.ParseIP(ipv6mdns) + } _, err = s.ipv6List.WriteToUDP(buf, addr) return err }