aboutsummaryrefslogtreecommitdiff
path: root/lisp/mastodon-media.el
diff options
context:
space:
mode:
authorHolger Dürer <me@hdurer.net>2017-06-07 18:29:10 +0100
committerJohnson Denen <johnson.denen@gmail.com>2017-06-19 13:50:14 -0400
commitefe4ad402a9bf5c78a317540518afd76b1994ee4 (patch)
treef5874153b7219f257785040c322c1b782b4ec84f /lisp/mastodon-media.el
parentc5c2e565f5569753b343ae70388f39b0191911d9 (diff)
Catch any errors thrown during url-retrieve.
On Emacs24 I've been able to reliably fail url fetching which exposed issues in loading a timeline (it aborts the loading). This catches any errors, marking the image load as failed so that we won't retry (retries are a TODO item I guess) and then succeeds the function so the rest of the timeline loading can proceed.
Diffstat (limited to 'lisp/mastodon-media.el')
-rw-r--r--lisp/mastodon-media.el15
1 files changed, 12 insertions, 3 deletions
diff --git a/lisp/mastodon-media.el b/lisp/mastodon-media.el
index 0a4c3de..50f79dd 100644
--- a/lisp/mastodon-media.el
+++ b/lisp/mastodon-media.el
@@ -170,9 +170,18 @@ MEDIA-TYPE is a symbol and either 'avatar or 'media-link."
`(:height ,mastodon-media--avatar-height))
((eq media-type 'media-link)
`(:max-height ,mastodon-media--preview-max-height))))))
- (url-retrieve url
- #'mastodon-media--process-image-response
- (list (copy-marker start) image-options region-length))))
+ (let ((buffer (current-buffer))
+ (marker (copy-marker start)))
+ (condition-case nil
+ ;; catch any errors in url-retrieve so as to not abort
+ ;; whatever called us
+ (url-retrieve url
+ #'mastodon-media--process-image-response
+ (list marker image-options region-length))
+ (error (with-current-buffer buffer
+ ;; TODO: Consider adding retries
+ (put-text-property marker (+ marker region-length) 'media-state 'loading-failed)
+ :loading-failed))))))
(defun mastodon-media--select-next-media-line ()
"Find coordinates of the next media to load.