summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-04-04 21:00:38 +0100
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-04-05 10:59:18 +0100
commitb47fe819f70cd48c5ca26e37843b878ecc0d0b66 (patch)
treeb126ef814e97bfa21388e06a64faf5c8f43db55a
parent16eec6fc55dcc05d1d819f18998e84a9580b2521 (diff)
downloademacs-b47fe819f70cd48c5ca26e37843b878ecc0d0b66.tar.gz
emacs-lisp/package.el: Prevent outdated downloads-in-progress.
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/emacs-lisp/package.el10
2 files changed, 12 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7fa39b46727..0870f0cad31 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -14,6 +14,9 @@
`package-archives' to `package--downloads-in-progress' instead of
overwriting it.
(package--with-work-buffer-async): Protect macro arguments.
+ (package--download-one-archive)
+ (package--download-and-read-archives): Prevent
+ downloads-in-progress list from becoming outdated.
2015-04-04 Michael Albinus <michael.albinus@gmx.de>
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 32a3e015f0b..83c5b2f6b10 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1397,8 +1397,12 @@ similar to an entry in `package-alist'. Save the cached copy to
;; If we care, check it (perhaps async) and *then* write the file.
(package--check-signature
location file content async
+ ;; This function will be called after signature checking.
(lambda (&optional good-sigs)
(unless (or good-sigs (eq package-check-signature 'allow-unsigned))
+ ;; Even if the sig fails, this download is done, so
+ ;; remove it from the in-progress list.
+ (package--update-downloads-in-progress archive)
(error "Unsigned archive `%s'" name))
;; Write out the archives file.
(write-region content nil local-file nil 'silent)
@@ -1419,7 +1423,11 @@ perform the downloads asynchronously."
package--downloads-in-progress))
(dolist (archive package-archives)
(condition-case-unless-debug nil
- (package--download-one-archive archive "archive-contents" async)
+ (package--download-one-archive
+ archive "archive-contents"
+ ;; Called if the async download fails
+ (when async
+ (lambda () (package--update-downloads-in-progress archive))))
(error (message "Failed to download `%s' archive."
(car archive))))))