In case of errors, make sure that no retrievals are marked "in progress"
authorLars Ingebrigtsen <larsi@rusty.(none)>
Fri, 27 Jan 2012 12:58:56 +0000 (13:58 +0100)
committerLars Ingebrigtsen <larsi@rusty.(none)>
Fri, 27 Jan 2012 12:59:53 +0000 (13:59 +0100)
* gnus-start.el (gnus-get-unread-articles): Clear out "early" methods
so that previous errors don't prohibit getting new news.

* nnimap.el (nnimap-retrieve-group-data-early): Ditto.

* nntp.el (nntp-retrieve-group-data-early): Ditto.

lisp/gnus-start.el
lisp/nnimap.el
lisp/nntp.el

index 782773d..801f772 100644 (file)
@@ -1714,6 +1714,21 @@ backend check whether the group actually exists."
          (with-current-buffer nntp-server-buffer
            (gnus-read-active-file-1 method nil)))))
 
+    ;; Clear out all the early methods.
+    (dolist (elem type-cache)
+      (destructuring-bind (method method-type infos dummy) elem
+       (when (and method
+                  infos
+                  (gnus-check-backend-function
+                   'retrieve-group-data-early (car method))
+                  (not (gnus-method-denied-p method)))
+         (when (ignore-errors (gnus-get-function method 'open-server))
+           (unless (gnus-server-opened method)
+             (gnus-open-server method))
+           (when (gnus-server-opened method)
+             ;; Just mark this server as "cleared".
+             (gnus-retrieve-group-data-early method nil))))))
+
     ;; Start early async retrieval of data.
     (let ((done-methods nil)
          sanity-spec)
index 0df7ffc..afa4bdf 100644 (file)
@@ -1213,7 +1213,8 @@ textual parts.")
       t)))
 
 (deffoo nnimap-retrieve-group-data-early (server infos)
-  (when (nnimap-possibly-change-group nil server)
+  (when (and (nnimap-possibly-change-group nil server)
+            infos)
     (with-current-buffer (nnimap-buffer)
       (erase-buffer)
       (setf (nnimap-group nnimap-object) nil)
index c740f61..7148fdb 100644 (file)
@@ -772,7 +772,11 @@ command whose response triggered the error."
   "Retrieve group info on INFOS."
   (nntp-with-open-group nil server
     (let ((buffer (nntp-find-connection-buffer nntp-server-buffer)))
+      (unless infos
+       (with-current-buffer buffer
+         (setq nntp-retrieval-in-progress nil)))
       (when (and buffer
+                infos
                 (with-current-buffer buffer
                   (not nntp-retrieval-in-progress)))
        ;; The first time this is run, this variable is `try'.  So we