GNOME Bugzilla – Bug 669005
Partial hang with unresponsive HTML email image source
Last modified: 2012-01-30 17:06:41 UTC
Moving this from a downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=785205 Description of problem: Image files for HTML email from a non-responding server lock up the preview pane. Cancelling the image file download has no effect. Even quitting Evolution is blocked until the maximum socket timeout is apparently reached (typically 5+ minutes). It is possible to view other emails while the problem is in play, by double-clicking on another message and bringing up a new message window, but this forces the user into an abnormal message review situation. I typically receive about 3 of these emails every day, causing a lot of frustration due to this bug. Version-Release number of selected component (if applicable): Evolution 3.2.3 Fedora is a fully up-to-date F16 workstation. How reproducible: Every time the web server cannot respond for various reasons. Steps to Reproduce: 1. Start Evolution 2. Read an html email where the originating site will not respond with image data 3. Observe download hangs, blocking many parts of Evolution, including exit. Actual results: Evolution partially hung. Expected results: Evolution should not block on delayed image files, and should be able to successfully cancel these downloads.
Confirming, I'm able to reproduce it too.
Created attachment 206455 [details] [review] eds patch for evolution-data-server; There is needed also this little change in eds to have it working. Though the cleaner solution would be to change API for camel_http_stream_get_content_type(), to provide GCancellable and GError pointers into it, but I didn't want to change it, because a) it's a pain to change API version (soname version bump), b) it's expected that 3.5 will have this code completely changed, when evolution became using WebKit. Thus I consider this sufficient for the time being.
Created attachment 206456 [details] [review] evo patch for evolution; This makes the request cancellable. The only thing is that it is not cancelled immediately, but only when the cancellation is possible, which is, for me, in about two seconds when the status bar shows "Retrieving '.../img.png'". It's definitely cancelled before the timeout is reached.
Created commit 0d7c524 in eds master (3.3.5+) Created commit cd1d443 in evo master (3.3.5+)