diff options
Diffstat (limited to 'daemon/dbus/gkd-dbus-secrets.c')
-rw-r--r-- | daemon/dbus/gkd-dbus-secrets.c | 54 |
1 files changed, 31 insertions, 23 deletions
diff --git a/daemon/dbus/gkd-dbus-secrets.c b/daemon/dbus/gkd-dbus-secrets.c index 58e0a8fb..f4e38fc4 100644 --- a/daemon/dbus/gkd-dbus-secrets.c +++ b/daemon/dbus/gkd-dbus-secrets.c @@ -33,7 +33,7 @@ #include <gck/gck.h> -static DBusConnection *dbus_conn = NULL; +static GDBusConnection *dbus_conn = NULL; static GkdSecretService *secrets_service = NULL; static GckSlot* @@ -66,18 +66,19 @@ calculate_secrets_slot (void) gboolean gkd_dbus_secrets_startup (void) { - DBusError error = DBUS_ERROR_INIT; - dbus_uint32_t result = 0; const gchar *service = NULL; unsigned int flags = 0; GckSlot *slot; + GError *error = NULL; + GVariant *request_variant; + guint res; g_return_val_if_fail (dbus_conn, FALSE); #ifdef WITH_DEBUG service = g_getenv ("GNOME_KEYRING_TEST_SERVICE"); if (service && service[0]) - flags = DBUS_NAME_FLAG_ALLOW_REPLACEMENT | DBUS_NAME_FLAG_REPLACE_EXISTING; + flags = G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | G_BUS_NAME_OWNER_FLAGS_REPLACE; else #endif service = SECRET_SERVICE; @@ -87,29 +88,37 @@ gkd_dbus_secrets_startup (void) g_return_val_if_fail (slot, FALSE); /* Try and grab our name */ - result = dbus_bus_request_name (dbus_conn, service, flags, &error); - if (dbus_error_is_set (&error)) { + request_variant = g_dbus_connection_call_sync (dbus_conn, + "org.freedesktop.DBus", /* bus name */ + "/org/freedesktop/DBus", /* object path */ + "org.freedesktop.DBus", /* interface name */ + "RequestName", /* method name */ + g_variant_new ("(su)", + service, + flags), + G_VARIANT_TYPE ("(u)"), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, &error); + + if (error != NULL) { g_message ("couldn't request name '%s' on session bus: %s", - service, error.message); - dbus_error_free (&error); - + service, error->message); + g_error_free (error); } else { - switch (result) { + g_variant_get (request_variant, "(u)", &res); + g_variant_unref (request_variant); + switch (res) { /* We acquired the service name */ - case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER: - break; - + case 1: /* DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER */ /* We already acquired the service name. */ - case DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER: + case 4: /* DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER */ break; - /* Another daemon is running */ - case DBUS_REQUEST_NAME_REPLY_IN_QUEUE: - case DBUS_REQUEST_NAME_REPLY_EXISTS: + case 2: /* DBUS_REQUEST_NAME_REPLY_IN_QUEUE */ + case 3: /* DBUS_REQUEST_NAME_REPLY_EXISTS */ g_message ("another secret service is running"); break; - default: g_return_val_if_reached (FALSE); break; @@ -128,19 +137,18 @@ static void cleanup_dbus_conn (gpointer unused) { g_assert (dbus_conn); - dbus_connection_unref (dbus_conn); - dbus_conn = NULL; + g_clear_object (&dbus_conn); } void -gkd_dbus_secrets_init (DBusConnection *conn) +gkd_dbus_secrets_init (GDBusConnection *conn) { - dbus_conn = dbus_connection_ref (conn); + dbus_conn = g_object_ref (conn); egg_cleanup_register (cleanup_dbus_conn, NULL); } void -gkd_dbus_secrets_cleanup (DBusConnection *conn) +gkd_dbus_secrets_cleanup (GDBusConnection *conn) { if (secrets_service) { g_object_run_dispose (G_OBJECT (secrets_service)); |