GNOME Bugzilla – Bug 673430
Can't read messages in virtual Junk/Trash folders
Last modified: 2013-09-13 01:08:02 UTC
Selecting messages in normal folders and search folders works fine after this commit: http://git.gnome.org/browse/evolution/commit/?id=79dcf66c2f47307e622ae375cb3c8b1a788e75cc But I still can't read messages in my virtual Junk or Trash folders. I'm hitting the same assertion as what lead to my first commit, so I'm guessing it's probably another URI encoding bug: mail_request_send_async: assertion `emr->priv->efh' failed This is currently at e-mail-request.c line 651.
Adding some print statements around the "formatters" hash table insertions and lookups... Here's some (shortened) output for a folder that was problematic before my decoding commit due to the space character in "Mailing Lists". It now works fine. Inserting 'mail://.../Mailing Lists/GNOME/Evolution/66757' Looking up (not decoded) 'mail://.../Mailing%20Lists/GNOME/Evolution/66757' Looking up (decoded) 'mail://.../Mailing Lists/GNOME/Evolution/66757' Interestingly, here's the output when I try to read from my Trash folder: Inserting 'mail://.../.#evolution/Trash/Ydtt8Fhm526029' Looking up (not decoded) 'mail://.../' Looking up (decoded) 'mail://.../' (The ... in all cases is "1333231746.1232.21/localhost.localdomain". I left it off for brevity.)
I bet'cha the "#evolution/Trash/Ydtt8Fhm526029" part of the URI is stored in the SoupURI as a fragment, which doesn't get added to the assembled URI used for lookups: uri_str = g_strdup_printf ("%s://%s%s", uri->scheme, uri->host, uri->path); Not sure where the leading dot went. Any particular reason soup_uri_to_string() won't work here?
Version = 3.3.x ?
Version fixed: 3.5.x. Bugzilla must still be choosing 3.3.x by default.
Created attachment 211229 [details] [review] Proposed patch This patch encodes the CamelFolder name in mail URI so that "#" or other URL-unsafe characters are not parsed by SoupURI. The only exception is "@", which SoupURI for some uknown reason automatically decodes when created. Therefor the service name is not being escaped. Tested with IMAP and local folders, search vfolder and trash vfolder.
That works. Tested against folder paths with spaces, vjunk, vtrash, and plain vfolders.
Commited to master as e4c0c101ee54034e1b3a9b1f11eb50d88acb9e66 http://git.gnome.org/browse/evolution/commit/?id=e4c0c101ee54034e1b3a9b1f11eb50d88acb9e66