]> git.meshlink.io Git - catta/blobdiff - avahi-client/resolver.c
* Don't attempt to treat Known Answer records as potentially
[catta] / avahi-client / resolver.c
index 23011342e87de9df0cbc9ee395e7bba91ceaa4ee..4403a12713cabc33b9c07519b40b76ae1a7861d6 100644 (file)
@@ -106,6 +106,8 @@ DBusHandlerResult avahi_service_resolver_event (AvahiClient *client, AvahiResolv
             for (;;) {
                 DBusMessageIter sub2;
                 int at;
+                const uint8_t *k;
+                int n;
             
                 if ((at = dbus_message_iter_get_arg_type(&sub)) == DBUS_TYPE_INVALID)
                     break;
@@ -119,13 +121,10 @@ DBusHandlerResult avahi_service_resolver_event (AvahiClient *client, AvahiResolv
             
                 dbus_message_iter_recurse(&sub, &sub2);
 
-                if (dbus_message_iter_get_array_len(&sub2) > 0) {
-                    uint8_t *k;
-                    int n;
-                
-                    dbus_message_iter_get_fixed_array(&sub2, &k, &n);
+                k = NULL; n = 0;
+                dbus_message_iter_get_fixed_array(&sub2, &k, &n);
+                if (k && n > 0)
                     strlst = avahi_string_list_add_arbitrary(strlst, k, n);
-                }
             
                 dbus_message_iter_next(&sub);
             }
@@ -209,7 +208,7 @@ AvahiServiceResolver * avahi_service_resolver_new(
     
     dbus_error_init (&error);
 
-    if (client->state == AVAHI_CLIENT_FAILURE) {
+    if (!avahi_client_is_connected(client)) {
         avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
         goto fail;
     }
@@ -331,7 +330,7 @@ int avahi_service_resolver_free(AvahiServiceResolver *r) {
     assert(r);
     client = r->client;
 
-    if (r->path && client->state != AVAHI_CLIENT_FAILURE)
+    if (r->path && avahi_client_is_connected(client))
         ret = avahi_client_simple_method_call(client, r->path, AVAHI_DBUS_INTERFACE_SERVICE_RESOLVER, "Free");
 
     AVAHI_LLIST_REMOVE(AvahiServiceResolver, service_resolvers, client->service_resolvers, r);
@@ -446,7 +445,7 @@ AvahiHostNameResolver * avahi_host_name_resolver_new(
 
     dbus_error_init (&error);
 
-    if (client->state == AVAHI_CLIENT_FAILURE) {
+    if (!avahi_client_is_connected(client)) {
         avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
         goto fail;
     }
@@ -546,7 +545,7 @@ int avahi_host_name_resolver_free(AvahiHostNameResolver *r) {
     assert(r);
     client = r->client;
 
-    if (r->path && client->state != AVAHI_CLIENT_FAILURE)
+    if (r->path && avahi_client_is_connected(client))
         ret = avahi_client_simple_method_call(client, r->path, AVAHI_DBUS_INTERFACE_HOST_NAME_RESOLVER, "Free");
 
     AVAHI_LLIST_REMOVE(AvahiHostNameResolver, host_name_resolvers, client->host_name_resolvers, r);
@@ -669,7 +668,7 @@ AvahiAddressResolver * avahi_address_resolver_new(
         return NULL;
     }
 
-    if (client->state == AVAHI_CLIENT_FAILURE) {
+    if (!avahi_client_is_connected(client)) {
         avahi_client_set_errno(client, AVAHI_ERR_BAD_STATE);
         goto fail;
     }
@@ -768,7 +767,7 @@ int avahi_address_resolver_free(AvahiAddressResolver *r) {
     assert(r);
     client = r->client;
 
-    if (r->path && client->state != AVAHI_CLIENT_FAILURE)
+    if (r->path && avahi_client_is_connected(client))
         ret = avahi_client_simple_method_call(client, r->path, AVAHI_DBUS_INTERFACE_ADDRESS_RESOLVER, "Free");
 
     AVAHI_LLIST_REMOVE(AvahiAddressResolver, address_resolvers, client->address_resolvers, r);