diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-04-04 21:00:38 +0100 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-04-05 10:59:18 +0100 |
commit | b47fe819f70cd48c5ca26e37843b878ecc0d0b66 (patch) | |
tree | b126ef814e97bfa21388e06a64faf5c8f43db55a | |
parent | 16eec6fc55dcc05d1d819f18998e84a9580b2521 (diff) | |
download | emacs-b47fe819f70cd48c5ca26e37843b878ecc0d0b66.tar.gz |
emacs-lisp/package.el: Prevent outdated downloads-in-progress.
-rw-r--r-- | lisp/ChangeLog | 3 | ||||
-rw-r--r-- | lisp/emacs-lisp/package.el | 10 |
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)))))) |