Fix discovery on windows
This commit is contained in:
@@ -33,11 +33,10 @@ func LoadSSDPservices(delay int) (map[string]string, error) {
|
|||||||
for address == nil && tries < 100 {
|
for address == nil && tries < 100 {
|
||||||
addr := net.UDPAddr{
|
addr := net.UDPAddr{
|
||||||
Port: port,
|
Port: port,
|
||||||
IP: net.ParseIP("239.255.255.250"),
|
IP: net.ParseIP("0.0.0.0"),
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := net.ListenUDP("udp", &addr)
|
if err := checkInterfacesForPort(port); err != nil {
|
||||||
if err != nil {
|
|
||||||
port++
|
port++
|
||||||
tries++
|
tries++
|
||||||
continue
|
continue
|
||||||
@@ -119,3 +118,41 @@ func DevicePicker(devices map[string]string, n int) (string, error) {
|
|||||||
|
|
||||||
return "", ErrSomethingWentWrong
|
return "", ErrSomethingWentWrong
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkInterfacesForPort(port int) error {
|
||||||
|
interfaces, err := net.Interfaces()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, iface := range interfaces {
|
||||||
|
addrs, err := iface.Addrs()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, addr := range addrs {
|
||||||
|
ip, _, _ := net.ParseCIDR(addr.String())
|
||||||
|
|
||||||
|
if ip.IsLoopback() || ip.To4() == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
udpAddr := net.UDPAddr{
|
||||||
|
Port: port,
|
||||||
|
IP: ip,
|
||||||
|
}
|
||||||
|
|
||||||
|
udpConn, err := net.ListenUDP("udp4", &udpAddr)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
udpConn.Close()
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user