static GDBusMessage * on_filter_func (GDBusConnection *connection, GDBusMessage *message, gboolean incoming, gpointer user_data) { GError *error = NULL; GDBusMessage *reply; if (incoming && g_dbus_message_get_message_type (message) == G_DBUS_MESSAGE_TYPE_METHOD_CALL && g_str_equal (g_dbus_message_get_path (message), "/bork") && g_str_equal (g_dbus_message_get_interface (message), "borkety.Bork") && g_str_equal (g_dbus_message_get_member (message), "Echo")) { reply = g_dbus_message_new_method_reply (message); g_dbus_message_set_body (reply, g_dbus_message_get_body (message)); g_dbus_connection_send_message (connection, reply, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, &error); if (error != NULL) { g_warning ("Couldn't send DBus message: %s", error->message); g_error_free (error); } g_object_unref (reply); g_object_unref (message); return NULL; } return message; }
static GDBusMessage * rewrite_default_alias (GkdSecretService *self, GDBusMessage *message) { const char *path = g_dbus_message_get_path (message); const char *replace; char *collection = NULL, *item = NULL; char *collection_path, *item_path; GDBusMessage *rewritten; GError *error = NULL; if (path == NULL) return message; if (!g_str_has_prefix (path, SECRET_ALIAS_PREFIX)) return message; if (!gkd_secret_util_parse_path (path, &collection, &item)) return message; replace = gkd_secret_service_get_alias (self, collection); if (!replace) { g_free (item); g_free (collection); return message; } rewritten = g_dbus_message_copy (message, &error); if (error != NULL) { g_error_free (error); return message; } collection_path = gkd_secret_util_build_path (SECRET_COLLECTION_PREFIX, replace, -1); if (item != NULL) { item_path = gkd_secret_util_build_path (collection_path, item, -1); g_dbus_message_set_path (rewritten, item_path); g_free (item_path); } else { g_dbus_message_set_path (rewritten, collection_path); } g_free (collection_path); g_free (item); g_free (collection); g_object_unref (message); return rewritten; }