From: Artur Malabarba Date: Sat, 4 Apr 2015 20:00:38 +0000 (+0100) Subject: emacs-lisp/package.el: Prevent outdated downloads-in-progress. X-Git-Tag: emacs-25.0.90~2563^2~1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b47fe819f70cd48c5ca26e37843b878ecc0d0b66;p=emacs.git emacs-lisp/package.el: Prevent outdated downloads-in-progress. --- 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 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))))))