From e52a29d5a54886cf5b969d14e2b1d5a7d736261e Mon Sep 17 00:00:00 2001 From: Dave Flowerday Date: Tue, 2 Feb 2021 20:43:20 -0600 Subject: [PATCH] Fix client multicast sending on Windows --- client.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/client.go b/client.go index 3c43d45e..be5cd80e 100644 --- a/client.go +++ b/client.go @@ -443,17 +443,21 @@ func (c *client) sendQuery(msg *dns.Msg) error { return err } if c.ipv4conn != nil { - var wcm ipv4.ControlMessage for ifi := range c.ifaces { - wcm.IfIndex = c.ifaces[ifi].Index - c.ipv4conn.WriteTo(buf, &wcm, ipv4Addr) + if err := c.ipv4conn.SetMulticastInterface(&c.ifaces[ifi]); err != nil { + // log.Printf("[WARN] mdns: Failed to set multicast interface: %v", err) + continue + } + c.ipv4conn.WriteTo(buf, nil, ipv4Addr) } } if c.ipv6conn != nil { - var wcm ipv6.ControlMessage for ifi := range c.ifaces { - wcm.IfIndex = c.ifaces[ifi].Index - c.ipv6conn.WriteTo(buf, &wcm, ipv6Addr) + if err := c.ipv6conn.SetMulticastInterface(&c.ifaces[ifi]); err != nil { + // log.Printf("[WARN] mdns: Failed to set multicast interface: %v", err) + continue + } + c.ipv6conn.WriteTo(buf, nil, ipv6Addr) } } return nil