commit 8f94df31bfb8939d9986308f723ce01ff898d1ba Author: Ondrej Holy Date: 2014-08-15 Update NEWS for 1.21.90 release M NEWS commit 540b03f9a73f58b1a1237b84ae1d453c4ac37a5f Author: Ross Lagerwall Date: 2014-08-12 gvfs-save: Allow specifying G_FILE_CREATE_REPLACE_DESTINATION Allow specifying G_FILE_CREATE_REPLACE_DESTINATION when using gvfs-save with the -u flag or --unlink. I chose this because "unlink" represents what G_FILE_CREATE_REPLACE_DESTINATION does in principle: it unlinks the destination before replacing it, thereby losing any permissions or other attributes of the file. https://bugzilla.gnome.org/show_bug.cgi?id=734695 M man/gvfs-save.xml M programs/gvfs-save.c commit aae5c91460a36f091384a4b3bcbb8cb70f33f135 Author: Ross Lagerwall Date: 2014-06-07 dav: Send enumerate success earlier Send a "success" response earlier when enumerating to allow infos to be sent incrementally rather than batched up until the end. https://bugzilla.gnome.org/show_bug.cgi?id=734695 M daemon/gvfsbackenddav.c commit 32a1e8d6fc55fa525deb85d8fc93497e8b74e832 Author: Ross Lagerwall Date: 2014-06-02 afp: Fix some memory leaks https://bugzilla.gnome.org/show_bug.cgi?id=734695 M daemon/gvfsafpserver.c M daemon/gvfsbackendafp.c commit 32e9db1387588f37da8b6825f3c7f70ad8c49ef1 Author: Ross Lagerwall Date: 2014-08-12 daemon: Fix a memory leak https://bugzilla.gnome.org/show_bug.cgi?id=734695 M daemon/gvfsjobenumerate.c commit bcd8b846329309bc997fd8116534352140e6142b Author: Ross Lagerwall Date: 2014-08-12 computer: Fix a memory leak https://bugzilla.gnome.org/show_bug.cgi?id=734695 M daemon/gvfsbackendcomputer.c commit 3d20db3249bfd5a9aaab89f5d09e948d1bc28d4f Author: Tom Tryfonidis Date: 2014-08-11 Updated Greek translation M po/el.po commit 32983ccd7e3d15e6071464236376abf0b855b904 Author: Philip Langdale Date: 2014-08-07 MTP: Fix error semantics for do_pull/do_push/do_make_directory There are a bunch of semantic inconsistencies in the existing implementations of these functions, when compared with the GIO docs for making dirs and copying files. This change fixes those problems, and also ensures that in the pull/push cases, the destination is deleted at the last possible moment, in the case of overwrites. Also, certain other methods had their error code changed from NOT_REGULAR_FILE to PERMISSION_DENIED when an operation is attempted on a storage. This leads to less surprising errors for users. https://bugzilla.gnome.org/show_bug.cgi?id=734305 M daemon/gvfsbackendmtp.c commit 63899f1a7e6aa286a97e82e99ae036d597cee748 Author: Ross Lagerwall Date: 2014-07-31 ftp: Only free connection if non-NULL Only attempt to free the connection if it is non-NULL, to prevent warnings like the following: ** (process:30854): CRITICAL **: g_vfs_ftp_connection_free: assertion 'conn != NULL' failed The connection can be NULL if g_vfs_ftp_connection_new is cancelled. https://bugzilla.gnome.org/show_bug.cgi?id=591054 M daemon/gvfsftptask.c commit 9bd1bd2c7a96b69ef4de956eb04d3bb58f748c0e Author: Benjamin Otte Date: 2014-08-11 ftp: Also mark connection as unusable on G_IO_IN There is data waiting on an FTP connection and we didn't request it. It's not ours and we have no way to clear it. Just makr this connection as unusable. Most likely this is the server notifying us about a timeout or other connection abort, so it's a good idea to treat it as an error anyway. Also includes a new debug message for when we mark a connection as unusuable and why. https://bugzilla.gnome.org/show_bug.cgi?id=591054 M daemon/gvfsftpconnection.c commit 648c433bfbc88aaa757a0adb86b20ca3c986108b Author: Benjamin Otte Date: 2014-08-11 ftp: Check connection is usable when acquiring Qhen acquiring a cached connection, it might have timeout'ed or otherwise not be available anymore. We don't want these connection errors to propagate into the job we're handling and instead just acquire the next connection. https://bugzilla.gnome.org/show_bug.cgi?id=591054 M daemon/gvfsftptask.c commit 232d6d76029dc1cbc0c76c2459f9db26b7717d28 Author: Ross Lagerwall Date: 2014-08-09 fuse: Don't map EISDIR to EXDEV when renaming vfs_rename incorrectly maps EISDIR to EXDEV when renaming. However, EISDIR occurs when the source is a file and the destination is a directory and it shouldn't be remapped. (G_IO_ERROR_WOULD_RECURSE is mapped to EXDEV instead.) https://bugzilla.gnome.org/show_bug.cgi?id=734568 M client/gvfsfusedaemon.c commit 4341cf2b36e408c3598bc533d9510ff6ff5b0f84 Author: Rok Mandeljc Date: 2014-08-09 fuse: Add GError to errno mappings for G_IO_ERROR_WOULD_RECURSE and G_IO_ERROR_WOULD_MERGE This patch adds the following GError to errno mappings to errno_from_error(): G_IO_ERROR_WOULD_RECURSE -> EXDEV G_IO_ERROR_WOULD_MERGE -> ENOTEMPTY The first mapping is required to allow 'mv' to rename/move a directory in a gvfs-fuse directory that belongs to a backend without support for a native move operation. In such cases, g_file_move() returns G_IO_ERROR_WOULD_RECURSE, which needs to be mapped to -EXDEV in order for mv to fall back to recursive copy & delete operation. Similarly, G_IO_ERROR_WOULD_MERGE is returned when trying to move/merge two non-empty directories. By mapping it to -ENOTEMPTY, the error message returned by 'mv' becomes ": Directory not empty" instead of generic ": Input/output error". https://bugzilla.gnome.org/show_bug.cgi?id=734568 Signed-off-by: Rok Mandeljc M client/gvfsfusedaemon.c commit be4d7fa3b44a8c195bf6e19cf2a44ff9440ffc07 Author: Ondrej Holy Date: 2014-02-27 daemon: consider all jobs excepting unmount as blocking processes User can wait to finish all jobs (not only those with opened channel) before unmount to avoid potencial crashes. https://bugzilla.gnome.org/show_bug.cgi?id=710986 M daemon/gvfsbackend.c M daemon/gvfsbackend.h M daemon/gvfsdaemon.c M daemon/gvfsdaemon.h M daemon/gvfsjobunmount.c commit 0aafc320c4278ccb0469d2aea981ab03db3cbfab Author: Ross Lagerwall Date: 2014-07-26 gphoto: Set mtime when pulling Commit 86162bbe4b09 ("gphoto2: Implement pull support") failed to set the modification time of the destination file when implementing pull support. Fix this by setting the modification time on the destination file (only the mtime in seconds needs to be set since this is the only time info the gphoto supports). https://bugzilla.gnome.org/show_bug.cgi?id=733469 M daemon/gvfsbackendgphoto2.c commit 1fdcb2b67e740b13a16cfa9cbdd1c87276af8d9a Author: Inaki Larranaga Murgoitio Date: 2014-08-07 Updated Basque language M po/eu.po commit 4fff3674b9c909a5d2838bdbc96ba98724d10d56 Author: Rok Mandeljc Date: 2014-08-04 mtp: do_open_for_read() should fail on a directory This is a fix for bug #729628: the GIO open-read-write-close fallback for copy/move operation on MTP volumes works correctly for files, but fails for directories - in particular, it creates a file with the destination name, then fails with "libmtp error: Unknown error." This happens because the fallback first attempts to open the source as a file, and if it succeeds, proceeds to create destination file and copy the contents via series of reads/writes. For directories, do_open_for_read() should fail with G_IO_ERROR_IS_DIRECTORY, which in tun causes GIO to create the destination as directory, and then copy its contents over. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit e949e7b9918c5867a2948eb6c641171bae4e99f8 Author: MarMav Date: 2014-08-04 Updated Greek translation M po/el.po commit c7bb2e1f5341d03cbc7b195d756f49fdf7a0f0f5 Author: Rok Mandeljc Date: 2014-08-03 mtp: improve validation of received thumbnail/sample data in do_open_icon_for_read() With my tablet, the call to LIBMTP_Get_Thumbnail() in do_open_icon_for_read() sometimes succeeds with return code 0, but returns size 0 and NULL data pointer. Thus, subsequent read operations return no data, and Nautilus ends up with invalid preview icon. This patch adds validation of returned data size, and treats size 0 same as if the call failed - reporting no icon data to be available and causing Nautilus to read the actual file content to obtain the preview icon. Also, LIBMTP_destroy_filesampledata_t() is now called regardless whether LIBMTP_Get_Representative_Sample() call succeeds or not. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit fbb887f56f3b28fe03ef2bdad96c114cf8a2661c Author: Rok Mandeljc Date: 2014-08-03 mtp: convert icon id using hexadecimal base instead of decimal one This is a fix for regression introduced by 30697fe32d47 ("mtp: in debug traces, print IDs as hexadecimal values instead of decimal ones"), which changed format of icon id constructed in get_file_info() from decimal to hexadecimal, while the inverse conversion in do_open_icon_for_read() remained unchanged, using decimal base. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 12c95538d84eaa17b17e82c01bc1608570c4102d Author: Ross Lagerwall Date: 2014-08-03 afp: Remove old TODO https://bugzilla.gnome.org/show_bug.cgi?id=734194 M daemon/gvfsafpvolume.c commit 2e3eee275a97abf4d6055c06683f04c7d8f3f7ca Author: Ross Lagerwall Date: 2014-08-03 mtp: Fix two harmless warnings Fix two warnings introduced by be000ea91e90 ("MTP: Emit delete events when unmounting."). M daemon/gvfsbackendmtp.c commit e9c320e49cace543450b961af32ea7ffeb8d512f Author: Ross Lagerwall Date: 2014-08-03 afp: Don't retry read if connection closes Don't retry the read if the remote host closes the connection. Instead, exit (semi-)gracefully with exit(0) and exit with an error if there was an actual error. https://bugzilla.gnome.org/show_bug.cgi?id=710490 M daemon/gvfsafpconnection.c commit a4016460538ea8be22aa0d8289922b389a93ef78 Author: Ross Lagerwall Date: 2014-08-03 afp: Try to prevent idle disconnects Some servers (e.g. OS X 10.8) disconnect clients who don't respond to server notifications. Prevent this by sending FPGetVolParms, as the spec suggests. https://bugzilla.gnome.org/show_bug.cgi?id=734194 M daemon/gvfsafpconnection.h M daemon/gvfsafpvolume.c commit 5b4fdbeb6b1e19aa1bbc3824c5955ee2f9c1f85b Author: Piotr Drąg Date: 2014-07-31 doap: add M gvfs.doap commit 2481998a6e42b0a15c850a6f7c61a5471cc3e0d6 Author: Olav Vitters Date: 2014-07-30 doap category core M gvfs.doap commit 7ebbf005fb52f3b2fe362fbf297ca1557b8c09d8 Author: Rok Mandeljc Date: 2014-07-28 mtp: make remove_cache_entry_by_id() remove all matching entries, not just the first one With the recently added on-demand post-fixing of storage names, corner cases can occur in which we end up with multiple cache entries that have the same storage id and item id, but different paths. In particular, this happens upon change of post-fixing requirement, i.e., when a second storage that has same description as the first one is either added or removed. In such cases, the contents of the first storage might end up with two sets of cache entries, one where storage name is post-fixed and one is not. If afterwards an OBJECT_REMOVED event is received, only the first cache entry is removed, which may or may not cause Nautilus to correctly remove the file/folder. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 6eb6853bfca43d714f48ca5edd676feaec357326 Author: Rok Mandeljc Date: 2014-07-28 mtp: added support for OBJECT_ADDED event This patch adds support for OBJECT_ADDED event, which is emitted when a file or a folder is created on the device. When such an event is received, its path is determined by first looking up the parent ID and appending object's name to it; the path and IDs are added to cache, and create event is emitted, causing clients (for example Nautilus) to display the new file/folder without having to refresh the display of parent folder. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit be000ea91e90186bb6f1031348e33d5b9025251a Author: Philip Langdale Date: 2014-07-26 MTP: Emit delete events when unmounting. Although it would seem obvious that a mount disappearing should invalidate any file references in clients, recent versions of Nautilus will keep open windows around, showing all the files that were there at the time of the unmount. So, clearly we need to emit these events to get it to clean itself up. M daemon/gvfsbackendmtp.c commit f92fbc0f481f41c04fd61fa4c061c418cc3a0c8c Author: Rok Mandeljc Date: 2014-07-26 mtp: implemented support for LIBMTP_EVENT_STORE_REMOVED This patch adds support for LIBMTP_EVENT_STORE_REMOVED, so that if a storage is removed, its entry and those of its children are automatically removed. For each such entry, delete event is also emitted. With this patch, the corresponding storage disappears from Nautilus as soon as the SD card is unmounted on device. Similarly, if Nautilus is located in the storage or one of its sub-folders, the window gets properly closed after the storage is removed. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 0f84e858fd236412fda7c5d3837fefb79ac442e1 Author: Rok Mandeljc Date: 2014-07-26 mtp: removed the faulty g_free(new_name) at the end of do_set_display_name() The new_name string is passed to add_cache_entry(), which assumes full transfer; therefore, freeing the string manually causes issues further down the line. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 766a77bfd304b6741993527e25338480af0861cd Author: Rok Mandeljc Date: 2014-07-24 mtp & gphoto2: add missing newlines at the end of debug messages Commit edd777b1e675f9328aa00934651b4763783930a1 modified DEBUG() macro and, by replacing combination of g_vfprintf(stderr, message, args) and g_fprintf(stderr, "\n") with a g_logv(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, message, args), caused a lack of trailing newlines in debug messages. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendgphoto2.c M daemon/gvfsbackendmtp.c commit 449a4b878695de6e545fadaa7fe846d7deb64acc Author: Ross Lagerwall Date: 2014-07-01 http: Use a global SoupSession rather than per-backend Use a global SoupSession rather than a per-backend so that idle connections are reused appropriately. This prevents a process running out of file descriptors due to connections stuck in a CLOSE_WAIT state. It also has the side-effect of limiting the maximum number of concurrent connections because libsoup's max-conns property is respected, fixing bug 576460. (Reapplying now that #732783 and #732925 have been fixed.) https://bugzilla.gnome.org/show_bug.cgi?id=732090 M daemon/gvfsbackendhttp.c commit be4fc6f8e8a33e5d6c84d4e2959b3f6d4377f442 Author: Christophe Fergeau Date: 2014-07-01 http: Remove use of SoupSessionSync/SoupSessionAsync Since libsoup 2.42.0, SoupSessionSync/SoupSessionAsync are deprecated, and replaced by direct use of SoupSession as described on https://developer.gnome.org/libsoup/stable/libsoup-session-porting.html This commit removes use of SoupSessionSync/SoupSessionAsync and adjusts the code according to the advice in the doc above: - we only need one SoupSession instance as sync/async calls are made depending on the SoupSession method we use, not depending on the instance type - SoupSession already comes with a SoupProxyResolverDefault, we don't need to add it ourselves - SoupSession already comes with a SoupContentDecoder, we don't need to add it ourselves - SoupSession:use-thread-context is now unused and always set to TRUE, so we don't need to change it To prevent any changes in behavior, we set ssl-strict to FALSE. (Patch updated by Ross Lagerwall) (Reapplying now that #732783 and #732925 have been fixed.) https://bugzilla.gnome.org/show_bug.cgi?id=708306 https://bugzilla.gnome.org/show_bug.cgi?id=732090 M daemon/gvfsbackenddav.c M daemon/gvfsbackendhttp.c M daemon/gvfsbackendhttp.h commit 2744d498095aeca09308819bca42d0fe287523d0 Author: Simon McVittie Date: 2014-07-24 GDaemonMount: invalidate mount cache whenever we unmount a mount Otherwise, the old mount info, and in particular the (D-Bus unique name, object path) pair representing it in its backend, will remain in the cache until the backend process exits, which could take time. Re-mounting and re-unmounting that mount would fail, because the second Unmount() call would go to the unique name and object path of the backend object that was destroyed by the first Unmount call, not the backend object that is now responsible. I'm using the Unmount reply rather than a signal, for thread-safety; the mount cache is global, so if it was listening for the Unmounted signal, that signal would be queued up for delivery to some specific main-context, call it A. If another thread did the umount/mount/unmount in main context B, before main context A was dispatched, then the invalidation would be too late to help it. This does not cover concurrent mount/unmount in two distinct main contexts without any synchronization. However, if two threads in main contexts B and C race to mount/unmount a share, then they're sometimes going to lose anyway, and there isn't a great deal that cache invalidation can do to help them. M client/gdaemonmount.c M client/gdaemonvfs.c M client/gdaemonvfs.h M client/gvfsdaemondbus.c commit 64e51eb07cd6628991842c6be8eb276802b71154 Author: Rok Mandeljc Date: 2014-07-23 mtp: use "storage-description (hex-storage-id)" storage name format only when necessary This patch implements on-demand post-fixing of storage description with ID for storage name, i.e., only in cases, when description itself is not unique. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 8f97c9f56e7ad868393c4b344fa7b18ab6a65782 Author: Rok Mandeljc Date: 2014-07-22 mtp: use "storage-description (hex-storage-id)" for storage name instead of just "storage-description" Storage description by itself is not unique, thus using it for storage name on its own causes problems when multiple storages with the same description are present (i.e., only one is listed and even that one incorrectly referenced in some situations - [Bug 733465]). The proposed storage name format is used both as name and display name. On my TF701 with two SD cards, Nautilus now properly lists: "Internal storage (10001)", "SD card (20001)" and "SD card (30001)", and the corresponding URIs are: mtp://[usb:001,005]/Internal storage (10001) mtp://[usb:001,005]/SD card (20001) mtp://[usb:001,005]/SD card (30001) Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 0d198d7ebab85a7fcddee036b731254556ba01f9 Author: Kjartan Maraas Date: 2014-07-23 Updated Norwegian bokmål translation. M po/nb.po commit 30697fe32d47d3c1f5694b56b06bc93095dd8851 Author: Rok Mandeljc Date: 2014-07-19 mtp: in debug traces, print IDs as hexadecimal values instead of decimal ones Hexadecimal IDs are much easier to read than their decimal counterparts. Signed-off-by: Rok Mandeljc M daemon/gvfsbackendmtp.c commit 64797557badcf4d8729649a981566a19095658c2 Author: Enrico Nicoletto Date: 2014-07-18 Updated Brazilian Portuguese translation M po/pt_BR.po commit 97107976fdb965a1b0f5e9a82b63c71db0c68c1e Author: Ondrej Holy Date: 2014-07-18 Post release version bump M configure.ac