From 5445e8ddd407f0e0a48f592d8d5c7273e76316ca Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 20 Feb 2011 20:54:10 -0800 Subject: [PATCH 1/1] Extend the methods so that we're sure to get unique server names. And we don't output two async commands in the same buffer. This fixes an NNTP hang for some users. --- lisp/ChangeLog | 6 ++++++ lisp/gnus-start.el | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2797ff3d3..4ebc32488 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-02-21 Lars Ingebrigtsen + + * gnus-start.el (gnus-get-unread-articles): Extend the methods so that + we're sure to get unique server names, and we don't output two async + commands in the same buffer. This fixes an NNTP hang for some users. + 2011-02-21 Lars Magne Ingebrigtsen * gnus.el: No Gnus v0.11 is released. diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index b493a93d4..e5e246805 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -1675,7 +1675,20 @@ If SCAN, request a scan of that group as well." (lambda (c1 c2) (< (gnus-method-rank (cadr c1) (car c1)) (gnus-method-rank (cadr c2) (car c2)))))) - + ;; Go through the list of servers and possibly extend methods that + ;; aren't equal (and that need extension; i.e., they are async). + (let ((methods nil)) + (dolist (elem type-cache) + (destructuring-bind (method method-type infos dummy) elem + (let ((gnus-opened-servers methods)) + (when (and (gnus-similar-server-opened method) + (gnus-check-backend-function + 'retrieve-group-data-early (car method))) + (setq method (gnus-server-extend-method + (gnus-info-group (car infos)) + method)) + (setcar elem method)) + (push (list method 'ok) methods))))) ;; Start early async retrieval of data. (dolist (elem type-cache) (destructuring-bind (method method-type infos dummy) elem -- 2.25.1