parent
0d1a224446
commit
e9cad0520e
@ -1 +1 @@
|
||||
gvfs-1.2.2.tar.bz2
|
||||
gvfs-1.2.3.tar.bz2
|
||||
|
@ -42,9 +42,9 @@ Index: Makefile.am
|
||||
SUBDIRS = \
|
||||
common \
|
||||
client \
|
||||
@@ -15,6 +30,8 @@
|
||||
|
||||
EXTRA_DIST = \
|
||||
@@ -18,6 +33,8 @@ EXTRA_DIST = \
|
||||
gvfs.doap \
|
||||
README.commits \
|
||||
MAINTAINERS \
|
||||
+ mount-archive.desktop.in.in \
|
||||
+ $(desktop_in_files) \
|
||||
|
44
gvfs-1.2.2-dnssd-deadlock.patch
Normal file
44
gvfs-1.2.2-dnssd-deadlock.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From c89b238b4a03e08ca8c793c5689948b1fa9c2722 Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Bzatek <tbzatek@redhat.com>
|
||||
Date: Fri, 15 May 2009 14:29:28 +0200
|
||||
Subject: [PATCH] Avoid deadlock when pulling resolved record from cache
|
||||
|
||||
When the host has already been resolved and is present in the cache,
|
||||
it's returned immediately. But we always started the mainloop even
|
||||
if it was quit before, resulting in endless waiting for an event
|
||||
which had been received before that.
|
||||
---
|
||||
common/gvfsdnssdresolver.c | 11 +++++++++--
|
||||
1 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/common/gvfsdnssdresolver.c b/common/gvfsdnssdresolver.c
|
||||
index 7794042..957d2cb 100644
|
||||
--- a/common/gvfsdnssdresolver.c
|
||||
+++ b/common/gvfsdnssdresolver.c
|
||||
@@ -1249,14 +1249,21 @@ g_vfs_dns_sd_resolver_resolve_sync (GVfsDnsSdResolver *resolver,
|
||||
g_return_val_if_fail (G_VFS_IS_DNS_SD_RESOLVER (resolver), FALSE);
|
||||
|
||||
data = g_new0 (ResolveDataSync, 1);
|
||||
- data->loop = g_main_loop_new (NULL, FALSE);
|
||||
+ /* mark the main loop as running to have an indication whether
|
||||
+ * g_main_loop_quit() was called before g_main_loop_run()
|
||||
+ */
|
||||
+ data->loop = g_main_loop_new (NULL, TRUE);
|
||||
|
||||
g_vfs_dns_sd_resolver_resolve (resolver,
|
||||
cancellable,
|
||||
(GAsyncReadyCallback) resolve_sync_cb,
|
||||
data);
|
||||
|
||||
- g_main_loop_run (data->loop);
|
||||
+ /* start the loop only if it wasn't quit before
|
||||
+ * (i.e. in case when pulling the record from cache)
|
||||
+ */
|
||||
+ if (g_main_loop_is_running (data->loop))
|
||||
+ g_main_loop_run (data->loop);
|
||||
|
||||
ret = data->ret;
|
||||
if (data->error != NULL)
|
||||
--
|
||||
1.6.2.2
|
||||
|
@ -1,117 +0,0 @@
|
||||
Index: daemon/gvfsbackendsftp.c
|
||||
===================================================================
|
||||
--- daemon/gvfsbackendsftp.c (revision 2371)
|
||||
+++ daemon/gvfsbackendsftp.c (working copy)
|
||||
@@ -333,6 +333,84 @@ look_for_stderr_errors (GVfsBackend *bac
|
||||
}
|
||||
}
|
||||
|
||||
+static gchar*
|
||||
+read_dbus_string_dict_value (DBusMessageIter *args, const gchar *key)
|
||||
+{
|
||||
+ DBusMessageIter items, entry;
|
||||
+ gchar *str, *sig;
|
||||
+
|
||||
+ sig = dbus_message_iter_get_signature (args);
|
||||
+ if (!sig || strcmp (sig, "a{ss}") != 0)
|
||||
+ return NULL;
|
||||
+
|
||||
+ dbus_message_iter_recurse (args, &items);
|
||||
+
|
||||
+ if (dbus_message_iter_has_next (&items))
|
||||
+ {
|
||||
+ do
|
||||
+ {
|
||||
+ dbus_message_iter_recurse (&items, &entry);
|
||||
+ dbus_message_iter_get_basic (&entry, &str);
|
||||
+ if (str && strcmp (key, str) == 0)
|
||||
+ {
|
||||
+ dbus_message_iter_next (&entry);
|
||||
+ dbus_message_iter_get_basic (&entry, &str);
|
||||
+ return g_strdup (str);
|
||||
+ }
|
||||
+ }
|
||||
+ while (dbus_message_iter_next (&items));
|
||||
+ }
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+setup_ssh_environment (void)
|
||||
+{
|
||||
+ DBusConnection *dconn;
|
||||
+ DBusMessage *reply;
|
||||
+ DBusMessage *msg;
|
||||
+ DBusMessageIter args;
|
||||
+ DBusError derr;
|
||||
+ gchar *env;
|
||||
+
|
||||
+ dbus_error_init (&derr);
|
||||
+ dconn = dbus_bus_get (DBUS_BUS_SESSION, &derr);
|
||||
+ if (!dconn)
|
||||
+ return;
|
||||
+
|
||||
+ msg = dbus_message_new_method_call ("org.gnome.keyring",
|
||||
+ "/org/gnome/keyring/daemon",
|
||||
+ "org.gnome.keyring.Daemon",
|
||||
+ "GetEnvironment");
|
||||
+ if (!msg)
|
||||
+ {
|
||||
+ dbus_connection_unref (dconn);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Send message and get a handle for a reply */
|
||||
+ reply = dbus_connection_send_with_reply_and_block (dconn, msg, 1000, &derr);
|
||||
+ dbus_message_unref (msg);
|
||||
+ if (!reply)
|
||||
+ {
|
||||
+ dbus_connection_unref (dconn);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Read the return value */
|
||||
+ if (dbus_message_iter_init (reply, &args))
|
||||
+ {
|
||||
+ env = read_dbus_string_dict_value (&args, "SSH_AUTH_SOCK");
|
||||
+ if (env && env[0])
|
||||
+ g_setenv ("SSH_AUTH_SOCK", env, TRUE);
|
||||
+ g_free (env);
|
||||
+ }
|
||||
+
|
||||
+ dbus_message_unref (reply);
|
||||
+ dbus_connection_unref (dconn);
|
||||
+}
|
||||
+
|
||||
static char **
|
||||
setup_ssh_commandline (GVfsBackend *backend)
|
||||
{
|
||||
@@ -1559,6 +1637,18 @@ do_mount (GVfsBackend *backend,
|
||||
/* NOTE: job_succeeded called async from setup_icon reply */
|
||||
}
|
||||
|
||||
+static void
|
||||
+real_do_mount (GVfsBackend *backend,
|
||||
+ GVfsJobMount *job,
|
||||
+ GMountSpec *mount_spec,
|
||||
+ GMountSource *mount_source,
|
||||
+ gboolean is_automount)
|
||||
+{
|
||||
+ setup_ssh_environment ();
|
||||
+
|
||||
+ do_mount (backend, job, mount_spec, mount_source, is_automount);
|
||||
+}
|
||||
+
|
||||
static gboolean
|
||||
try_mount (GVfsBackend *backend,
|
||||
GVfsJobMount *job,
|
||||
@@ -4481,7 +4571,7 @@ g_vfs_backend_sftp_class_init (GVfsBacke
|
||||
|
||||
gobject_class->finalize = g_vfs_backend_sftp_finalize;
|
||||
|
||||
- backend_class->mount = do_mount;
|
||||
+ backend_class->mount = real_do_mount;
|
||||
backend_class->try_mount = try_mount;
|
||||
backend_class->try_open_icon_for_read = try_open_icon_for_read;
|
||||
backend_class->try_open_for_read = try_open_for_read;
|
@ -1,38 +0,0 @@
|
||||
From fe45df2ccfe43077d15c31e21f00f4fb98eea85c Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Bzatek <tbzatek@redhat.com>
|
||||
Date: Thu, 7 May 2009 15:17:06 +0200
|
||||
Subject: [PATCH] FTP: parse file sizes > 4GB correctly
|
||||
|
||||
Use 64-bit strtoull() instead of 32-bit strtoul()
|
||||
when converting string to number.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=499286
|
||||
---
|
||||
daemon/gvfsbackendftp.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/daemon/gvfsbackendftp.c b/daemon/gvfsbackendftp.c
|
||||
index e650dd0..949573d 100644
|
||||
--- a/daemon/gvfsbackendftp.c
|
||||
+++ b/daemon/gvfsbackendftp.c
|
||||
@@ -1239,7 +1239,7 @@ dir_default_iter_process (gpointer iter,
|
||||
else if (symlink)
|
||||
*symlink = NULL;
|
||||
|
||||
- g_file_info_set_size (info, strtoul (result.fe_size, NULL, 10));
|
||||
+ g_file_info_set_size (info, g_ascii_strtoull (result.fe_size, NULL, 10));
|
||||
|
||||
gvfs_file_info_populate_default (info, s,
|
||||
type == 'f' ? G_FILE_TYPE_REGULAR :
|
||||
@@ -2231,7 +2231,7 @@ create_file_info (GVfsBackendFtp *ftp, FtpConnection *conn, const char *filename
|
||||
|
||||
gvfs_file_info_populate_default (info, filename, G_FILE_TYPE_REGULAR);
|
||||
|
||||
- g_file_info_set_size (info, strtoul (conn->read_buffer+4, NULL, 0));
|
||||
+ g_file_info_set_size (info, g_ascii_strtoull (conn->read_buffer+4, NULL, 0));
|
||||
|
||||
g_file_info_set_is_hidden (info, TRUE);
|
||||
}
|
||||
--
|
||||
1.6.2.2
|
||||
|
@ -1,34 +0,0 @@
|
||||
From edb7ccb661746fd55ed3b935b44a61d011a0807c Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Larsson <alexl@redhat.com>
|
||||
Date: Tue, 12 May 2009 14:21:45 +0200
|
||||
Subject: [PATCH 3/4] Ref the infos in next_files_finish (#582195)
|
||||
|
||||
In later glib versions setting the GSimpleAsyncResult gpointer data
|
||||
frees the old data using the destroy notify, which can cause crashes
|
||||
since we return it. So, just copy+ref the list instead of trying to steal
|
||||
the asyncresult one.
|
||||
---
|
||||
client/gdaemonfileenumerator.c | 7 ++-----
|
||||
1 files changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/client/gdaemonfileenumerator.c b/client/gdaemonfileenumerator.c
|
||||
index 56b1488..1aec092 100644
|
||||
--- a/client/gdaemonfileenumerator.c
|
||||
+++ b/client/gdaemonfileenumerator.c
|
||||
@@ -417,11 +417,8 @@ g_daemon_file_enumerator_next_files_finish (GFileEnumerator *enumerator,
|
||||
GList *l;
|
||||
|
||||
l = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
|
||||
- /* We want the caller to own this, and not the result, so clear the result data */
|
||||
- g_simple_async_result_set_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result),
|
||||
- NULL, NULL);
|
||||
-
|
||||
- return l;
|
||||
+ g_list_foreach (l, (GFunc)g_object_ref, NULL);
|
||||
+ return g_list_copy (l);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
--
|
||||
1.6.2.2
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -up gvfs-1.2.1/programs/Makefile.am.bash-completion gvfs-1.2.1/programs/Makefile.am
|
||||
--- gvfs-1.2.1/programs/Makefile.am.bash-completion 2009-04-11 00:36:25.730330858 -0400
|
||||
+++ gvfs-1.2.1/programs/Makefile.am 2009-04-11 00:36:37.746330659 -0400
|
||||
@@ -34,7 +34,7 @@ bin_SCRIPTS = \
|
||||
|
||||
if ENABLE_BASHCOMP
|
||||
profiledir = $(BASHCOMP_DIR)
|
||||
-profile_SCRIPTS = gvfs-bash-completion.sh
|
||||
+profile_DATA = gvfs-bash-completion.sh
|
||||
endif
|
||||
|
||||
gvfs_cat_SOURCES = gvfs-cat.c
|
26
gvfs.spec
26
gvfs.spec
@ -1,7 +1,7 @@
|
||||
Summary: Backends for the gio framework in GLib
|
||||
Name: gvfs
|
||||
Version: 1.2.2
|
||||
Release: 5%{?dist}
|
||||
Version: 1.2.3
|
||||
Release: 1%{?dist}
|
||||
License: LGPLv2+
|
||||
Group: System Environment/Libraries
|
||||
URL: http://www.gtk.org
|
||||
@ -35,20 +35,11 @@ BuildRequires: libtool
|
||||
Patch1: gvfs-0.99.2-archive-integration.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=573826
|
||||
Patch2: gvfs-1.1.7-gdu-computer-expose-devices.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=578681
|
||||
Patch3: gvfs-bash-completion.patch
|
||||
# From svn:
|
||||
Patch4: gvfs-1.2.2-ssh-auth-sock.patch
|
||||
# nautilus crashes when browsing ssh location after glib 2.21 update
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=582195
|
||||
Patch5: gvfs-1.2.3-ref-the-infos-in-next_files_finish.patch
|
||||
# Files on FTP >4GB reported as 4GB
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=499286
|
||||
Patch6: gvfs-1.2.3-ftp-parse-file-sizes-4GB-correctly.patch
|
||||
# Unable to Play Audio CDs
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=499266
|
||||
Patch7: gvfs-1.2.3-cdda-allow-query-well-formed-filenames-only.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=497631
|
||||
Patch8: gvfs-1.2.2-dnssd-deadlock.patch
|
||||
|
||||
# Gdu volume monitor patches, from http://cgit.freedesktop.org/~david/gvfs/log/?h=gdu-volume-monitor
|
||||
#
|
||||
@ -168,11 +159,8 @@ media players (Media Transfer Protocol) to applications using gvfs.
|
||||
%setup -q
|
||||
%patch1 -p0 -b .archive-integration
|
||||
%patch2 -p1 -b .computer-expose-devices
|
||||
%patch3 -p1 -b .bash-completion
|
||||
%patch4 -p0 -b .ssh-auth-sock
|
||||
%patch5 -p1 -b .sftp-crash
|
||||
%patch6 -p1 -b .ftp-bigfiles
|
||||
%patch7 -p1 -b .cdda-query
|
||||
%patch8 -p1 -b .dnssd-deadlock
|
||||
|
||||
%patch101 -p1 -b .gdu-volume-monitor
|
||||
%patch102 -p1 -b .gdu-volumes-typo
|
||||
@ -332,6 +320,10 @@ update-desktop-database &> /dev/null ||:
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon May 18 2009 Tomas Bzatek <tbzatek@redhat.com> - 1.2.3-1
|
||||
- Update to 1.2.3
|
||||
- Prevent deadlocks in dnssd resolver (#497631)
|
||||
|
||||
* Tue May 12 2009 Tomas Bzatek <tbzatek@redhat.com> - 1.2.2-5
|
||||
- Require separate libtalloc to fix libsmbclient
|
||||
- Ref the infos in next_files_finish (gnome #582195)
|
||||
|
Loading…
Reference in New Issue
Block a user