summaryrefslogtreecommitdiffstats
path: root/avahi-core/server.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-09-26 01:34:43 +0000
committerLennart Poettering <lennart@poettering.net>2005-09-26 01:34:43 +0000
commit6d236291b17f2d02e15d4c6f1c87bc7b3fc4e982 (patch)
tree059dfb0043280593de0df7a2308d9a37f69b35e7 /avahi-core/server.c
parentdae4b6457a2af1f1c7f340d709c9a65b8fd7f035 (diff)
* Implement POOF aka "Passive Observation of Failure"
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@632 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core/server.c')
-rw-r--r--avahi-core/server.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/avahi-core/server.c b/avahi-core/server.c
index 2714298..dc63c67 100644
--- a/avahi-core/server.c
+++ b/avahi-core/server.c
@@ -613,8 +613,10 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
goto fail;
}
- if (!legacy_unicast && !from_local_iface)
+ if (!legacy_unicast && !from_local_iface) {
reflect_query(s, i, key);
+ avahi_cache_start_poof(i->cache, key, a);
+ }
if (avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_ANCOUNT) == 0 &&
!(avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_FLAGS) & AVAHI_DNS_FLAG_TC))
@@ -641,6 +643,7 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
if (handle_conflict(s, i, record, unique, a)) {
avahi_response_scheduler_suppress(i->response_scheduler, record, a);
avahi_record_list_drop(s->record_list, record);
+ avahi_cache_stop_poof(i->cache, record, a);
}
avahi_record_unref(record);