diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsRecordRepository.java b/service-t/src/com/android/server/connectivity/mdns/MdnsRecordRepository.java index 1fb4d90e2c..f5323720c0 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsRecordRepository.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsRecordRepository.java @@ -399,7 +399,9 @@ public class MdnsRecordRepository { r -> new MdnsPointerRecord( r.record.getName(), 0L /* receiptTimeMillis */, - true /* cacheFlush */, + // RFC6762#10.1, the cache flush bit should be false for existing + // announcement. Otherwise, the record will be deleted immediately. + false /* cacheFlush */, 0L /* ttlMillis */, r.record.getPointer())); diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsRecordRepositoryTest.kt b/tests/unit/java/com/android/server/connectivity/mdns/MdnsRecordRepositoryTest.kt index af47b1c761..88fb66aac1 100644 --- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsRecordRepositoryTest.kt +++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsRecordRepositoryTest.kt @@ -182,7 +182,7 @@ class MdnsRecordRepositoryTest { MdnsPointerRecord( arrayOf("_testservice", "_tcp", "local"), 0L /* receiptTimeMillis */, - true /* cacheFlush */, + false /* cacheFlush */, 0L /* ttlMillis */, arrayOf("MyTestService", "_testservice", "_tcp", "local")) ), packet.answers) @@ -211,13 +211,13 @@ class MdnsRecordRepositoryTest { MdnsPointerRecord( arrayOf("_testservice", "_tcp", "local"), 0L /* receiptTimeMillis */, - true /* cacheFlush */, + false /* cacheFlush */, 0L /* ttlMillis */, arrayOf("MyTestService", "_testservice", "_tcp", "local")), MdnsPointerRecord( arrayOf("_subtype", "_sub", "_testservice", "_tcp", "local"), 0L /* receiptTimeMillis */, - true /* cacheFlush */, + false /* cacheFlush */, 0L /* ttlMillis */, arrayOf("MyTestService", "_testservice", "_tcp", "local")), ), packet.answers)