summaryrefslogtreecommitdiff
path: root/daemon/dbus/gkd-dbus-secrets.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/dbus/gkd-dbus-secrets.c')
-rw-r--r--daemon/dbus/gkd-dbus-secrets.c54
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));