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 = \
|
SUBDIRS = \
|
||||||
common \
|
common \
|
||||||
client \
|
client \
|
||||||
@@ -15,6 +30,8 @@
|
@@ -18,6 +33,8 @@ EXTRA_DIST = \
|
||||||
|
gvfs.doap \
|
||||||
EXTRA_DIST = \
|
README.commits \
|
||||||
MAINTAINERS \
|
MAINTAINERS \
|
||||||
+ mount-archive.desktop.in.in \
|
+ mount-archive.desktop.in.in \
|
||||||
+ $(desktop_in_files) \
|
+ $(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
|
Summary: Backends for the gio framework in GLib
|
||||||
Name: gvfs
|
Name: gvfs
|
||||||
Version: 1.2.2
|
Version: 1.2.3
|
||||||
Release: 5%{?dist}
|
Release: 1%{?dist}
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
URL: http://www.gtk.org
|
URL: http://www.gtk.org
|
||||||
@ -35,20 +35,11 @@ BuildRequires: libtool
|
|||||||
Patch1: gvfs-0.99.2-archive-integration.patch
|
Patch1: gvfs-0.99.2-archive-integration.patch
|
||||||
# http://bugzilla.gnome.org/show_bug.cgi?id=573826
|
# http://bugzilla.gnome.org/show_bug.cgi?id=573826
|
||||||
Patch2: gvfs-1.1.7-gdu-computer-expose-devices.patch
|
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
|
# Unable to Play Audio CDs
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=499266
|
# https://bugzilla.redhat.com/show_bug.cgi?id=499266
|
||||||
Patch7: gvfs-1.2.3-cdda-allow-query-well-formed-filenames-only.patch
|
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
|
# 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
|
%setup -q
|
||||||
%patch1 -p0 -b .archive-integration
|
%patch1 -p0 -b .archive-integration
|
||||||
%patch2 -p1 -b .computer-expose-devices
|
%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
|
%patch7 -p1 -b .cdda-query
|
||||||
|
%patch8 -p1 -b .dnssd-deadlock
|
||||||
|
|
||||||
%patch101 -p1 -b .gdu-volume-monitor
|
%patch101 -p1 -b .gdu-volume-monitor
|
||||||
%patch102 -p1 -b .gdu-volumes-typo
|
%patch102 -p1 -b .gdu-volumes-typo
|
||||||
@ -332,6 +320,10 @@ update-desktop-database &> /dev/null ||:
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%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
|
* Tue May 12 2009 Tomas Bzatek <tbzatek@redhat.com> - 1.2.2-5
|
||||||
- Require separate libtalloc to fix libsmbclient
|
- Require separate libtalloc to fix libsmbclient
|
||||||
- Ref the infos in next_files_finish (gnome #582195)
|
- Ref the infos in next_files_finish (gnome #582195)
|
||||||
|
Loading…
Reference in New Issue
Block a user