diff --git a/.cvsignore b/.cvsignore index 8aabf2c..d2ce5b8 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gvfs-1.2.2.tar.bz2 +gvfs-1.2.3.tar.bz2 diff --git a/gvfs-0.99.2-archive-integration.patch b/gvfs-0.99.2-archive-integration.patch index 314e5b9..ac14f59 100644 --- a/gvfs-0.99.2-archive-integration.patch +++ b/gvfs-0.99.2-archive-integration.patch @@ -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) \ diff --git a/gvfs-1.2.2-dnssd-deadlock.patch b/gvfs-1.2.2-dnssd-deadlock.patch new file mode 100644 index 0000000..7573221 --- /dev/null +++ b/gvfs-1.2.2-dnssd-deadlock.patch @@ -0,0 +1,44 @@ +From c89b238b4a03e08ca8c793c5689948b1fa9c2722 Mon Sep 17 00:00:00 2001 +From: Tomas Bzatek +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 + diff --git a/gvfs-1.2.2-ssh-auth-sock.patch b/gvfs-1.2.2-ssh-auth-sock.patch deleted file mode 100644 index 16b3dbd..0000000 --- a/gvfs-1.2.2-ssh-auth-sock.patch +++ /dev/null @@ -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; diff --git a/gvfs-1.2.3-ftp-parse-file-sizes-4GB-correctly.patch b/gvfs-1.2.3-ftp-parse-file-sizes-4GB-correctly.patch deleted file mode 100644 index a5b4c8f..0000000 --- a/gvfs-1.2.3-ftp-parse-file-sizes-4GB-correctly.patch +++ /dev/null @@ -1,38 +0,0 @@ -From fe45df2ccfe43077d15c31e21f00f4fb98eea85c Mon Sep 17 00:00:00 2001 -From: Tomas Bzatek -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 - diff --git a/gvfs-1.2.3-ref-the-infos-in-next_files_finish.patch b/gvfs-1.2.3-ref-the-infos-in-next_files_finish.patch deleted file mode 100644 index bafe7bb..0000000 --- a/gvfs-1.2.3-ref-the-infos-in-next_files_finish.patch +++ /dev/null @@ -1,34 +0,0 @@ -From edb7ccb661746fd55ed3b935b44a61d011a0807c Mon Sep 17 00:00:00 2001 -From: Alexander Larsson -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 - diff --git a/gvfs-bash-completion.patch b/gvfs-bash-completion.patch deleted file mode 100644 index 9997d3d..0000000 --- a/gvfs-bash-completion.patch +++ /dev/null @@ -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 diff --git a/gvfs.spec b/gvfs.spec index 42876ae..ccfea06 100644 --- a/gvfs.spec +++ b/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 - 1.2.3-1 +- Update to 1.2.3 +- Prevent deadlocks in dnssd resolver (#497631) + * Tue May 12 2009 Tomas Bzatek - 1.2.2-5 - Require separate libtalloc to fix libsmbclient - Ref the infos in next_files_finish (gnome #582195) diff --git a/sources b/sources index 18a4ca4..1c63e7f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -85f69289185b0c9c42644c0e730b67c8 gvfs-1.2.2.tar.bz2 +04a7f9c892b962cfedf0637dd2b01196 gvfs-1.2.3.tar.bz2