summaryrefslogtreecommitdiffstats
path: root/avahi-core
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-06-03 19:02:12 +0000
committerLennart Poettering <lennart@poettering.net>2005-06-03 19:02:12 +0000
commit259ef1fd00e7e415dfb11bf26747355e5cd851f7 (patch)
treea35c7d17d59475650fba01108958d6bae58369da /avahi-core
parent8d361c07a55685f6eee5209b30f46c392549ba42 (diff)
* improve avahi-discover GUI
* if a new interface becomes available, reissue all queries git-svn-id: file:///home/lennart/svn/public/avahi/trunk@94 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core')
-rw-r--r--avahi-core/browse.c19
-rw-r--r--avahi-core/browse.h2
-rw-r--r--avahi-core/iface.c1
3 files changed, 18 insertions, 4 deletions
diff --git a/avahi-core/browse.c b/avahi-core/browse.c
index c959831..45e8bce 100644
--- a/avahi-core/browse.c
+++ b/avahi-core/browse.c
@@ -41,7 +41,7 @@ struct AvahiRecordBrowser {
AvahiRecordBrowserCallback callback;
gpointer userdata;
- AVAHI_LLIST_FIELDS(AvahiRecordBrowser, resolver);
+ AVAHI_LLIST_FIELDS(AvahiRecordBrowser, browser);
AVAHI_LLIST_FIELDS(AvahiRecordBrowser, by_key);
};
@@ -128,7 +128,7 @@ AvahiRecordBrowser *avahi_record_browser_new(AvahiServer *server, gint interface
avahi_elapse_time(&tv, b->sec_delay*1000, 0);
b->time_event = avahi_time_event_queue_add(server->time_event_queue, &tv, elapse, b);
- AVAHI_LLIST_PREPEND(AvahiRecordBrowser, resolver, server->record_browsers, b);
+ AVAHI_LLIST_PREPEND(AvahiRecordBrowser, browser, server->record_browsers, b);
/* Add the new entry to the record_browser hash table */
t = g_hash_table_lookup(server->record_browser_hashtable, key);
@@ -159,7 +159,7 @@ void avahi_record_browser_destroy(AvahiRecordBrowser *b) {
g_assert(b);
- AVAHI_LLIST_REMOVE(AvahiRecordBrowser, resolver, b->server->record_browsers, b);
+ AVAHI_LLIST_REMOVE(AvahiRecordBrowser, browser, b->server->record_browsers, b);
t = g_hash_table_lookup(b->server->record_browser_hashtable, b->key);
AVAHI_LLIST_REMOVE(AvahiRecordBrowser, by_key, t, b);
@@ -182,7 +182,7 @@ void avahi_browser_cleanup(AvahiServer *server) {
g_assert(server);
for (b = server->record_browsers; b; b = n) {
- n = b->resolver_next;
+ n = b->browser_next;
if (b->dead)
avahi_record_browser_destroy(b);
@@ -213,3 +213,14 @@ gboolean avahi_is_subscribed(AvahiServer *server, AvahiInterface *i, AvahiKey *k
return FALSE;
}
+
+void avahi_browser_new_interface(AvahiServer*s, AvahiInterface *i) {
+ AvahiRecordBrowser *b;
+
+ g_assert(s);
+ g_assert(i);
+
+ for (b = s->record_browsers; b; b = b->browser_next)
+ if (avahi_interface_match(i, b->interface, b->protocol))
+ avahi_interface_post_query(i, b->key, FALSE);
+}
diff --git a/avahi-core/browse.h b/avahi-core/browse.h
index f993d3e..ac33c51 100644
--- a/avahi-core/browse.h
+++ b/avahi-core/browse.h
@@ -34,4 +34,6 @@ gboolean avahi_is_subscribed(AvahiServer *s, AvahiInterface *i, AvahiKey *k);
void avahi_record_browser_destroy(AvahiRecordBrowser *b);
+void avahi_browser_new_interface(AvahiServer*s, AvahiInterface *i);
+
#endif
diff --git a/avahi-core/iface.c b/avahi-core/iface.c
index 8686fb5..d890e22 100644
--- a/avahi-core/iface.c
+++ b/avahi-core/iface.c
@@ -244,6 +244,7 @@ static void check_interface_relevant(AvahiInterfaceMonitor *m, AvahiInterface *i
i->announcing = TRUE;
avahi_announce_interface(m->server, i);
+ avahi_browser_new_interface(m->server, i);
} else if (!b && i->announcing) {
g_message("Interface %s.%i no longer relevant", i->hardware->name, i->protocol);