summaryrefslogtreecommitdiffstats
path: root/avahi-client/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'avahi-client/client.c')
-rw-r--r--avahi-client/client.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/avahi-client/client.c b/avahi-client/client.c
index 2fd5123..54d19e5 100644
--- a/avahi-client/client.c
+++ b/avahi-client/client.c
@@ -260,6 +260,18 @@ static DBusHandlerResult filter_func(DBusConnection *bus, DBusMessage *message,
return avahi_address_resolver_event (client, AVAHI_RESOLVER_FOUND, message);
else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_ADDRESS_RESOLVER, "Failure"))
return avahi_address_resolver_event (client, AVAHI_RESOLVER_FAILURE, message);
+
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "ItemNew"))
+ return avahi_record_browser_event (client, AVAHI_BROWSER_NEW, message);
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "ItemRemove"))
+ return avahi_record_browser_event (client, AVAHI_BROWSER_REMOVE, message);
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "CacheExhausted"))
+ return avahi_record_browser_event (client, AVAHI_BROWSER_CACHE_EXHAUSTED, message);
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "AllForNow"))
+ return avahi_record_browser_event (client, AVAHI_BROWSER_ALL_FOR_NOW, message);
+ else if (dbus_message_is_signal(message, AVAHI_DBUS_INTERFACE_RECORD_BROWSER, "Failure"))
+ return avahi_record_browser_event (client, AVAHI_BROWSER_FAILURE, message);
+
else {
fprintf(stderr, "WARNING: Unhandled message: interface=%s, path=%s, member=%s\n",
@@ -446,6 +458,7 @@ AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientFlags flags,
AVAHI_LLIST_HEAD_INIT(AvahiServiceResolver, client->service_resolvers);
AVAHI_LLIST_HEAD_INIT(AvahiHostNameResolver, client->host_name_resolvers);
AVAHI_LLIST_HEAD_INIT(AvahiAddressResolver, client->address_resolvers);
+ AVAHI_LLIST_HEAD_INIT(AvahiRecordBrowser, client->record_browsers);
if (!(client->bus = avahi_dbus_bus_get(&error)) || dbus_error_is_set(&error)) {
if (ret_error)
@@ -558,6 +571,15 @@ void avahi_client_free(AvahiClient *client) {
while (client->service_resolvers)
avahi_service_resolver_free(client->service_resolvers);
+ while (client->host_name_resolvers)
+ avahi_host_name_resolver_free(client->host_name_resolvers);
+
+ while (client->address_resolvers)
+ avahi_address_resolver_free(client->address_resolvers);
+
+ while (client->record_browsers)
+ avahi_record_browser_free(client->record_browsers);
+
if (client->bus) {
dbus_connection_disconnect(client->bus);
dbus_connection_unref(client->bus);