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 89a3632ab7..dc09bef11d 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java @@ -449,11 +449,13 @@ public class MdnsSocketProvider { if (!hasAllNetworksRequest()) { // Currently, the network for tethering can not be requested, so the sockets for // tethering are only created if there is a request for all networks (interfaces). - // Therefore, this change can skip if there is no such request. + // Therefore, only update the interface list and skip this change if no such request. if (DBG) { Log.d(TAG, "Ignore tether interfaces change. There is no request for all" + " networks."); } + current.clear(); + current.addAll(updated); return; } 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 93859f621a..4f56857301 100644 --- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java +++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java @@ -745,4 +745,21 @@ public class MdnsSocketProviderTest { List.of(WIFI_P2P_IFACE_NAME))); testCallback.expectedNoCallback(); } + + @Test + public void testTetherInterfacesChangedBeforeGetAllNetworksRequest() { + startMonitoringSockets(); + + // Receive an interface added change for the wifi p2p interface. Expect a socket creation + // callback. + runOnHandler(() -> mTetheringEventCallback.onLocalOnlyInterfacesChanged( + List.of(TETHERED_IFACE_NAME))); + verify(mTetheredIfaceWrapper, never()).getNetworkInterface(); + + // Request a socket with null network. + final TestSocketCallback testCallback = new TestSocketCallback(); + runOnHandler(() -> mSocketProvider.requestSocket(null /* network */, testCallback)); + verify(mTetheredIfaceWrapper).getNetworkInterface(); + testCallback.expectedSocketCreatedForNetwork(null /* network */, List.of()); + } }