From b59c829ff1da4594d42873d6b351e0f25e2fd5e1 Mon Sep 17 00:00:00 2001 From: Handa Wang Date: Mon, 28 Apr 2025 01:59:39 -0700 Subject: [PATCH] Ensure Thread network is never mDNS capable Thread doesn't use mDNS and we should prevent NsdService from sending any mDNS traffic to Thread. Bug: 414258735 Test: CI Flag: EXEMPT bugfix Change-Id: I62299769cd44d2984b81b273adea7ce459d3d773 --- .../server/connectivity/mdns/MdnsSocketProvider.java | 4 +++- .../connectivity/mdns/MdnsSocketProviderTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java index d91bd112b3..49e4e28d32 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java @@ -17,6 +17,7 @@ package com.android.server.connectivity.mdns; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; +import static android.net.NetworkCapabilities.TRANSPORT_THREAD; import static android.net.NetworkCapabilities.TRANSPORT_VPN; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; @@ -561,8 +562,9 @@ public class MdnsSocketProvider { private boolean isMdnsCapableInterface( @NonNull NetworkInterfaceWrapper iface, @NonNull int[] transports) { try { - // Never try mDNS on cellular, or on interfaces with incompatible flags + // Never try mDNS on cellular, on Thread, or on interfaces with incompatible flags if (CollectionUtils.contains(transports, TRANSPORT_CELLULAR) + || CollectionUtils.contains(transports, TRANSPORT_THREAD) || iface.isLoopback() || iface.isVirtual() || !iface.isUp()) { diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java index f763bae09a..6bcc4ed442 100644 --- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java +++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java @@ -18,6 +18,7 @@ package com.android.server.connectivity.mdns; import static android.net.NetworkCapabilities.TRANSPORT_BLUETOOTH; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; +import static android.net.NetworkCapabilities.TRANSPORT_THREAD; import static android.net.NetworkCapabilities.TRANSPORT_VPN; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; @@ -596,6 +597,17 @@ public class MdnsSocketProviderTest { testCallback.expectedNoCallback(); } + @Test + public void testNoSocketCreatedForThread() { + startMonitoringSockets(); + + final TestSocketCallback testCallback = new TestSocketCallback(); + runOnHandler(() -> mSocketProvider.requestSocket(TEST_NETWORK, testCallback)); + + postNetworkAvailable(TRANSPORT_THREAD); + testCallback.expectedNoCallback(); + } + @Test public void testNoSocketCreatedForNonMulticastInterface() throws Exception { doReturn(false).when(mTestNetworkIfaceWrapper).supportsMulticast();