* nnimap.el (nnimap-expiry-target): Don't search for which
authorSimon Josefsson <jas@extundo.com>
Tue, 17 Sep 2002 20:27:21 +0000 (20:27 +0000)
committerSimon Josefsson <jas@extundo.com>
Tue, 17 Sep 2002 20:27:21 +0000 (20:27 +0000)
articles exists here.
(nnimap-request-expire-articles): Do it here instead.  Only expire
when articles are found.  Suggested by Nevin Kapur
<nevin@jhu.edu>.

lisp/ChangeLog
lisp/nnimap.el

index f70245c..bc1595a 100644 (file)
@@ -1,3 +1,11 @@
+2002-09-17  Simon Josefsson  <jas@extundo.com>
+
+       * nnimap.el (nnimap-expiry-target): Don't search for which
+       articles exists here.
+       (nnimap-request-expire-articles): Do it here instead.  Only expire
+       when articles are found.  Suggested by Nevin Kapur
+       <nevin@jhu.edu>.
+
 2002-09-17  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
        From Reiner Steib <reiner.steib@gmx.de>.
 
index 381a6cf..c824e88 100644 (file)
@@ -1298,11 +1298,8 @@ function is generally only called when Gnus is shutting down."
 (defun nnimap-expiry-target (arts group server)
   (unless (eq nnmail-expiry-target 'delete)
     (with-temp-buffer
-      (dolist (art (imap-search (concat "UID " 
-                                       (imap-range-to-message-set
-                                        (gnus-uncompress-sequence arts)))
-                   nnimap-server-buffer))
-       (nnimap-request-article art group server  (current-buffer))
+      (dolist (art arts)
+       (nnimap-request-article art group server (current-buffer))
        ;; hints for optimization in `nnimap-request-accept-article'
        (let ((nnimap-current-move-article art)
              (nnimap-current-move-group group)
@@ -1320,16 +1317,16 @@ function is generally only called when Gnus is shutting down."
        (let ((days (or (and nnmail-expiry-wait-function
                             (funcall nnmail-expiry-wait-function group))
                        nnmail-expiry-wait)))
-         (cond (force
-                (nnimap-expiry-target artseq group server)
-                (when (imap-message-flags-add
-                       (imap-range-to-message-set artseq) "\\Deleted")
-                  (setq articles nil)))
-               ((eq days 'immediate)
-                (nnimap-expiry-target artseq group server)
-                (when (imap-message-flags-add
-                       (imap-range-to-message-set artseq) "\\Deleted")
-                  (setq articles nil)))
+         (cond ((or force (eq days 'immediate))
+                (let ((oldarts (imap-search
+                                (concat "UID " 
+                                        (imap-range-to-message-set artseq)))))
+                  (when oldarts
+                    (nnimap-expiry-target oldarts group server))
+                  (when (imap-message-flags-add
+                         (imap-range-to-message-set oldarts) "\\Deleted")
+                    (setq articles (gnus-set-difference
+                                    articles oldarts)))))
                ((numberp days)
                 (let ((oldarts (imap-search
                                 (format nnimap-expunge-search-string
@@ -1337,14 +1334,12 @@ function is generally only called when Gnus is shutting down."
                                         (nnimap-date-days-ago days))))
                       (imap-fetch-data-hook
                        '(nnimap-request-expire-articles-progress)))
-                  (nnimap-expiry-target oldarts group server)
-                  (and oldarts
-                       (imap-message-flags-add
-                        (imap-range-to-message-set
-                         (gnus-compress-sequence oldarts))
-                        "\\Deleted")
-                       (setq articles (gnus-set-difference
-                                       articles oldarts))))))))))
+                  (when oldarts
+                    (nnimap-expiry-target oldarts group server))
+                  (when (imap-message-flags-add
+                         (imap-range-to-message-set oldarts) "\\Deleted")
+                    (setq articles (gnus-set-difference 
+                                    articles oldarts))))))))))
   ;; return articles not deleted
   articles)