diff options
author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2012-03-14 03:44:09 +0100 |
---|---|---|
committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2012-03-14 03:44:09 +0100 |
commit | cc2ab7327027e47a0a5dff2fb8c1051a866baf40 (patch) | |
tree | fc1ca578f18d2bac371b088645a63202d04529e6 /lisp | |
parent | 899cb7cb68e9845e787291c4ba8ba8fa692be605 (diff) | |
download | emacs-cc2ab7327027e47a0a5dff2fb8c1051a866baf40.tar.gz emacs-cc2ab7327027e47a0a5dff2fb8c1051a866baf40.tar.bz2 emacs-cc2ab7327027e47a0a5dff2fb8c1051a866baf40.zip |
Always call the callback when timing out url-queue jobs
* url-queue.el (url-queue-kill-job): Make sure that the callback
is always called, even if we have a timeout.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/url/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/url/url-queue.el | 17 |
2 files changed, 19 insertions, 3 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 960649bdbc9..ff6a6e6f805 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -1,3 +1,8 @@ +2012-03-14 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * url-queue.el (url-queue-kill-job): Make sure that the callback + is always called, even if we have a timeout. + 2012-03-11 Chong Yidong <cyd@gnu.org> * url-http.el (url-http-end-of-document-sentinel): Handle diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index 6e4cedddaf3..46124717fed 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el @@ -156,9 +156,20 @@ The variable `url-queue-timeout' sets a timeout." (while (setq process (get-buffer-process (url-queue-buffer job))) (set-process-sentinel process 'ignore) (ignore-errors - (delete-process process)))) - (ignore-errors - (kill-buffer (url-queue-buffer job))))) + (delete-process process))))) + ;; Call the callback with an error message to ensure that the caller + ;; is notified that the job has failed. + (with-current-buffer + (if (bufferp (url-queue-buffer job)) + ;; Use the (partially filled) process buffer it it exists. + (url-queue-buffer job) + ;; If not, just create a new buffer, which will probably be + ;; killed again by the caller. + (generate-new-buffer " *temp*")) + (apply (url-queue-callback job) + (cons (list :error (list 'error 'url-queue-timeout + "Queue timeout exceeded")) + (url-queue-cbargs job))))) (provide 'url-queue) |