summaryrefslogtreecommitdiffstats
path: root/avahi-client/client.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-11-16 19:30:11 +0000
committerLennart Poettering <lennart@poettering.net>2005-11-16 19:30:11 +0000
commit9e4237ebed07d00bf1176178d1358b475d749b27 (patch)
tree38b9fa5103733445ce69012a5c6ae65fdb043a91 /avahi-client/client.c
parentaffa11f5bb7309fa504624a3512dce5c88ce473b (diff)
* Implement client API for arbitrary record browsing
* Fix memory leak in avahi-client git-svn-id: file:///home/lennart/svn/public/avahi/trunk@984 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
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);