[gvfs/wip/oholy/skip-fallback-when-cancelled] client: Skip session bus fallback if operation was cancelled




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]