X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-client%2Fresolver.c;h=4403a12713cabc33b9c07519b40b76ae1a7861d6;hb=fa40582137b464bac2efe111c3b8f75803bff619;hp=23011342e87de9df0cbc9ee395e7bba91ceaa4ee;hpb=4e2113a7d5b702ff070e8220b32662bb00ae02dd;p=catta diff --git a/avahi-client/resolver.c b/avahi-client/resolver.c index 2301134..4403a12 100644 --- a/avahi-client/resolver.c +++ b/avahi-client/resolver.c @@ -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);