Synch to No Gnus 200502252323.
authoryamaoka <yamaoka>
Sat, 26 Feb 2005 04:07:38 +0000 (04:07 +0000)
committeryamaoka <yamaoka>
Sat, 26 Feb 2005 04:07:38 +0000 (04:07 +0000)
lisp/ChangeLog
lisp/gnus-sum.el
lisp/mm-decode.el
lisp/nnimap.el

index 314255b..0f28d3c 100644 (file)
@@ -1,3 +1,23 @@
+2005-02-26  Arne J\e,Ax\e(Brgensen  <arne@arnested.dk>
+
+       * mm-decode.el (mm-dissect-buffer): Pass the from field on to
+       `mm-dissect-multipart' and receive the from field as an (optional)
+       argument from `mm-dissect-multipart'.
+       (mm-dissect-multipart): Receive the from field as an argument and
+       pass it on when we call `mm-dissect-buffer' on MIME parts. Fixes
+       verification/decryption of signed/encrypted MIME parts.
+
+2005-02-25  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * gnus-sum.el (gnus-summary-move-article): set
+       gnus-sum-hint-move-is-internal for gnus-request-move-article and
+       whatever it calls (right now, only nnimap-request-move article
+       respects it)
+
+       * nnimap.el (nnimap-request-move-article): when
+       gnus-sum-hint-move-is-internal is set, don't do the extra
+       nnimap-request-article
+
 2005-02-24  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * nnheader.el (nnheader-find-file-noselect): Added doc string.
index 77642e1..3edd3f9 100644 (file)
@@ -9228,6 +9228,11 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
        ((eq action 'move)
         ;; Remove this article from future suppression.
         (gnus-dup-unsuppress-article article)
+        (let* ((from-method (gnus-find-method-for-group
+                             gnus-newsgroup-name))
+               (to-method (gnus-find-method-for-group
+                           to-newsgroup))
+               (gnus-sum-hint-move-is-internal (gnus-method-equal from-method to-method)))
         (gnus-request-move-article
          article                       ; Article to move
          gnus-newsgroup-name           ; From newsgroup
@@ -9236,7 +9241,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
          (list 'gnus-request-accept-article
                to-newsgroup (list 'quote select-method)
                (not articles) t)       ; Accept form
-         (not articles)))              ; Only save nov last time
+         (not articles))))             ; Only save nov last time
        ;; Copy the article.
        ((eq action 'copy)
         (save-excursion
index afe6f98..b22d573 100644 (file)
@@ -509,10 +509,10 @@ Postpone undisplaying of viewers for types in
     (message "Destroying external MIME viewers")
     (mm-destroy-parts mm-postponed-undisplay-list)))
 
-(defun mm-dissect-buffer (&optional no-strict-mime loose-mime)
+(defun mm-dissect-buffer (&optional no-strict-mime loose-mime from)
   "Dissect the current buffer and return a list of MIME handles."
   (save-excursion
-    (let (ct ctl type subtype cte cd description id result from)
+    (let (ct ctl type subtype cte cd description id result)
       (save-restriction
        (mail-narrow-to-head)
        (when (or no-strict-mime
@@ -523,8 +523,9 @@ Postpone undisplaying of viewers for types in
                cte (mail-fetch-field "content-transfer-encoding")
                cd (mail-fetch-field "content-disposition")
                description (mail-fetch-field "content-description")
-               from (mail-fetch-field "from")
                id (mail-fetch-field "content-id"))
+         (unless from
+               (setq from (mail-fetch-field "from")))
          ;; FIXME: In some circumstances, this code is running within
          ;; an unibyte macro.  mail-extract-address-components
          ;; creates unibyte buffers. This `if', though not a perfect
@@ -563,7 +564,7 @@ Postpone undisplaying of viewers for types in
                                        'from from
                                        'start start)
                                  (car ctl))
-            (cons (car ctl) (mm-dissect-multipart ctl))))
+            (cons (car ctl) (mm-dissect-multipart ctl from))))
          (t
           (mm-possibly-verify-or-decrypt
            (mm-dissect-singlepart
@@ -588,7 +589,7 @@ Postpone undisplaying of viewers for types in
     (mm-make-handle
      (mm-copy-to-buffer) ctl cte nil cdl description nil id)))
 
-(defun mm-dissect-multipart (ctl)
+(defun mm-dissect-multipart (ctl from)
   (goto-char (point-min))
   (let* ((boundary (concat "\n--" (mail-content-type-get ctl 'boundary)))
         (close-delimiter (concat (regexp-quote boundary) "--[ \t]*$"))
@@ -605,7 +606,7 @@ Postpone undisplaying of viewers for types in
        (save-excursion
          (save-restriction
            (narrow-to-region start (point))
-           (setq parts (nconc (list (mm-dissect-buffer t)) parts)))))
+           (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
       (end-of-line 2)
       (or (looking-at boundary)
          (forward-line 1))
@@ -614,7 +615,7 @@ Postpone undisplaying of viewers for types in
       (save-excursion
        (save-restriction
          (narrow-to-region start end)
-         (setq parts (nconc (list (mm-dissect-buffer t)) parts)))))
+         (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts)))))
     (mm-possibly-verify-or-decrypt (nreverse parts) ctl)))
 
 (defun mm-copy-to-buffer ()
index 80d9b1b..6f79f95 100644 (file)
@@ -1513,7 +1513,13 @@ function is generally only called when Gnus is shutting down."
            (nnimap-current-move-group group)
            (nnimap-current-move-server nnimap-current-server)
            result)
-       (and (nnimap-request-article article group server)
+       (gnus-message 9 "nnimap-request-move-article: this is an %s move"
+                     (if gnus-sum-hint-move-is-internal
+                         "internal"
+                       "external"))
+       ;; request the article only when the move is NOT internal
+       (and (or gnus-sum-hint-move-is-internal
+                (nnimap-request-article article group server))
             (save-excursion
               (set-buffer buf)
               (buffer-disable-undo (current-buffer))