Protect better against async retrievals happening concurrently
authorLars Magne Ingebrigtsen <larsi@stories.(none)>
Fri, 6 Jan 2012 21:33:39 +0000 (22:33 +0100)
committerLars Magne Ingebrigtsen <larsi@stories.(none)>
Fri, 6 Jan 2012 21:33:39 +0000 (22:33 +0100)
* nntp.el (nntp-retrieve-groups): Refuse to do retrieval when an async
retrieval is happening.

lisp/ChangeLog
lisp/nntp.el

index 6c3939e..a18be11 100644 (file)
@@ -1,5 +1,8 @@
 2012-01-06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * nntp.el (nntp-retrieve-groups): Refuse to do retrieval when an async
+       retrieval is happening.
+
        * gnus.el (gnus-parameters): Doc fix.
 
 2012-01-06  Dave Abrahams  <dave@boostpro.com>  (tiny change)
index e089dfb..db9d9e2 100644 (file)
@@ -847,7 +847,14 @@ command whose response triggered the error."
   "Retrieve group info on GROUPS."
   (nntp-with-open-group
    nil server
-   (when (nntp-find-connection-buffer nntp-server-buffer)
+   (when (and (nntp-find-connection-buffer nntp-server-buffer)
+             (with-current-buffer
+                 (nntp-find-connection-buffer nntp-server-buffer)
+               (if (not nntp-retrieval-in-progress)
+                   t
+                 (message "Warning: Refusing to do retrieval from %s because a retrieval is already happening"
+                          server)
+                 nil)))
      (catch 'done
        (save-excursion
          ;; Erase nntp-server-buffer before nntp-inhibit-erase.