+
+void avahi_cache_start_poof(AvahiCache *c, AvahiKey *key, const AvahiAddress *a) {
+ assert(c);
+ assert(key);
+
+ avahi_cache_walk(c, key, start_poof_callback, (void*) a);
+}
+
+void avahi_cache_stop_poof(AvahiCache *c, AvahiRecord *record, const AvahiAddress *a) {
+ AvahiCacheEntry *e;
+
+ assert(c);
+ assert(record);
+ assert(a);
+
+ if (!(e = lookup_record(c, record)))
+ return;
+
+ /* This function is called for each response suppression
+ record. If the matching cache entry is in POOF state and the
+ query address is the same, we put it back into valid mode */
+
+ if (e->state == AVAHI_CACHE_POOF || e->state == AVAHI_CACHE_POOF_FINAL)
+ if (avahi_address_cmp(a, &e->poof_address) == 0) {
+ e->state = AVAHI_CACHE_VALID;
+ next_expiry(c, e, 80);
+ }
+}
+
+
+