summaryrefslogtreecommitdiffstats
path: root/avahi-core
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-06-25 00:43:57 +0000
committerLennart Poettering <lennart@poettering.net>2005-06-25 00:43:57 +0000
commitff4a54d9cda0146974fab1d4f8da52e26d252eed (patch)
tree9971995a840112230caa3b581e2c126937ec1ff7 /avahi-core
parent41f4062e34d1e13c2d93d971334efbad060b6df0 (diff)
* doxygen updates
* reply to probe queries immediately git-svn-id: file:///home/lennart/svn/public/avahi/trunk@147 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core')
-rw-r--r--avahi-core/announce.c2
-rw-r--r--avahi-core/server.c15
-rw-r--r--avahi-core/server.h2
3 files changed, 11 insertions, 8 deletions
diff --git a/avahi-core/announce.c b/avahi-core/announce.c
index 3374ada..0b7af8d 100644
--- a/avahi-core/announce.c
+++ b/avahi-core/announce.c
@@ -158,7 +158,7 @@ static void next_state(AvahiAnnouncement *a) {
else
avahi_server_prepare_response(a->server, a->interface, a->entry, FALSE, FALSE);
- avahi_server_generate_response(a->server, a->interface, NULL, NULL, 0, FALSE);
+ avahi_server_generate_response(a->server, a->interface, NULL, NULL, 0, FALSE, FALSE);
if (++a->n_iteration >= 4) {
/* gchar *t; */
diff --git a/avahi-core/server.c b/avahi-core/server.c
index 719f9a9..668e098 100644
--- a/avahi-core/server.c
+++ b/avahi-core/server.c
@@ -249,9 +249,9 @@ static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *
if (!ours) {
if (won)
- avahi_log_debug("xxx Recieved conflicting probe [%s]. Local host won.", t);
+ avahi_log_debug("Recieved conflicting probe [%s]. Local host won.", t);
else if (lost) {
- avahi_log_debug("yyy Recieved conflicting probe [%s]. Local host lost. Withdrawing.", t);
+ avahi_log_debug("Recieved conflicting probe [%s]. Local host lost. Withdrawing.", t);
withdraw_rrset(s, record->key);
}
}
@@ -361,7 +361,7 @@ static void append_aux_records_to_list(AvahiServer *s, AvahiInterface *i, AvahiR
avahi_server_enumerate_aux_records(s, i, r, append_aux_callback, &unicast_response);
}
-void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsPacket *p, const AvahiAddress *a, guint16 port, gboolean legacy_unicast) {
+void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsPacket *p, const AvahiAddress *a, guint16 port, gboolean legacy_unicast, gboolean immediately) {
g_assert(s);
g_assert(i);
@@ -405,7 +405,7 @@ void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsP
while ((r = avahi_record_list_next(s->record_list, &flush_cache, &unicast_response, &auxiliary))) {
- if (!avahi_interface_post_response(i, r, flush_cache, a, !tc && flush_cache && !auxiliary) && unicast_response) {
+ if (!avahi_interface_post_response(i, r, flush_cache, a, immediately || (flush_cache && !tc && !auxiliary)) && unicast_response) {
append_aux_records_to_list(s, i, r, unicast_response);
@@ -539,6 +539,7 @@ static void reflect_probe(AvahiServer *s, AvahiInterface *i, AvahiRecord *r) {
static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterface *i, const AvahiAddress *a, guint16 port, gboolean legacy_unicast) {
guint n;
+ gboolean is_probe;
g_assert(s);
g_assert(p);
@@ -548,6 +549,8 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
/* avahi_log_debug("query"); */
g_assert(avahi_record_list_empty(s->record_list));
+
+ is_probe = avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_NSCOUNT) > 0;
/* Handle the questions */
for (n = avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_QDCOUNT); n > 0; n --) {
@@ -609,7 +612,7 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac
}
if (!avahi_record_list_empty(s->record_list))
- avahi_server_generate_response(s, i, p, a, port, legacy_unicast);
+ avahi_server_generate_response(s, i, p, a, port, legacy_unicast, is_probe);
return;
@@ -657,7 +660,7 @@ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInter
records have been scheduling for sending. We need to flush them
here. */
if (!avahi_record_list_empty(s->record_list))
- avahi_server_generate_response(s, i, NULL, NULL, 0, FALSE);
+ avahi_server_generate_response(s, i, NULL, NULL, 0, FALSE, TRUE);
}
static AvahiLegacyUnicastReflectSlot* allocate_slot(AvahiServer *s) {
diff --git a/avahi-core/server.h b/avahi-core/server.h
index ad8576d..9a1fca3 100644
--- a/avahi-core/server.h
+++ b/avahi-core/server.h
@@ -137,7 +137,7 @@ void avahi_server_post_query(AvahiServer *s, gint interface, guchar protocol, Av
void avahi_server_prepare_response(AvahiServer *s, AvahiInterface *i, AvahiEntry *e, gboolean unicast_response, gboolean auxiliary);
void avahi_server_prepare_matching_responses(AvahiServer *s, AvahiInterface *i, AvahiKey *k, gboolean unicast_response);
-void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsPacket *p, const AvahiAddress *a, guint16 port, gboolean legacy_unicast);
+void avahi_server_generate_response(AvahiServer *s, AvahiInterface *i, AvahiDnsPacket *p, const AvahiAddress *a, guint16 port, gboolean legacy_unicast, gboolean is_probe);
void avahi_entry_group_change_state(AvahiEntryGroup *g, AvahiEntryGroupState state);