]> git.meshlink.io Git - catta/blobdiff - avahi-client/client.c
* don't call dbus_connection_get_is_connected() for a NULL dbus connection (closes...
[catta] / avahi-client / client.c
index 754fdaf0d998118745f72005f80d662f0f8ef120..90686fc6fabc8d635db35e9b700ce8909aaf0581 100644 (file)
@@ -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,8 @@ 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
+        client->bus &&
+        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);
 }