optimize multicast on Linux by listening on a single IP (#417)

(https://github.com/bluenviron/mediamtx/issues/2133)
This commit is contained in:
Alessandro Ros
2023-09-13 22:55:20 +02:00
committed by GitHub
parent 3cdd680f06
commit e1869a8557
8 changed files with 435 additions and 65 deletions

View File

@@ -1,3 +1,6 @@
//go:build !linux
// +build !linux
package multicast
import (
@@ -64,12 +67,6 @@ func NewMultiConn(
return nil, fmt.Errorf("no multicast-capable interfaces found")
}
err = setupReadFrom(readConnIP)
if err != nil {
readConn.Close() //nolint:errcheck
return nil, err
}
writeConns := make([]*net.UDPConn, len(enabledInterfaces))
writeConnIPs := make([]*ipv4.PacketConn, len(enabledInterfaces))
@@ -174,5 +171,5 @@ func (c *MultiConn) WriteTo(b []byte, addr net.Addr) (int, error) {
// ReadFrom implements Conn.
func (c *MultiConn) ReadFrom(b []byte) (int, net.Addr, error) {
return readFrom(c.readConnIP, c.addr.IP, b)
return c.readConn.ReadFrom(b)
}