Skip to content

Commit f7f55ed

Browse files
committed
Replace convenience method ListenMulticastUDP with explicit multicast connection
1 parent 0652d70 commit f7f55ed

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

pkg/sslnet/multicast_server.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"net"
66
"sync"
77
"time"
8+
9+
"golang.org/x/net/ipv4"
810
)
911

1012
const maxDatagramSize = 8192
@@ -82,7 +84,7 @@ func (r *MulticastServer) connectToInterface(ifi net.Interface) bool {
8284
return false
8385
}
8486

85-
r.connection, err = net.ListenMulticastUDP("udp", &ifi, addr)
87+
r.connection, err = net.ListenUDP("udp4", &net.UDPAddr{IP: net.IPv4zero, Port: addr.Port})
8688
if err != nil {
8789
log.Printf("Could not listen at %v on %v: %v", r.multicastAddress, ifi.Name, err)
8890
return false
@@ -92,6 +94,16 @@ func (r *MulticastServer) connectToInterface(ifi net.Interface) bool {
9294
log.Println("Could not set read buffer: ", err)
9395
}
9496

97+
packetConn := ipv4.NewPacketConn(r.connection)
98+
if err := packetConn.JoinGroup(&ifi, addr); err != nil {
99+
log.Printf("Could not join group %v: %v", ifi.Name, err)
100+
return false
101+
}
102+
if err := packetConn.SetMulticastLoopback(true); err != nil {
103+
log.Printf("Could not set multicast loopback %v: %v", ifi.Name, err)
104+
return false
105+
}
106+
95107
if r.Verbose {
96108
log.Printf("Listening on %s (%s)", r.multicastAddress, ifi.Name)
97109
}

0 commit comments

Comments
 (0)