Fix inloop if the server dies before the async -finish is called
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 5 Feb 2012 02:24:20 +0000 (03:24 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 5 Feb 2012 02:24:20 +0000 (03:24 +0100)
* nnimap.el (nnimap-open-server): Allow switching the nnoo server
without reconnecting.
(nnimap-possibly-change-group): Ditto.
(nnimap-finish-retrieve-group-infos): Don't reconnect if the server
connection has died before being called.

lisp/ChangeLog
lisp/nnimap.el

index 3455764..c48f08c 100644 (file)
@@ -1,3 +1,11 @@
+2012-02-05  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnimap.el (nnimap-open-server): Allow switching the nnoo server
+       without reconnecting.
+       (nnimap-possibly-change-group): Ditto.
+       (nnimap-finish-retrieve-group-infos): Don't reconnect if the server
+       connection has died before being called.
+
 2012-02-02  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * nnimap.el (nnimap-retrieve-group-data-early): Don't say we're doing
 2012-02-02  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * nnimap.el (nnimap-retrieve-group-data-early): Don't say we're doing
index a5e8238..e62dc12 100644 (file)
@@ -269,14 +269,16 @@ textual parts.")
         result))
       (mapconcat #'identity (nreverse result) ",")))))
 
         result))
       (mapconcat #'identity (nreverse result) ",")))))
 
-(deffoo nnimap-open-server (server &optional defs)
+(deffoo nnimap-open-server (server &optional defs no-reconnect)
   (if (nnimap-server-opened server)
       t
     (unless (assq 'nnimap-address defs)
       (setq defs (append defs (list (list 'nnimap-address server)))))
     (nnoo-change-server 'nnimap server defs)
   (if (nnimap-server-opened server)
       t
     (unless (assq 'nnimap-address defs)
       (setq defs (append defs (list (list 'nnimap-address server)))))
     (nnoo-change-server 'nnimap server defs)
-    (or (nnimap-find-connection nntp-server-buffer)
-       (nnimap-open-connection nntp-server-buffer))))
+    (if no-reconnect
+       (nnimap-find-connection nntp-server-buffer)
+      (or (nnimap-find-connection nntp-server-buffer)
+         (nnimap-open-connection nntp-server-buffer)))))
 
 (defun nnimap-make-process-buffer (buffer)
   (with-current-buffer
 
 (defun nnimap-make-process-buffer (buffer)
   (with-current-buffer
@@ -1278,7 +1280,7 @@ textual parts.")
 
 (deffoo nnimap-finish-retrieve-group-infos (server infos sequences)
   (when (and sequences
 
 (deffoo nnimap-finish-retrieve-group-infos (server infos sequences)
   (when (and sequences
-            (nnimap-possibly-change-group nil server)
+            (nnimap-possibly-change-group nil server t)
             ;; Check that the process is still alive.
             (get-buffer-process (nnimap-buffer))
             (memq (process-status (get-buffer-process (nnimap-buffer)))
             ;; Check that the process is still alive.
             (get-buffer-process (nnimap-buffer))
             (memq (process-status (get-buffer-process (nnimap-buffer)))
@@ -1633,11 +1635,11 @@ textual parts.")
                                  (cdr (assoc "SEARCH" (cdr result))))))
            nil t))))))
 
                                  (cdr (assoc "SEARCH" (cdr result))))))
            nil t))))))
 
-(defun nnimap-possibly-change-group (group server)
+(defun nnimap-possibly-change-group (group server &optional no-reconnect)
   (let ((open-result t))
     (when (and server
               (not (nnimap-server-opened server)))
   (let ((open-result t))
     (when (and server
               (not (nnimap-server-opened server)))
-      (setq open-result (nnimap-open-server server)))
+      (setq open-result (nnimap-open-server server no-reconnect)))
     (cond
      ((not open-result)
       nil)
     (cond
      ((not open-result)
       nil)