Explorar el Código

fix(beacon): skip point-to-point interfaces on Android (#10504)

bt90 hace 2 días
padre
commit
b7b494b7cf
Se han modificado 2 ficheros con 18 adiciones y 2 borrados
  1. 6 0
      lib/beacon/broadcast.go
  2. 12 2
      lib/beacon/multicast.go

+ 6 - 0
lib/beacon/broadcast.go

@@ -14,6 +14,7 @@ import (
 	"time"
 
 	"github.com/syncthing/syncthing/internal/slogutil"
+	"github.com/syncthing/syncthing/lib/build"
 	"github.com/syncthing/syncthing/lib/netutil"
 )
 
@@ -64,6 +65,11 @@ func writeBroadcasts(ctx context.Context, inbox <-chan []byte, port int) error {
 				continue
 			}
 
+			if build.IsAndroid && intf.Flags&net.FlagPointToPoint != 0 {
+				// skip  cellular interfaces
+				continue
+			}
+
 			addrs, err := netutil.InterfaceAddrsByInterface(&intf)
 			if err != nil {
 				l.Debugln("Failed to list interface addresses:", err)

+ 12 - 2
lib/beacon/multicast.go

@@ -13,6 +13,7 @@ import (
 	"net"
 	"time"
 
+	"github.com/syncthing/syncthing/lib/build"
 	"github.com/syncthing/syncthing/lib/netutil"
 
 	"golang.org/x/net/ipv6"
@@ -74,6 +75,11 @@ func writeMulticasts(ctx context.Context, inbox <-chan []byte, addr string) erro
 				continue
 			}
 
+			if build.IsAndroid && intf.Flags&net.FlagPointToPoint != 0 {
+				// skip  cellular interfaces
+				continue
+			}
+
 			wcm.IfIndex = intf.Index
 			pconn.SetWriteDeadline(time.Now().Add(time.Second))
 			_, err = pconn.WriteTo(bs, wcm, gaddr)
@@ -129,8 +135,12 @@ func readMulticasts(ctx context.Context, outbox chan<- recv, addr string) error
 	pconn := ipv6.NewPacketConn(conn)
 	joined := 0
 	for _, intf := range intfs {
-		if intf.Flags&net.FlagMulticast == 0 {
-			slog.DebugContext(ctx, "Not joining multicast group on non-multicast interface", "name", intf.Name, slog.String("flags", intf.Flags.String()))
+		if intf.Flags&net.FlagRunning == 0 || intf.Flags&net.FlagMulticast == 0 {
+			continue
+		}
+
+		if build.IsAndroid && intf.Flags&net.FlagPointToPoint != 0 {
+			// skip  cellular interfaces
 			continue
 		}