avoid using net.ResolveUDPAddr()

This commit is contained in:
aler9
2021-06-19 16:26:45 +02:00
parent eef21cc2b5
commit 8dc27ca9a7
2 changed files with 6 additions and 12 deletions

View File

@@ -58,15 +58,12 @@ func newClientConnUDPListenerPair(cc *ClientConn) (*clientConnUDPListener, *clie
func newClientConnUDPListener(cc *ClientConn, multicast bool, address string) (*clientConnUDPListener, error) { func newClientConnUDPListener(cc *ClientConn, multicast bool, address string) (*clientConnUDPListener, error) {
var pc *net.UDPConn var pc *net.UDPConn
if multicast { if multicast {
addr, err := net.ResolveUDPAddr("udp4", address) host, port, err := net.SplitHostPort(address)
if err != nil { if err != nil {
return nil, err return nil, err
} }
tmp, err := cc.c.ListenPacket("udp4", (&net.UDPAddr{ tmp, err := cc.c.ListenPacket("udp4", "224.0.0.0:"+port)
IP: net.ParseIP("224.0.0.0"),
Port: addr.Port,
}).String())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -84,7 +81,7 @@ func newClientConnUDPListener(cc *ClientConn, multicast bool, address string) (*
} }
for _, intf := range intfs { for _, intf := range intfs {
err := p.JoinGroup(&intf, &net.UDPAddr{IP: addr.IP}) err := p.JoinGroup(&intf, &net.UDPAddr{IP: net.ParseIP(host)})
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -91,15 +91,12 @@ func newServerUDPListener(
streamType StreamType) (*serverUDPListener, error) { streamType StreamType) (*serverUDPListener, error) {
var pc *net.UDPConn var pc *net.UDPConn
if multicast { if multicast {
addr, err := net.ResolveUDPAddr("udp4", address) host, port, err := net.SplitHostPort(address)
if err != nil { if err != nil {
return nil, err return nil, err
} }
tmp, err := s.ListenPacket("udp4", (&net.UDPAddr{ tmp, err := s.ListenPacket("udp4", "224.0.0.0:"+port)
IP: net.ParseIP("224.0.0.0"),
Port: addr.Port,
}).String())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -117,7 +114,7 @@ func newServerUDPListener(
} }
for _, intf := range intfs { for _, intf := range intfs {
err := p.JoinGroup(&intf, &net.UDPAddr{IP: addr.IP}) err := p.JoinGroup(&intf, &net.UDPAddr{IP: net.ParseIP(host)})
if err != nil { if err != nil {
return nil, err return nil, err
} }