[arch-commits] Commit in gvfs/trunk (2 files)

Jan Steffens heftig at archlinux.org
Mon Mar 22 02:18:20 UTC 2021


    Date: Monday, March 22, 2021 @ 02:18:19
  Author: heftig
Revision: 410674

1.48.0-2: disable admin backend until it's fixed

Added:
  gvfs/trunk/0001-daemon-Remove-connection-socket-properly.patch
Modified:
  gvfs/trunk/PKGBUILD

-----------------------------------------------------+
 0001-daemon-Remove-connection-socket-properly.patch |  140 ++++++++++++++++++
 PKGBUILD                                            |   11 +
 2 files changed, 149 insertions(+), 2 deletions(-)

Added: 0001-daemon-Remove-connection-socket-properly.patch
===================================================================
--- 0001-daemon-Remove-connection-socket-properly.patch	                        (rev 0)
+++ 0001-daemon-Remove-connection-socket-properly.patch	2021-03-22 02:18:19 UTC (rev 410674)
@@ -0,0 +1,140 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+Date: Mon, 22 Mar 2021 00:18:29 +0000
+Subject: [PATCH] daemon: Remove connection socket properly
+
+The naming scheme for the non-abstract socket was changed but
+`new_connection_data_free` was not adjusted to match.
+
+`GDBusServer` will remove the socket when it stops, but only if
+`g_dbus_server_start` was called. So we can simplify the process
+somewhat. Also don't bother removing the directory now that all sockets
+share it.
+
+Fixes: 29a00938055d3c7c11533bdda3f84ec51d4cbb32 (daemon: Use named sockets to avoid network permission requirement)
+---
+ daemon/gvfsdaemon.c | 48 ++++++++++++++++++---------------------------
+ 1 file changed, 19 insertions(+), 29 deletions(-)
+
+diff --git a/daemon/gvfsdaemon.c b/daemon/gvfsdaemon.c
+index 2533d9fa..f9124a76 100644
+--- a/daemon/gvfsdaemon.c
++++ b/daemon/gvfsdaemon.c
+@@ -89,9 +89,7 @@ struct _GVfsDaemon
+ 
+ typedef struct {
+   GVfsDaemon *daemon;
+-  char *socket_dir;
+-  GDBusServer *server;
+-  
++
+   GDBusConnection *conn;
+ } NewConnectionData;
+ 
+@@ -656,18 +654,6 @@ static void
+ new_connection_data_free (void *memory)
+ {
+   NewConnectionData *data = memory;
+-  gchar *socket;
+-  
+-  /* Remove the socket and dir after connected */
+-  if (data->socket_dir)
+-    {
+-      socket = g_strdup_printf ("%s/socket", data->socket_dir);
+-      g_unlink (socket);
+-      g_free (socket);
+-      rmdir (data->socket_dir);
+-      g_free (data->socket_dir);
+-    }
+-
+   g_free (data);
+ }
+ 
+@@ -769,18 +755,21 @@ daemon_peer_connection_setup (GVfsDaemon *daemon,
+ }
+ 
+ static void
+-generate_address (char **address,
+-                  char **socket_dir)
++generate_address (gchar **address, gchar **socket_path)
+ {
+-  gchar tmp[9];
++  gchar tmp[16] = "socket-";
++  gchar *socket_dir;
+ 
+-  *socket_dir = g_build_filename (g_get_user_runtime_dir (), "gvfsd", NULL);
+-  g_mkdir (*socket_dir, 0700);
++  gvfs_randomize_string (tmp + 7, 8);
++  tmp[15] = '\0';
+ 
+-  gvfs_randomize_string (tmp, 8);
+-  tmp[8] = '\0';
++  socket_dir = g_build_filename (g_get_user_runtime_dir (), "gvfsd", NULL);
++  g_mkdir (socket_dir, 0700);
+ 
+-  *address = g_strdup_printf ("unix:path=%s/socket-%s", *socket_dir, tmp);
++  *socket_path = g_build_filename (socket_dir, tmp, NULL);
++  *address = g_strdup_printf ("unix:path=%s", *socket_path);
++
++  g_free (socket_dir);
+ }
+ 
+ static gboolean
+@@ -814,50 +803,51 @@ handle_get_connection (GVfsDBusDaemon *object,
+   GError *error;
+   gchar *address1;
+   NewConnectionData *data;
+-  char *socket_dir;
++  gchar *socket_path;
+   gchar *guid;
+-  
+-  generate_address (&address1, &socket_dir);
++
++  generate_address (&address1, &socket_path);
+ 
+   data = g_new (NewConnectionData, 1);
+   data->daemon = daemon;
+-  data->socket_dir = socket_dir;
+   data->conn = NULL;
+ 
+   guid = g_dbus_generate_guid ();
+   error = NULL;
+   server = g_dbus_server_new_sync (address1,
+                                    G_DBUS_SERVER_FLAGS_NONE,
+                                    guid,
+                                    daemon->auth_observer,
+                                    NULL, /* GCancellable */
+                                    &error);
+   g_free (guid);
+ 
+   if (server == NULL)
+     {
+       g_dbus_method_invocation_return_gerror (invocation, error);
+       g_printerr ("daemon: Error creating server at address %s: %s\n", address1, error->message);
+       g_error_free (error);
+       goto error_out;
+     }
+ 
+   g_dbus_server_start (server);
+-  data->server = server;
+ 
+   g_signal_connect (server, "new-connection", G_CALLBACK (daemon_new_connection_func), data);
+-  
++
+   gvfs_dbus_daemon_complete_get_connection (object,
+                                             invocation,
+                                             address1,
+                                             "");
+ 
+   g_free (address1);
++  g_free (socket_path);
+   return TRUE;
+ 
+  error_out:
+   new_connection_data_free (data);
+   g_free (address1);
++  g_unlink (socket_path);
++  g_free (socket_path);
+   return TRUE;
+ }
+ 

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2021-03-22 00:28:41 UTC (rev 410673)
+++ PKGBUILD	2021-03-22 02:18:19 UTC (rev 410674)
@@ -4,7 +4,7 @@
 pkgbase=gvfs
 pkgname=(gvfs gvfs-{smb,afc,gphoto2,goa,mtp,nfs,google})
 pkgver=1.48.0
-pkgrel=1
+pkgrel=2
 pkgdesc="Virtual filesystem implementation for GIO"
 url="https://wiki.gnome.org/Projects/gvfs"
 arch=(x86_64)
@@ -17,12 +17,17 @@
 groups=(gnome)
 _commit=47caf9fc6d137be1cd1645145db22cf2b671da80  # tags/1.48.0^0
 source=("git+https://gitlab.gnome.org/GNOME/gvfs.git#commit=$_commit"
+        0001-daemon-Remove-connection-socket-properly.patch
         gvfsd.hook)
 sha256sums=('SKIP'
+            'c7811a2182ca439037004b2c3096b7ef05368c4d203c016944cbee0248d3ca70'
             'd3b714db35b2ce75d7f6d528044554decbb9149a98425aff119a071ca0a25282')
 
 prepare() {
   cd $pkgbase
+
+  # https://gitlab.gnome.org/GNOME/gvfs/-/merge_requests/119
+  git apply -3 ../0001-daemon-Remove-connection-socket-properly.patch
 }
 
 pkgver() {
@@ -31,7 +36,9 @@
 }
 
 build() {
-  arch-meson $pkgbase build -D man=true
+  # Disable the admin backend while it's broken
+  # https://gitlab.gnome.org/GNOME/gvfs/-/issues/552
+  arch-meson $pkgbase build -D man=true -D admin=false
   meson compile -C build
 }
 



More information about the arch-commits mailing list