X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-client%2Fclient.c;h=4ee8e41690a2e6fdaf65fe748077392ab2f28124;hb=fa9651c42231c151705c909960414384bad2662b;hp=754fdaf0d998118745f72005f80d662f0f8ef120;hpb=be4aaeb485d31dee095b0c9c90e6b79333bc0e21;p=catta diff --git a/avahi-client/client.c b/avahi-client/client.c index 754fdaf..4ee8e41 100644 --- a/avahi-client/client.c +++ b/avahi-client/client.c @@ -394,7 +394,7 @@ static int check_version(AvahiClient *client, int *ret_error) { goto fail; } - fprintf(stderr, "API Version 0x%04x\n", version); + /*fprintf(stderr, "API Version 0x%04x\n", version);*/ if ((version & 0xFF00) != (AVAHI_CLIENT_DBUS_API_SUPPORTED & 0xFF00) || (version & 0x00FF) < (AVAHI_CLIENT_DBUS_API_SUPPORTED & 0x00FF)) { @@ -595,6 +595,11 @@ fail: void avahi_client_free(AvahiClient *client) { assert(client); + if (client->bus) + /* Disconnect in advance, so that the free() functions won't + * issue needless server calls */ + dbus_connection_disconnect(client->bus); + while (client->groups) avahi_entry_group_free(client->groups); @@ -619,10 +624,8 @@ void avahi_client_free(AvahiClient *client) { while (client->record_browsers) avahi_record_browser_free(client->record_browsers); - if (client->bus) { - dbus_connection_disconnect(client->bus); + if (client->bus) dbus_connection_unref(client->bus); - } avahi_free(client->version_string); avahi_free(client->host_name); @@ -859,5 +862,7 @@ fail: int avahi_client_is_connected(AvahiClient *client) { assert(client); - return client->state == AVAHI_CLIENT_S_RUNNING || client->state == AVAHI_CLIENT_S_REGISTERING || client->state == AVAHI_CLIENT_S_COLLISION; + return + dbus_connection_get_is_connected(client->bus) && + (client->state == AVAHI_CLIENT_S_RUNNING || client->state == AVAHI_CLIENT_S_REGISTERING || client->state == AVAHI_CLIENT_S_COLLISION); }