+void avahi_client_free(AvahiClient *client) {
+ assert(client);
+
+ while (client->groups)
+ avahi_entry_group_free(client->groups);
+
+ while (client->domain_browsers)
+ avahi_domain_browser_free(client->domain_browsers);
+
+ while (client->service_browsers)
+ avahi_service_browser_free(client->service_browsers);
+
+ while (client->service_type_browsers)
+ avahi_service_type_browser_free(client->service_type_browsers);
+
+ while (client->service_resolvers)
+ avahi_service_resolver_free(client->service_resolvers);
+
+ if (client->bus) {
+ dbus_connection_disconnect(client->bus);
+ dbus_connection_unref(client->bus);
+ }
+
+ avahi_free(client->version_string);
+ avahi_free(client->host_name);
+ avahi_free(client->host_name_fqdn);
+ avahi_free(client->domain_name);
+
+ avahi_free(client);
+}
+
+static char* avahi_client_get_string_reply_and_block (AvahiClient *client, const char *method, const char *param) {
+ DBusMessage *message = NULL, *reply = NULL;