[gvfs] smb: Report proper error on do_query_fs_info()



commit cf7f98995591f6c992467337469df41756c76b04
Author: Tomas Bzatek <tbzatek redhat com>
Date:   Mon Dec 3 15:46:01 2012 +0100

    smb: Report proper error on do_query_fs_info()
    
    We always reported success despite storing the smb call result.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=687778

 daemon/gvfsbackendsmb.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
---
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
index abdab9c..f69bc1b 100644
--- a/daemon/gvfsbackendsmb.c
+++ b/daemon/gvfsbackendsmb.c
@@ -1633,7 +1633,7 @@ do_query_fs_info (GVfsBackend *backend,
   smbc_statvfs_fn smbc_statvfs;
   struct statvfs st = {0};
   char *uri;
-  int res;
+  int res, saved_errno;
 
   if (g_file_attribute_matcher_matches (attribute_matcher,
 					G_FILE_ATTRIBUTE_FILESYSTEM_SIZE) ||
@@ -1645,6 +1645,7 @@ do_query_fs_info (GVfsBackend *backend,
       uri = create_smb_uri (op_backend->server, op_backend->share, filename);
       smbc_statvfs = smbc_getFunctionStatVFS (op_backend->smb_context);
       res = smbc_statvfs (op_backend->smb_context, uri, &st);
+      saved_errno = errno;
       g_free (uri);
 
       if (res == 0)
@@ -1661,6 +1662,11 @@ do_query_fs_info (GVfsBackend *backend,
               g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY, st.f_flag & SMBC_VFS_FEATURE_RDONLY);
             }
         }
+      else
+        {
+          g_vfs_job_failed_from_errno (G_VFS_JOB (job), saved_errno);
+          return;
+        }
     }
 #endif
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]