[gvfs/wip/oholy/skip-fallback-when-cancelled] client: Skip session bus fallback if operation was cancelled
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs/wip/oholy/skip-fallback-when-cancelled] client: Skip session bus fallback if operation was cancelled
- Date: Fri, 18 Dec 2020 15:25:34 +0000 (UTC)
commit 94fdeb789a6b6f448ab6ba4429f189c58f7925b2
Author: Ondrej Holy <oholy redhat com>
Date: Fri Dec 18 15:42:23 2020 +0100
client: Skip session bus fallback if operation was cancelled
Recently added warnings when peer-to-peer connection fails (commit 60ca0cea)
makes visible old bug that the session bus fallback is tried regardless of
the fact that the operation was cancelled. Let's stop the operation
immediately when G_IO_ERROR_CANCELLED is returned and don't print the
warnings in this case.
client/gdaemonfile.c | 10 +++++++++-
client/gdaemonfilemonitor.c | 2 +-
client/gdaemonmount.c | 8 ++++++++
client/gvfsiconloadable.c | 10 +++++++++-
4 files changed, 27 insertions(+), 3 deletions(-)
---
diff --git a/client/gdaemonfile.c b/client/gdaemonfile.c
index 2ea6cd7c..2d09f6af 100644
--- a/client/gdaemonfile.c
+++ b/client/gdaemonfile.c
@@ -438,7 +438,7 @@ create_proxy_for_file2 (GFile *file1,
}
connection = _g_dbus_connection_get_sync (mount_info1->dbus_id, cancellable, &local_error);
- if (connection == NULL)
+ if (connection == NULL && !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
g_dbus_error_strip_remote_error (local_error);
g_warning ("The peer-to-peer connection failed: %s. Falling back to the "
@@ -625,6 +625,14 @@ async_got_connection_cb (GDBusConnection *connection,
if (connection == NULL)
{
g_dbus_error_strip_remote_error (io_error);
+
+ if (g_error_matches (io_error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ {
+ g_task_return_error (data->task, g_error_copy (io_error));
+ async_proxy_create_free (data);
+ return;
+ }
+
g_warning ("The peer-to-peer connection failed: %s. Falling back to the "
"session bus. Your application is probably missing "
"--filesystem=xdg-run/gvfsd privileges.", io_error->message);
diff --git a/client/gdaemonfilemonitor.c b/client/gdaemonfilemonitor.c
index 99e356af..b166552d 100644
--- a/client/gdaemonfilemonitor.c
+++ b/client/gdaemonfilemonitor.c
@@ -178,7 +178,7 @@ g_daemon_file_monitor_new (const char *remote_id,
daemon_monitor->remote_obj_path = g_strdup (remote_obj_path);
connection = _g_dbus_connection_get_sync (daemon_monitor->remote_id, NULL, &error);
- if (connection == NULL)
+ if (connection == NULL && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
g_dbus_error_strip_remote_error (error);
g_warning ("The peer-to-peer connection failed: %s. Falling back to the "
diff --git a/client/gdaemonmount.c b/client/gdaemonmount.c
index a3cb2578..ca01c005 100644
--- a/client/gdaemonmount.c
+++ b/client/gdaemonmount.c
@@ -316,6 +316,14 @@ async_got_connection_cb (GDBusConnection *connection,
if (connection == NULL)
{
g_dbus_error_strip_remote_error (io_error);
+
+ if (g_error_matches (io_error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ {
+ g_task_return_error (task, g_error_copy (io_error));
+ g_object_unref (task);
+ return;
+ }
+
g_warning ("The peer-to-peer connection failed: %s. Falling back to the "
"session bus. Your application is probably missing "
"--filesystem=xdg-run/gvfsd privileges.", io_error->message);
diff --git a/client/gvfsiconloadable.c b/client/gvfsiconloadable.c
index f1e6cd08..a394769d 100644
--- a/client/gvfsiconloadable.c
+++ b/client/gvfsiconloadable.c
@@ -58,7 +58,7 @@ create_proxy_for_icon (GVfsIcon *vfs_icon,
goto out;
connection = _g_dbus_connection_get_sync (mount_info->dbus_id, cancellable, &local_error);
- if (connection == NULL)
+ if (connection == NULL && !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
g_dbus_error_strip_remote_error (local_error);
g_warning ("The peer-to-peer connection failed: %s. Falling back to the "
@@ -254,6 +254,14 @@ async_got_connection_cb (GDBusConnection *connection,
if (connection == NULL)
{
g_dbus_error_strip_remote_error (io_error);
+
+ if (g_error_matches (io_error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ {
+ g_task_return_error (data->task, g_error_copy (io_error));
+ async_path_call_free (data);
+ return;
+ }
+
g_warning ("The peer-to-peer connection failed: %s. Falling back to the "
"session bus. Your application is probably missing "
"--filesystem=xdg-run/gvfsd privileges.", io_error->message);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]