Revision: miles@gnu.org--gnu-2005/gnus--devo--0--patch-195
authorMiles Bader <miles@gnu.org>
Fri, 9 Sep 2005 03:20:19 +0000 (03:20 +0000)
committerMiles Bader <miles@gnu.org>
Fri, 9 Sep 2005 03:20:19 +0000 (03:20 +0000)
Merge from gnus--rel--5.10

Patches applied:

 * gnus--rel--5.10  (patch 112-114)

   - Update from CVS

2005-09-07  Reiner Steib  <Reiner.Steib@gmx.de>

   * lisp/spam-report.el (spam-report-gmane): Make it work without
   X-Report-Spam header.  Gmane now only provides Archived-At.  This
   is only used if `spam-report-gmane-use-article-number' is nil.
   (spam-report-gmane-spam-header): Removed.  Not used anymore.

2005-09-06  Reiner Steib  <Reiner.Steib@gmx.de>

   * lisp/mml-smime.el: Remove defvar of gnus-extract-address-components.

lisp/ChangeLog
lisp/mml-smime.el
lisp/spam-report.el

index a167e74..2c790c0 100644 (file)
@@ -1,5 +1,10 @@
 2005-09-07  Reiner Steib  <Reiner.Steib@gmx.de>
 
+       * spam-report.el (spam-report-gmane): Make it work without
+       X-Report-Spam header.  Gmane now only provides Archived-At.  This
+       is only used if `spam-report-gmane-use-article-number' is nil.
+       (spam-report-gmane-spam-header): Removed.  Not used anymore.
+
        * gnus-sum.el (gnus-thread-sort-by-recipient): New function to
        make `gnus-summary-sort-by-recipient' work with threading.
 
        * gnus-art.el (gnus-mime-display-single): Revert 2004-10-07
        change.  Decode text/* parts content before displaying.
 
+2005-09-06  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * mml-smime.el: Remove defvar of gnus-extract-address-components.
+
 2005-09-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * mm-view.el (mm-display-inline-fontify): Disable support modes.
index b290489..cf6e891 100644 (file)
@@ -29,8 +29,6 @@
 
 (eval-when-compile (require 'cl))
 
-(defvar gnus-extract-address-components)
-
 (require 'smime)
 (require 'mm-decode)
 (autoload 'message-narrow-to-headers "message")
index aa05528..145a30b 100644 (file)
@@ -49,12 +49,6 @@ instead."
                (regexp :value "^nntp\+.*:gmane\."))
   :group 'spam-report)
 
-(defcustom spam-report-gmane-spam-header
-  "^X-Report-Spam: http://\\([^/]+\\)\\(.*\\)$"
-  "String matching Gmane spam-reporting header.  Two match groups are needed."
-  :type 'regexp
-  :group 'spam-report)
-
 (defcustom spam-report-gmane-use-article-number t
   "Whether the article number (faster!) or the header should be used."
   :type 'boolean
@@ -137,20 +131,41 @@ Reports is as ham when HAM is set."
                   article))
        (with-current-buffer nntp-server-buffer
          (gnus-request-head article gnus-newsgroup-name)
-         (goto-char (point-min))
-         (if (re-search-forward spam-report-gmane-spam-header nil t)
-             (let* ((host (match-string 1))
-                    (report (match-string 2))
-                    (url (format "http://%s%s" host report)))
-               (gnus-message 7 "Reporting spam through URL %s..." url)
-               (spam-report-url-ping host report))
-           (gnus-message 3 "Could not find X-Report-Spam in article %d..."
-                         article)))))))
+         (let ((case-fold-search t)
+               field host report url)
+           ;; First check for X-Report-Spam because it's more specific to
+           ;; spam reporting than Archived-At.  OTOH, all new articles on
+           ;; Gmane don't have X-Report-Spam anymore (unless Lars changes his
+           ;; mind :-)).
+           ;;
+           ;; There might be more than one Archived-At header so we need to
+           ;; find (and transform) the one related to Gmane.
+           (setq field (or (gnus-fetch-field "X-Report-Spam")
+                           (gnus-fetch-field "Archived-At")))
+           (setq host (progn
+                        (string-match
+                         (concat "http://\\([a-z]+\\.gmane\\.org\\)"
+                                 "\\(/[^:/]+[:/][0-9]+\\)")
+                         field)
+                        (match-string 1 field)))
+           (setq report (match-string 2 field))
+           (when (string-equal "permalink.gmane.org" host)
+             (setq host "spam.gmane.org"))
+           (setq url (format "http://%s%s" host report))
+           (if (not (and host report url))
+               (gnus-message
+                3 "Could not find a spam report header in article %d..."
+                article)
+             (gnus-message 7 "Reporting spam through URL %s..." url)
+             (spam-report-url-ping host report))))))))
 
 
 (defun spam-report-url-ping (host report)
   "Ping a host through HTTP, addressing a specific GET resource using
 the function specified by `spam-report-url-ping-function'."
+  ;; Example:
+  ;; host: "spam.gmane.org"
+  ;; report: "/gmane.some.group:123456"
   (funcall spam-report-url-ping-function host report))
 
 (defun spam-report-url-ping-plain (host report)