From: Lars Ingebrigtsen Date: Sun, 5 Feb 2012 02:24:20 +0000 (+0100) Subject: Fix inloop if the server dies before the async -finish is called X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=73c8c3d05a901debb46e70f32f125ab4fa3ba540 Fix inloop if the server dies before the async -finish is called * 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. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 345576435..c48f08c40 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2012-02-05 Lars Ingebrigtsen + + * 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 * nnimap.el (nnimap-retrieve-group-data-early): Don't say we're doing diff --git a/lisp/nnimap.el b/lisp/nnimap.el index a5e82389a..e62dc1221 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -269,14 +269,16 @@ textual parts.") 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) - (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 @@ -1278,7 +1280,7 @@ textual parts.") (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))) @@ -1633,11 +1635,11 @@ textual parts.") (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))) - (setq open-result (nnimap-open-server server))) + (setq open-result (nnimap-open-server server no-reconnect))) (cond ((not open-result) nil)